/* 서울대학교병원 내과 — 대학 홈페이지 스타일 (상단 유틸바 · 흰 헤더 · 서브 비주얼 · 로케이션 바 · 표형 게시판) */
:root {
  /* SNUH 로고 색: SNU 진청 + H·엠블럼 하늘색 */
  --navy: #1b4596;
  --navy-2: #133a80;
  --blue: #1a7fc4;
  --sky: #1a9fd9;
  --text: #333;
  --text-2: #666;
  --text-3: #999;
  --line: #ddd;
  --line-2: #e9e9e9;
  --line-dark: #333;
  --bg: #fff;
  --bg-2: #f7f7f7;
  --bg-3: #f1f1f1;
  --red: #d0342c;
  --green: #1f8a4c;
  --orange: #c26a00;
  --radius: 2px;
  --inner: 1200px;
  /* 배너 사진 (서울대학교병원 야경) — 바꾸려면 static/visual.jpg·visual-sm.jpg 교체 후 ?v 숫자 올리기 */
  --visual: url("/static/visual.jpg?v=1");
  --font: "Noto Sans KR", "Malgun Gothic", "Apple SD Gothic Neo", -apple-system, system-ui, sans-serif;
  color-scheme: light;
}

@media (max-width: 768px) { :root { --visual: url("/static/visual-sm.jpg?v=1"); } }

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body { margin: 0; background: var(--bg); color: var(--text); font: 400 16px/1.6 var(--font); letter-spacing: -.02em; word-break: keep-all; overflow-wrap: anywhere; }
a { color: inherit; text-decoration: none; }
img { max-width: 100%; height: auto; }
ul, ol { margin: 0; padding: 0; list-style: none; }
button, input, select { font: inherit; color: inherit; }
:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.skip { position: absolute; left: -999px; top: 0; z-index: 200; background: var(--navy); color: #fff; padding: 8px 14px; }
.skip:focus { left: 8px; }
.inner, .wrap { max-width: var(--inner); margin: 0 auto; padding: 0 20px; }

/* ── 상단 유틸 바 ── */
.topbar { background: var(--sky); color: #fff; font-size: 13px; }
.topbar .inner { display: flex; justify-content: space-between; align-items: center; height: 36px; }
.topbar ul { display: flex; align-items: center; }
.topbar li + li::before { content: ""; display: inline-block; width: 1px; height: 10px; background: rgba(255,255,255,.5); margin: 0 12px; vertical-align: 0; }
.topbar a:hover { text-decoration: underline; }
.topbar .family li:first-child a { font-weight: 700; }
@media (max-width: 768px) { .topbar .family { display: none; } .topbar .inner { justify-content: flex-end; } }

/* 로그인 상태 (app.js 가 채움) */
.account { position: relative; display: inline-block; }
.account-btn { background: none; border: 0; padding: 0; cursor: pointer; color: #fff; font-size: 13px; display: inline-flex; align-items: center; gap: 6px; }
.account-btn.on { font-weight: 700; }
.account-avatar { display: none; }
.account-menu { position: absolute; right: 0; top: calc(100% + 10px); min-width: 200px; background: #fff; color: var(--text); border: 1px solid var(--line); box-shadow: 0 6px 18px rgba(0,0,0,.12); z-index: 120; padding: 6px 0; }
.account-menu[hidden] { display: none; }
.account-head { padding: 8px 16px 10px; border-bottom: 1px solid var(--line-2); margin-bottom: 4px; }
.account-head strong { display: block; font-size: 14px; }
.account-head span { font-size: 12px; color: var(--text-2); }
.account-menu a, .account-menu button { display: block; width: 100%; text-align: left; padding: 8px 16px; background: none; border: 0; font-size: 14px; cursor: pointer; color: var(--text); }
.account-menu a:hover, .account-menu button:hover { background: var(--bg-2); color: var(--navy); }
.account-menu [data-logout] { color: var(--red); }

/* ── 헤더 · 주메뉴 ── */
.header { position: relative; z-index: 100; background: #fff; border-bottom: 1px solid var(--line-2); }
.header .inner { display: flex; align-items: center; height: 86px; gap: 24px; }
.logo { display: flex; align-items: center; gap: 12px; flex: none; }
.logo-mark { width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center; background: linear-gradient(135deg, var(--navy) 55%, var(--sky)); color: #fff; font: 700 15px/1 var(--font); letter-spacing: 0; }
.logo-img { display: block; width: 295px; max-width: min(295px, 70vw); height: auto; }
.logo-mark img { width: 100%; height: 100%; object-fit: contain; }
.logo-text strong { display: block; font-size: 21px; font-weight: 700; color: var(--navy); letter-spacing: -.04em; line-height: 1.2; }
.logo-text em { display: block; font-style: normal; font-size: 11px; color: var(--text-2); letter-spacing: 0; }
.gnb { margin-left: auto; height: 100%; }
.gnb > ul { display: flex; height: 100%; }
.gnb > ul > li { position: relative; height: 100%; }
.gnb > ul > li > a { display: flex; align-items: center; height: 100%; padding: 0 22px; font-size: 17px; font-weight: 500; color: #222; position: relative; }
.gnb > ul > li > a::after { content: ""; position: absolute; left: 22px; right: 22px; bottom: -1px; height: 3px; background: var(--navy); transform: scaleX(0); transition: transform .2s; }
.gnb > ul > li:hover > a::after, .gnb > ul > li:focus-within > a::after, .gnb > ul > li.on > a::after { transform: scaleX(1); }
.gnb > ul > li.on > a { color: var(--navy); font-weight: 700; }
.gnb .depth2 { position: absolute; left: 50%; top: 100%; transform: translateX(-50%); min-width: 190px; background: var(--navy); padding: 14px 0; opacity: 0; visibility: hidden; transition: opacity .15s; }
.gnb > ul > li:hover .depth2, .gnb > ul > li:focus-within .depth2 { opacity: 1; visibility: visible; }
.gnb .depth2 a { display: block; padding: 7px 22px; color: rgba(255,255,255,.85); font-size: 15px; white-space: nowrap; }
.gnb .depth2 a:hover { color: #fff; background: rgba(255,255,255,.08); }
.hd-btn { flex: none; width: 40px; height: 40px; display: grid; place-items: center; background: none; border: 0; cursor: pointer; color: #222; }
.hd-btn svg { width: 24px; height: 24px; }
.hd-btn:hover { color: var(--navy); }
.menu-btn { display: none; }
@media (max-width: 1100px) { .gnb > ul > li > a { padding: 0 14px; font-size: 16px; } .gnb > ul > li > a::after { left: 14px; right: 14px; } }
@media (max-width: 960px) {
  .gnb { display: none; }
  .menu-btn { display: grid; }
  .header .inner { height: 64px; gap: 6px; }
  .search-btn { margin-left: auto; }
  .logo-mark { width: 38px; height: 38px; font-size: 13px; }
  .logo-text strong { font-size: 17px; }
  .logo { flex: 0 1 auto; min-width: 0; }
  .logo-img { width: 250px; max-width: 100%; }
}

/* 모바일 전체 메뉴 */
.mnav { position: fixed; inset: 0; z-index: 150; display: none; }
.mnav.open { display: block; }
.mnav-bg { position: absolute; inset: 0; background: rgba(0,0,0,.45); }
.mnav-panel { position: absolute; top: 0; right: 0; bottom: 0; width: min(86vw, 360px); background: #fff; overflow-y: auto; }
.mnav-head { display: flex; justify-content: space-between; align-items: center; background: var(--navy); color: #fff; padding: 14px 18px; }
.mnav-head button { background: none; border: 0; color: #fff; cursor: pointer; font-size: 26px; line-height: 1; }
.mnav details { border-bottom: 1px solid var(--line-2); }
.mnav summary { list-style: none; cursor: pointer; padding: 15px 18px; font-weight: 700; display: flex; justify-content: space-between; }
.mnav summary::-webkit-details-marker { display: none; }
.mnav summary::after { content: "+"; color: var(--text-3); font-weight: 400; }
.mnav details[open] summary { color: var(--navy); }
.mnav details[open] summary::after { content: "−"; }
.mnav details ul { background: var(--bg-2); padding: 6px 0; }
.mnav details a { display: block; padding: 9px 28px; font-size: 15px; color: var(--text); }

/* ── 서브 비주얼 · 로케이션 바 ── */
.sub-visual { position: relative; height: 300px; color: #fff; text-align: center; background: #1b2350 center/cover no-repeat;
  background-image: linear-gradient(rgba(14,38,90,.45), rgba(14,38,90,.45)), var(--visual, linear-gradient(120deg, #18225c, #2b4d8f 55%, #3d6aa8));
  background-position: center 62%;
  /* 제목+영문 묶음을 위치 표시 줄 위 공간의 정가운데에 */
  display: flex; flex-direction: column; justify-content: center; box-sizing: border-box; padding-bottom: 52px; }
.sub-visual h2 { margin: 0; padding-top: 0; font-size: 40px; font-weight: 700; letter-spacing: -.03em; text-shadow: 0 2px 10px rgba(0,0,0,.25); }
.sub-visual .en { display: block; margin-top: 6px; font-size: 14px; letter-spacing: .12em; text-transform: uppercase; opacity: .8; font-weight: 400; }
.location { position: absolute; left: 0; right: 0; bottom: 0; background: rgba(27,69,150,.86); text-align: left; }
.location .inner { display: flex; height: 52px; }
.location .home { width: 52px; display: grid; place-items: center; background: rgba(255,255,255,.12); border-right: 1px solid rgba(255,255,255,.2); }
.location .home svg { width: 18px; height: 18px; }
.loc-dd { position: relative; border-right: 1px solid rgba(255,255,255,.2); }
.loc-dd summary { list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 22px; height: 52px; padding: 0 18px; min-width: 200px; font-weight: 500; font-size: 15px; }
.loc-dd summary::-webkit-details-marker { display: none; }
.loc-dd summary::after { content: ""; width: 7px; height: 7px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg) translateY(-3px); }
.loc-dd[open] summary::after { transform: rotate(-135deg) translateY(-2px); }
.loc-dd ul { position: absolute; left: 0; right: 0; top: 100%; background: #fff; border: 1px solid var(--line); border-top: 0; z-index: 60; box-shadow: 0 6px 16px rgba(0,0,0,.1); }
.loc-dd ul a { display: block; padding: 9px 18px; color: var(--text); font-size: 14px; }
.loc-dd ul a:hover { color: var(--navy); background: var(--bg-2); }
.loc-dd ul a.on { color: var(--navy); background: var(--bg-2); font-weight: 700; }
@media (max-width: 768px) {
  .sub-visual { height: 200px; }
  .sub-visual { padding-bottom: 46px; }
  .sub-visual h2 { padding-top: 0; font-size: 28px; }
  .location .inner { padding: 0; height: 46px; }
  .location .home { width: 46px; }
  .loc-dd { flex: 1; min-width: 0; }
  .loc-dd summary { min-width: 0; height: 46px; padding: 0 12px; font-size: 14px; }
  .loc-dd summary span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
}

/* ── 본문 ── */
.container { max-width: var(--inner); margin: 0 auto; padding: 60px 20px 100px; }
.page-title { margin: 0 0 44px; text-align: center; font-size: 36px; font-weight: 700; color: #111; letter-spacing: -.04em; }
.page-title::after { content: ""; display: block; width: 30px; height: 3px; background: var(--navy); margin: 18px auto 0; }
@media (max-width: 768px) { .container { padding: 36px 16px 70px; } .page-title { font-size: 26px; margin-bottom: 28px; } }
.notice-txt { font-size: 14px; color: var(--text-2); margin: 0 0 14px; }
.notice-txt::before { content: "※ "; }

/* ── 게시판 목록 ── */
.board-top { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; margin-bottom: 14px; flex-wrap: wrap; }
.total { margin: 0; font-size: 15px; }
.total strong { color: var(--navy); }
.board-search { display: flex; gap: 6px; }
.board-search select, .board-search input { height: 38px; border: 1px solid var(--line); border-radius: var(--radius); padding: 0 12px; background: #fff; font-size: 14px; }
.board-search select { min-width: 110px; color: var(--text-2); }
.board-search input { width: 220px; }
.board-search button { height: 38px; padding: 0 18px; border: 0; border-radius: var(--radius); background: var(--navy); color: #fff; font-size: 14px; cursor: pointer; }
@media (max-width: 640px) { .board-search { width: 100%; } .board-search select { min-width: 0; width: 84px; padding: 0 8px; } .board-search input { flex: 1; width: auto; min-width: 0; } }

.board-list { width: 100%; border-collapse: collapse; border-top: 2px solid var(--line-dark); font-size: 15px; }
.board-list th { height: 54px; font-weight: 500; color: #555; border-bottom: 1px solid #bbb; font-size: 15px; }
.board-list td { height: 62px; padding: 8px 10px; border-bottom: 1px solid var(--line-2); text-align: center; color: #555; }
.board-list .subject { text-align: left; padding-left: 20px; }
.board-list .subject a { color: #222; font-weight: 500; }
.board-list .subject a { transition: color .15s; }
.board-list .subject a:hover { color: var(--navy); }
.board-list .num { width: 80px; } .board-list .cate { width: 110px; } .board-list .writer { width: 130px; }
.board-list .writer2 { width: 120px; }
.board-list .ev-box { display: none; }
.board-list .hit { width: 80px; } .board-list .date { width: 120px; } .board-list .file { width: 60px; }
.board-list tr.is-notice td { background: #f2f7fd; }
.board-list .ico-file { display: inline-block; width: 16px; height: 16px; color: var(--text-3); vertical-align: -3px; }
.board-list tr[hidden] { display: none; }
.cate-label { display: inline-block; font-size: 13px; color: var(--text-2); }
.empty-row td { height: 160px; color: var(--text-3); }
@media (max-width: 768px) {
  .board-list thead { display: none; }
  .board-list, .board-list tbody, .board-list tr, .board-list td { display: block; width: 100% !important; }
  .board-list tr { padding: 14px 4px; border-bottom: 1px solid var(--line-2); }
  .board-list td { height: auto; padding: 0; border: 0; text-align: left; }
  .board-list .num, .board-list .file, .board-list .hit { display: none; }
  .board-list .subject { padding: 0 0 6px; font-size: 16px; }
  .board-list .cate, .board-list .writer, .board-list .writer2, .board-list .date { display: inline; width: auto !important; font-size: 13px; color: var(--text-3); }
  .board-list .writer::after, .board-list .writer2:not(:empty)::after, .board-list .cate:not(:empty)::after { content: "|"; margin: 0 8px; color: var(--line); }
  .board-list .cate:empty, .board-list .writer:empty, .board-list .writer2:empty { display: none; }
}

/* 페이지 번호 */
.pager { display: flex; justify-content: center; align-items: center; gap: 4px; margin: 44px 0 0; flex-wrap: wrap; }
.pager:empty { display: none; }
.pager button { min-width: 34px; height: 34px; padding: 0 6px; border: 1px solid transparent; background: none; color: #777; font-size: 15px; cursor: pointer; }
.pager button:hover:not(:disabled) { color: var(--navy); }
.pager button[aria-current="true"] { color: var(--navy); font-weight: 700; border-bottom: 2px solid var(--navy); }
.pager button:disabled { opacity: .35; cursor: default; }
.pager .pg { display: inline-flex; align-items: center; justify-content: center; min-width: 34px; height: 34px; padding: 0 6px; color: #777; font-size: 15px; border-bottom: 2px solid transparent; transition: color .15s; }
.pager a.pg:hover { color: var(--navy); }
.pager .pg[aria-current="page"] { color: var(--navy); font-weight: 700; border-bottom-color: var(--navy); }
.pager span.pg { opacity: .35; }
.search-reset { margin-left: 10px; font-size: 13px; color: var(--text-2); text-decoration: underline; text-underline-offset: 2px; }

/* ── 게시물 보기 ── */
.board-view { border-top: 2px solid var(--line-dark); }
.view-head { padding: 28px 24px 22px; border-bottom: 1px solid var(--line); }
.view-title { margin: 0 0 14px; font-size: 24px; font-weight: 700; color: #111; line-height: 1.45; }
.view-info { display: flex; flex-wrap: wrap; gap: 6px 0; font-size: 14px; color: var(--text-2); }
.view-info li + li::before { content: ""; display: inline-block; width: 1px; height: 11px; background: #ccc; margin: 0 14px; vertical-align: 0; }
.view-info b { font-weight: 500; color: #444; margin-right: 6px; }
.view-file { padding: 14px 24px; background: var(--bg-2); border-bottom: 1px solid var(--line); font-size: 14px; }
.view-file li { display: flex; align-items: center; gap: 8px; padding: 3px 0; }
.view-file svg { width: 15px; height: 15px; color: var(--text-3); flex: none; }
.view-file a { color: var(--blue); }
.view-file a:hover { text-decoration: underline; }
.view-file .locked { color: var(--text-3); }
.view-body { padding: 40px 24px 60px; border-bottom: 1px solid var(--line); min-height: 220px; }
.view-nav { border-bottom: 1px solid var(--line); font-size: 15px; }
.view-nav dl { display: flex; margin: 0; border-top: 1px solid var(--line-2); }
.view-nav dl:first-child { border-top: 0; }
.view-nav dt { width: 120px; flex: none; padding: 15px 24px; color: #555; font-weight: 500; }
.view-nav dd { margin: 0; padding: 15px 10px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.view-nav dd a:hover { color: var(--navy); }
.btn-area { display: flex; justify-content: flex-end; margin-top: 26px; }
.btn-list { display: inline-flex; align-items: center; height: 44px; padding: 0 30px; background: #666; color: #fff; font-size: 15px; border-radius: var(--radius); }
.btn-list:hover { background: #555; }
@media (max-width: 768px) {
  .view-head { padding: 20px 4px 16px; } .view-title { font-size: 19px; }
  .view-file, .view-body { padding-left: 4px; padding-right: 4px; }
  .view-body { padding-top: 24px; }
  .view-nav dt { width: 74px; padding: 13px 4px; font-size: 14px; }
  .btn-area { justify-content: center; }
}

/* 본문 서식 (옛 글·페이지) */
.prose { font-size: 16px; line-height: 1.85; color: #333; }
.prose > :first-child { margin-top: 0; }
.prose p { margin: 0 0 .9em; }
.prose b, .prose strong { font-weight: 700; color: #222; }
.prose img { display: block; margin: 14px auto; }
.prose a { color: var(--blue); text-decoration: underline; text-underline-offset: 3px; }
.prose ul { list-style: disc; padding-left: 1.3em; } .prose ol { list-style: decimal; padding-left: 1.3em; }
.prose .blk > div + div { margin-top: .7em; }
.prose .blk + .blk { margin-top: 1.1em; }
.table-wrap { overflow-x: auto; margin: 16px 0; -webkit-overflow-scrolling: touch; }
.prose table { width: 100%; border-collapse: collapse; border-top: 2px solid var(--line-dark); font-size: 14.5px; line-height: 1.55; }
.prose th, .prose td { padding: 11px 12px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; min-width: 4.5em; }
.prose td + td, .prose th + th, .prose td + th, .prose th + td { border-left: 1px solid var(--line-2); }
.prose th { background: var(--bg-2); font-weight: 500; color: #222; white-space: nowrap; }
.page-content { max-width: 1000px; margin: 0 auto; }

/* ── 메인 ── */
.main-visual { position: relative; height: 520px; color: #fff; display: flex; align-items: center; background: #1b2350 center/cover no-repeat;
  background-image: linear-gradient(90deg, rgba(14,38,90,.66), rgba(14,38,90,.08) 70%), var(--visual, linear-gradient(120deg, #141c52, #284a8c 60%, #4a77b5));
  background-position: center 58%; }
.main-visual .inner { width: 100%; }
.main-visual .eyebrow { margin: 0 0 12px; font-size: 15px; letter-spacing: .14em; text-transform: uppercase; opacity: .85; }
.main-visual h2 { margin: 0; font-size: 52px; font-weight: 700; line-height: 1.2; letter-spacing: -.04em; }
.main-visual p.lead { margin: 18px 0 0; font-size: 18px; opacity: .9; font-weight: 300; }
@media (max-width: 768px) { .main-visual { height: 320px; } .main-visual h2 { font-size: 32px; } .main-visual p.lead { font-size: 15px; } }

/* 메인 캐러셀: 슬라이드마다 배경, 서서히 바뀜 */
.main-visual.hero { display: block; overflow: hidden; background: #0f1f4d; }
.hero-slide { position: absolute; inset: 0; display: flex; align-items: center; opacity: 0; visibility: hidden;
  transition: opacity .8s ease, visibility 0s linear .8s; background: #1b2350 center/cover no-repeat; }
.hero-slide.is-on { opacity: 1; visibility: visible; transition: opacity .8s ease, visibility 0s; }
.hero-slide .inner { width: 100%; padding-bottom: 40px; }
.hero-slide.s-main { background-image: linear-gradient(90deg, rgba(14,38,90,.66), rgba(14,38,90,.08) 70%), var(--visual, linear-gradient(120deg, #141c52, #284a8c 60%, #4a77b5));
  background-position: center 58%; }
.hero-slide.s-renew {
  background-color: #0d1d4a;
  background-image:
    radial-gradient(circle at 82% 28%, rgba(120,190,255,.55), rgba(120,190,255,0) 34%),
    radial-gradient(circle at 64% 92%, rgba(56,214,196,.42), rgba(56,214,196,0) 38%),
    radial-gradient(circle at 12% 8%, rgba(98,92,230,.5), rgba(98,92,230,0) 40%),
    repeating-linear-gradient(115deg, rgba(255,255,255,.045) 0 1px, transparent 1px 46px),
    linear-gradient(125deg, #0b1a45 0%, #17327a 48%, #1d5aa6 100%); }
.hero-slide.s-renew::after { content: ""; position: absolute; right: 7%; top: 50%; width: 360px; height: 360px; transform: translateY(-50%);
  border-radius: 50%; border: 1px solid rgba(255,255,255,.18); box-shadow: 0 0 0 46px rgba(255,255,255,.035), 0 0 0 110px rgba(255,255,255,.025); pointer-events: none; }
.hero-slide.s-renew h2 { position: relative; z-index: 1; }
/* 새 홈페이지 안내 슬라이드 (/renewal/ 로) */
.hero-slide.s-new { background-color: #05070d;
  background-image: radial-gradient(circle at 78% 30%, rgba(26,159,217,.38), rgba(26,159,217,0) 38%), radial-gradient(circle at 92% 90%, rgba(27,69,150,.55), rgba(27,69,150,0) 42%),
    linear-gradient(135deg, #05070d 0%, #0b1530 55%, #0d1f45 100%); }
.hero-slide.s-new .eyebrow { color: #8fd3f5; }
.hero-slide.s-new h2 .hl { background: linear-gradient(90deg, #8fd3f5, #fff 70%); -webkit-background-clip: text; background-clip: text; color: transparent; }
.hero-feats { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 22px; counter-reset: feat; }
.hero-feats li { counter-increment: feat; padding: 6px 14px; border: 1px solid rgba(255,255,255,.22); border-radius: 999px; color: rgba(255,255,255,.88); font-size: 14px; background: rgba(255,255,255,.04); }
.hero-feats li::before { content: "0" counter(feat); margin-right: 7px; color: #8fd3f5; font-size: 12px; font-weight: 700; }
@media (max-width: 768px) { .hero-feats { display: none; } }
.hero-cta { position: relative; z-index: 1; display: inline-flex; align-items: center; gap: 10px; margin-top: 28px; padding: 14px 24px; border-radius: 999px;
  background: #fff; color: var(--navy); font-size: 16px; font-weight: 700; box-shadow: 0 10px 30px rgba(5,15,45,.28); transition: transform .2s, box-shadow .2s; }
.hero-cta:hover { transform: translateY(-2px); box-shadow: 0 14px 34px rgba(5,15,45,.36); }
.hero-cta span { transition: transform .2s; }
.hero-cta:hover span { transform: translateX(4px); }
.hero-ctrl { position: absolute; left: 0; right: 0; bottom: 28px; z-index: 2; }
.hero-ctrl .inner { display: flex; align-items: center; gap: 10px; }
.hero-arrow { width: 36px; height: 36px; display: inline-grid; place-items: center; border: 1px solid rgba(255,255,255,.45); border-radius: 50%;
  background: rgba(255,255,255,.08); color: #fff; cursor: pointer; padding: 0; }
.hero-arrow:hover { background: rgba(255,255,255,.2); }
.hero-arrow svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.hero-play .i-play { display: none; fill: currentColor; stroke: none; }
.hero-play.is-paused .i-play { display: inline; }
.hero-play.is-paused .i-pause { display: none; }
.hero-dots { display: inline-flex; gap: 8px; padding: 0 4px; }
.hero-dot { width: 8px; height: 8px; padding: 0; border: 0; border-radius: 999px; background: rgba(255,255,255,.45); cursor: pointer; transition: width .3s, background .3s; }
.hero-dot[aria-current="true"] { width: 26px; background: #fff; }
@media (max-width: 768px) {
  .hero-slide .inner { padding-bottom: 46px; }
  .hero-slide.s-renew::after { width: 220px; height: 220px; right: -60px; }
  .hero-cta { margin-top: 18px; padding: 11px 18px; font-size: 14px; }
  .hero-ctrl { bottom: 18px; }
  .hero-arrow { width: 32px; height: 32px; }
}
@media (prefers-reduced-motion: reduce) { .hero-slide, .hero-slide.is-on { transition: none; } }

.main-sec { padding: 70px 0; }
.main-sec + .main-sec { padding-top: 0; }
.main-grid { display: grid; grid-template-columns: 1.3fr 1fr; gap: 50px; }
@media (max-width: 960px) { .main-grid { grid-template-columns: 1fr; gap: 40px; } .main-sec { padding: 44px 0; } }
.mb-head { display: flex; align-items: center; justify-content: space-between; border-bottom: 2px solid var(--line-dark); margin-bottom: 4px; }
.mb-title { margin: 0; padding: 0 0 12px; font-size: 24px; font-weight: 700; color: #111; }
.mb-more { width: 30px; height: 30px; display: grid; place-items: center; color: #777; font-size: 26px; font-weight: 300; line-height: 1; margin-bottom: 10px; }
.mb-more:hover { color: var(--navy); }
/* 탭 (app.js .segmented 로 동작) */
.segmented { display: flex; gap: 26px; }
/* 홈 새 소식: 세 목록을 옆으로 나란히 (app.js) — 밀면 따라오고, 높이는 가장 긴 목록에 맞춤 */
.seg-view { overflow: hidden; touch-action: pan-y; }
.seg-track { display: flex; transition: transform .3s cubic-bezier(.2, .7, .3, 1); will-change: transform; }
.seg-track.is-drag { transition: none; }
.seg-track > .seg-panel { flex: 0 0 100%; display: flex; flex-direction: column; }
.seg-track > .seg-panel > .mb-empty { flex: 1; display: flex; align-items: center; justify-content: center; margin: 0; }
@media (prefers-reduced-motion: reduce) { .seg-track { transition: none; } }
/* 넘길 수 있다는 점 (iOS 페이지 점처럼) — 손가락으로 넘기는 화면에서만 */
.seg-dots { display: none; justify-content: center; gap: 8px; padding: 7px 0 0; }
.seg-dots button { width: 7px; height: 7px; padding: 0; border: 0; border-radius: 50%; background: #d3d6db; cursor: pointer; transition: background-color .25s; }
.seg-dots button.is-on { background: #3a3f47; }
@media (max-width: 960px), (hover: none) { .seg-dots { display: flex; } }
@media (prefers-reduced-motion: reduce) { .seg-dots button { transition: none; } }
.segmented button { position: relative; background: none; border: 0; padding: 0 0 12px; font-size: 22px; font-weight: 500; color: #aaa; cursor: pointer; letter-spacing: -.03em; }
.segmented button[aria-selected="true"] { color: #111; font-weight: 700; }
.segmented button[aria-selected="true"]::after { content: ""; position: absolute; left: 0; right: 0; bottom: -2px; height: 2px; background: var(--navy); }
.seg-panel[hidden] { display: none; }
@media (max-width: 640px) { .segmented { gap: 16px; } .segmented button { font-size: 18px; } }
/* 칸이 긴 제목 길이만큼 늘어나 휴대폰 화면을 넘지 않게 (제목은 … 으로 줄임) */
.main-grid > *, [data-latest], .seg-panel, .mb-list, .mb-list li { min-width: 0; max-width: 100%; }
.mb-list li { border-bottom: 1px solid var(--line-2); }
.mb-list a { display: flex; align-items: center; gap: 16px; padding: 15px 2px; }
.mb-list .t { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 16px; color: #222; }
.mb-list a .t { transition: color .15s; }
.mb-list a:hover .t { color: var(--navy); }
.mb-list .d { flex: none; font-size: 14px; color: var(--text-3); }
.mb-empty { padding: 50px 0; text-align: center; color: var(--text-3); }
/* 행사일정 (날짜 상자) */
.ev-list li { border-bottom: 1px solid var(--line-2); }
.ev-list a { display: flex; gap: 18px; align-items: center; padding: 14px 2px; }
.ev-date { flex: none; width: 64px; text-align: center; border: 1px solid var(--line); padding: 6px 0; }
.ev-date b { display: block; font-size: 22px; line-height: 1.1; color: var(--navy); }
.ev-date span { font-size: 12px; color: var(--text-2); }
.ev-list .ev-txt { min-width: 0; }
.ev-list .t { font-size: 16px; color: #222; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: block; }
.ev-list .p { font-size: 13px; color: var(--text-3); }
.ev-list a .t { transition: color .15s; }
.ev-list a:hover .t { color: var(--navy); }
/* 바로가기 */
.quick-links { background: var(--bg-2); padding: 56px 0; }
.ql-grid { display: grid; grid-template-columns: repeat(6, 1fr); border-left: 1px solid var(--line); border-top: 1px solid var(--line); background: #fff; }
.ql-grid a { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; height: 150px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); font-size: 15px; color: #333; transition: background .15s, color .15s; }
.ql-grid svg { width: 38px; height: 38px; color: var(--navy); transition: color .15s; }
.ql-grid a:hover { background: var(--navy); color: #fff; }
.ql-grid a:hover svg { color: #fff; }
@media (max-width: 960px) { .ql-grid { grid-template-columns: repeat(3, 1fr); } .ql-grid a { height: 110px; font-size: 14px; } .ql-grid svg { width: 30px; height: 30px; } }
/* 관련 사이트 */
.family-sites { border-top: 1px solid var(--line); } /* 아래 줄은 바로 밑 .footer-links 의 윗줄이 맡는다 (겹치면 2px 두 줄로 보임) */
.fs-title { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.family-sites ul { display: grid; grid-template-columns: repeat(4, 1fr); }
.family-sites a { display: flex; align-items: center; justify-content: center; height: 76px; color: #555; font-size: 15px; border-left: 1px solid var(--line-2); }
.family-sites li:last-child a { border-right: 1px solid var(--line-2); }
.family-sites a:hover { color: var(--navy); }
/* 휴대폰: 바로가기 칸과 같은 회색 바탕 위에 닫힌 상자 2×2 (화면 끝까지 이어지는 줄 없이) */
@media (max-width: 768px) {
  .quick-links { padding: 36px 0 0; } /* 회색 칸 위아래 여백을 36px 로 같게 */
  .family-sites { background: var(--bg-2); border: 0; padding: 28px 0 36px; }
  .fs-title { position: static; width: auto; height: auto; overflow: visible; clip: auto; margin: 0 0 10px; padding: 0; border: 0; font-size: 13px; font-weight: 700; color: var(--text-3); letter-spacing: .02em; }
  .family-sites ul { grid-template-columns: repeat(2, 1fr); border-left: 1px solid var(--line); border-top: 1px solid var(--line); background: #fff; }
  .family-sites a, .family-sites li:last-child a { height: 54px; font-size: 14px; color: #444; border: 0; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
}

/* 사이트맵 · 링크 목록 */
.sitemap { display: grid; grid-template-columns: repeat(4, 1fr); gap: 36px 28px; }
.sitemap h3 { margin: 0 0 12px; padding: 0 0 12px; border-bottom: 2px solid var(--navy); font-size: 19px; color: var(--navy); }
.sitemap li a { display: block; padding: 6px 0; font-size: 15px; color: #444; }
.sitemap li a:hover { color: var(--navy); }
.sitemap .lock { font-size: 12px; color: var(--text-3); margin-left: 6px; }
@media (max-width: 960px) { .sitemap { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .sitemap { grid-template-columns: 1fr; } }
.link-boxes { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
.link-boxes a { display: flex; justify-content: space-between; align-items: center; padding: 26px 28px; border: 1px solid var(--line); font-size: 18px; font-weight: 500; }
.link-boxes a::after { content: "→"; color: var(--text-3); }
.link-boxes a:hover { border-color: var(--navy); color: var(--navy); }
@media (max-width: 640px) { .link-boxes { grid-template-columns: 1fr; } }
.info-box { margin: 40px 0 0; padding: 24px 28px; background: var(--bg-2); border-top: 2px solid var(--line-dark); font-size: 15px; }
.info-box dt { font-weight: 700; color: #222; }
.info-box dd { margin: 4px 0 12px; color: var(--text-2); }

/* 빈 상태 */
.empty { text-align: center; color: var(--text-3); padding: 70px 16px; }
.empty svg { width: 34px; height: 34px; display: block; margin: 0 auto 12px; color: #bbb; }
.empty p { margin: 0; }
.empty strong { color: #555; }

/* ── 푸터 ── */
.site-footer { background: var(--bg-3); color: #777; font-size: 13.5px; }
.footer-links { border-bottom: 1px solid var(--line); background: #fff; border-top: 1px solid var(--line); }
.footer-links .inner { display: flex; gap: 22px; height: 52px; align-items: center; flex-wrap: wrap; }
.footer-links a { color: #555; }
.footer-links a.privacy { color: var(--navy); font-weight: 700; }
.footer-main .inner { display: flex; align-items: center; gap: 44px; padding-top: 34px; padding-bottom: 40px; }
.footer-logo { flex: none; display: flex; align-items: center; gap: 10px; color: #888; }
.footer-logo .logo-mark { width: 40px; height: 40px; background: #999; font-size: 13px; }
.footer-logo strong { display: block; font-size: 17px; color: #777; }
.footer-logo em { display: block; font-style: normal; font-size: 11px; }
.footer-main address { font-style: normal; line-height: 1.8; }
.footer-main address a:hover { text-decoration: underline; }
.footer-main .copy { margin: 4px 0 0; font-size: 12px; color: #999; letter-spacing: 0; }
@media (max-width: 768px) { .footer-main .inner { flex-direction: column; align-items: flex-start; gap: 18px; } .footer-links .inner { height: auto; padding-top: 12px; padding-bottom: 12px; gap: 8px 16px; } }

/* 퀵메뉴 */
.quick { position: fixed; right: 0; top: 50%; transform: translateY(-50%); z-index: 90; width: 92px; background: #fff; box-shadow: 0 4px 16px rgba(0,0,0,.14); text-align: center; font-size: 13px; }
.quick strong { display: block; background: var(--navy); color: #fff; padding: 14px 4px; font-size: 13px; line-height: 1.3; letter-spacing: 0; }
.quick a { display: block; padding: 12px 4px; letter-spacing: -.03em; word-break: keep-all; border-bottom: 1px solid var(--line-2); color: #444; line-height: 1.35; }
.quick a:hover { color: var(--navy); }
.quick a.top { background: #222; color: #fff; border: 0; font-weight: 700; }
@media (max-width: 1360px) { .quick { display: none; } }

/* ── 검색 창 (app.js) ── */
.sheet { position: fixed; inset: 0; z-index: 180; display: none; }
.sheet.open { display: block; }
.sheet-bg { position: absolute; inset: 0; background: rgba(0,0,0,.5); }
.sheet-panel { position: absolute; left: 50%; top: 90px; transform: translateX(-50%); width: min(720px, calc(100% - 32px)); max-height: 76vh; display: flex; flex-direction: column; background: #fff; border-top: 3px solid var(--navy); padding: 22px 22px 0; }
.sheet-top { display: flex; gap: 8px; align-items: center; padding-bottom: 16px; }
.sheet-top .searchbar { flex: 1; margin: 0; }
.sheet-cancel { flex: none; height: 44px; padding: 0 16px; border: 1px solid var(--line); background: #fff; cursor: pointer; font-size: 14px; }
.sheet-results { overflow-y: auto; margin: 0 -22px; padding: 0 22px 18px; }
.sheet-results:empty { display: none; }
.sheet-hint { margin: 0; color: var(--text-3); font-size: 14px; padding-bottom: 6px; }
.sheet-results .group-h { margin: 0 0 8px; padding: 0 6px; font-size: 13px; font-weight: 700; color: var(--text-2); }
.sheet-results .list + .group-h { margin-top: 26px; }
.sheet-results .list > li:last-child { border-bottom: 0; }
.searchbar { position: relative; display: block; }
.searchbar input { width: 100%; height: 44px; border: 1px solid #bbb; border-radius: var(--radius); padding: 0 40px 0 40px; background: #fff; font-size: 16px; outline: none; -webkit-appearance: none; appearance: none; }
.searchbar input:focus { border-color: var(--navy); }
.searchbar input::-webkit-search-cancel-button { -webkit-appearance: none; }
.searchbar > svg { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); width: 18px; height: 18px; color: #999; pointer-events: none; }
.search-clear { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); width: 30px; height: 30px; border: 0; background: none; color: #aaa; cursor: pointer; display: grid; place-items: center; }
.search-clear[hidden] { display: none; }
.search-clear svg { width: 18px; height: 18px; }

/* ── 공용 리스트 (검색 결과·관리자 화면) ── */
.list { border-top: 2px solid var(--line-dark); background: #fff; }
.list > li { border-bottom: 1px solid var(--line-2); }
.list > li[hidden] { display: none; }
.cell { display: flex; align-items: center; gap: 14px; padding: 13px 6px; min-height: 52px; color: var(--text); }
a.cell:hover { background: var(--bg-2); }
a.cell:hover .cell-title { color: var(--navy); }
.cell-main { flex: 1; min-width: 0; }
.cell-title { font-size: 15.5px; font-weight: 500; color: #222; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.cell-sub { font-size: 13px; color: var(--text-2); margin-top: 2px; }
.cell-file { color: var(--text-3); }
.cell-detail { font-size: 13px; color: var(--text-3); white-space: nowrap; }
.chev { display: none; }
.badge { display: inline-block; font-size: 12px; font-weight: 500; padding: 1px 8px; border: 1px solid var(--navy); color: var(--navy); margin-right: 6px; vertical-align: 1px; }
.badge.green { border-color: var(--green); color: var(--green); }
.badge.orange { border-color: var(--orange); color: var(--orange); }
.badge.red { border-color: var(--red); color: var(--red); }
.group-h { font-size: 14px; font-weight: 700; color: #333; margin: 26px 0 8px; }
.group-f { font-size: 13.5px; color: var(--text-2); margin: 12px 0 0; }
.section-h { display: flex; justify-content: space-between; align-items: baseline; font-size: 20px; font-weight: 700; margin: 40px 0 12px; }
.section-h a { font-size: 14px; font-weight: 400; color: var(--text-2); }

/* ── 로그인·구성원 인증·관리자 (PHP 화면) ── */
.navbar { background: #fff; border-bottom: 1px solid var(--line-2); border-top: 4px solid var(--navy); } /* 관리자·로그인 화면: 빈 띠 대신 얇은 선 */
.navbar-in { max-width: var(--inner); margin: 0 auto; padding: 0 20px; height: 80px; display: flex; align-items: center; }
.brand { display: flex; align-items: center; gap: 12px; color: var(--navy); font-weight: 700; font-size: 20px; letter-spacing: -.04em; }
.brand-mark { width: 44px; height: 44px; border-radius: 50%; background: var(--navy); color: #fff; display: grid; place-items: center; font-size: 14px; }
.brand small { display: block; font-size: 11px; font-weight: 400; color: var(--text-2); letter-spacing: 0; }
body.no-tabbar { background: var(--bg-2); min-height: 100vh; }
.auth-card { max-width: 460px; margin: 60px auto; padding: 44px 36px 36px; background: #fff; border-top: 3px solid var(--navy); box-shadow: 0 2px 12px rgba(0,0,0,.06); text-align: center; }
.auth-icon { width: 56px; height: 56px; margin: 0 auto 18px; border-radius: 50%; display: grid; place-items: center; color: var(--navy); background: #e8f1fb; }
.auth-icon svg { width: 26px; height: 26px; }
.auth-card h1 { margin: 0 0 10px; font-size: 23px; color: #111; }
.auth-card p { margin: 0; color: var(--text-2); font-size: 15px; }
.auth-actions { display: flex; flex-direction: column; gap: 8px; margin-top: 26px; }
.auth-actions + .auth-actions { margin-top: 8px; }
.auth-actions .btn { width: 100%; }
.auth-id { display: flex; justify-content: space-between; margin-top: 22px; padding: 12px 16px; background: var(--bg-2); font-size: 14px; }
.auth-id span { color: var(--text-2); }
.auth-id strong { font-variant-numeric: tabular-nums; user-select: all; }
.auth-form { display: flex; flex-direction: column; gap: 12px; margin-top: 24px; text-align: left; }
.field { display: flex; flex-direction: column; gap: 6px; }
.field span { font-size: 13px; font-weight: 700; color: #444; }
.field input { height: 48px; padding: 0 14px; border: 1px solid #bbb; border-radius: var(--radius); font-size: 18px; letter-spacing: .06em; outline: none; }
.field input:focus { border-color: var(--navy); }
.auth-form .btn { width: 100%; }
.auth-error { margin: 0; padding: 10px 12px; border-radius: var(--radius); background: #fdecec; color: #c0302b; font-size: 14px; }
.auth-note { margin-top: 12px !important; font-size: 13.5px !important; }
.auth-card .toast { text-align: left; }
/* 로그인 화면 · 휴대폰 QR 로그인 */
.login-or { display: flex; align-items: center; gap: 12px; margin: 26px 0 4px; color: var(--text-2); font-size: 13px; }
.login-or::before, .login-or::after { content: ""; flex: 1; height: 1px; background: #e2e2e2; }
.qr-box { margin-top: 18px; }
.qr-img { width: 200px; height: 200px; margin: 0 auto; padding: 6px; border: 1px solid #e2e2e2; border-radius: var(--radius); background: #fff; transition: opacity .2s; }
.qr-img svg { display: block; width: 100%; height: 100%; }
.qr-box.is-expired .qr-img, .qr-box.is-ok .qr-img { opacity: .25; }
.qr-code-wrap { display: flex; align-items: baseline; justify-content: center; gap: 10px; margin-top: 14px; }
.qr-code-label { color: var(--text-2); font-size: 13px; }
.qr-code { font-size: 28px; letter-spacing: .12em; color: var(--navy); font-variant-numeric: tabular-nums; }
.qr-steps { list-style: decimal; margin: 16px 0 0; padding: 14px 16px 14px 34px; background: var(--bg-2); border-radius: var(--radius); text-align: left; font-size: 14px; color: #444; line-height: 1.7; }
.qr-steps small { color: var(--text-2); }
.auth-card p.qr-status { margin-top: 12px; font-size: 13.5px; }
.auth-card p.qr-status.is-ok { color: var(--green); font-weight: 700; }
.auth-card p.qr-status.is-error, .auth-card p.qr-error { color: #c0302b; }
.auth-card p.qr-note { margin-top: 18px; font-size: 13.5px; }
.qr-approve { margin-top: 22px; text-align: left; }
.qr-meta { display: grid; grid-template-columns: auto 1fr; gap: 6px 14px; margin: 0 0 18px; padding: 12px 16px; background: var(--bg-2); font-size: 14px; }
.qr-meta dt { color: var(--text-2); }
.qr-meta dd { margin: 0; }
.qr-approve label { display: block; margin-bottom: 6px; font-size: 13px; font-weight: 700; color: #444; }
.qr-approve input[name=code] { width: 100%; height: 56px; border: 1px solid #bbb; border-radius: var(--radius); text-align: center; font-size: 28px; letter-spacing: .3em; font-variant-numeric: tabular-nums; outline: none; }
.qr-approve input[name=code]:focus { border-color: var(--navy); }
.auth-card p.qr-error { margin-top: 8px; font-size: 14px; }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 48px; padding: 0 22px; border: 0; border-radius: var(--radius); background: var(--navy); color: #fff; font-size: 15.5px; font-weight: 500; cursor: pointer; }
.btn:hover { background: var(--navy-2); }
.btn-secondary { background: #fff; color: #444; border: 1px solid #bbb; }
.btn-secondary:hover { background: var(--bg-2); }
.btn-danger { background: #fff; color: var(--red); border: 1px solid #e3b5b2; }
.btn-danger:hover, .btn-danger:focus-visible { background: var(--red); border-color: var(--red); color: #fff; }
.btn-sm { min-height: 32px; padding: 0 12px; font-size: 13.5px; }
.btn-kakao { background: #fee500; color: rgba(0,0,0,.85); }
.btn-kakao:hover { background: #f5dc00; }
.kakao-symbol { width: 20px; height: 20px; color: #000; }
.toast { margin: 0 0 14px; padding: 12px 16px; background: #edf7f0; color: #1d6b3d; border-left: 3px solid var(--green); font-size: 14.5px; }
.toast.warn { background: #fff6e9; color: #8a4c00; border-left-color: var(--orange); }
.admin { padding-top: 10px; padding-bottom: 60px; }
.admin .crumbs { font-size: 13px; color: var(--text-3); margin-top: 26px; }
.admin .large-title { margin: 6px 0 20px; font-size: 30px; color: #111; }
.admin-top { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; flex-wrap: wrap; }
.admin-top form, .admin-top > .btn { margin-bottom: 22px; }
@media (max-width: 560px) {
  .admin-top { align-items: center; gap: 8px; margin-bottom: 18px; }
  .admin-top > div { flex: 1 1 100%; }
  .admin .large-title { margin-bottom: 4px; font-size: 26px; }
  .admin-top form, .admin-top > .btn { margin-bottom: 0; }
}
.admin .segmented { gap: 0; margin-bottom: 0; border-bottom: 1px solid var(--line); }
.admin .segmented a { padding: 10px 18px; font-size: 15px; color: #888; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.admin .segmented a[aria-selected="true"] { color: var(--navy); font-weight: 700; border-bottom-color: var(--navy); }
.segmented .count { font-size: 12px; color: var(--text-3); margin-left: 4px; }
.admin .list { border-top: 0; }
.user-row { flex-wrap: wrap; }
.avatar { width: 40px; height: 40px; border-radius: 50%; flex: none; object-fit: cover; display: grid; place-items: center; background: #eef0f8; color: var(--navy); font-weight: 700; }
.row-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.row-actions form { margin: 0; }
@media (max-width: 640px) { .row-actions { width: 100%; padding-left: 54px; } }
code { font: 13px ui-monospace, Consolas, monospace; background: var(--bg-3); padding: 1px 6px; }

@media print { .topbar, .header, .location, .quick, .site-footer, .btn-area { display: none !important; } .sub-visual { height: auto; background: none; color: #000; } .sub-visual h2 { padding: 0; text-shadow: none; } }

/* ── 학생교육: 임상진단학(신체진찰) ── */
.segmented.tabs-sm { gap: 0; border-bottom: 1px solid var(--line); margin-bottom: 22px; }
.segmented.tabs-sm button { font-size: 16px; padding: 12px 20px; color: #888; }
.segmented.tabs-sm button[aria-selected="true"] { color: var(--navy); }
.segmented.tabs-sm button[aria-selected="true"]::after { bottom: -1px; }
.pe-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px 28px; }
.pe-sec h3 { margin: 0; padding-bottom: 10px; border-bottom: 2px solid var(--navy); font-size: 17px; color: var(--navy); }
.pe-sec li a { position: relative; display: block; padding: 8px 10px; border-bottom: 1px solid var(--line-2); font-size: 15px; color: #333; transition: background .15s, color .15s, padding .15s; }
.pe-sec li a::after, .pe-seq li a::after { content: ""; position: absolute; right: 10px; top: 50%; width: 6px; height: 6px; border: solid currentColor; border-width: 1.5px 1.5px 0 0; transform: translateY(-50%) rotate(45deg); opacity: 0; transition: opacity .15s, right .15s; }
.pe-sec li a:hover, .pe-sec li a:focus-visible { background: #f5f5f5; color: var(--navy); padding-left: 14px; }
.pe-sec li a:hover::after, .pe-seq li a:hover::after { opacity: .7; right: 12px; }
/* 진찰 순서 */
.pe-seq { list-style: none; margin: 0; padding: 0; border-top: 2px solid var(--navy); max-width: 860px; }
.pe-seq li { border-bottom: 1px solid var(--line-2); font-size: 15px; }
.pe-seq li > a, .pe-seq li.pe-plain, .pe-seq li.pe-posture { position: relative; display: flex; gap: 14px; align-items: baseline; padding: 10px 36px 10px 12px; color: #333; }
.pe-seq li > a { transition: background .15s, color .15s; }
.pe-seq li > a:hover, .pe-seq li > a:focus-visible { background: #f5f5f5; color: var(--navy); }
.pe-num { flex: none; min-width: 26px; font-variant-numeric: tabular-nums; font-weight: 700; color: var(--blue); text-align: right; }
.pe-seq li.pe-plain { color: var(--text-2); }
.pe-seq li.pe-plain .pe-num { color: var(--text-3); }
.pe-seq li.pe-posture { background: var(--bg-2); border-left: 3px solid var(--navy); padding-left: 9px; font-weight: 700; color: var(--navy); }
.pe-seq li.pe-posture .pe-num { color: var(--navy); }
@media (max-width: 960px) { .pe-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .pe-grid { grid-template-columns: 1fr; } .pe-seq li > a, .pe-seq li.pe-plain, .pe-seq li.pe-posture { padding-right: 28px; gap: 10px; } }
.pe-body { padding: 30px 24px 50px; border-bottom: 1px solid var(--line); }
.pe-body.has-img { display: grid; grid-template-columns: minmax(0, 1fr) 400px; gap: 36px; align-items: start; }
.pe-figure { margin: 0; position: sticky; top: 20px; }
.pe-figure img { width: 100%; border: 1px solid var(--line); }
@media (max-width: 960px) { .pe-body.has-img { grid-template-columns: 1fr; } .pe-figure { position: static; order: -1; } .pe-body { padding: 20px 4px 36px; } }

/* ── 행사일정: 목록 크기 조정 · 달력 보기 ── */
.board-list.is-event .subject a { font-size: 15px; font-weight: 700; color: #1d1d1d; }
.board-list.is-event { table-layout: fixed; }
.board-list.is-event .writer { width: 26%; }
.board-list.is-event td.writer { text-align: left; font-size: 15px; color: #444; line-height: 1.5; }
/* 넘치면 말줄임표, 전체 내용은 마우스를 올리면 (title) */
.board-list.is-event .subject a { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.board-list.is-event td.writer { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.board-list.is-event .date { width: 120px; }
/* 행사일정 머리글은 모두 가운데 정렬 */
.board-list.is-event thead th { text-align: center; }
@media (max-width: 768px) {
  /* 행사일정 모바일: 홈 화면처럼 날짜 상자 + 제목·장소 */
  .board-list.is-event tr:not(.empty-row) { display: grid; grid-template-columns: 64px minmax(0, 1fr); column-gap: 18px; align-items: center; padding: 14px 2px; }
  .board-list.is-event .ev-box { display: block; grid-row: 1 / span 2; align-self: center; width: 64px !important; }
  .board-list.is-event .ev-box .ev-date { display: block; width: 64px; box-sizing: border-box; line-height: 1.3; }
  .board-list.is-event .subject { grid-column: 2; padding: 0; font-size: 15px; }
  .board-list.is-event .subject a { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .board-list.is-event .writer { grid-column: 2; display: block; width: auto !important; font-size: 14px; color: var(--text-2); line-height: 1.45; margin-top: 2px; }
  .board-list.is-event .writer:empty { display: none; }
  .board-list.is-event td.writer { white-space: normal; text-align: left; }
  .board-list.is-event .writer::after { content: none; }
  .board-list.is-event .date { display: none; }
}
.ev-list .t { font-size: 15px; font-weight: 400; }
.ev-list .p { display: block; font-size: 14px; color: var(--text-2); white-space: normal; line-height: 1.45; margin-top: 2px; }
.cal-head { display: flex; align-items: center; justify-content: center; gap: 18px; margin-bottom: 16px; position: relative; }
.cal-head strong { font-size: 24px; color: #111; min-width: 120px; text-align: center; letter-spacing: 0; }
.cal-head button { width: 36px; height: 36px; border: 1px solid var(--line); background: #fff; cursor: pointer; font-size: 18px; color: #555; }
.cal-head button:hover { color: var(--navy); border-color: var(--navy); }
/* 달력 화살표: 글꼴 글자 대신 테두리로 그린 꺾쇠를 칸 정가운데에 */
.cal-head .cal-arrow { display: grid; place-items: center; padding: 0; font-size: 0; }
.cal-arrow::before { content: ""; width: 8px; height: 8px; border: solid currentColor; border-width: 0 0 1.8px 1.8px; }
.cal-prev::before { transform: translateX(1.5px) rotate(45deg); }
.cal-next::before { transform: translateX(-1.5px) rotate(-135deg); }
.cal-head .cal-today { position: absolute; right: 0; width: auto; padding: 0 14px; font-size: 14px; }
.cal-grid { width: 100%; border-collapse: collapse; table-layout: fixed; border-top: 2px solid var(--line-dark); }
.cal-grid th { height: 42px; font-weight: 500; font-size: 14px; border-bottom: 1px solid #bbb; }
.cal-grid td { height: 112px; vertical-align: top; border: 1px solid var(--line-2); padding: 6px; }
.cal-grid .sun, .cal-grid .sun .d { color: var(--red); } .cal-grid .sat, .cal-grid .sat .d { color: var(--blue); }
.cal-grid td.out { background: var(--bg-2); }
.cal-grid td.today { background: #f2f7fd; }
.cal-grid td.today .d { background: var(--navy); color: #fff; border-radius: 50%; }
.cal-grid .d { display: inline-grid; place-items: center; width: 24px; height: 24px; font-size: 13px; color: #555; margin-bottom: 4px; }
.cal-grid a { display: block; margin-top: 3px; padding: 2px 6px; background: var(--navy); color: #fff; font-size: 12.5px; line-height: 1.45; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal-grid a:hover { background: var(--sky); }
.cal-list-h { margin: 34px 0 10px; font-size: 18px; }
.cal-list { border-top: 2px solid var(--line-dark); }
.cal-list li { border-bottom: 1px solid var(--line-2); }
.cal-list a { display: grid; grid-template-columns: 130px minmax(0, 1fr) minmax(0, .9fr); gap: 16px; padding: 13px 4px; font-size: 15px; }
.cal-list .when { color: var(--navy); font-weight: 700; }
.cal-list .where { color: var(--text-2); }
.cal-list a:hover .what { color: var(--navy); }
.cal-list .none { padding: 30px 0; text-align: center; color: var(--text-3); }
@media (max-width: 768px) {
  .cal-grid td { height: 64px; padding: 3px; } .cal-grid a { font-size: 0; height: 6px; padding: 0; margin-top: 2px; }
  .cal-head .cal-today { position: static; }
  .cal-list a { grid-template-columns: 1fr; gap: 2px; }
}
.view-title.sm { font-size: 20px; margin-bottom: 16px; }
.ev-meta { margin: 0; display: grid; gap: 8px; }
.ev-meta div { display: flex; gap: 16px; font-size: 17px; }
.ev-meta dt { flex: none; width: 64px; color: var(--navy); font-weight: 700; }
.ev-meta dd { margin: 0; color: #222; }

/* ── 찾아오시는 길 ── */
.ct-top { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); gap: 28px; align-items: start; }
.ct-map-wrap { margin: 0; }
.ct-map { display: block; width: 100%; height: auto; border: 1px solid var(--line); border-radius: var(--radius); }
.ct-map .m-area { font-size: 17px; fill: #4f7a4f; font-weight: 500; }
.ct-map .m-road { font-size: 15px; fill: #8a94a6; letter-spacing: .1em; }
.ct-map .m-site { font-size: 17px; font-weight: 700; fill: #1b4596; }
.ct-map .m-main { font-size: 22px; font-weight: 700; fill: #fff; }
.ct-map .m-main-s { font-size: 14px; fill: #cfe0f7; }
.ct-map .m-line { font-size: 15px; font-weight: 700; }
.ct-map .m-stn-t { font-size: 16px; font-weight: 700; fill: #222; }
.ct-map .m-label { font-size: 15px; fill: #555; }
.ct-map .m-halo { paint-order: stroke; stroke: #f4f6f9; stroke-width: 4px; }
.ct-map .m-bus { font-size: 16px; letter-spacing: .04em; font-weight: 700; fill: #fff; }
.ct-map .m-bld { font-size: 14px; font-weight: 700; fill: #2f3d58; paint-order: stroke; stroke: #fff; stroke-width: 3.5px; stroke-linejoin: round; }
.ct-map .m-halo2 { paint-order: stroke; stroke: #e3eaf5; stroke-width: 5px; }
.ct-map .m-halo3 { paint-order: stroke; stroke: #dcebd8; stroke-width: 4px; }
.ct-map .m-sub { font-size: 15px; font-weight: 500; fill: #7a879c; letter-spacing: .08em; }
.ct-map .m-tag { font-size: 15px; font-weight: 700; fill: #1b4596; }
.ct-map .m-time { font-size: 14px; font-weight: 700; fill: #fff; }
.ct-map .m-time-far { fill: #0052a4; }
.ct-map .m-n { font-size: 12px; font-weight: 700; fill: #1b4596; }
.ct-map-wrap figcaption { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; margin-top: 10px; font-size: 13px; color: var(--text-3); }
.ct-maplinks { display: flex; gap: 8px; }
.ct-maplinks a { padding: 5px 12px; border: 1px solid var(--line); border-radius: 999px; color: #444; font-size: 13px; text-decoration: none; transition: border-color .15s, color .15s; }
.ct-maplinks a:hover { border-color: var(--navy); color: var(--navy); }
.ct-card { border: 1px solid var(--line); border-top: 2px solid var(--navy); padding: 24px 26px; background: #fff; }
.ct-card h3 { margin: 0 0 16px; font-size: 19px; color: var(--navy); }
.ct-info { margin: 0; display: grid; gap: 14px; }
.ct-info div { display: grid; grid-template-columns: 64px 1fr; gap: 12px; font-size: 15.5px; line-height: 1.55; }
.ct-info dt { color: var(--navy); font-weight: 700; }
.ct-info dd { margin: 0; color: #222; }
.ct-info dd a { color: #222; }
.ct-info dd a:hover { color: var(--navy); }
.ct-info.sm { gap: 8px; } .ct-info.sm div { grid-template-columns: 76px 1fr; font-size: 14.5px; }
.ct-h { margin: 56px 0 18px; font-size: 22px; color: #222; }
.ct-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr); gap: 28px; align-items: start; }
.ct-h4 { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 0 0 14px; font-size: 17px; color: #222; }
.ct-h4 + * { margin-top: 0; }
.ct-subway .ct-h4:not(:first-child) { margin-top: 28px; padding-top: 22px; border-top: 1px solid var(--line-2); }
.ct-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; }
.ct-list li { display: flex; gap: 14px; align-items: flex-start; }
.ct-list strong { font-size: 15.5px; color: #222; }
.ct-list p { margin: 2px 0 0; font-size: 14px; color: var(--text-2); }
.ct-line { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%; color: #fff; font-weight: 700; font-size: 14px; }
.ct-line.l4 { background: #00a5de; } .ct-line.l1 { background: #0052a4; }
.ct-legend { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 400; color: var(--text-2); }
.ct-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-left: 6px; }
.b-blue { background: #3d5bab; } .b-green { background: #4a9d22; } .b-red { background: #d7262e; }
.ct-stop { padding: 14px 0; border-top: 1px solid var(--line-2); }
.ct-stop:first-of-type { border-top: 0; padding-top: 0; }
.ct-stop h4 { margin: 0 0 8px; font-size: 15px; color: var(--navy); }
.ct-bus-row { display: flex; gap: 10px; align-items: flex-start; margin-top: 6px; }
.ct-bus-type { flex: none; padding: 2px 8px; border-radius: var(--radius); color: #fff; font-size: 12px; font-weight: 700; line-height: 1.6; }
.ct-bus-row p { margin: 0; display: flex; flex-wrap: wrap; gap: 4px 6px; }
.ct-chip { padding: 1px 8px; border: 1px solid var(--line); border-radius: var(--radius); font-size: 13px; color: #333; font-variant-numeric: tabular-nums; background: var(--bg-2); }
.ct-note { margin: 14px 0 0; font-size: 13px; color: var(--text-3); }
@media (max-width: 960px) { .ct-top, .ct-grid { grid-template-columns: 1fr; } }
@media (max-width: 560px) { .ct-card { padding: 20px 16px; } .ct-h { margin-top: 40px; font-size: 20px; } }

/* ── 글쓰기·수정 ── */
.btn-area { gap: 8px; align-items: center; }
.btn-area form { margin: 0; }
.btn-line { display: inline-flex; align-items: center; height: 44px; padding: 0 22px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; color: #444; font-size: 15px; cursor: pointer; transition: border-color .15s, color .15s; }
.btn-line:hover { border-color: var(--navy); color: var(--navy); }
.btn-line.danger:hover { border-color: var(--red); color: var(--red); }
.btn-area .btn { min-height: 44px; }
.post-form { display: grid; gap: 18px; max-width: 960px; margin: 0 auto; }
.pf-row { display: grid; gap: 6px; }
.pf-row > span { font-size: 14px; font-weight: 700; color: #333; }
.pf-row input:not([type=checkbox]):not([type=file]) { height: 44px; padding: 0 12px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 15px; background: #fff; }
.pf-row input:focus { outline: none; border-color: var(--navy); box-shadow: 0 0 0 3px rgba(27,69,150,.12); }
.pf-row small { color: var(--text-3); font-size: 12.5px; }
.pf-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.pf-error { padding: 12px 16px; border-left: 3px solid var(--red); background: #fdf1f0; color: #9b231d; font-size: 14.5px; }
.pf-att { list-style: none; margin: 0 0 8px; padding: 0; display: grid; gap: 6px; font-size: 14px; color: #333; }
.pf-att-item { display: flex; align-items: center; gap: 10px; padding: 8px 8px 8px 14px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; transition: background .15s, opacity .15s; }
.pf-att-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pf-att-size { flex: none; font-size: 12.5px; color: var(--text-3); }
.pf-att-note { display: none; flex: none; font-size: 12.5px; color: var(--red); }
.pf-att-x { flex: none; min-width: 30px; height: 30px; padding: 0 8px; border: 0; border-radius: var(--radius); background: none; color: #888; font-size: 15px; cursor: pointer; transition: background .15s, color .15s; white-space: nowrap; }
.pf-att-x:hover { background: #fdecea; color: var(--red); }
.pf-att-item.is-del { background: var(--bg-2); }
.pf-att-item.is-del .pf-att-name { text-decoration: line-through; color: var(--text-3); }
.pf-att-item.is-del .pf-att-size { display: none; }
.pf-att-item.is-del .pf-att-note { display: inline; }
.pf-att-item.is-del .pf-att-x { font-size: 13px; color: var(--navy); }
.pf-att-item.is-del .pf-att-x:hover { background: #eef3fb; }
.editor { border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.editor:focus-within { border-color: var(--navy); box-shadow: 0 0 0 3px rgba(27,69,150,.12); }
.ed-source[hidden] { display: none; }
.ed-source { display: block; width: 100%; min-height: 320px; border: 0; padding: 14px; font: inherit; box-sizing: border-box; }
.ed-toolbar { position: sticky; top: 0; z-index: 2; display: flex; flex-wrap: wrap; align-items: center; gap: 2px; padding: 6px; border-bottom: 1px solid var(--line-2); background: var(--bg-2); }
.ed-toolbar button { min-width: 34px; height: 32px; padding: 0 8px; border: 0; border-radius: var(--radius); background: none; color: #444; font-size: 13.5px; cursor: pointer; transition: background .15s, color .15s; }
.ed-toolbar button:hover, .ed-toolbar button:focus-visible { background: #ebebeb; color: var(--navy); outline: none; }
.ed-toolbar button.ed-primary { background: var(--navy); color: #fff; }
.ed-toolbar button.ed-primary:hover { background: var(--navy-2); color: #fff; }
.ed-sep { width: 1px; height: 18px; margin: 0 4px; background: var(--line); }
.ed-area { min-height: 360px; max-height: 70vh; overflow: auto; padding: 18px 20px; outline: none; }
.ed-area img { max-width: 100%; height: auto; }
.ed-area table { border-collapse: collapse; width: 100%; }
.ed-area td, .ed-area th { border: 1px solid var(--line); padding: 6px 8px; min-width: 40px; }
.ed-area.is-drop { background: #f2f7fd; box-shadow: inset 0 0 0 2px var(--sky); }
.ed-status { margin: 0; padding: 0 12px 8px; font-size: 13px; color: var(--blue); }
.ed-status:empty { display: none; }
@media (max-width: 640px) { .pf-cols { grid-template-columns: 1fr; } .ed-area { min-height: 260px; padding: 14px; } }
.pf-progress { position: relative; flex: 1; max-width: 360px; height: 44px; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; background: var(--bg-2); }
.pf-progress span { position: absolute; inset: 0 auto 0 0; width: 0; background: #dce7f7; transition: width .2s; }
.pf-progress em { position: relative; display: flex; align-items: center; justify-content: center; height: 100%; font-style: normal; font-size: 14px; color: var(--navy); }

/* ── 행사 장소 (카카오맵) ── */
.ev-place { margin-top: 18px; }
.ev-map, .pp-map { width: 100%; height: 320px; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.ev-addr { margin: 10px 0 0; font-size: 14.5px; color: var(--text-2); }
.ev-place-btns { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.ev-place-btns .btn { min-height: 40px; padding: 0 18px; font-size: 14.5px; }
.ev-place-btns .btn-line { height: 40px; padding: 0 16px; font-size: 14.5px; }
.map-tip { padding: 5px 10px; border-radius: var(--radius); background: var(--navy); color: #fff; font-size: 13px; font-weight: 500; white-space: nowrap; box-shadow: 0 2px 6px rgba(0,0,0,.2); }
.place-pick { display: grid; gap: 10px; }
.pp-search { display: flex; gap: 8px; }
.pp-search input { flex: 1; min-width: 0; }
.pp-results { list-style: none; margin: 0; padding: 0; border: 1px solid var(--line); border-radius: var(--radius); max-height: 300px; overflow: auto; }
.pp-results li + li { border-top: 1px solid var(--line-2); }
.pp-results button { display: grid; gap: 2px; width: 100%; padding: 10px 14px; border: 0; background: #fff; text-align: left; cursor: pointer; transition: background .15s; }
.pp-results button:hover, .pp-results button:focus-visible { background: #f5f5f5; outline: none; }
.pp-results strong { font-size: 15px; color: #222; font-weight: 500; }
.pp-results span { font-size: 13px; color: var(--text-2); }
.pp-none { padding: 12px 14px; font-size: 14px; color: var(--text-2); }
.pp-picked { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; margin: 0; font-size: 14px; color: var(--navy); }
.pp-clear { border: 0; background: none; color: var(--text-2); font-size: 13px; text-decoration: underline; cursor: pointer; }
@media (max-width: 640px) { .ev-map, .pp-map { height: 240px; } }

/* ── 사진·동영상 게시판: 섬네일 격자 ── */
.g-grid { list-style: none; margin: 0; padding: 24px 0 0; border-top: 2px solid var(--line-dark); display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 32px 20px; }
.g-grid a { display: block; color: #222; }
.g-thumb { position: relative; display: block; aspect-ratio: 4 / 3; overflow: hidden; border-radius: var(--radius); background: var(--bg-3); }
.g-thumb img, .g-thumb video { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .3s ease; pointer-events: none; }
.g-grid a:hover .g-thumb img, .g-grid a:hover .g-thumb video { transform: scale(1.04); }
.g-none { position: absolute; inset: 0; background: linear-gradient(135deg, #e8edf5, #d7e0ee); }
.g-thumb.is-video { aspect-ratio: 16 / 9; background: #111; }
.g-thumb.is-video::after { content: ""; position: absolute; left: 50%; top: 50%; width: 54px; height: 54px; margin: -27px 0 0 -27px; border-radius: 50%;
  background: rgba(0,0,0,.55) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M8 5v14l11-7z'/%3E%3C/svg%3E") center / 26px no-repeat;
  transition: background-color .15s, transform .15s; }
.g-grid a:hover .g-thumb.is-video::after { background-color: var(--navy); transform: scale(1.06); }
.g-title { display: block; margin-top: 12px; font-size: 15.5px; font-weight: 500; line-height: 1.4; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transition: color .15s; }
.g-grid a:hover .g-title { color: var(--navy); }
.g-meta { display: block; margin-top: 4px; font-size: 13px; color: var(--text-3); }
.g-empty { padding: 60px 0; border-top: 2px solid var(--line-dark); text-align: center; color: var(--text-2); }
@media (max-width: 960px) { .g-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 640px) { .g-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 12px; } .g-title { font-size: 14.5px; } }

/* ── 동영상 재생기 ── */
.vplayer { margin: 0 0 28px; outline: none; }
.vplayer video { display: block; width: 100%; max-height: 72vh; background: #000; border-radius: var(--radius); }
.vplayer figcaption { margin-top: 8px; font-size: 13px; color: var(--text-3); }
.vp-speed { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 10px; }
.vp-speed span { margin-right: 4px; font-size: 13.5px; color: var(--text-2); }
.vp-speed button { min-width: 52px; height: 32px; padding: 0 10px; border: 1px solid var(--line); border-radius: 999px; background: #fff; color: #444; font-size: 13.5px; cursor: pointer; transition: border-color .15s, color .15s, background .15s; }
.vp-speed button:hover { border-color: var(--navy); color: var(--navy); }
.vp-speed button[aria-pressed="true"] { border-color: var(--navy); background: var(--navy); color: #fff; }

/* 포토갤러리 글: 원본 사진 + 원본 다운로드 */
.g-photo { margin: 0 0 28px; }
.g-photo img { display: block; max-width: 100%; height: auto; margin: 0 auto; border-radius: var(--radius); }
.g-photo figcaption { margin-top: 8px; text-align: right; }
.g-dl { display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 14px; border: 1px solid var(--line); border-radius: 999px; font-size: 13.5px; color: #444; text-decoration: none; transition: border-color .15s, color .15s; }
.g-dl::before { content: "↓"; font-weight: 700; }
.g-dl:hover { border-color: var(--navy); color: var(--navy); }

/* ── 사진 앨범 ── */
.al-cover { aspect-ratio: 1 / 1; }
.al-count { position: absolute; right: 8px; bottom: 8px; padding: 2px 9px; border-radius: 999px; background: rgba(0,0,0,.6); color: #fff; font-size: 12.5px; font-weight: 500; font-variant-numeric: tabular-nums; }
.al-list { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.al-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px; padding-bottom: 18px; border-bottom: 2px solid var(--line-dark); }
.al-title { margin: 0; font-size: 24px; color: #111; line-height: 1.35; }
.al-info { margin: 6px 0 0; font-size: 14px; color: var(--text-2); }
.al-desc { margin: 10px 0 0; font-size: 15px; color: #444; }
.al-note { position: relative; margin: 18px 0 22px; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.al-desc-edit > summary { position: absolute; top: 10px; right: 12px; font-size: 13px; color: #888; cursor: pointer; list-style: none; }
.al-desc-edit > summary::-webkit-details-marker { display: none; }
.al-desc-edit > summary:hover { color: var(--navy); }
.al-desc-edit[open] > summary { color: var(--navy); }
.al-note:has(.al-desc-edit) .al-note-body { padding-right: 64px; }
.al-desc-edit form { padding: 0 22px 18px; }
.al-note-body + .view-file + .al-desc-edit form, .al-note-body + .al-desc-edit form { border-top: 1px solid var(--line); padding-top: 16px; }
.al-desc-edit textarea { width: 100%; min-height: 110px; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 15px; line-height: 1.7; resize: vertical; }
.al-desc-btns { display: flex; justify-content: flex-end; margin-top: 10px; }
.al-note.is-empty { border-style: dashed; }
.al-note.is-empty .al-desc-edit > summary { position: static; display: block; padding: 14px 22px; text-align: center; }
.al-note.is-empty .al-desc-edit[open] form { padding-top: 0; }
.al-note + .al-note { margin-top: -8px; }
.al-note-body { padding: 18px 22px; font-size: 15px; line-height: 1.75; }
.al-note-body > :last-child { margin-bottom: 0; }
.al-note .view-file { border-bottom: 0; }
.al-note-body + .view-file { border-top: 1px solid var(--line); }
.al-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.al-tools .btn { min-height: 44px; }
.al-more { position: relative; }
.al-more > summary { list-style: none; }
.al-more > summary::-webkit-details-marker { display: none; }
.al-menu { position: absolute; right: 0; top: calc(100% + 6px); z-index: 20; width: 300px; padding: 16px; display: grid; gap: 14px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 10px 30px rgba(0,0,0,.12); }
.al-rename { display: grid; gap: 8px; }
.al-rename label { display: grid; gap: 6px; font-size: 13px; font-weight: 700; color: #333; }
.al-rename input { height: 40px; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 14.5px; font-weight: 400; }
.al-menu form { margin: 0; }
.al-menu .btn-line { width: 100%; justify-content: center; height: 40px; }
.al-grid { list-style: none; margin: 4px 0 0; padding: 0; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 4px; }
.al-grid li { margin: 0; }
.al-ph { display: block; width: 100%; aspect-ratio: 1 / 1; padding: 0; border: 0; background: var(--bg-3); cursor: zoom-in; overflow: hidden; }
.al-ph img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .25s ease, opacity .15s; }
.al-ph:hover img { transform: scale(1.05); }
.al-ph:focus-visible { outline: 3px solid var(--sky); outline-offset: -3px; }
.al-grid li:target .al-ph { outline: 3px solid var(--navy); outline-offset: -3px; }
@media (max-width: 960px) { .al-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } .al-list { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 560px) { .al-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2px; } .al-list { grid-template-columns: repeat(2, minmax(0, 1fr)); } .al-title { font-size: 20px; } .al-menu { right: auto; left: 0; } }

/* 사진 올리기 */
.al-drop { position: relative; display: grid; place-items: center; gap: 4px; padding: 34px 16px; border: 2px dashed var(--line); border-radius: var(--radius); background: var(--bg-2); text-align: center; cursor: pointer; transition: border-color .15s, background .15s; }
.al-drop:hover, .al-drop.is-drop { border-color: #bbb; background: #f5f5f5; }
.al-drop.has-files { border-style: solid; border-color: var(--navy); }
.al-drop input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.al-drop strong { font-size: 15px; color: var(--navy); }
.al-drop small { font-size: 13px; color: var(--text-3); }
.al-pick { list-style: none; margin: 8px 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(84px, 1fr)); gap: 4px; }
.al-pick:empty { display: none; }
.al-pick li { aspect-ratio: 1 / 1; overflow: hidden; background: var(--bg-3); border-radius: var(--radius); }
.al-pick img { width: 100%; height: 100%; object-fit: cover; display: block; }
.post-form textarea { padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 15px; resize: vertical; }

/* 크게 보기 */
html.lb-open { overflow: hidden; }
.lb { position: fixed; inset: 0; z-index: 1000; background: rgba(10,12,16,.96); color: #fff; }
.lb[hidden] { display: none; }
.lb-stage { position: absolute; inset: 60px 0 0; display: flex; align-items: center; justify-content: center; overflow: hidden; touch-action: none; padding: 0 76px 24px; box-sizing: border-box; }
.lb-stage img { display: block; max-width: 100%; max-height: 100%; object-fit: contain; user-select: none; transform-origin: center center; will-change: transform; cursor: zoom-in; }
.lb.is-zoomed .lb-stage img { cursor: grab; }
.lb.is-zoomed .lb-stage img:active { cursor: grabbing; }
.lb-top { position: absolute; top: 0; left: 0; right: 0; z-index: 2; display: flex; align-items: center; justify-content: space-between; gap: 10px; height: 60px; padding: 0 14px; box-sizing: border-box; }
.lb-count { font-size: 14px; color: rgba(255,255,255,.8); font-variant-numeric: tabular-nums; }
.lb-acts { display: flex; align-items: center; gap: 6px; }
.lb-acts form { margin: 0; }
.lb-btn { display: inline-flex; align-items: center; height: 36px; padding: 0 14px; border: 1px solid rgba(255,255,255,.25); border-radius: 999px; background: transparent; color: #fff; font-size: 14px; text-decoration: none; cursor: pointer; transition: background .15s, border-color .15s; }
.lb-btn:hover, .lb-btn:focus-visible { background: rgba(255,255,255,.12); border-color: rgba(255,255,255,.5); outline: none; }
.lb-del:hover { background: rgba(208,52,44,.35); border-color: #e0605a; }
.lb-close { width: 36px; justify-content: center; padding: 0; }
.lb-nav { position: absolute; top: calc(50% + 30px); z-index: 2; width: 52px; height: 52px; margin-top: -26px; border: 0; border-radius: 50%; background: rgba(255,255,255,.12); color: #fff; font-size: 32px; line-height: 1; cursor: pointer; transition: background .15s, opacity .15s; }
.lb-nav:hover, .lb-nav:focus-visible { background: rgba(255,255,255,.25); outline: none; }
.lb-prev { left: 12px; } .lb-next { right: 12px; }
.lb.is-zoomed .lb-nav { opacity: .35; }
.lb-hint { position: absolute; left: 0; right: 0; bottom: 6px; margin: 0; text-align: center; font-size: 12px; color: rgba(255,255,255,.45); pointer-events: none; }
@media (max-width: 640px) {
  .lb-stage { padding: 0 0 70px; }
  .lb-nav { top: auto; bottom: 14px; margin-top: 0; width: 46px; height: 46px; }
  .lb-hint { display: none; }
  .lb-btn { padding: 0 10px; font-size: 13px; }
}

/* ── 교수진 ── */
.dr-tools { position: sticky; top: 0; z-index: 5; display: grid; gap: 12px; padding: 14px 0; background: rgba(255,255,255,.96); backdrop-filter: blur(6px); border-bottom: 1px solid var(--line-2); }
.dr-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.dr-chip { height: 34px; padding: 0 14px; border: 1px solid var(--line); border-radius: 999px; background: #fff; color: #444; font-size: 14px; cursor: pointer; transition: border-color .15s, color .15s, background .15s; }
.dr-chip:hover { border-color: var(--navy); color: var(--navy); }
.dr-chip[aria-pressed="true"] { border-color: var(--navy); background: var(--navy); color: #fff; }
.dr-search input { width: 100%; max-width: 420px; height: 40px; padding: 0 14px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 14.5px; }
.dr-search input:focus { outline: none; border-color: var(--navy); box-shadow: 0 0 0 3px rgba(27,69,150,.12); }
.dr-count { margin: 14px 0 0; font-size: 14px; color: var(--text-2); }
.dr-count strong { color: var(--navy); }
.dr-sec { margin-top: 40px; scroll-margin-top: 150px; }
/* 좁은 화면: 분과 버튼은 한 줄로 옆으로 밀어 보게 — 여러 줄로 쌓여 화면 위를 가리지 않게 */
@media (max-width: 760px) {
  .dr-tools { gap: 10px; padding: 10px 0; }
  .dr-chips { flex-wrap: nowrap; overflow-x: auto; margin: 0 -16px; padding: 0 16px 2px; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
  .dr-chips::-webkit-scrollbar { display: none; }
  .dr-chip { flex: none; }
  .dr-sec { scroll-margin-top: 120px; }
}
.dr-sec[hidden], .dr-card[hidden] { display: none; }
.dr-sec-h { display: flex; align-items: baseline; gap: 10px; margin: 0 0 18px; padding-bottom: 12px; border-bottom: 2px solid var(--navy); font-size: 21px; color: var(--navy); }
.dr-sec-h span { font-size: 14px; font-weight: 400; color: var(--text-3); }
.dr-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 28px 20px; }
.dr-card { display: flex; flex-direction: column; border: 1px solid var(--line-2); border-radius: var(--radius); overflow: hidden; background: #fff; transition: box-shadow .2s, border-color .2s, transform .2s; }
.dr-card:hover { border-color: #d6d6d6; box-shadow: 0 10px 28px rgba(0,0,0,.08); transform: translateY(-2px); }
.dr-photo { display: block; aspect-ratio: 4 / 5; background: linear-gradient(160deg, #f1f1f1, #e4e4e4); overflow: hidden; }
.dr-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 15%; display: block; margin: 0; }
.dr-nophoto { display: block; width: 100%; height: 100%; }
.dr-body { display: flex; flex-direction: column; gap: 6px; flex: 1; padding: 16px 16px 18px; }
.dr-badge { align-self: flex-start; padding: 2px 10px; border-radius: 999px; background: #eef3fb; color: var(--navy); font-size: 12.5px; font-weight: 500; }
.dr-name { margin: 2px 0 0; font-size: 19px; color: #111; }
.dr-ext { margin: 0; font-size: 12.5px; color: var(--text-3); }
.dr-spec, .dr-when { margin: 4px 0 0; font-size: 13.5px; line-height: 1.5; color: #444; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.dr-spec b, .dr-when b { display: inline-block; min-width: 52px; margin-right: 6px; color: var(--navy); font-weight: 700; }
.dr-more { margin-top: auto; padding-top: 12px; align-self: flex-start; font-size: 13.5px; color: var(--navy); font-weight: 500; }
.dr-more::after { content: " ›"; }
.dr-more:hover { text-decoration: underline; text-underline-offset: 3px; }
.dr-empty { padding: 60px 0; text-align: center; color: var(--text-2); }
.dr-src { margin-top: 40px; font-size: 13px; color: var(--text-3); }
.dr-src a { color: var(--text-2); text-decoration: underline; }
@media (max-width: 1100px) { .dr-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 760px) { .dr-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 12px; } .dr-body { padding: 12px; } .dr-name { font-size: 17px; } .dr-chips { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 2px; } .dr-chip { flex: none; } }

/* ── 외래 시간표 ── */
.tt-tabs { flex-wrap: wrap; }
.tt-wrap { margin-top: 18px; overflow-x: auto; border-top: 2px solid var(--line-dark); }
.tt { width: 100%; min-width: 760px; border-collapse: collapse; font-size: 14.5px; }
.tt th, .tt td { border-bottom: 1px solid var(--line-2); text-align: center; padding: 10px 4px; }
.tt thead th { background: var(--bg-2); font-weight: 500; color: #333; }
.tt thead tr:first-child th { border-left: 1px solid var(--line-2); }
.tt thead tr:first-child th:first-child { border-left: 0; }
.tt .tt-h { font-size: 12.5px; color: var(--text-2); font-weight: 400; }
.tt td.am { border-left: 1px solid var(--line-2); }
.tt th.tt-doc { min-width: 110px; padding: 10px 14px; text-align: center; background: #fff; font-weight: 500; vertical-align: middle; border-right: 1px solid var(--line-2); }
.tt thead th.tt-doc, .tt thead th.tt-site { vertical-align: middle; }
.tt thead th.tt-doc { background: var(--bg-2); }
.tt th.tt-doc a { color: #222; }
.tt th.tt-doc a:hover { color: var(--navy); }
.tt .tt-site { width: 76px; font-size: 13px; color: var(--text-2); white-space: nowrap; }
/* 같은 교수의 본원·암병원 사이: 긴 점선 (6px 선 · 4px 틈) */
.tt tbody tr.tt-split td { border-bottom: 0; background-image: linear-gradient(to right, var(--line) 6px, transparent 6px); background-size: 10px 1px; background-repeat: repeat-x; background-position: left bottom; }
/* 교수 한 명(본원·암병원 줄 포함)이 tbody 하나 — 올리면 이름·구분·요일 칸 모두 회색 */
.tt tbody.tt-g:hover td, .tt tbody.tt-g:hover th { background-color: #f5f5f5; }
.tt-o { color: #1fb89c; font-size: 15px; }
.tt-c { color: #8f5bd8; font-size: 13px; }
.tt-legend { margin-top: 16px; font-size: 13.5px; color: var(--text-2); line-height: 1.7; }
.tt-legend a { color: var(--text-2); text-decoration: underline; }
.board-list tbody tr:hover td { background: #f5f5f5; }
@media (max-width: 768px) { .board-list tbody tr:hover td { background: none; } }

/* ── 메뉴 관리 ── */
.ma { max-width: 1000px; margin: 0 auto; }
.ma-ok { padding: 12px 16px; border-left: 3px solid var(--green); background: #eef8f2; color: #1d6b3f; font-size: 14.5px; }
.ma-help { font-size: 14px; color: var(--text-2); line-height: 1.7; }
.ma-list { display: grid; gap: 16px; margin-top: 16px; }
.ma-sec { border: 1px solid var(--line); border-top: 3px solid var(--navy); border-radius: var(--radius); background: #fff; padding: 14px; }
.ma-sec-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.ma-num { min-width: 26px; height: 26px; border-radius: 50%; background: var(--navy); color: #fff; font-size: 13px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; }
.ma-in { height: 38px; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 14.5px; min-width: 0; }
.ma-in:focus { outline: none; border-color: var(--navy); box-shadow: 0 0 0 3px rgba(27,69,150,.12); }
.ma-in-l { flex: 1 1 180px; font-weight: 700; }
.ma-in-en { flex: 1 1 180px; color: var(--text-2); }
.ma-items { list-style: none; margin: 12px 0 0; padding: 0 0 0 32px; display: grid; gap: 6px; }
.ma-item { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.ma-item .ma-in:first-child { flex: 1 1 160px; }
.ma-in-url { flex: 2 1 240px; font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 13.5px; }
.ma-tab { font-size: 13px; color: var(--text-2); white-space: nowrap; }
.ma-btn { height: 34px; min-width: 34px; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; color: #444; font-size: 13.5px; cursor: pointer; transition: border-color .15s, color .15s; }
.ma-btn:hover { border-color: var(--navy); color: var(--navy); }
.ma-btn.danger:hover { border-color: var(--red); color: var(--red); }
.ma-add { margin: 10px 0 0 32px; }
.ma-mv { height: 34px; border: 1px solid var(--line); border-radius: var(--radius); font-size: 13px; background: #fff; }
.ma-add-sec { display: block; width: 100%; margin-top: 16px; padding: 16px; border: 1px dashed #b9c4d6; border-radius: var(--radius); background: #fafbfd; color: var(--navy); font: inherit; font-size: 15px; font-weight: 600; cursor: pointer; transition: background .15s, border-color .15s; }
.ma-add-sec:hover { background: #eef3fb; border-color: var(--navy); }
.ma-bar { position: sticky; bottom: 0; z-index: 5; display: flex; align-items: center; gap: 12px; margin-top: 20px; padding: 12px 16px; background: rgba(255,255,255,.97); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 -6px 18px rgba(0,0,0,.06); }
.ma-bar-note { color: var(--text-3); font-size: 13.5px; }
.ma-bar .btn { min-width: 120px; min-height: 42px; }
.ma-gap { flex: 1; }
.ma-box { margin-top: 36px; border: 1px solid var(--line); border-radius: var(--radius); padding: 14px 16px; }
.ma-box summary { cursor: pointer; font-weight: 700; color: var(--navy); }
.ma-board { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin-top: 14px; align-items: end; }
.ma-board label { display: grid; gap: 6px; font-size: 13px; font-weight: 700; color: #333; }
.ma-board input:not([type=checkbox]), .ma-board select { height: 40px; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 14.5px; font-weight: 400; }
.ma-check { display: flex !important; align-items: center; gap: 6px; font-weight: 400 !important; }
.ma-reset { margin-top: 24px; text-align: right; }
@media (max-width: 640px) { .ma-items { padding-left: 0; } .ma-add { margin-left: 0; } }

/* 외래 시간표 세로줄: 요일(오전 칸) 앞과 구분 칸 양옆에 같은 선 */
.tt thead tr:nth-child(2) th.tt-h:nth-child(odd), .tt td.tt-site { border-left: 1px solid var(--line-2); }
.tt thead th.tt-site, .tt td.tt-site { border-right: 0; }

/* 인사말 서명 (오른쪽) */
.greet-sign { display: flex; flex-direction: column; align-items: flex-end; gap: 12px; margin-top: 36px; text-align: right; }
.prose .greet-sign img { margin: 0; width: 160px; aspect-ratio: 4 / 5; object-fit: cover; object-position: 50% 15%; border-radius: var(--radius); box-shadow: 0 6px 18px rgba(0,0,0,.08); }
.prose .greet-sign p { margin: 0; line-height: 1.5; }
.prose .greet-sign b { font-weight: 700; }
@media (max-width: 560px) { .prose .greet-sign img { width: 120px; } }

.ma-tbl { overflow-x: auto; margin-top: 10px; }
.ma-tbl table { width: 100%; min-width: 900px; border-collapse: collapse; font-size: 14px; }
.ma-tbl th { padding: 8px; border-bottom: 2px solid var(--line-dark); text-align: left; font-weight: 500; color: #333; white-space: nowrap; }
.ma-tbl td { padding: 6px 8px; border-bottom: 1px solid var(--line-2); vertical-align: middle; }
.ma-tbl td:first-child a { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 12.5px; color: var(--text-2); }
.ma-brow { margin: 0; }
.ma-brow .ma-in { width: 100%; }
.ma-n { text-align: right; font-variant-numeric: tabular-nums; color: var(--text-2); }
.ma-acts { white-space: nowrap; }
.ma-acts form { display: inline; margin: 0 0 0 4px; }

/* 메뉴 관리: 끌어서 옮기기 */
.ma-grip { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 34px; color: #aaa; font-size: 15px; letter-spacing: -3px; cursor: grab; user-select: none; }
.ma-grip:hover { color: #555; }
.ma-grip:active { cursor: grabbing; }
.ma-sec.is-dragging, .ma-item.is-dragging { opacity: .4; }
.ma-ph { height: 0; margin: 2px 0; border-top: 3px solid var(--navy); border-radius: 2px; list-style: none; }
.ma-items .ma-ph { margin: 0; }
.ma-items { min-height: 20px; }

/* 행사: 시간 입력 · 캘린더에 추가 */
.pf-dt { display: flex; gap: 8px; }
.pf-dt input[type=date] { flex: 1.4; min-width: 0; }
.pf-dt input[type=time] { flex: 1; min-width: 0; }
.pf-hint { margin: -8px 0 0; font-size: 13px; color: var(--text-3); }
.ev-cal { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin-top: 16px; }
.ev-cal .btn-line { height: 40px; gap: 6px; padding: 0 16px; font-size: 14.5px; }
.ev-cal svg { width: 18px; height: 18px; }
.ev-cal-help { font-size: 13px; color: var(--text-3); }

/* 게시판 분류 탭 (동문 소식) */
.cat-tabs { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 18px; }
.cat-tabs a { height: 34px; padding: 0 16px; display: inline-flex; align-items: center; border: 1px solid var(--line); border-radius: 999px; color: #444; font-size: 14px; transition: border-color .15s, color .15s, background .15s; }
.cat-tabs a:hover { border-color: var(--navy); color: var(--navy); }
.cat-tabs a[aria-current="page"] { border-color: var(--navy); background: var(--navy); color: #fff; }
.board-list .cate { width: 150px; color: var(--text-2); font-size: 14px; white-space: normal; overflow: visible; text-overflow: clip; word-break: keep-all; line-height: 1.4; } /* 분과 이름이 잘리지 않게 */

/* ── 동문회 메인 ── */
div.am { display: grid; grid-template-columns: minmax(0, 1fr); gap: 44px; } /* 동문회 첫 화면 (외래 시간표의 오전 칸 td.am 과 겹치지 않게 div 만). 칸 너비를 화면에 고정 — 안 그러면 사진 줄 길이만큼 늘어나 모바일에서 넘친다 */
.ac-view { position: relative; }
.ac-track { list-style: none; margin: 0; padding: 0; display: flex; gap: 10px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; scroll-behavior: smooth; }
.ac-track::-webkit-scrollbar { display: none; }
.ac-track li { flex: 0 0 calc((100% - 30px) / 4); scroll-snap-align: start; }
.ac-track a { position: relative; display: block; aspect-ratio: 4 / 3; overflow: hidden; border-radius: var(--radius); background: var(--bg-3); }
.ac-track img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .35s ease; }
.ac-track a:hover img { transform: scale(1.05); }
.ac-cap { position: absolute; left: 0; right: 0; bottom: 0; padding: 22px 12px 10px; background: linear-gradient(transparent, rgba(0,0,0,.6)); color: #fff; font-size: 13.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; opacity: 0; transition: opacity .2s; }
.ac-track a:hover .ac-cap, .ac-track a:focus-visible .ac-cap { opacity: 1; }
.ac-nav { position: absolute; top: 50%; z-index: 2; width: 44px; height: 44px; margin-top: -22px; border: 0; border-radius: 50%; background: rgba(255,255,255,.92); box-shadow: 0 2px 10px rgba(0,0,0,.18); color: #333; font-size: 26px; line-height: 1; cursor: pointer; transition: background .15s; }
.ac-nav:hover { background: #fff; }
.ac-prev { left: -14px; } .ac-next { right: -14px; }
/* 화살표: 글꼴 글자(‹ ›)는 글꼴마다 위치가 달라 가운데가 안 맞는다 → 테두리로 그린 꺾쇠를 정가운데에 */
.lb-nav, .ac-nav { display: grid; place-items: center; padding: 0; font-size: 0; }
.lb-nav::before, .ac-nav::before { content: ""; width: 12px; height: 12px; border: solid currentColor; border-width: 0 0 2.5px 2.5px; }
.lb-prev::before, .ac-prev::before { transform: translateX(2px) rotate(45deg); }
.lb-next::before, .ac-next::before { transform: translateX(-2px) rotate(-135deg); }
.am-links { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 12px; }
.am-links a { display: grid; gap: 4px; padding: 20px 18px; border: 1px solid var(--line); border-top: 3px solid var(--navy); border-radius: var(--radius); background: #fff; transition: box-shadow .2s, transform .2s; }
.am-links a:hover { box-shadow: 0 8px 22px rgba(0,0,0,.08); transform: translateY(-2px); }
.am-links strong { font-size: 17px; color: #111; }
.am-links span { font-size: 13px; color: var(--text-3); }
.am-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; }
.am-grid > *, .am-box, .am-box ul, .am-box li { min-width: 0; max-width: 100%; } /* 긴 제목에 칸이 늘어나 휴대폰 화면을 넘지 않게 */
.al-cat { margin-right: 6px; padding: 1px 7px; border-radius: var(--radius); background: var(--bg-3); color: var(--text-2); font-size: 12px; font-style: normal; }
@media (max-width: 960px) { .ac-track li { flex-basis: calc((100% - 10px) / 2); } .am-links { grid-template-columns: repeat(3, minmax(0, 1fr)); } .am-grid { grid-template-columns: 1fr; } }
@media (max-width: 560px) { .ac-track li { flex-basis: 78%; } .ac-nav { display: none; } .am-links { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

.sched-note { margin: 0 0 14px; font-size: 13px; color: var(--text-3); }

/* 3단 메뉴 */
.gnb .depth2 .depth3 { padding: 0 0 6px; }
.gnb .depth2 .depth3 a { padding: 4px 22px 4px 36px; font-size: 13.5px; color: rgba(255,255,255,.65); }
.gnb .depth2 .depth3 a::before { content: "– "; }
.mnav .mnav-3 { padding: 0 0 4px; background: none; }
.mnav .mnav-3 a { padding: 6px 28px 6px 44px; font-size: 14px; color: var(--text-2); }
.sitemap .sitemap-3 { margin: 0 0 6px 12px; padding-left: 10px; border-left: 2px solid var(--line-2); }
.sitemap .sitemap-3 a { padding: 3px 0; font-size: 14px; color: var(--text-2); }

/* 주소 없는 메뉴: 하위 메뉴를 묶는 제목 (누를 수 없음) */
a.is-empty { cursor: default; }
.gnb .depth2 a.is-empty:hover { background: none; color: rgba(255,255,255,.85); }

/* 폼 요소도 사이트 글꼴 (브라우저 기본 굴림 대신) */
button, input, select, textarea { font-family: inherit; }
/* 메뉴 관리: 2단·3단 줄 맞춤 */
.ma-items { gap: 8px; }
.ma-item { display: block; }
.ma-row, .ma-kid { display: flex; align-items: center; gap: 6px; }
.ma-row > .ma-in:not(.ma-in-url) { flex: 0 0 210px; }
.ma-kid > .ma-in:not(.ma-in-url) { flex: 0 0 173px; }          /* 들여쓴 만큼 줄여 주소 칸 시작을 맞춘다 */
.ma-row > .ma-in-url, .ma-kid > .ma-in-url { flex: 0 1 300px; min-width: 120px; }
.ma-row .ma-in, .ma-kid .ma-in { height: 38px; font-size: 14.5px; }
.ma-in-url { font-family: inherit; font-size: 14px; color: #333; }
.ma-in::placeholder { color: #aaa; font-size: 13px; }
.ma-kids { list-style: none; display: grid; gap: 6px; margin: 8px 0 2px 11px; padding: 0 0 0 26px; border-left: 2px solid transparent; }
.ma-kids:empty { margin: 0 0 0 11px; padding: 0; border: 0; min-height: 6px; }
.ma-kid { position: relative; }
.ma-kid::before { content: ""; position: absolute; left: -26px; top: 50%; width: 18px; border-top: 2px solid var(--line); }
/* 세로줄은 칸마다 그려 마지막 칸에서 ㄴ 으로 끝나게 (아래로 튀어나가지 않게) */
.ma-kid::after { content: ""; position: absolute; left: -28px; top: -8px; bottom: -6px; border-left: 2px solid var(--line); }
.ma-kid:last-child::after, .ma-kid:has(+ .ma-ph:last-child)::after { bottom: calc(50% - 2px); }
.ma-add3 { white-space: nowrap; font-size: 13px; }
.ma-mv { flex: 0 0 auto; font-size: 13.5px; }
@media (max-width: 760px) {
  .ma-row, .ma-kid { flex-wrap: wrap; }
  .ma-row > .ma-in:not(.ma-in-url), .ma-kid > .ma-in:not(.ma-in-url) { flex: 1 1 140px; }
}

/* 메뉴 관리 버튼: 줄어들거나 줄바꿈 되지 않게 */
.ma-btn, .ma-tab, .ma-mv { flex: none; white-space: nowrap; }
.ma-add3 { padding: 0 12px; }

/* 달력: 공휴일 */
.cal-hol { display: block; margin: 2px 0 3px; font-size: 11.5px; line-height: 1.3; color: var(--red); font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 640px) { .cal-hol { font-size: 10px; } }

/* ── 연혁 ── */
.hs-intro { padding: 26px 30px; border-left: 4px solid var(--navy); background: var(--bg-2); border-radius: 0 var(--radius) var(--radius) 0; }
.hs-intro p { margin: 0; font-size: 16px; line-height: 1.85; color: #333; }
.hs-intro p + p { margin-top: 10px; }
.hs-divs { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 26px 0 0; }
.hs-divs span { margin-right: 6px; font-size: 14px; font-weight: 700; color: #333; }
.hs-divs a { height: 32px; padding: 0 14px; display: inline-flex; align-items: center; border: 1px solid var(--line); border-radius: 999px; font-size: 13.5px; color: #444; transition: border-color .15s, color .15s; }
.hs-divs a:hover { border-color: var(--navy); color: var(--navy); }
.hs-layout { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 44px; margin-top: 44px; align-items: start; }
.hs-nav { position: sticky; top: 20px; display: grid; gap: 2px; border-left: 2px solid var(--line-2); }
.hs-nav a { display: flex; gap: 10px; padding: 9px 12px; margin-left: -2px; border-left: 2px solid transparent; font-size: 14px; line-height: 1.45; color: var(--text-2); transition: color .15s, border-color .15s; }
.hs-nav a b { flex: none; min-width: 26px; color: var(--navy); font-family: Georgia, "Times New Roman", serif; }
.hs-nav a:hover { color: var(--navy); border-left-color: var(--navy); }
.hs-era { scroll-margin-top: 20px; }
.hs-era + .hs-era { margin-top: 56px; }
.hs-era header { display: flex; align-items: center; gap: 16px; padding-bottom: 14px; border-bottom: 2px solid var(--navy); }
.hs-no { flex: none; display: inline-flex; align-items: center; justify-content: center; min-width: 46px; height: 46px; padding: 0 8px; border-radius: 50%; background: var(--navy); color: #fff; font: 700 18px Georgia, "Times New Roman", serif; }
.hs-era h3 { margin: 0; font-size: 21px; color: #111; }
.hs-body { position: relative; padding: 22px 0 0 0; }
.hs-sub { margin: 26px 0 10px; font-size: 17px; color: var(--navy); }
.hs-sub:first-child { margin-top: 0; }
.hs-p { margin: 0 0 14px; font-size: 15.5px; line-height: 1.85; color: #333; }
.hs-ev { position: relative; display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 18px; padding: 0 0 16px 0; }
.hs-ev::before { content: ""; position: absolute; left: 100px; top: 10px; bottom: -6px; border-left: 1px solid var(--line); }
.hs-ev::after { content: ""; position: absolute; left: 96px; top: 7px; width: 9px; height: 9px; border-radius: 50%; background: #fff; border: 2px solid var(--navy); box-sizing: border-box; }
.hs-ev:last-child::before { display: none; }
/* 다음 칸이 연도 줄이 아니면(설명 문단·소제목) 세로줄을 거기서 끊고, 혼자 있는 연도는 점도 없이 */
.hs-ev:not(:has(+ .hs-ev))::before { display: none; }
.hs-ev:not(.has-more):not(.hs-ev + .hs-ev):not(:has(+ .hs-ev))::after { display: none; }
/* 설명 문단이 딸린 연도는 그 문단 끝까지 세로줄을 긋는다 */
.hs-ev.has-more::before { display: block; }
.hs-ev.has-more:not(:has(+ .hs-ev))::before { bottom: 22px; }
.hs-ev p + p { margin-top: 10px; }
.hs-year { text-align: right; font-weight: 700; font-size: 16px; color: var(--navy); font-variant-numeric: tabular-nums; line-height: 1.5; }
.hs-year small { margin-right: 2px; font-size: 12px; font-weight: 400; color: var(--text-3); }
.hs-ev.is-month .hs-year { font-size: 14px; font-weight: 500; }
.hs-ev p { margin: 0; padding-left: 12px; font-size: 15.5px; line-height: 1.8; color: #333; }
/* 좁은 화면: 시대 목차는 테두리 상자로 (옆 선 없이 · 줄마다 얇은 구분선) */
@media (max-width: 900px) {
  .hs-layout { grid-template-columns: 1fr; gap: 32px; }
  .hs-nav { position: static; gap: 0; padding: 4px 16px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--bg-2); }
  .hs-nav::before { content: "목차"; padding: 10px 0 8px; border-bottom: 1px solid var(--line); font-size: 13px; font-weight: 700; color: var(--text-3); letter-spacing: .04em; }
  .hs-nav a { margin: 0; padding: 11px 0; border-left: 0; color: #333; }
  .hs-nav a + a { border-top: 1px solid var(--line-2); }
  .hs-nav a:hover { color: var(--navy); }
}
@media (max-width: 560px) {
  .hs-intro { padding: 18px 18px; }
  /* 좁은 화면: 연도 칸을 따로 두지 않고 세로 줄 하나에 연도 → 내용 순서로 */
  .hs-ev { display: block; padding: 0 0 18px 22px; }
  .hs-ev::before { left: 4px; top: 12px; bottom: -4px; }
  .hs-ev::after { left: 0; top: 6px; }
  .hs-year { display: block; text-align: left; margin-bottom: 2px; }
  .hs-ev p { padding-left: 0; font-size: 15px; }
  .hs-p { font-size: 15px; }
  .hs-nav a { padding: 10px 0; }
}

/* ── 동문회 소개 (회장 인사 · 정관 · 임원소개 · 역대임원 · 동문회 연혁) ── */
.prose .ag a, .prose .by a, .prose .of a, .prose .po a, .prose .ah a { text-decoration: none; }
.ag { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 44px; align-items: start; }
.ag-photo { margin: 0; position: sticky; top: 20px; }
.ag-photo img { display: block; width: 100%; height: auto; border-radius: var(--radius); box-shadow: 0 10px 28px rgba(0,0,0,.12); }
.prose .ag-lead { margin: 0 0 22px; font-size: 21px; line-height: 1.5; color: #111; font-weight: 500; }
.ag-lead b { color: var(--navy); }
.prose .ag-text p { margin: 0 0 14px; font-size: 16px; line-height: 1.9; color: #333; }
.prose .ag-text .ag-sign { margin-top: 30px; text-align: right; color: #555; }
.ag-sign b { margin-left: 8px; font-size: 19px; color: #111; letter-spacing: .1em; }
.by-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 16px 30px; padding: 26px 30px; margin-bottom: 30px; border-radius: var(--radius); background: linear-gradient(135deg, #f4f6fb, #eef1f8); }
.prose .by-head h2 { margin: 0; font-size: 22px; font-weight: 500; color: #222; }
.by-head h2 b { color: var(--navy); }
.prose .by-rev { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, auto); gap: 2px 18px; font-size: 13px; color: var(--text-2); font-variant-numeric: tabular-nums; }
.by-art { display: grid; grid-template-columns: 170px minmax(0, 1fr); gap: 24px; padding: 20px 0; border-top: 1px solid var(--line-2); }
.prose .by-art h3 { margin: 0; font-size: 16px; color: var(--navy); line-height: 1.7; }
.by-art h3 span { display: block; font-size: 14.5px; font-weight: 500; color: #333; }
.prose .by-body p { margin: 0 0 8px; font-size: 15.5px; line-height: 1.8; color: #333; }
.prose .by-body p:last-child { margin-bottom: 0; }
.by-cl b { display: inline-block; min-width: 52px; margin-right: 6px; color: #111; }
.prose .by-note { padding: 8px 12px; border-radius: var(--radius); background: var(--bg-2); font-size: 14.5px; }
.prose .by-duty { list-style: none; margin: 4px 0 10px; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 6px; }
.prose .by-duty li { padding: 8px 12px; border: 1px solid var(--line-2); border-radius: var(--radius); font-size: 14.5px; }
.by-duty b { margin-right: 8px; color: var(--navy); }
.prose .by-tbl { width: auto; min-width: 280px; margin: 6px 0 14px; border-collapse: collapse; border-top: 2px solid var(--line-dark); font-size: 14.5px; }
.prose .by-tbl th, .prose .by-tbl td { padding: 7px 16px; border: 0; border-bottom: 1px solid var(--line-2); text-align: center; }
.prose .by-tbl th { background: var(--bg-2); font-weight: 500; }
.prose .by-part { margin: 30px 0 0; padding-top: 18px; border-top: 2px solid var(--navy); font-size: 18px; color: var(--navy); }
.by-part + .by-art { border-top: 0; }
.of { display: grid; gap: 20px; }
.prose .of-legend { margin: 0; font-size: 13.5px; color: var(--text-2); }
.of-sec { padding: 22px 24px; border: 1px solid var(--line-2); border-radius: var(--radius); background: #fff; }
.prose .of-sec h3 { margin: 0 0 16px; padding-left: 10px; border-left: 3px solid var(--navy); font-size: 17px; line-height: 1.2; color: #111; }
.of-sec h3 span { margin-left: 6px; font-size: 13px; font-weight: 400; color: var(--text-3); }
/* 한 사람 = 한 칸: 이름(굵게) 위, 졸업년도(작게) 아래 */
.op { display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; min-width: 92px; padding: 10px 12px; border-radius: var(--radius); background: #f3f6fb; line-height: 1.25; }
.op b { font-size: 16px; color: #111; letter-spacing: .02em; white-space: nowrap; }
.op small { font-size: 12px; color: var(--text-2); font-variant-numeric: tabular-nums; }
.prose .of-dl { margin: 0; display: grid; gap: 0; }
.of-row { display: grid; grid-template-columns: 96px minmax(0, 1fr); align-items: center; gap: 16px; padding: 12px 0; border-top: 1px solid var(--line-2); }
.of-row:first-child { border-top: 0; padding-top: 0; }
.prose .of-row dt { margin: 0; font-size: 15px; font-weight: 700; color: var(--navy); }
.prose .of-row dd { margin: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.prose .of-tbl { width: 100%; margin: 0; border-collapse: collapse; font-size: 15px; }
.prose .of-tbl th, .prose .of-tbl td { padding: 10px 12px; border: 0; border-bottom: 1px solid var(--line-2); text-align: center; vertical-align: middle; }
.prose .of-tbl thead th { background: var(--bg-2); font-size: 13.5px; font-weight: 500; color: #555; }
.prose .of-tbl tbody th { font-size: 15px; font-weight: 700; color: #333; text-align: left; white-space: nowrap; }
.of-tbl .op { min-width: 110px; }
.of-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 8px; }
.of-grid .op { min-width: 0; }
@media (max-width: 640px) {
  .of-sec { padding: 18px 14px; }
  .of-row { grid-template-columns: 1fr; gap: 8px; }
  .prose .of-tbl th, .prose .of-tbl td { padding: 8px 6px; }
  .of-tbl .op { min-width: 0; width: 100%; }
  .of-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.po-nav { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 20px; }
.po-nav a { height: 32px; padding: 0 14px; display: inline-flex; align-items: center; border: 1px solid var(--line); border-radius: 999px; font-size: 13.5px; color: #444; font-variant-numeric: tabular-nums; transition: border-color .15s, color .15s; }
.po-nav a:hover { border-color: var(--navy); color: var(--navy); }
.po-sec { margin-bottom: 10px; border: 1px solid var(--line-2); border-radius: var(--radius); overflow: hidden; scroll-margin-top: 20px; }
.po-sec summary { display: flex; align-items: baseline; gap: 4px; padding: 15px 20px; cursor: pointer; list-style: none; font-size: 15px; color: #333; background: #fafbfd; }
.po-sec summary::-webkit-details-marker { display: none; }
.po-sec summary::after { content: ""; margin-left: auto; align-self: center; width: 8px; height: 8px; border: solid #999; border-width: 0 2px 2px 0; transform: rotate(45deg); transition: transform .2s; }
.po-sec[open] summary::after { transform: rotate(-135deg); }
.po-sec summary b { font-size: 19px; color: var(--navy); font-variant-numeric: tabular-nums; }
.po-sec summary:hover { background: #f3f5fa; }
.prose .po-tbl { width: 100%; margin: 0; border-collapse: collapse; font-size: 14.5px; }
.prose .po-tbl th, .prose .po-tbl td { padding: 10px 20px; border: 0; border-top: 1px solid var(--line-2); vertical-align: top; text-align: left; }
.prose .po-tbl th { width: 130px; font-weight: 500; color: #333; white-space: nowrap; background: #fcfcfd; }
.po-tbl td span { display: inline-block; margin: 0 14px 2px 0; color: #444; }
.ah-dec { scroll-margin-top: 20px; }
.ah-dec + .ah-dec { margin-top: 40px; }
.prose .ah-dec h3 { margin: 0 0 16px; padding-bottom: 10px; border-bottom: 2px solid var(--navy); font: 400 20px Georgia, "Times New Roman", serif; color: #666; }
.ah-dec h3 b { font-size: 26px; color: var(--navy); }
.prose .ah-list { list-style: none; margin: 0; padding: 0; }
.ah-ev { position: relative; display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 22px; padding: 0 0 16px; }
.ah-ev::before { content: ""; position: absolute; left: 131px; top: 12px; bottom: -4px; border-left: 1px solid var(--line); }
.ah-ev::after { content: ""; position: absolute; left: 127px; top: 7px; width: 9px; height: 9px; border-radius: 50%; background: #fff; border: 2px solid var(--navy); box-sizing: border-box; }
.ah-ev:last-child::before { display: none; }
.ah-date { text-align: right; font-weight: 700; font-size: 14.5px; color: var(--navy); font-variant-numeric: tabular-nums; line-height: 1.6; white-space: nowrap; }
.prose .ah-txt p { margin: 0; padding-left: 14px; font-size: 15px; line-height: 1.75; color: #333; }
@media (max-width: 760px) {
  .ag { grid-template-columns: 1fr; gap: 22px; }
  .ag-photo { position: static; width: 150px; }
  .prose .ag-lead { font-size: 18px; }
  .prose .ag-text p { font-size: 15px; }
  .by-head { padding: 20px; }
  .by-art { grid-template-columns: 1fr; gap: 6px; }
  .by-art h3 span { display: inline; margin-left: 4px; }
  .of { grid-template-columns: 1fr; }
  .prose .of-tbl tbody th { white-space: normal; }
  .prose .po-tbl th, .prose .po-tbl td { padding: 8px 14px; }
  .prose .po-tbl th { width: 96px; white-space: normal; }
  .ah-ev { display: block; padding: 0 0 16px 22px; }
  .ah-ev::before { left: 4px; } .ah-ev::after { left: 0; top: 6px; }
  .ah-date { display: block; text-align: left; }
  .prose .ah-txt p { padding-left: 0; }
}

/* ── 조직도 ── */
.org-svg { display: block; width: 100%; height: auto; }
.org-svg-narrow { display: none; max-width: 420px; margin: 0 auto; }
@media (max-width: 640px) { .org-svg-wide { display: none; } .org-svg-narrow { display: block; } }
.orgp-h { margin: 0 0 22px; font-size: 22px; color: #111; }
.orgp-h + .org { margin-bottom: 64px; }
.org { margin: 0; padding: 36px 24px 32px; border: 1px solid var(--line-2); border-radius: var(--radius); background: linear-gradient(180deg, #fafbfd, #fff); }
.org-top { display: flex; justify-content: center; }
.org-head { min-width: 160px; padding: 16px 28px; border-radius: var(--radius); background: var(--navy); color: #fff; text-align: center; font-size: 19px; font-weight: 700; letter-spacing: .2em; box-shadow: 0 6px 18px rgba(27,69,150,.25); }
/* 선: 가운데 기둥(.org-mid::before)이 과장 아래부터 분과 가로줄까지 끊김 없이, 가로줄은 첫 분과 가운데~끝 분과 가운데까지만 */
.org-mid { position: relative; display: grid; grid-template-columns: 1fr 1fr; max-width: 760px; margin: 0 auto; padding: 26px 0; }
.org-mid::before { content: ""; position: absolute; left: calc(50% - 1px); top: 0; bottom: 0; width: 2px; background: var(--line); }
.org-col { display: grid; gap: 14px; align-content: center; }
.org-left { padding-right: 34px; justify-items: end; }
.org-right { padding-left: 34px; justify-items: start; }
.org-node { position: relative; min-width: 190px; padding: 12px 18px; border: 1px solid #cdd8ea; border-radius: var(--radius); background: #fff; text-align: center; font-size: 15.5px; font-weight: 700; color: var(--navy); }
.org-left .org-node::after, .org-right .org-node::before { content: ""; position: absolute; top: calc(50% - 1px); width: 35px; height: 2px; background: var(--line); }
.org-left .org-node::after { right: -36px; }
.org-right .org-node::before { left: -36px; }
.org-right .org-node:has(.org-sub)::before { top: 22px; }
.org-sub { display: grid; gap: 3px; margin: 10px 0 0; padding: 10px 0 0; border-top: 1px dashed var(--line); text-align: left; font-size: 13.5px; font-weight: 400; color: #555; }
.org-sub span { position: relative; padding-left: 12px; }
.org-sub span::before { content: ""; position: absolute; left: 2px; top: .65em; width: 4px; height: 4px; border-radius: 50%; background: #9aa6b8; }
.org-sub .org-sub-h { padding-left: 0; font-weight: 700; color: #333; }
.org-sub .org-sub-h::before { display: none; }
.org-divs { --gap: 10px; position: relative; display: grid; grid-template-columns: repeat(var(--n, 9), minmax(0, 1fr)); gap: var(--gap); padding-top: 26px; }
.org-divs::before { content: ""; position: absolute; top: 0; height: 2px; background: var(--line);
  left: calc((100% - (var(--n, 9) - 1) * var(--gap)) / var(--n, 9) / 2 - 1px); right: calc((100% - (var(--n, 9) - 1) * var(--gap)) / var(--n, 9) / 2 - 1px); }
.org-div { position: relative; display: flex; align-items: center; justify-content: center; min-height: 64px; padding: 10px 6px; border-radius: var(--radius); background: #eef3fb; color: var(--navy); text-align: center; font-size: 14.5px; font-weight: 700; line-height: 1.35; word-break: keep-all; }
.org-div::before { content: ""; position: absolute; left: calc(50% - 1px); top: -26px; width: 2px; height: 26px; background: var(--line); }
.fac-nav { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.fac-nav a { height: 32px; padding: 0 14px; display: inline-flex; align-items: center; border: 1px solid var(--line); border-radius: 999px; font-size: 13.5px; color: #444; transition: border-color .15s, color .15s; }
.fac-nav a:hover { border-color: var(--navy); color: var(--navy); }
.fac-sec { margin-top: 34px; scroll-margin-top: 20px; }
.fac-sec h3 { display: flex; align-items: baseline; gap: 10px; margin: 0 0 10px; font-size: 18px; color: var(--navy); }
.fac-sec h3 span { font-size: 13px; font-weight: 400; color: var(--text-3); }
.fac { width: 100%; border-collapse: collapse; border-top: 2px solid var(--line-dark); font-size: 14.5px; }
.fac th, .fac td { padding: 11px 12px; border-bottom: 1px solid var(--line-2); text-align: left; vertical-align: top; }
.fac thead th, .fac tbody th { text-align: center; }
.orgp a, .hs a { text-decoration: none; }
.fac thead th { background: var(--bg-2); font-weight: 500; color: #333; font-size: 14px; }
.fac tbody th { width: 120px; font-weight: 700; white-space: nowrap; }
.fac tbody th a { color: #222; }
.fac tbody th a:hover { color: var(--navy); }
.fac-spec { color: #444; line-height: 1.6; }
.fac-mail { width: 240px; white-space: nowrap; }
.fac-mail a { color: var(--blue); }
.fac-none { color: var(--text-3); }
.fac tbody tr:hover td, .fac tbody tr:hover th { background: #f5f5f5; }
/* 좁은 화면: 분과를 여러 줄로 — 가운데 기둥이 분과 묶음 상자에 닿게 */
@media (max-width: 960px) { .org-divs { grid-template-columns: repeat(5, minmax(0, 1fr)); padding: 12px; border: 2px solid var(--line); border-radius: var(--radius); } .org-divs::before, .org-div::before { display: none; } }
@media (max-width: 640px) {
  .org { padding: 24px 14px; }
  .org-mid { grid-template-columns: 1fr; padding: 20px 0; }
  .org-mid::before { display: none; }
  .org-left, .org-right { padding: 0; justify-items: stretch; }
  .org-right { margin-top: 14px; }
  .org-left .org-node::after, .org-right .org-node::before { display: none; }
  .org-divs { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  /* 교수 명단: 표 → 카드 (이름 / 세부전공 / 이메일). .prose 표 꾸밈(회색 칸·세로줄)은 지운다 */
  .prose .fac thead { display: none; }
  .prose .fac { display: grid; gap: 8px; border-top: 0; font-size: 14px; }
  .prose .fac tbody { display: grid; gap: 8px; }
  .prose .fac tr { display: block; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
  .prose .fac th, .prose .fac td { display: block; width: auto !important; padding: 0; border: 0; background: none; text-align: left; }
  .prose .fac tbody th { font-size: 15.5px; }
  .prose .fac tbody th a { color: var(--navy); }
  .prose .fac-spec { margin-top: 3px; color: #555; font-size: 13.5px; line-height: 1.55; }
  .prose .fac-mail { margin-top: 6px; white-space: normal; word-break: break-all; font-size: 13px; }
  .prose .fac-spec:empty { display: none; }
  .prose .fac tbody tr:hover td, .prose .fac tbody tr:hover th { background: none; }
}

/* 일정표 자동 반영 안내 */
.sched-flash { margin: 0 0 16px; padding: 12px 16px; border-left: 3px solid; font-size: 14.5px; line-height: 1.6; }
.sched-flash.ok { border-color: var(--green); background: #eef8f2; color: #1d6b3f; }
.sched-flash.warn { border-color: var(--orange); background: #fff6ea; color: #8a4b00; }
.sched-flash a { color: inherit; text-decoration: underline; }

/* 달력: 연결할 글이 없는 일정 (누를 수 없음) */
.cal-grid .cal-nolink { display: block; margin-top: 3px; padding: 2px 6px; background: #ececec; color: #666; font-size: 12.5px; line-height: 1.45; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: default; }
.cal-list .cal-nolink { display: grid; grid-template-columns: 130px minmax(0, 1fr) minmax(0, .9fr); gap: 16px; padding: 13px 4px; font-size: 15px; color: #888; cursor: default; }
@media (max-width: 640px) { .cal-grid .cal-nolink { font-size: 0; height: 6px; padding: 0; margin-top: 2px; } }

/* 메뉴 관리: 하위 메뉴가 없는 메뉴도 끄는 동안에는 넉넉한 '하위 메뉴로 넣기' 자리를 보여 준다 */
.ma-list.is-dragging-item .ma-kids.is-empty, .ma-list.is-dragging-kid .ma-kids.is-empty {
  min-height: 34px; margin: 6px 0 4px 37px; padding: 0; border: 2px dashed var(--line); border-radius: var(--radius);
  display: flex; align-items: center; justify-content: center; }
.ma-list.is-dragging-item .ma-kids.is-empty::before, .ma-list.is-dragging-kid .ma-kids.is-empty::before {
  content: "여기에 놓으면 하위 메뉴로"; font-size: 13px; color: var(--text-3); }
.ma-list .ma-item.is-dragging > .ma-kids { display: none; }   /* 끌고 있는 메뉴 자기 자리는 숨김 */
.ma-kids.is-over { border-color: var(--navy) !important; background: #f2f6fc; }
.ma-kids.is-over.is-empty::before { color: var(--navy) !important; }

.ma-list.is-dragging-item .ma-kids.is-empty .ma-ph, .ma-list.is-dragging-kid .ma-kids.is-empty .ma-ph { display: none; }

/* ── 답변 글 ── */
.re-mark { color: var(--navy); font-weight: 500; white-space: nowrap; }
.re-mark.d2 { --d: 2; } .re-mark.d3 { --d: 3; } .re-mark.d4 { --d: 4; } .re-mark.d5 { --d: 5; }
.board-list td.subject.is-reply a .re-mark { display: inline-block; margin-left: calc((var(--d, 1) - 1) * 14px); }
.re-parent { margin: 0 0 22px; border: 1px solid var(--line-2); border-left: 3px solid var(--navy); border-radius: 0 var(--radius) var(--radius) 0; background: var(--bg-2); }
.board-view .re-parent { margin: 0 24px 24px; }
.re-parent-h { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 10px; margin: 0; padding: 12px 18px; border-bottom: 1px solid var(--line-2); font-size: 14.5px; }
.re-parent-h span { padding: 1px 8px; border-radius: 999px; background: var(--navy); color: #fff; font-size: 12px; }
.re-parent-h a { font-weight: 700; color: #222; }
.re-parent-h a:hover { color: var(--navy); }
.re-parent-h small { color: var(--text-3); font-size: 12.5px; }
.re-parent-body { max-height: 320px; overflow: auto; padding: 14px 18px; font-size: 14.5px; }
.re-kids { margin: 0 24px 24px; padding: 14px 18px; border: 1px solid var(--line-2); border-radius: var(--radius); }
.re-kids h3 { margin: 0 0 8px; font-size: 14.5px; color: #333; }
.re-kids ul { list-style: none; margin: 0; padding: 0; }
.re-kids li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; padding: 5px 0; font-size: 14.5px; }
.re-kids li a { color: #222; }
.re-kids li a:hover { color: var(--navy); }
.re-kids small { color: var(--text-3); font-size: 12.5px; }
@media (max-width: 640px) { .board-view .re-parent, .re-kids { margin-left: 0; margin-right: 0; } }


/* ── 전공의 당직 (배치·당직표 게시판) ── */
.duty { margin: 0 0 34px; padding: 22px 24px; border: 1px solid var(--line-2); border-radius: var(--radius); background: #fff; box-shadow: 0 6px 20px rgba(0,0,0,.04); scroll-margin-top: 20px; }
.dt-h { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 14px; margin: 0 0 14px; font-size: 19px; color: #111; }
.dt-src { font-size: 13px; font-weight: 400; color: var(--blue); }
.dt-head { display: flex; align-items: center; justify-content: center; gap: 16px; margin-bottom: 16px; }
.dt-date { display: flex; align-items: center; gap: 8px; min-width: 170px; justify-content: center; }
.dt-date strong { font-size: 20px; color: #111; font-variant-numeric: tabular-nums; }
.dt-badge { padding: 2px 8px; border-radius: 999px; background: var(--navy); color: #fff; font-size: 12px; }
.dt-today { padding: 2px 10px; border: 1px solid var(--line); border-radius: 999px; font-size: 12.5px; color: #555; }
.dt-today:hover { border-color: var(--navy); color: var(--navy); }
.dt-arrow { display: grid; place-items: center; width: 38px; height: 38px; border: 1px solid var(--line); border-radius: 50%; color: #555; }
.dt-arrow:hover { border-color: var(--navy); color: var(--navy); }
.dt-arrow::before { content: ""; width: 9px; height: 9px; border: solid currentColor; border-width: 0 0 2px 2px; }
.dt-prev::before { transform: translateX(2px) rotate(45deg); }
.dt-next::before { transform: translateX(-2px) rotate(-135deg); }
.dt-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px; }
.dt-list li { display: grid; gap: 6px; padding: 12px 14px; border-radius: var(--radius); background: #f5f7fb; }
.dt-area { font-size: 12.5px; color: var(--text-2); line-height: 1.35; }
.dt-names { display: flex; flex-wrap: wrap; gap: 6px; }
.dt-person { display: inline-flex; align-items: center; gap: 6px; height: 34px; padding: 0 12px; border-radius: 999px; background: #fff; border: 1px solid #d6dfee; font-size: 15px; font-weight: 700; color: var(--navy); }
a.dt-person:hover { background: var(--navy); color: #fff; border-color: var(--navy); }
.dt-person svg { width: 14px; height: 14px; flex: none; }
.dt-none, .dt-empty { color: var(--text-3); }
.dt-empty { margin: 0; padding: 18px 0 6px; text-align: center; }
.dt-month { margin-top: 18px; border-top: 1px solid var(--line-2); padding-top: 14px; }
.dt-month summary { cursor: pointer; font-size: 15px; font-weight: 700; color: #333; }
.dt-month-wrap { margin-top: 12px; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.dt-month-tbl { width: 100%; min-width: 760px; border-collapse: collapse; font-size: 13.5px; }
.dt-month-tbl th, .dt-month-tbl td { padding: 7px 8px; border-bottom: 1px solid var(--line-2); text-align: center; white-space: nowrap; }
.dt-month-tbl thead th { position: sticky; top: 0; background: var(--bg-2); font-size: 12px; font-weight: 500; color: #555; white-space: normal; line-height: 1.3; }
.dt-month-tbl tbody th { font-weight: 700; font-variant-numeric: tabular-nums; }
.dt-month-tbl tbody th a { color: #222; }
.dt-month-tbl tbody th small { font-weight: 400; color: var(--text-3); }
.dt-month-tbl tbody tr { cursor: pointer; }
.dt-month-tbl tbody tr:hover td, .dt-month-tbl tbody tr:hover th { background: #f5f5f5; }
.dt-month-tbl tr.is-sun th a, .dt-month-tbl tr.is-sun th small { color: #d33; }
.dt-month-tbl tr.is-sat th a, .dt-month-tbl tr.is-sat th small { color: #2a6fdb; }
.dt-month-tbl tr.is-today th { box-shadow: inset 3px 0 0 var(--navy); }
.dt-month-tbl tr.is-sel td, .dt-month-tbl tr.is-sel th { background: #eaf0fb; }
.cp { margin: 0 24px 24px; padding-top: 22px; border-top: 2px solid var(--navy); }
.cp-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; }
.cp-head h2 { margin: 0; font-size: 19px; color: #111; }
.cp-note { margin: 6px 0 14px; font-size: 13px; color: var(--text-3); }
.cp-sec + .cp-sec { margin-top: 22px; }
.cp-sec h3 { margin: 0 0 8px; padding-left: 10px; border-left: 3px solid var(--navy); font-size: 15.5px; color: #222; }
.xl-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.xl-tbl { border-collapse: collapse; min-width: 100%; font-size: 13.5px; }
.xl-tbl td { padding: 7px 10px; border: 1px solid var(--line-2); vertical-align: middle; line-height: 1.45; }
.xl-tbl tr:first-child td { background: var(--bg-2); font-weight: 700; }
/* 환자상태 보고 체계: 병동별 카드 */
.rp-legend { margin: 0 0 10px; font-size: 13px; color: var(--text-3); }
.rp-legend span { font-weight: 600; color: var(--navy); }
.rp { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 460px), 1fr)); gap: 12px; }
.rp-card { border: 1px solid var(--line); border-radius: var(--radius); padding: 12px 14px; background: #fff; }
.rp-card h4 { margin: 0 0 8px; font-size: 15.5px; color: #111; line-height: 1.4; }
.rp-card h4 span { display: inline-block; margin-right: 6px; padding: 1px 7px; border-radius: var(--radius); background: var(--bg-2); color: var(--navy); font-size: 12.5px; font-weight: 700; vertical-align: 2px; }
.rp-lane { display: flex; align-items: flex-start; gap: 8px; padding: 6px 0; }
.rp-lane + .rp-lane { border-top: 1px dashed var(--line-2); }
.rp-kind { flex: none; min-width: 38px; padding: 3px 0; border-radius: var(--radius); background: #e8f1fb; color: var(--navy); font-size: 12.5px; font-weight: 700; text-align: center; }
.rp-kind.is-night { background: #2b3a55; color: #fff; }
.rp-chain { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 0; margin: 0; padding: 0; list-style: none; font-size: 13.5px; line-height: 1.4; }
.rp-chain li { display: inline-flex; align-items: center; gap: 4px; }
.rp-chain li + li::before { content: "→"; margin: 0 6px; color: var(--text-3); }
.rp-chain small { display: inline-block; min-width: 16px; padding: 0 4px; border-radius: 999px; background: var(--bg-2); color: var(--text-3); font-size: 11px; font-weight: 700; text-align: center; }
.rp-chain li.is-final { font-weight: 700; color: var(--navy); }
.rp-chain li.is-final small { background: var(--navy); color: #fff; }
.rp-note { margin: 6px 0 0; padding: 7px 9px; border-radius: var(--radius); background: #fafbfc; color: #555; font-size: 12.5px; line-height: 1.5; }
@media (max-width: 600px) { /* 휴대폰: 한 단계씩 세로로 */
  .rp-chain { flex-direction: column; align-items: flex-start; gap: 3px; }
  .rp-chain li + li::before { content: "↓"; width: 14px; margin: 0 2px 0 0; text-align: center; }
  .rp-chain li:first-child { padding-left: 16px; }
}
/* 전공의 당직 back duty: Main 구역별 카드 */
.bd { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr)); gap: 10px; }
.bd-card { border: 1px solid var(--line); border-radius: var(--radius); padding: 10px 12px; background: #fff; }
.bd-card h4 { margin: 0 0 6px; font-size: 15px; color: #111; }
.bd-card h4 span { display: inline-block; margin-right: 6px; padding: 1px 7px; border-radius: var(--radius); background: #2b3a55; color: #fff; font-size: 11.5px; font-weight: 700; vertical-align: 2px; }
.bd-list { margin: 0; padding: 0; list-style: none; font-size: 13.5px; line-height: 1.5; }
.bd-list li { display: flex; align-items: center; gap: 6px; padding: 2px 0; white-space: nowrap; }
.bd-card h4 { white-space: nowrap; }
.bd-list small { display: inline-block; min-width: 18px; padding: 0 4px; border-radius: 999px; background: var(--bg-2); color: var(--text-3); font-size: 11px; font-weight: 700; text-align: center; }
@media (max-width: 600px) { .bd { grid-template-columns: 1fr 1fr; } }
.rp-raw { margin-top: 12px; }
.rp-raw summary { cursor: pointer; font-size: 13px; color: var(--text-3); }
.rp-raw .xl-wrap { margin-top: 8px; }
@media (max-width: 640px) {
  .duty { padding: 16px 14px; margin-left: -4px; margin-right: -4px; }
  .dt-list { grid-template-columns: 1fr; gap: 6px; }
  .dt-list li { grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 8px 10px 8px 12px; }
  .dt-names { justify-content: flex-end; }
  .dt-person { height: 32px; font-size: 14.5px; }
  .dt-date { min-width: 0; }
  .dt-date strong { font-size: 18px; }
  .cp { margin-left: 0; margin-right: 0; }
}

/* ── 페이지 편집 (관리자) ── */
.prose a.pe-fab, .pe-fab { position: fixed; right: 28px; bottom: 28px; z-index: 95; display: grid; place-items: center; width: 56px; height: 56px;
  border-radius: 50%; background: var(--navy); color: #fff; text-decoration: none; box-shadow: 0 10px 26px rgba(27,69,150,.35); transition: transform .15s, box-shadow .15s; }
.prose a.pe-fab:hover, .pe-fab:hover { transform: translateY(-2px); box-shadow: 0 14px 30px rgba(27,69,150,.42); color: #fff; }
.pe-fab svg { width: 22px; height: 22px; }
.pe-dot { position: absolute; top: 4px; right: 4px; width: 12px; height: 12px; border-radius: 50%; background: #f5a524; border: 2px solid #fff; } /* 고친 적 있는 페이지 */
@media (max-width: 640px) { .prose a.pe-fab, .pe-fab { right: 16px; bottom: 16px; width: 50px; height: 50px; } }
@media print { .pe-fab { display: none; } }
.pe-help { margin: 0 0 12px; font-size: 14px; color: var(--text-2); }
.pe-reset { margin-top: -54px; }
.ma-toast { position: fixed; left: 50%; bottom: 96px; z-index: 300; max-width: calc(100% - 32px); padding: 12px 20px; border-radius: var(--radius); background: #1f2a44; color: #fff; font-size: 14.5px; box-shadow: 0 10px 28px rgba(0,0,0,.2); opacity: 0; transform: translate(-50%, 10px); pointer-events: none; transition: opacity .2s, transform .2s; }
.ma-toast.is-on { opacity: 1; transform: translate(-50%, 0); }
.ma-toast.is-bad { background: #b3261e; }
.ma-in.ma-flash { background: #fff7d6; transition: background .6s; }

.dt-sub { display: flex; flex-direction: column; gap: 3px; margin: 20px 0 10px; font-size: 15.5px; line-height: 1.35; color: #222; }
.dt-sub:first-of-type { margin-top: 4px; }
.dt-sub small { font-size: 12.5px; font-weight: 400; line-height: 1.4; color: var(--text-3); }
.dt-h { line-height: 1.35; }
.dt-src { line-height: 1.45; }
.dt-area small { color: var(--text-3); }

/* ── 분과사 ── */
.dh-nav { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 26px; }
.prose .dh-nav a { height: 34px; padding: 0 14px; display: inline-flex; align-items: center; border: 1px solid var(--line); border-radius: 999px; font-size: 13.5px; color: #444; text-decoration: none; transition: border-color .15s, color .15s, background .15s; }
.prose .dh-nav a:hover { border-color: var(--navy); color: var(--navy); }
.prose .dh-nav a[aria-current="page"] { border-color: var(--navy); background: var(--navy); color: #fff; }
.dh-head { padding: 28px 30px; margin-bottom: 34px; border-radius: var(--radius); background: linear-gradient(135deg, #f4f6fb, #eaeff8); }
.prose .dh-kicker { margin: 0 0 4px; font-size: 13px; letter-spacing: .04em; color: var(--text-2); }
.prose .dh-head h2 { margin: 0; font-size: 26px; color: var(--navy); }
.prose .dh-founded { display: inline-block; margin: 12px 0 0; padding: 3px 12px; border-radius: 999px; background: #fff; font-size: 13.5px; font-weight: 700; color: var(--navy); }
.dh-sec + .dh-sec { margin-top: 40px; }
.prose .dh-sec h3 { margin: 0 0 18px; padding-bottom: 10px; border-bottom: 2px solid var(--navy); font-size: 19px; color: #111; }
.prose .dh-text p { margin: 0 0 12px; font-size: 15.5px; line-height: 1.85; color: #333; }
@media (max-width: 640px) { .dh-head { padding: 20px; } .prose .dh-head h2 { font-size: 22px; } }

/* ── 동문회원 검색 (auth/directory.php) ── */
.subtle { color: var(--muted, #6b7380); font-size: 14.5px; margin: 6px 0 20px; }
.dir-search { background: var(--card, #fff); border: 1px solid var(--line, #e6e9ef); border-radius: var(--radius);
  padding: 18px; margin: 18px 0 22px; box-shadow: 0 1px 2px rgba(20,30,60,.04); }
.dir-fields { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
@media (max-width: 720px) { .dir-fields { grid-template-columns: 1fr 1fr; } }
@media (max-width: 420px) { .dir-fields { grid-template-columns: 1fr; } }
.dir-fields label { display: flex; flex-direction: column; gap: 6px; font-size: 13px; font-weight: 600; color: #4a515e; }
.dir-fields input { padding: 10px 12px; border: 1px solid var(--line-2, #d7dce4); border-radius: var(--radius);
  font-size: 15px; background: var(--bg, #f7f9fc); }
.dir-fields input:focus { outline: none; border-color: var(--tint, #0a7aff); box-shadow: 0 0 0 3px rgba(10,122,255,.14); background: #fff; }
.dir-actions { display: flex; gap: 10px; margin-top: 16px; }
.dir-count { font-size: 14px; color: #4a515e; margin: 4px 0 12px; font-weight: 600; }
.dir-table { width: 100%; border-collapse: collapse; border-top: 2px solid var(--line-dark, #c7ccd6); font-size: 14.5px; }
.dir-table th, .dir-table td { padding: 11px 12px; border-bottom: 1px solid var(--line, #e6e9ef); text-align: left; }
.dir-table th { background: var(--bg-2, #eef2f8); font-weight: 600; color: #222; white-space: nowrap; }
.dir-table td + td, .dir-table th + th { border-left: 1px solid var(--line-2, #eceff4); }
.dir-table .dir-name { font-weight: 600; white-space: nowrap; }
.dir-table tbody tr:hover { background: var(--bg, #f6f9fd); }
.dir-pager { display: flex; gap: 10px; justify-content: center; margin: 18px 0; }
.dir-table .dir-email { white-space: nowrap; font-size: 13.5px; }
.dir-table .dir-email a { color: var(--tint, #0a7aff); text-decoration: none; }
.dir-table .dir-email a:hover { text-decoration: underline; }

/* ── 동문회원 검색 ── */
.md-search { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.md-search input { height: 46px; padding: 0 14px; border: 1px solid var(--line); border-radius: var(--radius); font-size: 15px; background: #fff; }
.md-search input:focus { outline: none; border-color: var(--navy); box-shadow: 0 0 0 3px rgba(27,69,150,.12); }
.md-q { flex: 1 1 280px; } .md-q input { width: 100%; }
.md-y input { width: 150px; }
.md-search .btn { height: 46px; }
@media (max-width: 560px) { .md-q { flex: 1 1 100%; } .md-y { flex: 1 1 0; min-width: 0; } .md-y input { width: 100% !important; } .md-search .btn { flex: 0 0 96px; } }
.md-total { margin: 0 0 10px; font-size: 14px; color: var(--text-2); }
.md-total strong { color: var(--navy); }
.md-wrap { overflow-x: auto; }
.md-tbl { width: 100%; border-collapse: collapse; border-top: 2px solid var(--line-dark); font-size: 15px; transition: opacity .15s; }
.md.is-loading .md-tbl { opacity: .55; }
.md-tbl th, .md-tbl td { padding: 12px 12px; border-bottom: 1px solid var(--line-2); text-align: left; }
.md-tbl thead th { background: var(--bg-2); font-size: 14px; font-weight: 500; color: #333; }
.md-tbl thead th, .md-tbl td.md-name, .md-tbl td.md-year { text-align: center; } /* 이름·입국년도·졸업년도는 가운데 */
.md-tbl td.md-hosp, .md-tbl td.md-mail { padding-left: 20px; }
@media (min-width: 641px) { .md-tbl { table-layout: fixed; } .md-tbl thead th:nth-child(1) { width: 140px; } .md-tbl thead th:nth-child(2), .md-tbl thead th:nth-child(3) { width: 124px; } .md-tbl thead th:nth-child(4) { width: 30%; } .md-hosp, .md-mail { overflow-wrap: anywhere; } }
.md-name { width: 110px; font-weight: 700; color: #111; white-space: nowrap; }
.md-year { width: 96px; color: #555; font-variant-numeric: tabular-nums; white-space: nowrap; }
.md-mail a { color: var(--blue); word-break: break-all; }
.md-none { color: var(--text-3); }
.md-tbl tbody tr { transition: background .12s; }
.md-tbl tbody tr:hover, .md-tbl tbody tr:hover td { background: #f5f5f5; } /* 줄 전체를 한 덩어리로 (휴대폰에서 칸 사이 틈 없이) */
.md-tbl .empty-row td { padding: 40px 0; text-align: center; color: var(--text-2); }
.md-note { margin: 18px 0 0; font-size: 13px; color: var(--text-3); }
@media (max-width: 640px) {
  .md-y input { width: 120px; }
  .md-tbl thead { display: none; }
  .md-tbl, .md-tbl tbody, .md-tbl tr, .md-tbl td { display: block; width: auto; }
  .md-tbl tr { display: grid; grid-template-columns: auto 1fr; gap: 2px 10px; padding: 12px 10px; border-bottom: 1px solid var(--line-2); }
  .md-tbl tbody tr:hover td { background: transparent; }
  .md-tbl td { padding: 0; border: 0; text-align: left !important; }
  .md-tbl tr { grid-template-columns: auto auto 1fr; }
  .md-name { width: auto; } .md-year { width: auto; font-size: 13px; align-self: center; }
  /* 휴대폰: 머리줄이 없으니 칸마다 이름표 */
  .md-join::before { content: "입국년도 "; color: var(--text-3); }
  .md-grad::before { content: "졸업년도 "; color: var(--text-3); }
  .md-hosp, .md-mail { grid-column: 1 / -1; font-size: 14px; }
  .md-tbl .empty-row { display: block; } .md-tbl .empty-row td { padding: 30px 0; text-align: center !important; }
}

/* ── 동문 명단 관리 (관리자) ── */
.rs { max-width: 1240px; }
.rs-search { display: flex; flex-wrap: wrap; gap: 8px; margin: 18px 0 12px; }
.rs-search input, .rs-search select { height: 42px; padding: 0 12px; border: 1px solid var(--line); border-radius: var(--radius); font-size: 15px; background: #fff; }
.rs-search input { flex: 1 1 260px; }
.rs-search .btn { height: 42px; min-height: 0; padding-top: 0; padding-bottom: 0; }
@media (max-width: 560px) { .rs-search input { flex: 1 1 100%; } .rs-search select { flex: 1 1 0; min-width: 0; } .rs-search .btn { flex: 0 0 96px; } }
.rs-add { margin-bottom: 14px; }
.rs-add summary { cursor: pointer; font-weight: 700; color: var(--navy); padding: 6px 0; }
.rs-total { margin: 6px 0; font-size: 13.5px; color: var(--text-2); }
.rs-head, .rs-row { display: grid; grid-template-columns: 110px 84px 84px minmax(140px, 1.3fr) minmax(160px, 1.3fr) 110px 128px; gap: 6px; align-items: center; }
.rs-head { padding: 8px 8px; background: var(--bg-2); border-top: 2px solid var(--line-dark); font-size: 13px; color: #555; font-weight: 500; }
.rs-row { padding: 8px; border-bottom: 1px solid var(--line-2); transition: background .3s; }
.rs-row input { width: 100%; min-width: 0; height: 36px; padding: 0 8px; border: 1px solid transparent; border-radius: var(--radius); background: transparent; font-size: 14px; color: #222; }
.rs-row input:hover { border-color: var(--line); }
.rs-row input:focus { outline: none; border-color: var(--navy); background: #fff; }
.rs-row.is-new input { border-color: var(--line); background: #fff; }
.rs-row.is-dirty { background: #fffbea; }
.rs-row.is-saved { background: #edf7f0; }
.rs-f { display: block; min-width: 0; }
.rs-f small { display: none; }
.rs-acts { display: flex; gap: 4px; justify-content: flex-end; }
.rs-acts .btn[disabled] { opacity: .45; cursor: default; }
.rs-meta { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 6px; padding: 0 2px 2px; }
@media (max-width: 900px) {
  .rs-head { display: none; }
  .rs-row { grid-template-columns: 1fr 1fr; }
  .rs-row input { border-color: var(--line-2); }
  .rs-acts { grid-column: 1 / -1; }
  .rs-f small { display: block; margin: 0 0 3px 2px; font-size: 12px; color: var(--text-3); }
  .rs-row .rs-f:nth-of-type(1), .rs-row .rs-f:nth-of-type(4) { grid-column: 1 / -1; } /* 이름 · 근무지는 한 줄, 입국년도|졸업년도 · 이메일|면허번호는 나란히 */
}

/* ── 링크 게시판 (동문 블로그 등) ── */
.lk-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.lk-item { display: flex; align-items: center; gap: 8px; border: 1px solid var(--line-2); border-radius: var(--radius); background: #fff; transition: border-color .15s, box-shadow .15s; }
.lk-item:hover { border-color: #c9d5ea; box-shadow: 0 6px 18px rgba(0,0,0,.06); }
.lk-main { flex: 1; min-width: 0; display: flex; align-items: center; gap: 14px; padding: 16px 18px; color: inherit; }
.lk-icon { flex: none; display: grid; place-items: center; width: 44px; height: 44px; border-radius: var(--radius); background: #eef3fb; color: var(--navy); font-size: 18px; font-weight: 700; }
.lk-text { min-width: 0; display: grid; gap: 2px; }
.lk-text b { font-size: 16px; color: #111; }
.lk-desc { font-size: 14px; color: #555; }
.lk-host { font-size: 13px; color: var(--blue); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lk-go { flex: none; width: 20px; height: 20px; margin-left: auto; color: var(--text-3); }
.lk-main:hover .lk-go { color: var(--navy); }
.lk-acts { flex: none; display: flex; gap: 4px; padding-right: 14px; }
.lk-acts form { margin: 0; }
.lk-note { margin: 8px 0 0; text-align: right; font-size: 13px; color: var(--text-3); }
@media (max-width: 640px) { .lk-item { flex-wrap: wrap; } .lk-acts { width: 100%; justify-content: flex-end; padding: 0 12px 12px; } }

/* ── 개인정보처리방침 ── */
.pv { max-width: 900px; margin: 0 auto; }
.pv-head { padding: 30px 32px; border-radius: var(--radius); background: linear-gradient(135deg, #f4f6fb, #e9eef8); }
.prose .pv-kicker { margin: 0 0 4px; font-size: 13px; color: var(--text-2); }
.prose .pv-head h2 { margin: 0 0 8px; font-size: 26px; color: var(--navy); }
.prose .pv-head p { margin: 0; font-size: 15px; color: #444; }
.prose .pv-chips { list-style: none; margin: 16px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.prose .pv-chips li { margin: 0; padding: 4px 12px; border-radius: 999px; background: #fff; font-size: 13px; font-weight: 700; color: var(--navy); }
.pv-toc { margin: 24px 0 8px; padding: 18px 22px; border: 1px solid var(--line-2); border-radius: var(--radius); }
.prose .pv-toc ol { margin: 0; padding-left: 1.4em; columns: 2; column-gap: 28px; font-size: 14.5px; }
.prose .pv-toc li { margin: 3px 0; break-inside: avoid; }
.prose .pv-toc a { color: #333; text-decoration: none; }
.prose .pv-toc a:hover { color: var(--navy); }
.pv-sec { padding: 26px 0 6px; border-top: 1px solid var(--line-2); scroll-margin-top: 20px; }
.pv-toc + .pv-sec { border-top: 0; }
.prose .pv-sec h3 { display: flex; align-items: center; gap: 10px; margin: 0 0 12px; font-size: 18px; color: #111; }
.pv-n { display: inline-grid; place-items: center; flex: none; width: 28px; height: 28px; border-radius: 50%; background: var(--navy); color: #fff; font-size: 14px; }
.prose .pv-sec p, .prose .pv-sec li { font-size: 15px; line-height: 1.8; color: #333; }
.prose .pv-sec ul { margin: 0; padding-left: 1.2em; }
.pv-tbl-wrap { overflow-x: auto; }
.prose .pv-tbl { width: 100%; margin: 6px 0 10px; border-collapse: collapse; font-size: 14.5px; border-top: 2px solid var(--line-dark); }
.prose .pv-tbl th, .prose .pv-tbl td { padding: 10px 12px; border: 0; border-bottom: 1px solid var(--line-2); text-align: left; vertical-align: top; }
.prose .pv-tbl thead th { background: var(--bg-2); font-size: 13.5px; font-weight: 500; color: #555; }
.prose .pv-tbl tbody th { width: 30%; font-weight: 700; color: #222; }
.prose .pv-officer { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 8px 0 14px; }
.pv-officer div { padding: 14px 16px; border-radius: var(--radius); background: var(--bg-2); }
.prose .pv-officer dt { margin: 0 0 2px; font-size: 12.5px; color: var(--text-2); }
.prose .pv-officer dd { margin: 0; font-size: 15.5px; font-weight: 700; color: #111; }
.prose .pv-officer a { color: var(--navy); text-decoration: none; }
.prose .pv-sub { font-size: 13.5px !important; color: var(--text-2) !important; }
.prose .pv-date { margin: 26px 0 0; padding-top: 16px; border-top: 1px solid var(--line-2); font-size: 13.5px; color: var(--text-2); text-align: right; }
@media (max-width: 640px) {
  .pv-head { padding: 22px 20px; }
  .prose .pv-toc ol { columns: 1; }
  .prose .pv-officer { grid-template-columns: 1fr; }
  .prose .pv-tbl tbody th { width: auto; }
}

/* 상단 고정 글 · 분류 표시 */
.pin-badge { display: inline-flex; align-items: center; height: 22px; padding: 0 9px; border-radius: 999px; background: var(--navy); color: #fff; font-size: 12px; font-weight: 700; letter-spacing: 0; }
.board-list tr.is-pinned td { background: #f6f8fc; }
.board-list tr.is-pinned .subject a { font-weight: 700; color: #111; }
@media (max-width: 768px) {
  /* 휴대폰에선 칸(td)이 줄마다 따로 쌓이므로 배경은 행 전체에 */
  .board-list tr.is-pinned, .board-list tr.is-notice { background: #f2f6fc; padding-left: 12px; padding-right: 12px; }
  .board-list tr.is-pinned td, .board-list tr.is-notice td { background: none; }
  .board-list tr.is-pinned .subject a::before { content: "공지"; display: inline-flex; align-items: center; height: 20px; padding: 0 7px; margin-right: 6px; border-radius: 999px; background: var(--navy); color: #fff; font-size: 11px; font-weight: 700; vertical-align: 2px; }
}
.view-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 10px; }
.cat-chip { display: inline-flex; align-items: center; height: 22px; padding: 0 10px; border: 1px solid var(--navy); border-radius: 999px; color: var(--navy); font-size: 12px; font-weight: 500; }
.pf-check { display: flex; align-items: center; gap: 8px; margin: 0; font-size: 15px; color: #333; cursor: pointer; justify-self: start; }
.pf-cats { display: flex; flex-wrap: wrap; gap: 8px; }
.pf-cat { position: relative; cursor: pointer; }
.pf-cat input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
.pf-cat span { display: inline-flex; align-items: center; height: 38px; padding: 0 16px; border: 1px solid var(--line); border-radius: 999px; background: #fff; color: #444; font-size: 14.5px; transition: border-color .15s, color .15s, background .15s; }
.pf-cat:hover span { border-color: var(--navy); color: var(--navy); }
.pf-cat input:checked + span { border-color: var(--navy); background: var(--navy); color: #fff; font-weight: 500; }
.pf-cat input:focus-visible + span { box-shadow: 0 0 0 3px rgba(27,69,150,.25); }
.pf-cat:last-child span { border-style: dashed; color: var(--text-3); }
.pf-cat:last-child input:checked + span { border-style: solid; background: #555; border-color: #555; color: #fff; }
.pf-check input { width: 18px; height: 18px; accent-color: var(--navy); }
/* 메뉴 관리 > 게시판 관리: 분류 · 권한 */
.ma-rules { position: relative; font-size: 13px; }
.ma-rules summary { cursor: pointer; color: var(--navy); white-space: nowrap; max-width: 220px; overflow: hidden; text-overflow: ellipsis; }
.ma-rules[open] summary { font-weight: 700; }
.ma-rules-box { width: 300px; margin-top: 8px; padding: 14px; background: #fafbfd; border: 1px solid var(--line); border-radius: var(--radius); display: grid; gap: 8px; }
.ma-rules-l { display: grid; gap: 6px; margin: 4px 0 0; font-weight: 700; color: #222; }
.ma-rules-l small { font-weight: 400; color: var(--text-3); }
.ma-grades { display: flex; flex-wrap: wrap; gap: 6px 14px; }
.ma-grades label { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.ma-rules-note { margin: 4px 0 0; color: var(--text-3); }
/* 회원 관리: 등급 */
.badge.grade { background: var(--navy); color: #fff; }
.grade-tabs { display: flex; flex-wrap: wrap; gap: 6px; margin: 14px 0 6px; }
.grade-tabs a { display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 12px; border: 1px solid var(--line); border-radius: 999px; font-size: 13.5px; color: #444; }
.grade-tabs a span { font-size: 12px; color: var(--text-3); }
.grade-tabs a[aria-current="page"] { border-color: var(--navy); background: var(--navy); color: #fff; }
.grade-tabs a[aria-current="page"] span { color: rgba(255,255,255,.75); }
.name-form { display: flex; gap: 6px; align-items: center; margin-top: 6px; }
.name-form input { width: 180px; max-width: 100%; height: 32px; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 13.5px; }
.name-form input:focus { outline: none; border-color: var(--navy); }
.grade-form select { height: 32px; padding: 0 8px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 13.5px; background: #fff; }
.grade-box { margin: 22px 0; padding: 16px 18px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.grade-box summary { cursor: pointer; font-weight: 700; color: var(--navy); }
.grade-box form { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; margin-top: 12px; }
.grade-box label { flex: 1 1 280px; display: grid; gap: 6px; font-size: 13.5px; color: var(--text-2); }
.grade-box input { height: 38px; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; }
.grade-box p { margin: 10px 0 0; font-size: 13px; color: var(--text-3); }
/* 캘린더 구독 */
.calsub-link { display: inline-flex; align-items: center; gap: 6px; margin: 0 0 14px; height: 36px; padding: 0 14px; border: 1px solid var(--navy); border-radius: 999px; color: var(--navy); font-size: 14px; font-weight: 500; }
.calsub-link svg { width: 18px; height: 18px; }
.calsub-link:hover { background: var(--navy); color: #fff; }
.duty + .calsub-link { margin-top: -6px; }
.calsub-lead { margin: 0 0 18px; font-size: 15.5px; line-height: 1.8; color: #333; }
.calsub-list { list-style: none; margin: 0; padding: 0; border-top: 2px solid var(--navy); }
.calsub-item { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; padding: 18px 4px; border-bottom: 1px solid var(--line); }
.calsub-text { display: grid; gap: 3px; min-width: 0; }
.calsub-text b { font-size: 16.5px; color: #111; }
.calsub-text span { font-size: 13.5px; color: var(--text-2); }
.calsub-acts { display: flex; flex-wrap: wrap; gap: 6px; }
.calsub-help { margin: 20px 0 0; font-size: 14px; color: #444; }
.calsub-help summary { cursor: pointer; color: var(--navy); font-weight: 500; }
.calsub-help p { margin: 8px 0 0; line-height: 1.8; }
.calsub-reset { margin-top: 28px; padding: 16px 18px; border-radius: var(--radius); background: #f6f7f9; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; }
.calsub-reset p { margin: 0; flex: 1 1 300px; font-size: 13.5px; color: var(--text-2); line-height: 1.7; }
@media (max-width: 560px) { .calsub-acts { width: 100%; } .calsub-acts .btn-line { flex: 1 1 auto; justify-content: center; } }
/* 회원 관리: 등급 일괄 지정 */
.bulk-bar { position: sticky; top: 0; z-index: 5; display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 10px 0 12px; padding: 10px 14px; background: #f6f8fc; border: 1px solid var(--line); border-radius: var(--radius); }
.bulk-all { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; cursor: pointer; }
.bulk-n { font-size: 13.5px; color: var(--navy); font-weight: 700; }
.bulk-gap { flex: 1; }
.bulk-bar select { height: 34px; padding: 0 8px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 14px; background: #fff; }
.bulk-bar .btn:disabled { opacity: .45; cursor: default; }
.bulk-all input, .bulk-pick { width: 18px; height: 18px; flex: none; accent-color: var(--navy); }
@media (max-width: 560px) { .bulk-gap { display: none; } .bulk-bar select, .bulk-bar .btn { flex: 1 1 auto; } }
.mem-years { display: flex; gap: 8px; margin: 6px 0 2px; }
.mem-years div { display: inline-flex; align-items: baseline; gap: 6px; padding: 3px 10px; border: 1px solid var(--line-2); border-radius: var(--radius); background: #fafbfc; font-size: 13px; }
.mem-years dt { color: var(--text-3); }
.mem-years dd { margin: 0; font-weight: 700; color: #222; font-variant-numeric: tabular-nums; }
/* 회원 관리 표 */
.btn-xs { min-height: 26px; padding: 0 8px; font-size: 12.5px; white-space: nowrap; }
.mem-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; margin-top: 10px; }
.mem-table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.mem-table th { position: sticky; top: 0; background: #f5f7fa; color: var(--text-3); font-weight: 600; font-size: 12.5px; text-align: center; padding: 8px 8px; border-bottom: 1px solid var(--line); white-space: nowrap; }
.mem-table td { padding: 4px 8px; border-bottom: 1px solid var(--line-2); vertical-align: middle; white-space: nowrap; }
.mem-table tbody tr:last-child td { border-bottom: 0; }
.mem-table tbody tr:hover { background: #fafbfd; }
.mem-table tr:target { background: #eef4ff; }
.mem-table tr.is-dirty { background: #fffbea; }
.mem-table .c-pick { width: 28px; padding-right: 0; }
.mem-table .c-y { text-align: center; }
.mem-table .c-num, .mem-table .c-date { font-variant-numeric: tabular-nums; }
.mem-table .c-date { font-size: 12.5px; line-height: 1.35; }
.mem-table .c-kid { text-align: center; font-size: 12.5px; color: var(--text-2, #555); user-select: all; }
.mem-table .c-name strong { font-weight: 700; color: #111; margin-right: 4px; }
.mem-table .badge { margin-right: 0; font-size: 11.5px; padding: 0 6px; }
.mem-table .row-form { display: none; }
.mt-dim { color: var(--text-3); }
.mt-in { height: 28px; padding: 0 6px; border: 1px solid transparent; border-radius: var(--radius); font: inherit; font-size: 13.5px; color: #222; background: transparent; font-variant-numeric: tabular-nums; }
.mt-in:hover { border-color: var(--line); background: #fff; }
.mt-in:focus { outline: none; border-color: var(--navy); background: #fff; }
.mt-in:invalid { border-color: var(--red); }
.mt-year { width: 54px; text-align: center; }
.mt-email { width: 200px; }
.mt-name { width: 110px; font-weight: 700; border-color: var(--line); background: #fff; }
.mem-table .grade-form select { height: 28px; padding: 0 4px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 13px; background: #fff; }
.wrap.admin:has(.mem-table) { max-width: 1440px; }
.mem-table td.c-act { white-space: nowrap; }
.mt-lic { width: 84px; }
.mt-lic:placeholder-shown { border: 1px dashed var(--line); }
.row-more { width: 30px; height: 28px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; color: var(--text-2); font-size: 16px; line-height: 1; cursor: pointer; }
.row-more:hover, .row-more:focus-visible { border-color: var(--navy); color: var(--navy); }
.act-pop { position: fixed; inset: auto; margin: 0; padding: 6px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; box-shadow: 0 8px 24px rgba(0, 0, 0, .14); }
.act-pop:popover-open { display: flex; flex-direction: column; gap: 4px; min-width: 120px; }
.act-pop form { margin: 0; }
.act-pop .btn { width: 100%; justify-content: center; }
.mem-table .row-actions { flex-wrap: nowrap; justify-content: center; gap: 4px; padding: 0; width: auto; }
.mem-table .c-st { text-align: center; }
.mt-ok { display: inline-flex; color: var(--green); }
.mt-ok svg { width: 20px; height: 20px; }
.th-sort { display: inline-flex; align-items: center; gap: 3px; color: inherit; text-decoration: none; }
.th-sort:hover { color: var(--navy); }
.th-sort.is-on { color: var(--navy); }
.th-arrow { font-size: 9px; opacity: .45; }
.th-sort.is-on .th-arrow { opacity: 1; }
.mt-email:placeholder-shown { border: 1px dashed var(--line); }
.mt-email::placeholder { color: var(--text-3); }
.mem-table.is-auto [data-row-save] { display: none; } /* JS 가 있으면 자동 저장, 없으면 저장 버튼 */
.mem-table tr.is-saving { background: #f3f6fb; }
.mem-table tr.is-saved { background: #ecf8f0; transition: background .6s; }
.mem-table tr.is-error { background: #fdeeee; }
.mem-table tr.is-error .mt-in:focus, .mem-table tr.is-error .mt-in:invalid { border-color: var(--red); }
/* 짧은 주소 (관리자) */
.sl-new { margin: 18px 0 26px; padding: 18px; border: 1px solid var(--line); border-radius: var(--radius); background: #fafbfd; }
.sl-new h3, .sl-h { margin: 0 0 12px; font-size: 17px; color: #111; }
.sl-h { margin-top: 8px; }
.sl-new-row, .sl-form { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.sl-slug { display: flex; align-items: center; flex: 0 1 260px; min-width: 200px; height: 42px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; overflow: hidden; }
.sl-slug:focus-within, .sl-target input:focus, .sl-note:focus { border-color: var(--navy); box-shadow: 0 0 0 3px rgba(27,69,150,.12); outline: none; }
.sl-host { padding: 0 2px 0 12px; font-size: 13.5px; color: var(--text-3); white-space: nowrap; }
.sl-slug input { flex: 1; min-width: 0; height: 100%; border: 0; padding: 0 10px 0 0; font: inherit; font-size: 15px; font-weight: 700; color: var(--navy); outline: none; background: transparent; }
.sl-arrow { color: var(--text-3); font-size: 18px; }
.sl-target { flex: 1 1 280px; display: grid; gap: 4px; min-width: 0; }
.sl-target input, .sl-note { height: 42px; padding: 0 12px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 14.5px; background: #fff; min-width: 0; }
.sl-target small { font-size: 12px; color: var(--text-3); padding-left: 2px; }
.sl-note { flex: 0 1 180px; }
.sl-menu { display: inline-flex; align-items: center; gap: 6px; margin-top: 10px; font-size: 13.5px; color: var(--text-2); cursor: pointer; }
.sl-menu input { accent-color: var(--navy); }
.sl-list { list-style: none; margin: 0; padding: 0; border-top: 2px solid var(--line-dark); }
.sl-item { padding: 16px 4px; border-bottom: 1px solid var(--line-2); }
.sl-item:target { background: #f6f8fc; }
.sl-acts { display: flex; flex-wrap: wrap; gap: 4px; }
.sl-item .sl-menu { flex-basis: 100%; margin-top: 2px; }
@media (max-width: 640px) { .sl-slug, .sl-target, .sl-note { flex: 1 1 100%; } .sl-arrow { display: none; } .sl-acts { flex: 1 1 100%; } }

/* ── 분과 Conference (/conference): 연도 → 월 → 달력 ── */
.cf { max-width: 1100px; margin: 0 auto; }
.cf-msg { margin: 0 0 16px; padding: 12px 16px; border-radius: var(--radius); background: #edf7f0; color: #1e6b3a; font-size: 14.5px; }
.cf-pick { display: grid; gap: 12px; margin-bottom: 24px; padding: 18px 20px; border: 1px solid var(--line-2); border-radius: var(--radius); background: #fafbfd; }
.cf-step { display: grid; grid-template-columns: 44px minmax(0, 1fr); align-items: center; gap: 12px; }
.cf-step-l { font-size: 13px; font-weight: 700; color: var(--text-3); }
.cf-years, .cf-divs { display: flex; gap: 6px; overflow-x: auto; scrollbar-width: thin; padding: 2px 0 4px; }
.cf-years a, .cf-divs a { flex: none; display: inline-flex; align-items: center; gap: 6px; height: 34px; padding: 0 14px; border: 1px solid var(--line); border-radius: 999px; background: #fff; color: #444; font-size: 14px; font-variant-numeric: tabular-nums; transition: border-color .15s, color .15s, background .15s; }
.cf-years a:hover, .cf-divs a:hover { border-color: var(--navy); color: var(--navy); }
.cf-years a[aria-current], .cf-divs a[aria-current] { border-color: var(--navy); background: var(--navy); color: #fff; font-weight: 700; }
.cf-divs i { width: 8px; height: 8px; border-radius: 50%; background: var(--c); }
/* 분과 색 (conference.php 가 분과 이름으로 고른다) */
.cf-c0 { --c: #1b4596; } .cf-c1 { --c: #0f7b6c; } .cf-c2 { --c: #b4541a; } .cf-c3 { --c: #7b3fa0; } .cf-c4 { --c: #c0392b; }
.cf-c5 { --c: #2d7fc1; } .cf-c6 { --c: #8a6d1c; } .cf-c7 { --c: #2f6b3b; } .cf-c8 { --c: #a23a6b; } .cf-c9 { --c: #4a5568; } .cf-cx { --c: #6b7280; }
.cf-divs a[aria-current] i { box-shadow: 0 0 0 2px #fff; }
.cf-months { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 6px; }
.cf-months a { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 48px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; color: #222; font-size: 14px; font-weight: 500; line-height: 1.2; }
.cf-months a small { font-size: 11px; font-weight: 400; color: var(--navy); }
.cf-months a.is-empty { color: #aaa; background: #fcfcfd; }
.cf-months a:hover { border-color: var(--navy); }
.cf-months a[aria-current] { border-color: var(--navy); background: var(--navy); color: #fff; }
.cf-months a[aria-current] small { color: rgba(255,255,255,.8); }

.cf-cal { border: 1px solid var(--line-2); border-radius: var(--radius); overflow: hidden; background: #fff; }
.cf-cal-head { display: flex; align-items: center; gap: 8px; padding: 14px 16px; border-bottom: 1px solid var(--line-2); }
.cf-cal-head h2 { margin: 0 6px; font-size: 20px; color: #111; font-variant-numeric: tabular-nums; }
.cf-arrow { width: 34px; height: 34px; border: 1px solid var(--line); border-radius: 50%; display: grid; place-items: center; }
.cf-arrow::before { content: ""; width: 8px; height: 8px; border: solid #444; border-width: 0 0 2px 2px; transform: translateX(2px) rotate(45deg); }
.cf-arrow.next::before { transform: translateX(-2px) rotate(-135deg); }
.cf-arrow:hover { border-color: var(--navy); }
.cf-today { height: 30px; padding: 0 12px; display: inline-flex; align-items: center; border: 1px solid var(--line); border-radius: 999px; font-size: 13px; color: #444; }
.cf-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.cf-wk { display: contents; }
.cf-wk span { padding: 8px 0; text-align: center; font-size: 12.5px; font-weight: 700; color: #666; background: #f7f8fa; border-bottom: 1px solid var(--line-2); }
.cf-wk .sun, .cf-day.sun .cf-num { color: #d33; }
.cf-wk .sat, .cf-day.sat .cf-num { color: #2f6fd1; }
.cf-day { position: relative; min-height: 112px; padding: 6px 6px 8px; border-right: 1px solid var(--line-2); border-bottom: 1px solid var(--line-2); display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.cf-day:nth-child(7n + 7) { border-right: 0; }
.cf-day.is-out { background: #fafafa; }
.cf-num { font-size: 13px; font-weight: 700; color: #333; font-variant-numeric: tabular-nums; }
.cf-num a { color: inherit; }
.cf-day.is-today .cf-num { display: inline-grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: var(--navy); color: #fff; }
.cf-chip { display: block; padding: 2px 6px; border-radius: 0 var(--radius) var(--radius) 0; background: color-mix(in srgb, var(--c) 12%, #fff); border-left: 3px solid var(--c); color: #222; font-size: 12px; line-height: 1.5; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cf-chip:hover { background: color-mix(in srgb, var(--c) 22%, #fff); }
.cf-more { font-size: 11.5px; color: var(--text-2); padding-left: 4px; }
.cf-dots { display: none; }
.cf-plus { position: absolute; top: 4px; right: 4px; width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; font-size: 16px; line-height: 1; color: var(--navy); opacity: 0; transition: opacity .15s, background .15s; }
.cf-day:hover .cf-plus, .cf-plus:focus { opacity: 1; background: #eef3fb; }

.cf-form { margin: 22px 0 0; padding: 20px; border: 2px solid var(--navy); border-radius: var(--radius); background: #fff; scroll-margin-top: 90px; }
.cf-form h3 { margin: 0 0 14px; font-size: 18px; color: var(--navy); }
.cf-form-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.cf-f { display: grid; gap: 6px; min-width: 0; }
.cf-f.wide { grid-column: 1 / -1; }
.cf-f span { font-size: 13px; font-weight: 700; color: #333; }
.cf-f input { height: 44px; padding: 0 12px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 15px; background: #fff; min-width: 0; }
.cf-f input:focus { outline: none; border-color: var(--navy); box-shadow: 0 0 0 3px rgba(27,69,150,.12); }
.cf-form-acts { display: flex; justify-content: flex-end; gap: 8px; margin-top: 16px; }

.cf-list { margin-top: 30px; scroll-margin-top: 90px; }
.cf-list > h3 { margin: 0 0 12px; font-size: 18px; color: #111; }
.cf-list > h3 small { margin-left: 4px; font-size: 14px; font-weight: 500; color: var(--navy); }
.cf-days { list-style: none; margin: 0; padding: 0; border-top: 2px solid var(--line-dark); }
.cf-dg { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 14px; padding: 14px 4px; border-bottom: 1px solid var(--line-2); scroll-margin-top: 90px; }
.cf-dg:target { background: #f6f8fc; }
.cf-dg-date { display: flex; flex-direction: column; align-items: center; padding-top: 2px; }
.cf-dg-date b { font-size: 22px; line-height: 1.1; color: #111; font-variant-numeric: tabular-nums; }
.cf-dg-date span { font-size: 12px; color: var(--text-3); }
.cf-dg-date.sun b { color: #d33; }
.cf-dg-date.sat b { color: #2f6fd1; }
.cf-dg-date.is-today b { color: var(--navy); }
.cf-dg > ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.cf-ev { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 0 var(--radius) var(--radius) 0; border-left: 4px solid var(--c); background: color-mix(in srgb, var(--c) 6%, #fff); scroll-margin-top: 90px; }
.cf-ev:target, .cf-ev.is-editing { box-shadow: 0 0 0 2px var(--c); }
.cf-ev-main { flex: 1; min-width: 0; display: grid; gap: 2px; }
.cf-ev-div { font-size: 12px; font-weight: 700; color: var(--c); }
.cf-ev-t { font-size: 15.5px; color: #111; }
.cf-ev-sub { font-size: 13px; color: var(--text-2); }
.cf-ev-acts { display: flex; gap: 4px; flex: none; }
.cf-ev-acts .btn-line { height: 32px; padding: 0 12px; font-size: 13px; }
.cf-empty { margin: 0; padding: 36px 0; text-align: center; color: var(--text-2); border-top: 2px solid var(--line-dark); }
.cf-note { margin: 20px 0 0; font-size: 13px; color: var(--text-3); }

@media (max-width: 900px) {
  .cf-months { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .cf-form-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 640px) {
  .cf-pick { padding: 14px; border-radius: var(--radius); }
  .cf-step { grid-template-columns: 1fr; gap: 6px; }
  .cf-months a { height: 44px; }
  .cf-cal-head { flex-wrap: wrap; padding: 12px; }
  .cf-cal-head h2 { font-size: 18px; }
  .cf-day { min-height: 54px; padding: 4px 2px 6px; align-items: center; }
  .cf-chip, .cf-more, .cf-plus { display: none; }
  .cf-dots { display: flex; gap: 3px; flex-wrap: wrap; justify-content: center; }
  .cf-dots i { width: 6px; height: 6px; border-radius: 50%; background: var(--c); }
  .cf-num a { display: block; }
  .cf-form { padding: 16px; }
  .cf-form-grid { grid-template-columns: 1fr; }
  .cf-dg { grid-template-columns: 44px minmax(0, 1fr); gap: 10px; }
  .cf-ev { flex-wrap: wrap; }
  .cf-ev-acts { width: 100%; justify-content: flex-end; }
}
/* 분과 Conference: 연도 < 2026 > (숫자를 눌러 바로 입력) */
.cf-year { display: flex; align-items: center; justify-content: center; gap: 12px; margin: 0 0 18px; }
.cf-year .cf-arrow { flex: none; width: 40px; height: 40px; }
.cf-yform { display: flex; align-items: center; gap: 4px; margin: 0; }
.cf-yform label { display: block; line-height: 1; }
.cf-yform input { display: block; box-sizing: content-box; width: 4ch; height: 1.2em; padding: 0 0 2px; border: 0; border-bottom: 2px dashed #b9c6de; border-radius: 0; background: transparent; font: inherit; font-size: 34px; font-weight: 700; line-height: 1.2; color: var(--navy); text-align: center; font-variant-numeric: tabular-nums; cursor: text; -moz-appearance: textfield; appearance: textfield; }
.cf-yform input::-webkit-inner-spin-button, .cf-yform input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.cf-yform input:hover { border-bottom-color: var(--navy); }
.cf-yform input:focus { outline: none; border-bottom: 2px solid var(--navy); background: #eef3fb; border-radius: var(--radius) var(--radius) 0 0; }
.cf-ysuf { font-size: 22px; font-weight: 700; color: #333; line-height: 1; padding-bottom: 2px; }
.cf-year .cf-today { flex: none; height: 32px; }
@media (max-width: 640px) { .cf-yform input { font-size: 30px; } .cf-year { gap: 10px; } }
/* 일정 추가 버튼 */
.cf-add { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; height: 36px; padding: 0 16px 0 12px; border-radius: 999px; background: #eef3fb; color: var(--navy); font-size: 14px; font-weight: 700; white-space: nowrap; transition: background .15s, color .15s, box-shadow .15s; }
.cf-add svg { width: 16px; height: 16px; }
.cf-add:hover { background: var(--navy); color: #fff; box-shadow: 0 4px 12px rgba(27,69,150,.25); }
@media (max-width: 640px) { .cf-add { height: 34px; padding: 0 14px 0 10px; font-size: 13.5px; } }

/* 메뉴 관리: 주소 칸의 목록 화살표(브라우저 기본) 숨김 — 누르거나 치면 목록은 그대로 뜬다 */
.ma-in-url::-webkit-calendar-picker-indicator, .sl-target input::-webkit-calendar-picker-indicator { display: none !important; opacity: 0; }
/* 게시판 관리: 짧은 주소 칸 */
.ma-code { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 12.5px; color: var(--text-3); white-space: nowrap; }
.ma-slug { display: flex; align-items: center; min-width: 150px; height: 34px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; overflow: hidden; }
.ma-slug:focus-within { border-color: var(--navy); box-shadow: 0 0 0 3px rgba(27,69,150,.12); }
.ma-slug span { padding: 0 1px 0 9px; color: var(--text-3); font-size: 13.5px; }
.ma-slug input { flex: 1; min-width: 0; height: 100%; border: 0; padding: 0 8px 0 0; font: inherit; font-size: 13.5px; font-weight: 700; color: var(--navy); outline: none; background: transparent; }
.ma-slug input::placeholder { color: #9aa6bd; font-weight: 400; }
.ma-slug-go { display: inline-block; margin-top: 3px; font-size: 12px; color: var(--text-2); }
.ma-slug-go em { font-style: normal; color: var(--text-3); }
.ma-slug-go:hover { color: var(--navy); }
.ma-tbl th small { font-weight: 400; color: var(--text-3); }
.cf .calsub-link { margin: 22px 0 0; }
/* 강의 게시판: 자료가 아직 없는 글 (Schedule 에서 만든 글 등) */
.board-list tr.is-pending td { color: #aaa; }
.board-list tr.is-pending .subject .is-off { color: #aaa; cursor: default; }
.board-list tr.is-pending .subject a { color: #999; }
.up-chip { display: inline-flex; align-items: center; height: 20px; margin-left: 8px; padding: 0 8px; border: 1px dashed var(--navy); border-radius: 999px; color: var(--navy); font-size: 11.5px; font-weight: 700; vertical-align: 1px; }
.board-list tr.is-pending .subject a.up-chip:hover, .board-list tr.is-pending .subject a.up-chip:focus-visible { background: var(--navy); color: #fff; border-style: solid; }
.board-list tr.is-pending .subject a.up-chip { color: var(--navy); font-weight: 700; }
.sched-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 10px; }
.sched-tools .calsub-link { margin: 0; }
.sched-btns { display: inline-flex; gap: 6px; margin-left: auto; }
.sched-btns .cf-add, .sched-btns .cf-add + .cf-add { margin-left: 0; }
@media (max-width: 640px) { .sched-btns .cf-add { padding: 0 12px 0 9px; } }
/* Schedule 일정 넣기 */
.se { max-width: 1000px; margin: 0 auto; }
.se-help { margin: 0 0 14px; font-size: 14.5px; line-height: 1.75; color: #444; }
.se-paste { margin: 0 0 22px; padding: 16px 18px; border: 1px solid var(--line); border-radius: var(--radius); background: #fafbfd; }
.se-paste summary { cursor: pointer; font-weight: 700; color: var(--navy); }
.se-paste[open] summary { margin-bottom: 10px; }
.se-paste textarea { width: 100%; padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--radius); font: 14px/1.6 ui-monospace, Menlo, Consolas, monospace; background: #fff; resize: vertical; }
.se-year input { width: 76px; height: 30px; padding: 0 8px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; text-align: center; }
.se-form h3, .se-minebox h3 { margin: 0 0 10px; font-size: 17px; color: #111; }
.se-minebox h3 small { font-size: 13px; font-weight: 500; color: var(--navy); }
.se-head, .se-row { display: grid; grid-template-columns: 22px 150px 140px 120px minmax(0, 1fr) 150px 32px; gap: 6px; align-items: center; }
.se-head { padding: 8px 4px; border-top: 2px solid var(--line-dark); background: var(--bg-2); font-size: 13px; color: #555; font-weight: 500; }
.se-row { padding: 6px 4px; border-bottom: 1px solid var(--line-2); }
.se-row select, .se-row input { height: 38px; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 14px; background: #fff; min-width: 0; }
.se-row select:focus, .se-row input:focus { outline: none; border-color: var(--navy); box-shadow: 0 0 0 3px rgba(27,69,150,.12); }
.se-row.is-err { background: #fff5f5; }
.se-row.is-err input, .se-row.is-err select { border-color: #f0b4b4; }
.se-err { grid-column: 1 / -1; margin: 0; font-size: 12.5px; color: var(--red); }
.se-x { width: 30px; height: 30px; border: 0; border-radius: 50%; background: none; color: #999; font-size: 20px; cursor: pointer; }
.se-x:hover { background: #f2f2f2; color: var(--red); }
.se-acts { display: flex; align-items: center; gap: 8px; margin-top: 12px; }
.se-gap { flex: 1; }
.se-minebox { margin-top: 34px; }
.se-minelist { list-style: none; margin: 0; padding: 0; border-top: 2px solid var(--line-dark); }
.se-mine { display: grid; grid-template-columns: 96px 130px minmax(0, 1fr) 90px auto; gap: 10px; align-items: center; padding: 10px 4px; border-bottom: 1px solid var(--line-2); font-size: 14px; }
.se-mine .se-d { color: #555; font-variant-numeric: tabular-nums; }
.se-mine .se-k { font-size: 12.5px; font-weight: 700; color: var(--navy); }
.se-mine .se-t small { color: var(--text-2); }
.se-mine .se-s a { font-size: 13px; }
.se-mine.is-pending .se-t { color: #999; }
.se-mine .btn-line { height: 30px; padding: 0 10px; font-size: 12.5px; }
@media (max-width: 760px) {
  .se-head { display: none; }
  .se-row { grid-template-columns: 1fr 1fr; position: relative; padding-right: 38px; }
  .se-row input[name$="[title]"] { grid-column: 1 / -1; }
  .se-x { position: absolute; top: 10px; right: 4px; }
  .se-mine { grid-template-columns: 80px minmax(0, 1fr) auto; }
  .se-mine .se-k { grid-column: 2; grid-row: 1; }
  .se-mine .se-t { grid-column: 1 / -1; }
}

/* 바닥글 로고: 머리글과 같은 로고를 흑백으로 */
.footer-logo img { display: block; width: 236px; max-width: 100%; height: auto; filter: grayscale(1) contrast(.9); opacity: .6; }
@media (max-width: 640px) { .footer-logo img { width: 200px; } }

/* ⓘ 사용 방법 도움말 */
.info-tip { position: relative; display: inline-block; margin: 4px 0 10px; }
.info-btn { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px 4px 8px; border: 1px solid var(--line); border-radius: 999px; background: var(--bg); color: var(--text-2); font: inherit; font-size: 13px; cursor: pointer; }
.info-btn:hover, .info-tip.is-open .info-btn, .info-btn:focus-visible { color: var(--navy); border-color: var(--navy); }
.info-pop { display: none; position: absolute; z-index: 30; left: 0; top: calc(100% + 6px); width: min(440px, calc(100vw - 32px)); margin: 0; padding: 12px 16px 12px 30px; background: var(--bg); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 6px 20px rgba(0,0,0,.12); font-size: 14px; line-height: 1.6; color: var(--text); font-weight: 400; }
.info-pop li { list-style: disc; }
.info-pop li + li { margin-top: 4px; }
.info-pop li::marker { color: var(--navy); }
.info-tip:hover .info-pop, .info-tip.is-open .info-pop { display: block; }

/* 우수전공의 (builder/awards.py) */
.aw-nav { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 28px; }
.aw-nav a { padding: 4px 12px; border: 1px solid var(--line); border-radius: 999px; font-size: 13.5px; color: var(--text-2); text-decoration: none; font-variant-numeric: tabular-nums; }
.aw-nav a:hover { color: var(--navy); border-color: var(--navy); }
.aw-year { display: grid; grid-template-columns: 110px 1fr; gap: 20px; padding: 26px 0; border-top: 1px solid var(--line); scroll-margin-top: 90px; }
.aw-year:first-of-type { border-top: 2px solid var(--line-dark, #333); }
.prose .aw-year h2 { margin: 0; padding: 0; border: 0; font-size: 28px; font-weight: 700; line-height: 1.1; color: var(--navy); font-variant-numeric: tabular-nums; }
.prose .aw-year h2::before, .prose .aw-year h2::after { display: none; }
.aw-groups { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 12px; }
.aw-g { padding: 16px 18px; border-radius: var(--radius); background: var(--bg-2); }
.aw-g.is-top { background: #fdf8ec; box-shadow: inset 3px 0 0 #c9a227; border-radius: 0 var(--radius) var(--radius) 0; }
.prose .aw-g h3 { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin: 0 0 10px; padding: 0; font-size: 15px; font-weight: 700; color: #111; }
.prose .aw-g h3::before { display: none; }
.aw-g h3 small { padding: 1px 8px; border-radius: 999px; background: var(--bg); border: 1px solid var(--line); font-size: 12px; font-weight: 500; color: var(--text-2); }
.aw-g.is-top h3 { color: #8a6d12; }
.aw-note { margin: -4px 0 8px; font-size: 13px; color: var(--text-2); }
.prose .aw-g ul { display: flex; flex-direction: column; gap: 6px; margin: 0; padding: 0; list-style: none; }
.prose .aw-g li { display: flex; align-items: center; gap: 10px; margin: 0; padding: 0; }
.prose .aw-g li::before { display: none; }
.aw-r { flex: none; min-width: 44px; padding: 1px 0; border-radius: 999px; background: var(--bg); text-align: center; font-size: 12px; color: var(--text-2); font-variant-numeric: tabular-nums; }
.aw-g li b { font-weight: 500; color: #222; }
@media (max-width: 640px) {
  .aw-year { grid-template-columns: 1fr; gap: 12px; padding: 22px 0; }
  .prose .aw-year h2 { font-size: 22px; }
  .aw-nav { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin: 0 -16px 20px; padding: 0 16px; }
  .aw-nav::-webkit-scrollbar { display: none; }
  .aw-nav a { flex: none; }
}
/* 메뉴 관리: 하위 메뉴가 있는 메뉴는 주소 대신 '첫 하위 메뉴로' 표시, 대메뉴 주소 칸 */
.ma-auto { display: flex; align-items: center; min-height: 38px; border: 1px dashed var(--line); border-radius: var(--radius); background: var(--bg-2); color: var(--text-3, #999); font-size: 13px; padding: 0 10px; }
.ma-auto::before { content: "↳ 첫 하위 메뉴로 이동"; }
.ma-sec-head .ma-in-sec { flex: 1 1 200px; }

/* 문서형 글 (게시글 본문 .doc — 전공의 신교육과정 등) */
.prose .doc { max-width: 900px; margin: 0 auto; }
.doc-hero { margin: 0 0 28px; padding: 28px 30px; border-radius: var(--radius); background: linear-gradient(135deg, var(--navy), #2c63c4); color: #fff; }
.doc-hero .doc-kicker { margin: 0 0 4px; font-size: 14px; opacity: .85; }
.prose .doc .doc-hero h2 { margin: 0; padding: 0; border: 0; font-size: 28px; color: #fff; }
.prose .doc .doc-hero h2::before { display: none; }
.doc-hero .doc-meta { margin: 8px 0 0; font-size: 14px; opacity: .85; }
.doc-toc { margin: 0 0 36px; padding: 18px 22px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--bg-2); }
.doc-toc p { margin: 0 0 8px; }
.prose .doc-toc ol { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 4px 20px; margin: 0; }
.doc-toc a { color: #333; text-decoration: none; }
.doc-toc a:hover { color: var(--navy); text-decoration: underline; }
.prose .doc h2 { margin: 52px 0 18px; padding: 0 0 12px; border-bottom: 2px solid var(--navy); font-size: 22px; color: var(--navy); scroll-margin-top: 90px; }
.prose .doc h3 { margin: 30px 0 12px; font-size: 17px; color: #111; }
.prose .doc blockquote { margin: 0; padding: 16px 20px; border-left: 4px solid var(--navy); border-radius: 0 var(--radius) var(--radius) 0; background: #f3f6fc; font-size: 16px; color: #222; }
.doc-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; margin: 14px 0; }
.doc-cards-2 { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
.doc-card { display: flex; flex-direction: column; gap: 6px; padding: 16px 18px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--bg); font-size: 14.5px; line-height: 1.6; }
.prose .doc-card p, .prose .doc-card ul, .prose .doc-card ol { margin: 0; }
.doc-card .doc-sub { font-size: 13px; color: var(--text-2); }
.doc-no { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 50%; background: var(--navy); color: #fff; font-size: 12.5px; font-weight: 700; }
.doc-tag { display: inline-block; align-self: flex-start; margin: 0 0 4px; padding: 2px 10px; border-radius: 999px; background: #e8eefa; color: var(--navy); font-size: 12.5px; font-weight: 700; }
.doc-label { margin: 22px 0 8px; font-weight: 700; color: #222; }
.doc-note { display: block; margin-top: 6px; font-size: 13px; color: var(--text-2); line-height: 1.6; }
.prose p.doc-note { margin: 8px 0 0; }
.prose .doc table { margin: 10px 0; }
.prose .doc th { white-space: normal; }
.prose .doc tbody th { width: 8.5em; color: var(--navy); font-weight: 700; background: #f7f9fd; }
.prose .doc td:last-child:not(:first-child) { white-space: normal; }
.doc-total th, .doc-total td { background: var(--bg-2) !important; font-weight: 700; }
.doc-dl { display: grid; grid-template-columns: 8em 1fr; margin: 12px 0; border-top: 2px solid var(--line-dark, #333); }
.doc-dl dt, .doc-dl dd { margin: 0; padding: 14px 12px; border-bottom: 1px solid var(--line); }
.doc-dl dt { font-weight: 700; color: var(--navy); background: #f7f9fd; }
.prose .doc-dl ul, .prose .doc-dl ol { margin: 6px 0 0; }
.prose .doc-dl p { margin: 0 0 8px; }
.prose .doc figure { margin: 16px 0; padding: 12px; border: 1px solid var(--line); border-radius: var(--radius); overflow-x: auto; }
.prose .doc figure img { margin: 0 auto; max-width: 100%; height: auto; }
/* 연차별 수련일정 (12개월 막대) */
.doc-plan { margin: 8px 0 12px; padding: 14px; border: 1px solid var(--line); border-radius: var(--radius); overflow-x: auto; }
.doc-plan-row { display: grid; grid-template-columns: 64px repeat(12, minmax(46px, 1fr)); gap: 4px; min-width: 680px; align-items: center; margin-bottom: 6px; }
.doc-plan-row:last-child { margin-bottom: 0; }
.doc-plan-head span { font-size: 12px; color: var(--text-2); text-align: center; }
.doc-y { font-size: 13px; font-weight: 700; color: #333; }
.doc-bar { padding: 7px 8px; border-radius: var(--radius); font-size: 12.5px; line-height: 1.3; color: #fff; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.doc-w1 { grid-column: span 1; } .doc-w2 { grid-column: span 2; } .doc-w3 { grid-column: span 3; } .doc-w4 { grid-column: span 4; }
.doc-w5 { grid-column: span 5; } .doc-w6 { grid-column: span 6; } .doc-w9 { grid-column: span 9; } .doc-w12 { grid-column: span 12; }
.doc-c1 { background: #1b4596; } .doc-c2 { background: #c0392b; } .doc-c3 { background: #2c7a7b; } .doc-c4 { background: #6b8e23; }
.doc-c5 { background: #d9822b; } .doc-c6 { background: #7b3fa0; } .doc-c7 { background: #e8eefa; color: var(--navy); border: 1px dashed var(--navy); } .doc-c8 { background: #5b6b80; }
@media (max-width: 640px) {
  .doc-hero { padding: 22px 20px; }
  .prose .doc .doc-hero h2 { font-size: 23px; }
  .doc-dl { grid-template-columns: 1fr; }
  .doc-dl dt { border-bottom: 0; padding-bottom: 4px; }
  .prose .doc tbody th { width: auto; }
}
.prose .doc-conf th:last-child, .prose .doc-conf td:last-child { width: 15em; min-width: 13em; }
/* 비전 (/intro/vision) */
.prose .doc .doc-lead { text-align: center; font-size: 19px; font-weight: 700; line-height: 1.7; padding: 22px 20px; border-left: 0; border-radius: var(--radius); }
.doc-temple { max-width: 640px; margin: 28px auto 8px; display: flex; flex-direction: column; gap: 8px; text-align: center; color: #fff; font-weight: 700; }
.doc-roof { position: relative; padding: 18px 16px; border-radius: var(--radius); background: var(--navy); font-size: 20px; clip-path: polygon(4% 0, 96% 0, 100% 100%, 0 100%); }
.doc-pillars { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0 14%; padding: 0 9%; }
.doc-pillars div { display: flex; align-items: center; justify-content: center; min-height: 120px; border-radius: var(--radius); background: #2c63c4; font-size: 19px; letter-spacing: .1em; }
.doc-base { padding: 16px; border-radius: var(--radius); background: #13336f; font-size: 17px; }
.doc-goal { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 32px 20px; border-radius: var(--radius); background: linear-gradient(135deg, #f3f6fc, #e8eefa); text-align: center; }
.doc-goal-k { font-size: 17px; color: #333; }
.doc-goal b { font-size: 34px; color: var(--navy); letter-spacing: .02em; }
.doc-values { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 12px; }
.doc-value { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 22px 14px; border: 1px solid var(--line); border-top: 3px solid var(--navy); border-radius: var(--radius); text-align: center; }
.doc-hanja { font-size: 22px; font-weight: 700; color: var(--navy); letter-spacing: .05em; }
.doc-value b { font-size: 16px; color: #222; }
.doc-value .doc-sub { font-size: 13px; color: var(--text-2); }
@media (max-width: 640px) {
  .doc-pillars { gap: 0 8%; padding: 0 5%; }
  .doc-pillars div { min-height: 90px; font-size: 16px; }
  .doc-goal b { font-size: 26px; }
}
.ma-open { flex: none; padding: 0 10px; font-size: 13px; white-space: nowrap; color: var(--navy); }
.doc-overview { max-width: 680px; margin: 8px auto 0; display: flex; flex-direction: column; align-items: stretch; }
.doc-ov-k { display: block; margin-bottom: 8px; font-size: 12px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: #6b7fa8; text-align: center; }
.doc-ov-vision { padding: 22px 20px 24px; border-radius: var(--radius); background: linear-gradient(135deg, var(--navy), #2c63c4); color: #fff; text-align: center; box-shadow: 0 8px 22px rgba(27, 69, 150, .18); }
.doc-ov-vision .doc-ov-k { color: rgba(255, 255, 255, .75); }
.doc-ov-vision b { font-size: 21px; line-height: 1.45; }
.doc-up { position: relative; height: 40px; margin: 4px 0; }
.doc-up::before { content: ""; position: absolute; left: 50%; top: 8px; bottom: 2px; width: 2px; margin-left: -1px; background: #b9c6e0; }
.doc-up::after { content: ""; position: absolute; left: 50%; top: 4px; width: 10px; height: 10px; margin-left: -6px; border: solid #b9c6e0; border-width: 2px 0 0 2px; transform: rotate(45deg); }
.doc-ov-values { padding: 16px; border: 1px solid #dfe6f3; border-radius: var(--radius); background: #f7f9fd; }
.doc-chips { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.doc-chips span { padding: 10px 6px; border-radius: var(--radius); background: #fff; border: 1px solid #d5ddef; text-align: center; font-size: 15px; font-weight: 700; color: var(--navy); }
.doc-overview .doc-temple { margin: 0; padding: 16px; border: 1px solid #dfe6f3; border-radius: var(--radius); background: #fff; max-width: none; }
.doc-overview .doc-roof { background: #e8eefa; color: var(--navy); clip-path: none; border-radius: var(--radius); font-size: 18px; padding: 14px; }
.doc-overview .doc-pillars div { min-height: 96px; background: #fff; border: 2px solid #c9d5ee; color: var(--navy); font-size: 17px; }
.doc-overview .doc-base { background: var(--navy); font-size: 16px; padding: 14px; }
@media (max-width: 640px) {
  .doc-chips { grid-template-columns: repeat(2, 1fr); }
  .doc-ov-vision b { font-size: 17px; }
  .doc-overview .doc-pillars div { min-height: 72px; font-size: 15px; }
}
.prose .doc-ov-vision b { color: #fff; }
/* 버튼 모양 링크(취소 등)는 밑줄 없이 — 본문(.prose) 안 편집 화면 포함 */
a.btn, a.btn-line, .prose a.btn, .prose a.btn-line { text-decoration: none; }
/* 직접 넣은 일정: 제목·연자 바로 고치기 */
.se-edit { display: flex; gap: 6px; align-items: center; min-width: 0; margin: 0; }
.se-edit input { height: 32px; padding: 0 8px; border: 1px solid transparent; border-radius: var(--radius); background: transparent; font: inherit; font-size: 14px; color: #222; min-width: 0; }
.se-edit input[name=title] { flex: 1 1 auto; }
.se-edit input[name=presenter] { flex: 0 0 150px; color: var(--text-2); }
.se-edit input:hover, .se-edit input:focus { border-color: var(--line); background: #fff; outline: none; }
.se-edit input:focus { border-color: var(--navy); }
.se-mine.is-pending .se-edit input { color: #999; }
.se-edit .btn-line { flex: none; }
@media (max-width: 640px) { .se-edit input[name=presenter] { flex-basis: 96px; } }
/* 비전 한 장 그림: 굵은 꺾쇠 화살표, 핵심가치 영문, 미션 문구 */
.doc-overview .doc-up { height: 46px; margin: 2px 0; }
.doc-overview .doc-up::before { display: none; }
.doc-overview .doc-up::after { top: 50%; width: 20px; height: 20px; margin: -4px 0 0 -12px; border: solid var(--navy); border-width: 5px 0 0 5px; border-radius: var(--radius) 0 0 0; transform: rotate(45deg); opacity: .85; }
.doc-chips span { display: flex; flex-direction: column; gap: 3px; padding: 12px 6px; }
.doc-chips span b { font-size: 15px; color: var(--navy); }
.doc-chips span small { font-size: 11.5px; font-weight: 500; color: var(--text-2); line-height: 1.35; }
.prose .doc-mission { margin: 0 0 14px; text-align: center; font-size: 16.5px; font-weight: 700; line-height: 1.7; color: #222; }
@media (max-width: 640px) { .prose .doc-mission { font-size: 15px; } }
/* 비전 다듬기: 단계 라벨 배지, 카드 그림자·그라데이션, 기둥 입체감 */
.doc-vision .doc-overview { max-width: 720px; margin-top: 4px; }
.doc-vision .doc-ov-k { display: table; margin: 0 auto 12px; padding: 3px 12px; border-radius: 999px; background: #eef2fa; color: var(--navy); font-size: 11.5px; letter-spacing: .16em; }
.doc-vision .doc-ov-vision { position: relative; overflow: hidden; padding: 28px 24px 30px; border-radius: var(--radius); background: radial-gradient(120% 140% at 85% 0%, #3a74d4 0%, #1f4fa8 45%, #163c84 100%); box-shadow: 0 14px 30px -12px rgba(22, 60, 132, .55); }
.doc-vision .doc-ov-vision::after { content: ""; position: absolute; right: -40px; top: -40px; width: 160px; height: 160px; border-radius: 50%; background: rgba(255, 255, 255, .07); }
.doc-vision .doc-ov-vision .doc-ov-k { background: rgba(255, 255, 255, .16); color: #fff; }
.prose .doc-vision .doc-ov-vision b { position: relative; z-index: 1; font-size: 23px; letter-spacing: -.01em; }
.doc-vision .doc-overview .doc-up::after { border-color: #9fb3dc; }
.doc-vision .doc-ov-values, .doc-vision .doc-overview .doc-temple { padding: 22px 20px; border: 1px solid #e3e9f5; border-radius: var(--radius); background: #fff; box-shadow: 0 6px 20px -10px rgba(27, 69, 150, .18); }
.doc-vision .doc-chips { gap: 10px; }
.doc-vision .doc-chips span { padding: 16px 8px 14px; border: 0; border-radius: var(--radius); background: linear-gradient(180deg, #f5f8fe, #edf2fb); box-shadow: inset 0 0 0 1px #dfe7f6; transition: transform .15s, box-shadow .15s; }
.doc-vision .doc-chips span:hover { transform: translateY(-2px); box-shadow: inset 0 0 0 1px #c4d2ee, 0 6px 14px -8px rgba(27, 69, 150, .35); }
.doc-vision .doc-chips span b { font-size: 16px; }
.prose .doc-vision .doc-mission { margin: 2px 0 18px; font-size: 17px; color: #1d2b4a; }
.doc-vision .doc-overview .doc-roof { padding: 15px; border-radius: var(--radius); background: linear-gradient(180deg, #e9effb, #dfe8f8); font-size: 18px; letter-spacing: .04em; }
.doc-vision .doc-overview .doc-pillars { gap: 0 12%; padding: 0 8%; margin: 10px 0; }
.doc-vision .doc-overview .doc-pillars div { min-height: 104px; border: 0; border-radius: var(--radius); background: linear-gradient(90deg, #f3f6fc 0%, #fff 45%, #eef2fa 100%); box-shadow: inset 0 0 0 1.5px #cfdaf0; font-size: 18px; letter-spacing: .12em; }
.doc-vision .doc-overview .doc-base { padding: 15px; border-radius: var(--radius); background: linear-gradient(135deg, #1f4fa8, #163c84); font-size: 16px; letter-spacing: .02em; }
@media (max-width: 640px) {
  .prose .doc-vision .doc-ov-vision b { font-size: 18px; }
  .doc-vision .doc-ov-values, .doc-vision .doc-overview .doc-temple { padding: 18px 14px; }
  .doc-vision .doc-overview .doc-pillars div { min-height: 78px; font-size: 16px; }
  .prose .doc-vision .doc-mission { font-size: 15px; }
}
.doc-vision .doc-hero { margin: 0 0 22px; padding: 4px 0 0; background: none; color: inherit; text-align: center; }
.doc-vision .doc-hero .doc-kicker { color: var(--text-2); opacity: 1; font-size: 14px; }
.prose .doc.doc-vision .doc-hero h2 { color: #111; font-size: 24px; }
.doc-vision .doc-overview .doc-up::after { border-color: #7f97cc; }
/* 등록된 일정 고치기 (달마다) */
.se-minehead { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.se-month { display: flex; align-items: center; gap: 4px; }
.se-month a { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; padding: 0; border: 1px solid var(--line); border-radius: 50%; color: #444; text-decoration: none; line-height: 0; }
.se-month a svg { display: block; }
.se-month a:hover { border-color: var(--navy); color: var(--navy); }
.se-month b { min-width: 104px; text-align: center; font-size: 15px; }
.se-minelist .se-mine { grid-template-columns: minmax(0, 1fr) 76px auto; }
.se-minelist .se-mine .se-edit { grid-column: auto; grid-row: auto; }
.se-edit input[type=date] { flex: 0 0 140px; font-variant-numeric: tabular-nums; }
.se-edit select { flex: 0 0 150px; height: 32px; padding: 0 6px; border: 1px solid transparent; border-radius: var(--radius); background: transparent; font: inherit; font-size: 13px; font-weight: 700; color: var(--navy); }
.se-edit select:hover, .se-edit select:focus { border-color: var(--line); background: #fff; }
.se-edit .se-k { flex: 0 0 150px; padding: 0 8px; }
@media (max-width: 760px) {
  .se-minelist .se-mine { grid-template-columns: 1fr auto auto; }
  .se-minelist .se-mine .se-edit { grid-column: 1 / -1; flex-wrap: wrap; }
  .se-edit input[type=date], .se-edit select, .se-edit .se-k { flex: 1 1 130px; }
  .se-edit input[name=title] { flex: 1 1 100%; order: 3; }
  .se-edit input[name=presenter] { flex: 1 1 auto; order: 4; }
  .se-edit .btn-line { order: 5; }
}
.cf-add + .cf-add { margin-left: 6px; }
.cf-add-line { background: #fff; box-shadow: inset 0 0 0 1px #cdd8ee; }
/* 일정 넣기 ↔ 일정 수정 */
.se-tabs { display: flex; gap: 0; margin: 0 0 22px; border-bottom: 1px solid var(--line); }
.se-tabs a { padding: 10px 18px; margin-bottom: -1px; border-bottom: 2px solid transparent; color: #888; font-weight: 700; text-decoration: none; }
.se-tabs a:hover { color: var(--navy); }
.se-tabs a[aria-current="page"] { color: var(--navy); border-bottom-color: var(--navy); }
.se > .se-minebox:first-of-type, .se-tabs + .cf-msg + .se-minebox, .se-tabs + .se-minebox { margin-top: 0; }
.se-edit input[name=division] { flex: 0 0 110px; color: #444; }
@media (max-width: 760px) { .se-edit input[name=division] { flex: 1 1 110px; } }
/* 일정: 고른 줄 분과 한꺼번에 */
.se-chk { width: 16px; height: 16px; margin: 0; accent-color: var(--navy); }
.se-bulk { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; margin: 0 0 10px; font-size: 14px; color: #444; }
.se-bulk b { color: var(--navy); }
.se-bulk input { width: 170px; height: 34px; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 14px; }
.se-bulk .btn-line { height: 34px; }
.se-bulk .btn-line:disabled { opacity: .45; cursor: default; }
.se-all { display: inline-flex; align-items: center; gap: 6px; margin: 0 0 6px 6px; font-size: 13px; color: #555; cursor: pointer; }
.se-minelist .se-mine { grid-template-columns: 20px minmax(0, 1fr) auto; }
@media (max-width: 760px) {
  .se-minelist .se-mine { grid-template-columns: 20px 1fr auto; }
  .se-minelist .se-mine .se-edit { grid-column: 2 / -1; }
  .se-row .se-chk { position: absolute; left: 6px; top: 14px; }
  .se-row { padding-left: 30px; }
  .se-head span:first-child { display: none; }
}
.se-bulk-g { display: inline-flex; align-items: center; gap: 6px; padding-left: 10px; border-left: 1px solid var(--line); }
.se-bulk select { height: 34px; padding: 0 8px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 14px; background: #fff; }
.se-minelist .se-edit select { flex: 0 0 150px; }
/* 강의 게시판 자료 올리기 (관리자가 아닌 회원) */
.pf-up-info { display: grid; gap: 4px; padding: 14px 16px; border: 1px solid var(--line); border-radius: var(--radius); background: #fafbfd; }
.pf-up-info b { font-size: 16px; color: var(--navy); }
.pf-up-info span { font-size: 13.5px; color: #555; }
.pf-up-info + .pf-hint { margin: 0; }

/* 신체검진 사진·동영상 모달 */
.media-modal { border: 0; padding: 0; background: transparent; max-width: min(92vw, 1100px); max-height: 92vh; overflow: visible; }
.media-modal::backdrop { background: rgba(0, 0, 0, .78); }
.media-modal-box { display: flex; justify-content: center; }
.media-modal-box img, .media-modal-box video { display: block; max-width: min(92vw, 1100px); max-height: 82vh; width: auto; height: auto; background: #fff; border-radius: var(--radius); }
.media-modal-box video { background: #000; min-width: min(80vw, 480px); }
.media-modal-cap { margin: 10px 0 0; color: #fff; text-align: center; font-size: 15px; }
.media-modal-cap:empty { display: none; }
.media-modal-x { position: absolute; top: -44px; right: -4px; width: 40px; height: 40px; border: 0; background: transparent; color: #fff; font-size: 34px; line-height: 1; cursor: pointer; }
.media-modal-x:focus-visible { outline: 2px solid #fff; border-radius: var(--radius); }
@media (max-width: 600px) { .media-modal-x { top: -42px; right: 0; } }

/* Schedule: 아직 자료 없는 일정 — 회색이지만 눌러서 바로 자료 올리기 */
.cal-grid .cal-up { display: block; margin-top: 3px; padding: 1px 5px; background: #f4f4f4; border: 1px dashed #b9c3d6; color: #666; font-size: 12.5px; line-height: 1.45; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal-grid .cal-up:hover { border-color: var(--navy); color: var(--navy); background: #fff; }
@media (max-width: 640px) { .cal-grid .cal-up { font-size: 0; height: 6px; padding: 0; margin-top: 2px; border: 0; background: #c9d2e3; } }
.cal-list li.has-up { display: flex; align-items: center; gap: 10px; }
.cal-list li.has-up > .cal-nolink { flex: 1; min-width: 0; }
/* 이 달의 행사: 제목 칸 넓게·크게, 연자 칸 좁게·작게 */
.cal-list a:not(.cal-list-up), .cal-list .cal-nolink { grid-template-columns: 96px minmax(0, 1fr) minmax(0, 200px); align-items: baseline; }
.cal-list .what { font-size: 16px; }
.cal-list .where { font-size: 13.5px; }
/* 자료 올리기: 작은 버튼 (목록 줄 링크 모양이 걸리지 않게 a.cal-list-up 으로) */
.cal-list a.cal-list-up { display: inline-flex; align-items: center; gap: 5px; flex: none; height: 30px; margin: 0 4px 0 0; padding: 0 11px;
  border: 1px solid #c8d1e1; border-radius: var(--radius); background: #f5f7fb; color: var(--navy); font-size: 13px; font-weight: 600; white-space: nowrap; }
.cal-list a.cal-list-up svg { width: 15px; height: 15px; }
.cal-list a.cal-list-up:hover, .cal-list a.cal-list-up:focus-visible { background: var(--navy); border-color: var(--navy); color: #fff; }
@media (max-width: 640px) {
  .cal-list a:not(.cal-list-up), .cal-list .cal-nolink { grid-template-columns: 1fr; gap: 2px; }
  .cal-list a.cal-list-up { height: 30px; padding: 0 9px; font-size: 12.5px; }
}
/* 일정 수정 줄: 폭이 좁으면(태블릿·작은 창) 제목이 짓눌리지 않게 두 줄로 */
@media (max-width: 1000px) {
  .se-minelist .se-mine { grid-template-columns: 20px minmax(0, 1fr) auto; align-items: start; }
  .se-minelist .se-mine .se-edit { flex-wrap: wrap; }
  .se-minelist .se-edit input[type=date], .se-minelist .se-edit select, .se-minelist .se-edit input[name=division] { flex: 1 1 120px; }
  .se-minelist .se-edit input[name=title] { flex: 1 1 100%; order: 3; }
  .se-minelist .se-edit input[name=presenter] { flex: 1 1 auto; order: 4; }
  .se-minelist .se-edit .btn-line { order: 5; }
}
/* 일정 수정 줄 (좁은 화면): 입력 칸은 폭 가득, 저장·삭제는 마지막 줄 오른쪽에 나란히 */
@media (max-width: 1000px) {
  .se-minelist .se-mine { position: relative; grid-template-columns: 20px minmax(0, 1fr); padding-right: 4px; }
  .se-minelist .se-mine .se-edit { grid-column: 2; grid-row: 1; }
  .se-minelist .se-mine > form:last-child { position: absolute; right: 4px; bottom: 10px; margin: 0; }
  .se-minelist .se-edit input[name=presenter] { flex: 1 1 0; min-width: 0; }
  .se-minelist .se-edit .btn-line { margin-right: 52px; }
  .se-minelist .se-mine .btn-line { white-space: nowrap; width: auto; min-width: 46px; }
}
/* 이 달의 행사 (휴대폰): 자료 올리기는 카드 오른쪽 아래 — 연자와 같은 줄에 작게 */
@media (max-width: 640px) {
  .cal-list li.has-up { display: block; position: relative; }
  .cal-list li.has-up > .cal-nolink .where { padding-right: 96px; min-height: 24px; display: flex; align-items: center; }
  .cal-list li.has-up a.cal-list-up { position: absolute; right: 4px; bottom: 12px; margin: 0; height: 24px; padding: 0 8px; gap: 3px; border-radius: var(--radius); font-size: 11.5px; }
  .cal-list li.has-up a.cal-list-up svg { width: 13px; height: 13px; }
}

/* 비전: 핵심가치 한자 (한글 위) */
.doc-chips span .doc-hanja { font-style: normal; font-size: 13.5px; font-weight: 700; letter-spacing: .04em; color: #5d6f96; }
/* 비전 핵심가치 칩: 한자 · 한글 · 영문 세 줄 간격 정리 */
.doc-vision .doc-chips span { gap: 0; padding: 18px 10px 16px; align-items: center; }
.doc-vision .doc-chips span .doc-hanja { font-size: 13px; line-height: 1.2; letter-spacing: .12em; color: #8090b3; font-weight: 600; }
.doc-vision .doc-chips span b { margin-top: 5px; font-size: 17px; line-height: 1.25; letter-spacing: -.01em; }
.doc-vision .doc-chips span small { margin-top: 9px; padding-top: 9px; line-height: 1.3; position: relative; }
.doc-vision .doc-chips span small::before { content: ""; position: absolute; top: 0; left: 50%; width: 18px; height: 1px; margin-left: -9px; background: #c3cfe6; }

/* 휴대폰에서만 줄바꿈 */
.br-m { display: none; }
@media (max-width: 640px) { .br-m { display: inline; } }

/* 교육 게시판(Morning Conference 등) 표: 제목을 가장 넓게, 발표자 넉넉히, 나머지는 내용만큼 (PC) */
@media (min-width: 961px) {
  .board-list.is-edu { table-layout: fixed; }
  .board-list.is-edu .num { width: 58px; }
  .board-list.is-edu .kcat { width: 112px; font-size: 13px; }
  .board-list.is-edu .div { width: 124px; font-size: 13.5px; }
  .board-list.is-edu .writer, .board-list.is-edu .writer2 { width: 150px; }
  .board-list.is-edu .file { width: 44px; }
  .board-list.is-edu .hit { width: 58px; }
  .board-list.is-edu .date { width: 96px; }
  .board-list.is-edu th.subject { width: auto; }
}

/* 교육 게시판 표: 발표자는 한 줄 (넘치면 … · 마우스를 올리면 전체), 첨부·조회수·발표날짜는 더 좁게 */
@media (min-width: 961px) {
  .board-list.is-edu .writer, .board-list.is-edu .writer2 { width: 172px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 13.5px; }
  .board-list.is-edu .file { width: 36px; }
  .board-list.is-edu .hit { width: 46px; font-size: 13px; }
  .board-list.is-edu .date { width: 84px; font-size: 13px; letter-spacing: -.02em; }
  .board-list.is-edu th.file, .board-list.is-edu th.hit, .board-list.is-edu th.date { font-size: 13px; letter-spacing: -.03em; }
}
/* 표 머리줄: 칸마다 글자 크기가 달라 보이지 않게 모두 같게 (칸 내용 글씨 크기와는 따로) */
.board-list thead th[scope], .board-list.is-edu thead th[scope] { font-size: 14px; font-weight: 500; letter-spacing: -.01em; color: #555; }

/* 첨부 종류 아이콘 (사진·PDF·한글·워드·엑셀·파워포인트·동영상) */
.view-file svg.ficon { width: 20px; height: 24px; color: inherit; }
.view-file li { gap: 9px; padding: 4px 0; }
/* 글 아래 버튼(답변 · 상단 고정 · 수정 · 삭제 · 목록): 휴대폰에서 글자가 세로로 꺾이지 않게 */
.btn-area .btn-line, .btn-area .btn-list, .btn-area .btn { white-space: nowrap; flex: 0 0 auto; }
@media (max-width: 640px) {
  .btn-area { flex-wrap: wrap; gap: 6px; }
  .btn-area .btn-line, .btn-area .btn-list, .btn-area .btn { height: 40px; min-height: 40px; padding: 0 13px; font-size: 14px; }
}

/* 첨부 올리기 칸 (끌어다 놓기) */
.pf-files { display: grid; gap: 10px; min-width: 0; }
.pf-files-h { margin: 0; font-size: 12.5px; color: var(--text-3); }
.pf-att-item svg.ficon, .fdrop-item svg.ficon { flex: none; width: 20px; height: 24px; }
.pf-att-item { padding-left: 10px; }
.fdrop { display: grid; gap: 8px; }
.fdrop-zone { position: relative; display: flex; align-items: center; gap: 16px; padding: 22px; border: 1.5px dashed #c5cede; border-radius: var(--radius); background: #f8fafd; cursor: pointer; transition: border-color .15s, background .15s, box-shadow .15s; }
.fdrop-zone:hover { border-color: var(--navy); background: #f2f6fc; }
.fdrop.is-drag .fdrop-zone { border-color: var(--navy); border-style: solid; background: #eaf1fb; box-shadow: 0 0 0 4px rgba(27, 69, 150, .1); }
.fdrop-zone input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.fdrop-zone:focus-within { border-color: var(--navy); box-shadow: 0 0 0 3px rgba(27, 69, 150, .15); }
.fdrop-ico { flex: none; display: grid; place-items: center; width: 52px; height: 52px; border-radius: 50%; background: #fff; color: var(--navy); box-shadow: 0 2px 8px -3px rgba(27, 69, 150, .35); transition: transform .15s; }
.fdrop.is-drag .fdrop-ico { transform: translateY(-3px); }
.fdrop-txt { display: grid; gap: 4px; min-width: 0; }
.fdrop-txt strong { font-size: 15px; font-weight: 600; color: #222; }
.fdrop-txt strong em { font-style: normal; color: var(--navy); text-decoration: underline; text-underline-offset: 3px; }
.fdrop-txt small { font-size: 12.5px; color: var(--text-3); line-height: 1.5; }
.fdrop-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.fdrop-list:empty { display: none; }
.fdrop-item { display: flex; align-items: center; gap: 10px; padding: 8px 8px 8px 10px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; font-size: 14px; color: #333; animation: fdrop-in .18s ease-out; }
@keyframes fdrop-in { from { opacity: 0; transform: translateY(-3px); } }
.fdrop-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fdrop-size { flex: none; font-size: 12.5px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.fdrop-x { flex: none; display: grid; place-items: center; width: 30px; height: 30px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: #888; cursor: pointer; }
.fdrop-x:hover, .fdrop-x:focus-visible { background: #f1f3f6; color: #d1342f; }
.fdrop-item.is-bad { border-color: #f1c4c2; background: #fff6f5; color: #a33; }
.fdrop-why { flex: none; font-size: 12.5px; font-weight: 600; color: #d1342f; padding-right: 6px; }
@media (max-width: 640px) {
  .fdrop-zone { flex-direction: column; text-align: center; padding: 22px 16px; gap: 10px; }
}

/* 이 달의 행사: 버튼 있는 줄·없는 줄의 연자 칸 위치를 같게 (PC) */
@media (min-width: 641px) {
  .cal-list.has-ups li { display: flex; align-items: center; gap: 10px; }
  .cal-list.has-ups li > a:not(.cal-list-up), .cal-list.has-ups li > .cal-nolink { flex: 1; min-width: 0; }
  .cal-list.has-ups li:not(.has-up)::after { content: ""; flex: none; width: 104px; }
  .cal-list.has-ups a.cal-list-up { width: 100px; justify-content: center; }
}

/* 메뉴 관리 (좁은 화면): 이름 줄 · 주소 줄 · 버튼 줄로 — 버튼 하나만 따로 떨어지지 않게 */
@media (max-width: 760px) {
  .ma-row > .ma-in:not(.ma-in-url), .ma-kid > .ma-in:not(.ma-in-url) { flex: 1 1 0; min-width: 0; }
  .ma-row > .ma-in-url, .ma-kid > .ma-in-url { flex: 1 1 100%; min-width: 0; }
  .ma-row > .ma-mv { flex: 1 1 88px; min-width: 0; }
}
@media (max-width: 480px) {
  .ma-row > .ma-mv { order: 10; flex: 1 1 100%; }   /* 휴대폰: '옮기기…'는 맨 아래 한 줄로, 나머지 버튼은 함께 한 줄에 */
}

/* 댓글 */
.cmt { padding: 26px 24px 28px; border-bottom: 1px solid var(--line); }
.cmt-h { margin: 0 0 14px; font-size: 16px; font-weight: 700; color: #222; }
.cmt-h b { color: var(--navy); }
.cmt-login { margin: 0; padding: 18px; border-radius: var(--radius); background: var(--bg-2); color: var(--text-2); font-size: 14px; text-align: center; }
.cmt-login a { color: var(--navy); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
.cmt-list { list-style: none; margin: 0 0 16px; padding: 0; border-top: 1px solid var(--line-2); }
.cmt-item { padding: 14px 2px; border-bottom: 1px solid var(--line-2); }
.cmt-meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 13px; color: var(--text-3); }
.cmt-meta b { font-size: 14px; color: #222; }
.cmt-edited { font-size: 12px; color: var(--text-3); }
.cmt-acts { display: inline-flex; gap: 2px; margin-left: auto; }
.cmt-acts form { margin: 0; }
.cmt-act { padding: 2px 8px; border: 0; border-radius: var(--radius); background: none; color: var(--text-2); font: inherit; font-size: 12.5px; cursor: pointer; }
.cmt-act:hover, .cmt-act:focus-visible { background: var(--bg-2); color: var(--navy); }
.cmt-act.danger:hover, .cmt-act.danger:focus-visible { color: #d1342f; }
.cmt-body { margin-top: 6px; font-size: 15px; line-height: 1.65; color: #333; white-space: normal; overflow-wrap: anywhere; }
.cmt-form, .cmt-editform { display: grid; gap: 8px; }
.cmt-editform { margin-top: 8px; }
.cmt textarea { width: 100%; min-height: 76px; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 15px; line-height: 1.6; resize: vertical; background: #fff; box-sizing: border-box; }
.cmt textarea:focus { outline: none; border-color: var(--navy); box-shadow: 0 0 0 3px rgba(27, 69, 150, .12); }
.cmt-btns { display: flex; align-items: center; justify-content: flex-end; gap: 8px; }
.cmt-btns .btn, .cmt-btns .btn-line { min-height: 38px; height: 38px; padding: 0 16px; font-size: 14px; }
.cmt-who { margin-right: auto; font-size: 13px; color: var(--text-3); }
.cmt-item:target { background: #f5f8fd; border-radius: var(--radius); }
/* 목록 제목 옆 댓글 수 */
.cmt-n { display: inline-block; margin-left: 6px; padding: 0 6px; border-radius: 999px; background: #eef2f9; color: var(--navy); font-size: 11.5px; font-weight: 700; line-height: 18px; vertical-align: 1px; }
@media (max-width: 768px) { .cmt { padding: 22px 4px 24px; } }
.cmt [hidden] { display: none !important; }   /* 고치기 칸은 '수정'을 눌렀을 때만 */

/* 행사일정 ↔ 행사후기 */
.ev-rev { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; margin-top: 16px; padding: 14px 16px; border-radius: var(--radius); background: var(--bg-2); }
.ev-rev-h { margin: 0; font-size: 14.5px; font-weight: 700; color: #222; }
.ev-rev-none { margin: 0; font-size: 14px; color: var(--text-3); }
.ev-rev-links { display: flex; flex-wrap: wrap; gap: 8px; min-width: 0; }
.ev-rev-link { display: inline-flex; align-items: center; gap: 7px; max-width: 100%; min-height: 38px; padding: 0 15px; border: 1px solid var(--line); border-radius: 999px; background: #fff; color: var(--navy); font-size: 14px; font-weight: 600; text-decoration: none; }
.ev-rev-link span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ev-rev-link:hover, .ev-rev-link:focus-visible { border-color: var(--navy); }
.ev-rev svg { width: 18px; height: 18px; flex: none; }
.ev-rev-add { height: 38px; gap: 5px; margin-left: auto; padding: 0 15px; font-size: 14px; background: #fff; }
.al-event { display: inline-flex; align-items: center; gap: 6px; margin-top: 8px; color: var(--navy); font-size: 14px; font-weight: 600; text-decoration: none; }
.al-event:hover span { text-decoration: underline; text-underline-offset: 3px; }
.al-event svg { width: 17px; height: 17px; flex: none; }
.al-rename .al-lab { font-size: 13px; font-weight: 700; color: #333; }
.al-rename select, .post-form select[data-ev-pick] { width: 100%; height: 40px; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; font: inherit; font-size: 14.5px; }
.post-form select[data-ev-pick] { height: 46px; font-size: 15px; }
@media (max-width: 560px) { .ev-rev-add { margin-left: 0; } }

/* 인라인 style 대신 (CSP style-src 에 'unsafe-inline' 이 없다) */
.is-none { color: #aaa; }
.mb-head.is-gap { margin-top: 50px; }
.toast.is-gap { margin-top: 18px; }
.cell-title.is-sm { font-size: 15px; }
.u-center { text-align: center; }

/* 선택 상자: 브라우저 기본 화살표는 오른쪽 테두리에 붙어 보여서, 화살표를 직접 그리고 오른쪽 여백을 둔다 */
select:not([multiple]):not([size]) { -webkit-appearance: none; appearance: none; padding-right: 34px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23666' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 12px center; background-size: 12px 8px; }
select:not([multiple]):not([size])::-ms-expand { display: none; }

/* 동문 명단: 엑셀 붙여넣기 */
.rs-paste form { display: grid; gap: 8px; margin-top: 10px; }
.rs-paste textarea { width: 100%; min-height: 140px; padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--radius); font: 13px/1.5 ui-monospace, Consolas, monospace; tab-size: 12; white-space: pre; resize: vertical; }
.rs-paste textarea:focus { outline: none; border-color: var(--navy); }
.rs-paste form > .btn { justify-self: start; }
.rs-paste-help { margin: 0; color: var(--text-2); font-size: 13.5px; }
.rs-preview { margin-top: 14px; }
.rs-preview > p { margin: 0 0 8px; font-size: 14px; }
.rs-ptable-wrap { max-height: 360px; overflow: auto; border: 1px solid var(--line); border-radius: var(--radius); }
.rs-ptable { width: 100%; border-collapse: collapse; font-size: 13px; }
.rs-ptable th, .rs-ptable td { padding: 6px 10px; border-bottom: 1px solid var(--line); text-align: left; white-space: nowrap; }
.rs-ptable th { position: sticky; top: 0; background: var(--bg-2); font-weight: 700; }
.rs-ptable td small { display: block; color: var(--text-2); font-size: 12px; }
.rs-ptable tr.is-dup td { color: var(--text-2); }
.rs-ptable tr.is-err td { background: #fdf1f0; }
.rs-commit { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-top: 12px; }

/* ── 동문회 메일 (관리자: /admin/mail.php · mail_lists.php · mail_write.php) ── */
.wrap.admin.ml-page { max-width: 1320px; }
.ml-tabs { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.ml-tabs a:not(.btn) { padding: 7px 12px; border-radius: var(--radius); color: var(--text-2); text-decoration: none; font-size: 14px; }
.ml-tabs a[aria-current="page"] { background: var(--bg-2); color: var(--navy); font-weight: 700; }
.ml-tabs .btn { margin-left: 6px; }
.ml-gap { flex: 1 1 auto; }
.ml-wrap { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: 16px; align-items: start; margin-top: 12px; }
.ml-side { border: 1px solid var(--line); border-radius: var(--radius); background: #fff; overflow: hidden; position: sticky; top: 12px; }
.ml-lists { margin: 0; padding: 4px 8px 8px; list-style: none; max-height: 62vh; overflow-y: auto; }
.ml-lists a { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 6px 8px; border-radius: var(--radius); color: #222; text-decoration: none; font-size: 14px; }
.ml-lists a:hover { background: #f5f7fa; }
.ml-lists a[aria-current="page"] { background: #eaf1fb; color: var(--navy); font-weight: 700; }
.ml-lists b { flex: none; min-width: 26px; padding: 0 6px; border-radius: 999px; background: var(--bg-2); color: var(--text-3); font-size: 12px; font-weight: 600; text-align: center; }
.ml-lists a[aria-current="page"] b { background: var(--navy); color: #fff; }
.ml-empty { padding: 14px 10px; color: var(--text-3); font-size: 13.5px; }
.ml-new { display: flex; gap: 6px; padding: 10px; border-top: 1px solid var(--line-2); background: #fafbfc; }
.ml-new input { flex: 1 1 auto; min-width: 0; height: 32px; padding: 0 8px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 13.5px; }
.ml-main { min-width: 0; }
.ml-blank { padding: 60px 20px; border: 1px dashed var(--line); border-radius: var(--radius); text-align: center; color: var(--text-3); }
.ml-head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.ml-rename { display: flex; align-items: center; gap: 6px; }
.ml-rename input { height: 36px; width: 280px; max-width: 60vw; padding: 0 10px; border: 1px solid transparent; border-radius: var(--radius); font: inherit; font-size: 18px; font-weight: 700; color: #111; background: transparent; }
.ml-rename input:hover, .ml-rename input:focus { border-color: var(--line); background: #fff; outline: none; }
.ml-count { color: var(--text-3); font-size: 14px; }
.ml-del { margin-left: auto; }
.ml-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 10px 0 0; }
.ml-filter { height: 34px; width: 200px; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 13.5px; }
.ml-none { padding: 26px 10px !important; text-align: center; color: var(--text-3); white-space: normal !important; }
.ml-table td, .mm-rcpt td { padding-top: 7px; padding-bottom: 7px; }
.ml-dialog { width: min(860px, 96vw); max-height: 88vh; padding: 0; border: 0; border-radius: var(--radius); box-shadow: 0 20px 60px rgba(0,0,0,.25); }
.ml-dialog::backdrop { background: rgba(15, 23, 42, .45); }
.ml-dialog[open] { display: flex; flex-direction: column; }
.ml-dlg-head { display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; border-bottom: 1px solid var(--line-2); }
.ml-dlg-head h2 { margin: 0; font-size: 17px; }
.ml-x { border: 0; background: none; font-size: 18px; color: var(--text-3); cursor: pointer; padding: 4px 8px; }
.ml-dlg-tabs { display: flex; gap: 4px; padding: 10px 18px 0; }
.ml-dlg-tabs button { padding: 7px 12px; border: 0; border-bottom: 2px solid transparent; background: none; font: inherit; font-size: 14px; color: var(--text-2); cursor: pointer; }
.ml-dlg-tabs button[aria-selected="true"] { border-color: var(--navy); color: var(--navy); font-weight: 700; }
[data-ml-pane="pick"]:not([hidden]) { display: flex; flex-direction: column; min-height: 0; flex: 1 1 auto; }
.ml-search { display: flex; gap: 6px; padding: 12px 18px; }
.ml-search input { flex: 1 1 auto; height: 38px; padding: 0 12px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 14.5px; }
.ml-results { flex: 1 1 auto; min-height: 200px; max-height: 52vh; overflow: auto; margin: 0 18px; border: 1px solid var(--line); border-radius: var(--radius); }
.ml-results .mem-table th { position: sticky; top: 0; z-index: 1; }
.ml-results tbody tr { cursor: pointer; }
.ml-results tr.is-in { color: var(--text-3); cursor: default; }
.ml-dlg-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 18px; border-top: 1px solid var(--line-2); margin-top: 12px; font-size: 13.5px; color: var(--text-2); }
.ml-manual { padding: 14px 18px 0; display: grid; grid-template-columns: 1fr 1fr; gap: 10px 14px; }
.ml-manual label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--text-2); }
.ml-manual select { height: 36px; padding: 0 8px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 14px; background: #fff; }
.ml-table .c-grade { width: 92px; }
.mt-in.mt-grade { width: 84px; padding: 0 2px; cursor: pointer; }
.ml-manual input { height: 36px; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 14px; }
.ml-manual .ml-dlg-foot { grid-column: 1 / -1; margin: 4px -18px 0; }
@media (max-width: 760px) {
  .ml-wrap { grid-template-columns: 1fr; }
  .ml-side { position: static; }
  .ml-lists { max-height: 240px; }
  .ml-manual { grid-template-columns: 1fr; }
}
/* 보낸 메일 */
.mm-limit { margin: 6px 0 10px; color: var(--text-3); font-size: 13px; }
.mm-subj a { color: #111; font-weight: 600; text-decoration: none; }
.mm-subj a:hover { color: var(--navy); text-decoration: underline; }
.mm-subj small { display: block; color: var(--text-3); font-size: 12px; white-space: normal; }
.mm-table td.mm-subj { white-space: normal; min-width: 280px; }
.mm-bad { color: var(--red); font-weight: 600; }
.mm-ok { color: var(--green); font-weight: 700; }
.mm-yes { color: var(--navy); }
.mm-no { color: #8a94a6; }
.mm-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin: 4px 0 14px; color: var(--text-3); font-size: 13.5px; }
.mm-meta form { margin: 0; }
.mm-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 8px; margin-bottom: 12px; }
.mm-stats div { padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.mm-stats span { display: block; color: var(--text-3); font-size: 12.5px; }
.mm-stats b { font-size: 24px; color: #111; font-variant-numeric: tabular-nums; }
.mm-stats small { margin-left: 6px; color: var(--text-3); font-size: 12.5px; }
.mm-stats .is-yes b { color: var(--navy); }
.mm-stats .is-no b { color: #8a94a6; }
.mm-progress { margin: 0 0 14px; padding: 12px 14px; border-radius: var(--radius); background: #eef4ff; }
.mm-bar { height: 8px; border-radius: var(--radius); background: #d6e2f5; overflow: hidden; }
.mm-bar i { display: block; height: 100%; background: var(--navy); transition: width .4s; }
.mm-progress p { margin: 8px 0 0; font-size: 13.5px; color: var(--navy); }
.mm-grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 20px; align-items: start; }
.mm-preview { border: 1px solid var(--line); border-radius: var(--radius); background: #fff; overflow: hidden; }
.mm-subject { padding: 10px 14px; border-bottom: 1px solid var(--line-2); background: #fafbfc; font-weight: 700; }
.mm-subject span { margin-right: 8px; color: var(--text-3); font-weight: 400; font-size: 13px; }
.mm-body { padding: 16px 18px; max-height: 520px; overflow: auto; }
.mm-body mark { background: #fff3bf; }
.mm-rsvp-pv { margin: 0 18px 16px; padding: 14px; border: 1px solid #e3e8f0; border-radius: var(--radius); background: #f7f9fc; text-align: center; }
.mm-rsvp-pv p { margin: 0 0 10px; font-weight: 700; color: var(--navy); }
.mm-rsvp-pv span { display: inline-block; margin: 0 4px; padding: 8px 24px; border-radius: var(--radius); color: #fff; font-weight: 700; }
.mm-rsvp-pv .is-yes { background: var(--navy); }
.mm-rsvp-pv .is-no { background: #8a94a6; }
.mm-atts { margin: 0; padding: 10px 18px 14px; list-style: none; border-top: 1px solid var(--line-2); font-size: 13.5px; }
.mm-atts li { display: flex; align-items: center; gap: 6px; padding: 2px 0; }
.mm-test { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px; margin-top: 10px; font-size: 13px; color: var(--text-2); }
.mm-test label { display: flex; flex-direction: column; gap: 4px; flex: 1 1 220px; }
.mm-test input { height: 34px; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 14px; }
/* 미리 보기 · 보내기: 제목은 둘 다 상자 밖 같은 높이에, 보내기 상자는 스크롤해도 따라온다 */
.mm-grid .section-h { margin-top: 0; }
.mm-send-box { position: sticky; top: 16px; }
.mm-send { padding: 16px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.mm-lists { display: flex; flex-direction: column; gap: 2px; max-height: 340px; overflow-y: auto; padding: 4px; border: 1px solid var(--line-2); border-radius: var(--radius); }
.mm-lists label { display: flex; align-items: baseline; gap: 6px; padding: 5px 8px; border-radius: var(--radius); font-size: 14px; cursor: pointer; }
.mm-lists label:hover { background: #f5f7fa; }
.mm-lists small { color: var(--text-3); font-size: 12px; }
.mm-lists .mm-all { margin-top: 4px; border-top: 1px dashed var(--line-2); padding-top: 8px; font-weight: 600; }
.mm-extra { display: flex; flex-direction: column; gap: 4px; margin-top: 10px; font-size: 13.5px; color: var(--text-2); }
.mm-extra textarea { padding: 8px 10px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 13.5px; resize: vertical; }
.mm-extra input { height: 34px; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 14px; }
.mm-extra small, .mm-test-reply small { color: var(--text-3); font-size: 12px; }
.mm-note { margin: 8px 0 12px; font-size: 12.5px; color: var(--text-3); }
.mm-send .btn { width: 100%; }
.mm-filter { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 8px; }
.mm-filter form { margin: 0; }
.mm-note-txt { color: var(--text-2); font-size: 12.5px; }
.mm-rcpt td { white-space: nowrap; }
.mw-hint { display: block; margin-top: 6px; color: var(--text-3); font-size: 12.5px; }
.mw-rsvp .pf-check { margin: 0; }
.mw-until { display: inline-flex; align-items: center; gap: 6px; margin-top: 6px; font-size: 13.5px; color: var(--text-2); }
.mw-until input { height: 32px; padding: 0 8px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; }
@media (max-width: 900px) { .mm-grid { grid-template-columns: 1fr; } .mm-send-box { position: static; } }
/* 참석 여부 응답 화면 (/m.php) */
.rv-form { margin-top: 6px; text-align: left; }
.rv-now, .rv-closed { margin: 0 0 12px; padding: 10px 12px; border-radius: var(--radius); background: #f3f6fb; font-size: 14px; color: #333; }
.rv-choice { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.rv-choice label { position: relative; }
.rv-choice input { position: absolute; opacity: 0; inset: 0; }
.rv-choice span { display: block; padding: 16px 0; border: 2px solid var(--line); border-radius: var(--radius); text-align: center; font-size: 18px; font-weight: 700; color: var(--text-2); cursor: pointer; }
.rv-yes input:checked + span { border-color: var(--navy); background: var(--navy); color: #fff; }
.rv-no input:checked + span { border-color: #8a94a6; background: #8a94a6; color: #fff; }
.rv-choice input:focus-visible + span { outline: 3px solid rgba(27,69,150,.35); outline-offset: 2px; }
.rv-note { display: flex; flex-direction: column; gap: 4px; margin-top: 14px; font-size: 13.5px; color: var(--text-2); }
.rv-note input { height: 40px; padding: 0 12px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 15px; }

/* ── 관리자 공통 틀: 왼쪽 메뉴 + 오른쪽 화면 ── */
.adm { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 20px; max-width: 1560px; margin: 0 auto; padding: 0 16px; align-items: start; }
.adm-nav { position: sticky; top: 12px; margin-top: 16px; padding: 10px 8px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.adm-home { display: block; padding: 6px 10px 10px; margin-bottom: 4px; border-bottom: 1px solid var(--line-2); color: var(--text-3); font-size: 13px; text-decoration: none; }
.adm-home:hover { color: var(--navy); }
.adm-grp + .adm-grp { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line); }
.adm-grp p { display: flex; align-items: center; gap: 7px; margin: 4px 10px 6px; color: var(--navy); font-size: 13px; font-weight: 700; letter-spacing: .01em; }
.adm-grp p::before { content: ""; width: 3px; height: 13px; background: var(--navy); }
.adm-grp a { display: block; margin-left: 10px; padding: 7px 10px; border-radius: var(--radius); color: #333; font-size: 14px; text-decoration: none; }
.adm-grp a:hover { background: #f5f7fa; }
.adm-grp a[aria-current="page"] { background: #eaf1fb; color: var(--navy); font-weight: 700; }
.adm-main { min-width: 0; }
.adm-main .wrap, .adm-main .wrap.admin.ml-page, .adm-main .wrap.admin:has(.mem-table) { max-width: none; padding: 0; margin: 0; }
/* 화면이 1500px 보다 좁으면 왼쪽 메뉴를 위쪽 가로 줄로 올려 표가 가로 폭을 다 쓰게 한다 (회원 표 · 동문 명단이 넓다) */
@media (max-width: 1500px) {
  .adm { grid-template-columns: 1fr; gap: 0; padding: 0; }
  .adm-nav { position: static; margin: 0 0 8px; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; padding: 6px 10px; display: flex; gap: 2px; overflow-x: auto; white-space: nowrap; -webkit-overflow-scrolling: touch; }
  .adm-home { border: 0; margin: 0; padding: 7px 10px; }
  .adm-grp { display: flex; gap: 2px; margin: 0 !important; }
  .adm-grp p { display: none; }
  .adm-grp + .adm-grp { margin-top: 0; padding-top: 0; border-top: 0; }
  .adm-grp a { margin-left: 0; }
  .adm-grp + .adm-grp { border-left: 1px solid var(--line-2); padding-left: 4px; }
  .adm-main .wrap, .adm-main .wrap.admin.ml-page, .adm-main .wrap.admin:has(.mem-table) { padding: 0 16px; }
}
/* 메일링 리스트: 리스트 찾기 · 만들기 */
.ml-lfind { display: block; width: calc(100% - 16px); margin: 8px 8px 4px; height: 32px; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 13.5px; }
.ml-new .btn { flex: none; white-space: nowrap; }
.ml-search input { min-width: 0; }
.ml-search .btn { flex: none; white-space: nowrap; }
.mt-hosp { width: 170px; }
.mt-univ { width: 96px; }
.badge.mm-old { background: #eef1f5; color: #5a6475; }
.mm-sends td.mm-lists-cell { text-align: left; min-width: 180px; white-space: normal; line-height: 1.55; padding-top: 7px; padding-bottom: 7px; }
.mm-sends tr.is-cur td { background: #eaf1fb; }
.mm-preview iframe.mm-legacy { display: block; width: 100%; min-height: 360px; border: 0; background: #fff; overflow: hidden; }
.mm-ff { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 18px; margin: 10px 0 10px; padding: 10px 14px; border: 1px solid var(--line); border-radius: var(--radius); background: #f8fafc; }
.mm-ff fieldset { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; margin: 0; padding: 0; border: 0; }
.mm-ff legend { float: left; margin-right: 4px; font-size: 12.5px; font-weight: 700; color: var(--text-3); }
.mm-ff label { display: inline-flex; align-items: center; gap: 5px; font-size: 13.5px; cursor: pointer; }
.mm-ff-reset { font-size: 13px; }
.mm-rcpt .c-chk { width: 32px; text-align: center; }
.mm-old tr.mm-mail td { background: #f6f8fb; border-top: 2px solid var(--line); }
.mm-old tr.mm-mail .mm-subj a { font-weight: 700; }
.mm-old tr.mm-send-row .mm-subj { padding-left: 22px; }
.mm-old tr.mm-send-row .mm-subj small { display: inline; margin-left: 8px; }
.mm-old td.c-y, .mm-old td.c-date { text-align: center; white-space: nowrap; }
.mm-old a.mm-bad { text-decoration: underline; }
/* 메일 쓰기 편집기: 실제 메일(mail_render)과 같은 글꼴 · 크기, 사이트 글 꾸밈은 쓰지 않는다 */
.ed-area.ed-mail { max-height: none; overflow: visible; background: #fff; color: #222; font-family: -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', 'Malgun Gothic', sans-serif; font-size: 15px; line-height: 1.7; letter-spacing: normal; }
.ed-mail p { margin: 1em 0; }
.ed-mail > :first-child { margin-top: 0; }
.ed-mail a { color: #0000ee; text-decoration: underline; }
.ed-mail ul { list-style: disc; padding-left: 40px; } .ed-mail ol { list-style: decimal; padding-left: 40px; }
.ed-mail b, .ed-mail strong { font-weight: 700; }
.ed-area.ed-mail table { width: auto; border-collapse: separate; }
.ed-area.ed-mail td, .ed-area.ed-mail th { border: 0; padding: 1px; min-width: 0; }
.ed-area.ed-mail table:not([border]):not([style*="border"]) td, .ed-area.ed-mail table[border='0']:not([style*="border"]) td { outline: 1px dashed #dfe4ec; outline-offset: -1px; }
.ed-area.ed-mail table[border]:not([border='0']) td, .ed-area.ed-mail table[border]:not([border='0']) th { border: 1px solid #888; }
.mm-rcpt .mm-err { color: #a33; font-size: 12px; }
.acct-avatar { width: 64px; height: 64px; margin: 0 auto 14px; border-radius: 50%; display: grid; place-items: center; background: var(--navy); color: #fff; font-size: 26px; font-weight: 700; }
.acct-info { display: grid; grid-template-columns: auto 1fr; gap: 8px 16px; margin: 22px 0 0; padding: 16px 18px; background: var(--bg-2); text-align: left; font-size: 14px; }
.acct-info dt { color: var(--text-2); }
.acct-info dd { margin: 0; overflow-wrap: anywhere; }
/* 메일링 리스트 그룹 */
.ml-grp + .ml-grp { border-top: 1px solid var(--line-2); }
.ml-grp > summary { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 8px 8px 6px; border-radius: var(--radius); cursor: pointer; font-size: 14px; font-weight: 700; color: #222; list-style: none; }
.ml-grp > summary::-webkit-details-marker { display: none; }
.ml-grp > summary::before { content: ""; flex: none; width: 6px; height: 6px; margin: 0 4px 0 2px; border: solid var(--text-3); border-width: 0 1.5px 1.5px 0; transform: rotate(-45deg); transition: transform .15s; }
.ml-grp > summary:hover { background: #f5f7fa; }
.ml-grp[open] > summary { color: var(--navy); }
.ml-grp[open] > summary::before { border-color: var(--navy); transform: rotate(45deg) translate(-2px, -1px); }
.ml-grp > summary > a, .ml-grp > summary > span { flex: 1 1 auto; padding: 0; color: inherit; font-size: 14px; }
.ml-grp > summary > a:hover { background: none; text-decoration: underline; }
.ml-grp > summary > a[aria-current='page'] { color: var(--navy); background: none; }
.ml-grp > ul { margin: 0 0 6px 12px; padding: 0 0 0 6px; border-left: 2px solid var(--line-2); list-style: none; }
.ml-new-grp { border-top: 0; padding-top: 0; }
.ml-setgrp { margin: 0; font-size: 13px; color: var(--text-2); }
.ml-setgrp select { height: 28px; margin-left: 4px; padding: 0 6px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 13px; }
.ml-assign .ml-lfind { margin: 4px 0 8px; }
.ml-assign-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 2px 12px; max-height: 60vh; overflow-y: auto; margin-bottom: 12px; padding: 8px; border: 1px solid var(--line-2); border-radius: var(--radius); }
.ml-assign-list label { display: flex; align-items: baseline; gap: 6px; padding: 4px 6px; font-size: 14px; cursor: pointer; }
.ml-assign-list small { color: var(--text-3); font-size: 12px; }
.mm-lgrp { margin: 2px 0; padding-bottom: 2px; border-bottom: 1px dashed var(--line-2); }
.mm-lists label.mm-lgrp-h { font-weight: 700; }
.mm-lists label.mm-lgrp-i { padding-left: 26px; }
.rs-name { display: flex; align-items: center; gap: 2px; }
.rs-name .mt-ok { flex: none; }
.rs-name .mt-ok svg { width: 16px; height: 16px; }

/* ── 관리자 화면 통일 (모든 메뉴 같은 폭 · 같은 표) ── */
.adm-main .wrap.admin { max-width: none; margin: 0; padding-left: 0; padding-right: 0; }
.adm-main .admin .large-title { margin-bottom: 14px; }
.adm-main .group-f { margin: 0 0 12px; }
.mem-table th { text-align: left; }
.mem-table th.c-y, .mem-table th.c-pick, .mem-table th.c-st, .mem-table th.c-act, .mem-table th.c-x { text-align: center; }
.mem-table td > .mt-in, .mem-table .rs-name > .mt-in { margin-left: -7px; } /* 고칠 수 있는 칸의 글자를 머리글 · 보통 칸 글자와 같은 줄에 */
.mem-table td.c-y > .mt-in { margin-left: 0; }
.mem-table td { height: 40px; }
.th-sort { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
/* 동문 명단 표 */
.rs-table .mt-name { width: 100px; field-sizing: content; min-width: 4em; max-width: 160px; font-weight: 700; border-color: transparent; background: transparent; }
.rs-table .mt-name:hover { border-color: var(--line); background: #fff; }
.mt-wide { width: 100%; min-width: 150px; }
.mt-lic { width: 86px; }
.mt-tel { width: 128px; }
.rs-table .rs-name { display: flex; align-items: center; gap: 2px; }
.rs-diff { display: inline-block; margin-top: 2px; white-space: normal; }
.c-x { width: 36px; text-align: center; }
.row-x { width: 26px; height: 26px; padding: 0; border: 0; border-radius: 50%; background: none; color: var(--text-3); font-size: 14px; line-height: 26px; cursor: pointer; }
.row-x:hover, .row-x:focus-visible { background: #fdeeee; color: var(--red); outline: none; }
.row-x[disabled] { opacity: .4; cursor: default; }
/* 메뉴 관리: 같은 폭 · 같은 표 */
.ma-page .ma { max-width: none; margin: 0; }
.ma-tbl { border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.ma-tbl table { font-size: 13.5px; }
.ma-tbl th { background: #f5f7fa; color: var(--text-3); font-weight: 600; font-size: 12.5px; padding: 8px; border-bottom: 1px solid var(--line); }
.ma-tbl td { padding: 4px 8px; height: 40px; }
.ma-tbl tbody tr:last-child td { border-bottom: 0; }
.ma-tbl tbody tr:hover { background: #fafbfd; }
.ma-tbl .ma-btn { height: 26px; min-width: 0; padding: 0 8px; font-size: 12.5px; border-radius: var(--radius); }
/* 메일링 리스트: 끌어다 놓기 */
.ml-lists li[data-ml-lid] { cursor: grab; }
.ml-lists li.is-dragging { opacity: .4; }
.ml-grp.is-blank { display: none; }
.ml-lists.is-dragging .ml-grp.is-blank { display: block; }
.ml-lists.is-dragging .ml-grp { transition: background .12s; }
.ml-grp.is-drop { background: #eaf1fb; box-shadow: inset 0 0 0 2px var(--navy); border-radius: var(--radius); }
.ml-lists li.is-sel > a { background: #dce8f8; color: var(--navy); box-shadow: inset 3px 0 0 var(--navy); border-radius: 0; }
.ml-drag-tag { position: fixed; top: -100px; left: 0; padding: 6px 12px; border-radius: var(--radius); background: var(--navy); color: #fff; font-size: 13px; font-weight: 700; white-space: nowrap; }
.ml-dropbar { position: sticky; top: 0; z-index: 2; display: flex; flex-wrap: wrap; gap: 4px; padding: 8px; margin: -6px -6px 6px; background: #f3f6fb; border-bottom: 1px solid var(--line); box-shadow: 0 4px 10px rgba(15,23,42,.06); }
.ml-dropbar p { width: 100%; margin: 0 0 2px; font-size: 11.5px; font-weight: 700; color: var(--text-3); }
.ml-drop-chip { padding: 5px 10px; border: 1px dashed #9fb3d1; border-radius: 999px; background: #fff; font-size: 12.5px; color: #333; }
.ml-drop-chip.is-drop { border-style: solid; border-color: var(--navy); background: var(--navy); color: #fff; }
.ml-lists { max-height: calc(100vh - 230px); min-height: 240px; }
/* 동문 명단: 엑셀식 칸 거르기 · 체크한 줄 한꺼번에 바꾸기 */
.th-in { display: inline-flex; align-items: center; gap: 2px; }
.th-filter { display: inline-grid; place-items: center; width: 22px; height: 22px; padding: 0; border: 1px solid transparent; border-radius: var(--radius); background: none; color: #a3adbb; cursor: pointer; }
.th-filter svg { width: 12px; height: 12px; }
.th-filter:hover { border-color: var(--line); background: #fff; color: var(--navy); }
.th-filter.is-on { background: var(--navy); color: #fff; }
.rf-pop { position: absolute; z-index: 400; width: 280px; padding: 10px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; box-shadow: 0 14px 36px rgba(15,23,42,.18); font-size: 13.5px; }
.rf-sort { display: flex; gap: 6px; margin-bottom: 8px; }
.rf-sort a { flex: 1; padding: 6px 8px; border: 1px solid var(--line-2); border-radius: var(--radius); text-align: center; color: #333; text-decoration: none; font-size: 13px; }
.rf-sort a:hover { border-color: var(--navy); color: var(--navy); }
.rf-q { width: 100%; height: 34px; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 13.5px; }
.rf-q:focus { outline: none; border-color: var(--navy); }
.rf-list { max-height: 280px; overflow-y: auto; margin: 8px 0; padding: 4px 0; border: 1px solid var(--line-2); border-radius: var(--radius); }
.rf-item { display: flex; align-items: center; gap: 6px; padding: 4px 10px; cursor: pointer; }
.rf-item:hover { background: #f5f7fa; }
.rf-item span { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rf-item small { flex: none; color: var(--text-3); font-variant-numeric: tabular-nums; }
.rf-item i { color: var(--text-3); }
.rf-all { border-bottom: 1px solid var(--line-2); margin-bottom: 2px; }
.rf-wait { margin: 0; padding: 10px; color: var(--text-3); font-size: 12.5px; }
.rf-foot { display: flex; gap: 6px; align-items: center; }
.rf-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 4px 0 8px; font-size: 13px; color: var(--text-2); }
.rf-chip { display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px; border-radius: 999px; background: #eaf1fb; color: var(--navy); font-weight: 700; text-decoration: none; }
.rf-chip:hover { background: #fdeeee; color: var(--red); }
.rf-clear { font-size: 13px; }
.rs-bulk { margin: 0 0 8px; }
.rs-bulk input[name=value] { height: 30px; width: 220px; max-width: 40vw; padding: 0 8px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 13.5px; }
.rs-bulk select { height: 30px; }
.rs-table tr.is-picked td { background: #f0f5fd; }
.mt-univ { width: 100%; min-width: 110px; }
.rs-table td:nth-child(5) { width: 24%; }
.rs-table td:nth-child(6) { width: 14%; }
.rs-table td:nth-child(7) { width: 24%; }
.rs-row.is-new { display: flex; flex-wrap: wrap; gap: 6px; }
.rs-row.is-new input { flex: 1 1 110px; width: auto; }
.rs-table .c-pick input { width: 17px; height: 17px; accent-color: var(--navy); }
/* 한 화면 표 거르기 (메일링 리스트 · 사람 추가 창) */
tr.is-fout { display: none; }
.rf-sort button { flex: 1; padding: 6px 8px; border: 1px solid var(--line-2); border-radius: var(--radius); background: #fff; font: inherit; font-size: 13px; color: #333; cursor: pointer; }
.rf-sort button:hover { border-color: var(--navy); color: var(--navy); }
.tt-info { display: flex; align-items: center; gap: 6px; margin: 8px 0 0; font-size: 13px; color: var(--navy); font-weight: 700; }
.tt-info[hidden] { display: none; }
.ml-tt { margin: 0 18px 6px; }
.btn-link { padding: 0; border: 0; background: none; color: var(--navy); font: inherit; font-weight: 400; text-decoration: underline; cursor: pointer; }
dialog .rf-pop { position: absolute; }
[data-ml-pane][hidden] { display: none !important; }
/* 오시는 길: 안내도와 연락처 상자의 위 · 아래 높이를 맞춘다 (안내도 아래 링크 줄은 따로) */
.ct-map, .ct-top .ct-map { margin: 0; }
@media (min-width: 961px) {
  .ct-top { grid-template-rows: auto auto; row-gap: 10px; align-items: stretch; }
  .ct-top .ct-map-wrap { display: contents; }
  .ct-top .ct-map { grid-column: 1; grid-row: 1; }
  .ct-top .ct-map-wrap figcaption { grid-column: 1; grid-row: 2; margin-top: 0; }
  .ct-top > .ct-card { grid-column: 2; grid-row: 1; display: flex; flex-direction: column; justify-content: center; }
}
/* 앨범 설명: 옛 글의 빈 문단 · 겹친 문단 여백 없애기 */
.al-note-body p:empty, .al-note-body div:empty { display: none; }
.al-note-body > :first-child, .al-note-body > :first-child > :first-child, .al-note-body > :first-child > :first-child > :first-child { margin-top: 0; }
.al-note-body p:last-child, .al-note-body div:last-child > p:last-child { margin-bottom: 0; }
/* 동문 명단 (통합): 회원 계정 · 메일링 리스트 칸, 일괄 작업 상자 */
.rs-table td:nth-child(5) { width: 18%; }
.rs-table td:nth-child(6) { width: 11%; }
.rs-table td:nth-child(7) { width: 18%; }
.rs-table .c-acct { white-space: nowrap; }
.rs-table .c-acct .badge { text-decoration: none; font-size: 11.5px; }
.rs-grade { color: var(--text-2); font-size: 12px; }
.rs-table .c-ml { white-space: normal; min-width: 120px; max-width: 220px; line-height: 1.9; }
.rs-chip { display: inline-block; max-width: 120px; margin: 0 3px 0 0; padding: 0 7px; border-radius: 999px; background: #eef3fa; color: var(--navy); font-size: 11.5px; line-height: 20px; text-decoration: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle; }
.rs-chip:hover { background: #dce8f8; }
.rs-chip.is-more { background: var(--bg-2); color: var(--text-2); }
.rs-scope { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; color: var(--text-2); cursor: pointer; }
.rs-bulk [hidden] { display: none !important; }
.rs-bulk select[name=list] { max-width: 220px; }
.rs-search select { max-width: 200px; }
.wrap.admin.rs { max-width: none; }
/* 최근 변경 기록 */
.log-table td { vertical-align: top; padding-top: 8px; padding-bottom: 8px; }
.log-table .c-date { width: 110px; color: var(--text-2); font-size: 12.5px; font-variant-numeric: tabular-nums; }
.log-verb { font-weight: 600; color: #222; }
.log-table .log-detail { white-space: normal; color: #333; line-height: 1.5; min-width: 260px; }
/* 전체 리스트도 다른 그룹과 같은 줄 모양 */

/* 관리자: 맨 아래 여백 · 표 바로 밑 쪽 넘기기 */
.adm-main { padding-bottom: 64px; }
.adm-main .mem-wrap + .pager { justify-content: flex-end; margin: 10px 0 0; gap: 8px; }
.adm-main .mem-wrap + .pager .pg { height: 32px; padding: 0 12px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; font-size: 13.5px; color: var(--text-2); }
.adm-main .mem-wrap + .pager a.pg:hover { border-color: var(--navy); color: var(--navy); }

.mem-table td.mem-none { padding: 48px 12px; text-align: center; color: var(--text-3); font-size: 14px; }

/* 회원 계정 표: 화면이 좁아도 관리(⋯) 칸은 오른쪽에 붙어 늘 보이게 */
.um-table th.c-act, .um-table td.c-act { position: sticky; right: 0; z-index: 1; background: #fff; box-shadow: -6px 0 8px -6px rgba(0, 0, 0, .12); }
.um-table th.c-act { background: #f5f7fa; z-index: 2; }
.um-table tbody tr:hover td.c-act { background: #fafbfd; }
.um-table tr.is-dirty td.c-act { background: #fffbea; }
.um-table tr.is-saved td.c-act { background: #ecf8f0; }
.um-table tr.is-error td.c-act { background: #fdeeee; }
.um-table .mt-univ { width: 92px; min-width: 0; }
.um-table .mt-hosp { width: 150px; }
.um-table .mt-name { width: auto; field-sizing: content; min-width: 4em; max-width: 140px; } /* 이름 칸이 글자만큼만 */
.um-table .mt-email { width: 190px; }
.um-table .c-name .badge { white-space: nowrap; }

/* 보낸 메일 목록: 메일마다 카드, 발송마다 한 줄 */
.mx-list { margin-top: 10px; display: flex; flex-direction: column; gap: 12px; }
.mx-head, .mx-send { display: grid; grid-template-columns: minmax(0, 1fr) 96px 170px 120px 72px 16px; gap: 14px; align-items: center; }
.mx-head { padding: 0 18px; font-size: 12px; color: var(--text-3); font-weight: 600; }
.mx-head span:nth-child(n+2) { text-align: right; }
.mx-mail { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.mx-top { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 10px; padding: 14px 18px 12px; }
.mx-no { font-size: 12px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.mx-subj { flex: 1 1 320px; min-width: 0; color: #111; font-size: 15px; font-weight: 700; text-decoration: none; }
.mx-subj:hover { color: var(--navy); text-decoration: underline; }
.mx-rsvp { padding: 2px 10px; border-radius: 999px; background: #eef3fb; color: var(--navy); font-size: 12.5px; }
.mx-date { font-size: 12.5px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.mx-send { padding: 10px 18px; border-top: 1px solid var(--line-2, #eef0f3); color: inherit; text-decoration: none; transition: background .12s; }
.mx-send:hover { background: #f7f9fc; }
.mx-send:hover .mx-go { color: var(--navy); transform: translateX(2px); }
.mx-to { display: flex; flex-wrap: wrap; gap: 4px; min-width: 0; }
.mx-chip { max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 2px 8px; border-radius: var(--radius); background: #f1f3f6; color: #3d4654; font-size: 12.5px; }
.mx-more { padding: 2px 4px; color: var(--text-3); font-size: 12.5px; }
.mx-none { color: var(--text-3); font-size: 12.5px; }
.mx-sent, .mx-read, .mx-err, .mx-on { text-align: right; font-variant-numeric: tabular-nums; font-size: 13.5px; white-space: nowrap; }
.mx-sent small, .mx-read small { margin-left: 3px; color: var(--text-3); font-size: 12px; }
.mx-q { color: #b26a00 !important; }
.mx-read { display: flex; align-items: center; justify-content: flex-end; gap: 6px; }
.mx-read small { min-width: 30px; text-align: right; }
.mx-bar { flex: 0 0 64px; height: 6px; border-radius: var(--radius); background: #edf0f4; overflow: hidden; }
.mx-bar i { display: block; height: 100%; border-radius: var(--radius); background: var(--navy); }
.mx-err { color: var(--text-3); }
.mx-err.is-bad { color: var(--red); font-weight: 600; }
.mx-err[data-href] { cursor: pointer; text-underline-offset: 3px; }
.mx-err[data-href]:hover { text-decoration: underline; }
.mx-on { color: var(--text-2); font-size: 12.5px; }
.mx-go { display: flex; align-items: center; justify-content: center; color: #b8bfca; transition: transform .12s, color .12s; } /* 글자 › 는 글꼴에 따라 아래로 처져 보여 SVG 로 */
.mx-go svg { display: block; }
@media (max-width: 860px) {
  .mx-head { display: none; }
  .mx-send { grid-template-columns: 1fr 1fr; gap: 6px 12px; }
  .mx-to { grid-column: 1 / -1; }
  .mx-go { display: none; }
  .mx-sent, .mx-read, .mx-err, .mx-on { text-align: left; justify-content: flex-start; }
  .mx-sent::before, .mx-read::before, .mx-err::before, .mx-on::before { content: attr(data-l); margin-right: 6px; color: var(--text-3); font-size: 12px; font-weight: 400; }
}
.mx-bar i.w0 { width: 0%; }
.mx-bar i.w5 { width: 5%; }
.mx-bar i.w10 { width: 10%; }
.mx-bar i.w15 { width: 15%; }
.mx-bar i.w20 { width: 20%; }
.mx-bar i.w25 { width: 25%; }
.mx-bar i.w30 { width: 30%; }
.mx-bar i.w35 { width: 35%; }
.mx-bar i.w40 { width: 40%; }
.mx-bar i.w45 { width: 45%; }
.mx-bar i.w50 { width: 50%; }
.mx-bar i.w55 { width: 55%; }
.mx-bar i.w60 { width: 60%; }
.mx-bar i.w65 { width: 65%; }
.mx-bar i.w70 { width: 70%; }
.mx-bar i.w75 { width: 75%; }
.mx-bar i.w80 { width: 80%; }
.mx-bar i.w85 { width: 85%; }
.mx-bar i.w90 { width: 90%; }
.mx-bar i.w95 { width: 95%; }
.mx-bar i.w100 { width: 100%; }

/* 동문 명단: 이상한 이메일 주소 경고 */
.rs-mailcell { position: relative; white-space: nowrap; }
.rs-mailcell .mt-in { vertical-align: middle; }
.rs-mailcell:has(.rs-warn) .mt-in { field-sizing: content; width: auto; min-width: 4ch; max-width: calc(100% - 22px); }  /* 주소 길이만큼만 → 느낌표가 주소 바로 옆에 */
.rs-warn { position: relative; display: inline-grid; place-items: center; width: 16px; height: 16px; margin-left: 2px; vertical-align: middle; border-radius: 50%; background: #ea580c; color: #fff; font-size: 11px; font-weight: 800; line-height: 1; cursor: help; }
.rs-warn::after { content: attr(data-tip); position: absolute; right: 50%; bottom: calc(100% + 7px); z-index: 20; transform: translateX(50%); padding: 6px 10px; border-radius: var(--radius); background: #222; color: #fff; font-size: 12.5px; font-weight: 500; white-space: nowrap; pointer-events: none; opacity: 0; visibility: hidden; transition: opacity .12s; }
.rs-warn:hover::after, .rs-warn:focus::after { opacity: 1; visibility: visible; }

/* 내 정보 관리: 단체 메일 받기 스위치 */
.acct-mail { margin: 14px 0 0; padding: 14px 18px; border: 1px solid var(--line); text-align: left; }
.acct-switch { display: flex; align-items: flex-start; gap: 12px; cursor: pointer; }
.acct-switch.is-off { cursor: default; opacity: .7; }
.acct-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.acct-knob { flex: 0 0 40px; height: 22px; margin-top: 1px; border-radius: 999px; background: #c9ced8; position: relative; transition: background .15s; }
.acct-knob::after { content: ""; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.2); transition: transform .15s; }
.acct-switch input:checked + .acct-knob { background: var(--navy); }
.acct-switch input:checked + .acct-knob::after { transform: translateX(18px); }
.acct-switch input:focus-visible + .acct-knob { outline: 2px solid var(--navy); outline-offset: 2px; }
.acct-mail-t { display: flex; flex-direction: column; gap: 2px; min-width: 0; font-size: 14px; }
.acct-mail-t small { color: var(--text-2); font-size: 12.5px; overflow-wrap: anywhere; }
.acct-mail .btn-xs { margin-top: 10px; }
.acct-saved { margin: 8px 0 0; color: var(--navy); font-size: 12.5px; }

/* 내 정보 관리: 칸 */
.acct-card .acct-mail { margin-top: 0; }
.acct-sec { margin: 14px 0 0; padding: 16px 18px; border: 1px solid var(--line); text-align: left; }
.acct-sec h2 { margin: 0 0 10px; font-size: 15px; color: #111; }
.acct-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 12px; }
.acct-f { display: flex; flex-direction: column; gap: 4px; font-size: 12.5px; color: var(--text-2); min-width: 0; }
.acct-full { grid-column: 1 / -1; }
.acct-sec input:not([type=checkbox]):not([type=hidden]), .acct-sec select { min-width: 0; height: 36px; padding: 0 10px; border: 1px solid var(--line); background: #fff; font: inherit; font-size: 14px; color: var(--text); }
.acct-ro { height: 36px; display: flex; align-items: center; padding: 0 10px; background: var(--bg-2); font-size: 14px; color: var(--text); }
.acct-row { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.acct-row input, .acct-row select { flex: 1 1 180px; }
.acct-hint { margin: 8px 0 0 !important; font-size: 12.5px !important; color: var(--text-2); }
.acct-cur { margin: 0 !important; font-size: 14px !important; color: var(--text) !important; overflow-wrap: anywhere; }
.acct-wait { margin: 10px 0 0 !important; padding: 10px 12px; background: #fff7ed; color: #9a3412 !important; font-size: 13px !important; }
.acct-wait small { color: var(--text-3); }
.acct-err { margin: 14px 0 0 !important; padding: 10px 12px; background: #fef2f2; color: #b91c1c !important; font-size: 13.5px !important; text-align: left; }
.acct-saved { color: var(--navy); font-size: 12.5px; }
.acct-sub { margin-top: 6px; }
@media (max-width: 480px) { .acct-grid { grid-template-columns: 1fr; } }
/* 관리자: 회원 종류 변경 신청 */
.greq { margin: 0 0 18px; padding: 14px 18px; border: 1px solid #fed7aa; background: #fff7ed; }
.greq h2 { margin: 0 0 8px; font-size: 15px; }
.greq h2 .count { margin-left: 4px; padding: 0 7px; border-radius: 999px; background: #c2410c; color: #fff; font-size: 12px; }
.greq ul { margin: 0; padding: 0; list-style: none; }
.greq li { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 14px; padding: 8px 0; border-top: 1px solid #fde4cc; font-size: 14px; }
.greq li:first-child { border-top: 0; }
.greq-who small, .greq-on { color: var(--text-3); font-size: 12px; }
.greq-act { margin-left: auto; display: flex; gap: 6px; }

/* 동문 명단: 이메일 확인 필요 바로가기 */
.rs-mailbar { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 14px; margin: 0 0 12px; padding: 10px 14px; border: 1px solid #fed7aa; background: #fff7ed; color: #7c2d12; font-size: 13.5px; }

.rs-mailbar.is-on { border-color: #c2410c; }

.rs-mailbar .rs-mb-t { flex: 1 1 300px; }
.rs-mb-kinds { flex: 1 1 100%; display: flex; flex-wrap: wrap; gap: 6px; }
.rs-mb-kinds a { padding: 4px 10px; border: 1px solid #fdba74; border-radius: 999px; background: #fff; color: #7c2d12; font-size: 12.5px; text-decoration: none; }
.rs-mb-kinds a b { margin-left: 2px; font-variant-numeric: tabular-nums; }
.rs-mb-kinds a:hover { border-color: #c2410c; }
.rs-mb-kinds a[aria-current] { background: #c2410c; border-color: #c2410c; color: #fff; }

.act-kid { padding: 4px 8px 6px; border-bottom: 1px solid var(--line); font-size: 12px; color: var(--text-3); white-space: nowrap; user-select: all; }
.act-kid b { color: var(--text-2); font-weight: 600; font-variant-numeric: tabular-nums; }

/* 보낸 메일 화면: 칸이 내용 때문에 화면 밖으로 밀리지 않게 */
.mm-grid > * { min-width: 0; }
.mm-send-box label, .mm-lists label { overflow-wrap: anywhere; }
/* 받는 분 이메일 고치기 */
.mm-fix { display: inline-flex; gap: 6px; align-items: center; }
.mm-fix .mt-in { width: 240px; border: 1px solid #fca5a5; }

.mm-sends tr.mm-pick { cursor: pointer; }
.mm-sends td a { text-decoration: none; text-underline-offset: 3px; }
.mm-sends td a:hover, .mm-sends td a:focus-visible { text-decoration: underline; }
.mm-sends tr.mm-pick:hover td { background: #f5f8fd; }
.mm-sends tr.mm-pick.is-cur td { background: #eaf1fb; }
.mm-sends tr.mm-pick.is-cur td:first-child { box-shadow: inset 3px 0 0 var(--navy); }

.mm-live.is-loading { opacity: .55; transition: opacity .15s; pointer-events: none; }
.mm-sends .c-chk { width: 32px; text-align: center; }
.mm-send-box .mm-extra + .btn[data-mm-go], form .mm-extra + .btn[data-mm-go] { margin-top: 14px; }


/* 글 본문 안 문서 미리 보기 (.docview · 내장 PDF 뷰어를 틀로) */
.docview { margin: 24px 24px 0; }
.docview-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; font-size: 14px; }
.docview-head svg { width: 15px; height: 15px; flex: none; }
.docview-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); font-weight: 500; }
.docview-full { flex: none; padding: 3px 12px; border: 1px solid #c9d3e6; border-radius: 999px; color: var(--navy); font-size: 13px; white-space: nowrap; }
.docview-full:hover { border-color: var(--navy); background: #f2f5fb; }
.docview + .docview { margin-top: 28px; }
/* 파워포인트 발표자 노트: 미리 보기 틀 바로 아래, 지금 보는 장의 노트 (pdfview.js) */
.docview-notes { margin-top: 8px; border: 1px solid var(--line); border-radius: var(--radius); background: #f8f9fb; }
.docview-notes[hidden] { display: none; }
.docview-notes-h { padding: 7px 14px; border-bottom: 1px solid var(--line); font-size: 12.5px; font-weight: 700; color: var(--navy); }
.docview-notes-h span { margin-left: 4px; font-weight: 400; color: var(--text-3); font-variant-numeric: tabular-nums; }
.docview-notes-b { max-height: 180px; overflow: auto; padding: 10px 14px; font-size: 14px; line-height: 1.7; color: #333; white-space: pre-wrap; word-break: keep-all; overflow-wrap: anywhere; }
.docview-notes-b.is-empty { color: var(--text-3); }
.docview-frame { display: block; width: 100%; max-width: 100%; height: min(70vh, 720px); margin: 0 auto; border: 0; border-radius: var(--radius); background: rgb(10 12 16); }
@media (max-width: 768px) {
  .docview { margin: 16px 4px 0; }
  .docview-frame { height: 56svh; }
}

/* 글 본문 위 첨부 사진 뷰어 (.imgview): 사진 크기에 맞춘 틀 · 화살표와 장 번호는 사진 위에 겹쳐 */
.iv-stage { position: relative; width: fit-content; max-width: 100%; margin: 0 auto; border-radius: var(--radius); overflow: hidden; background: rgb(10 12 16); outline: none; touch-action: pan-y pinch-zoom; }
.iv-stage:focus-visible { box-shadow: 0 0 0 2px var(--navy); }
.iv-stage img { display: block; max-width: 100%; max-height: 85vh; width: auto; height: auto; margin: 0 auto; user-select: none; -webkit-user-drag: none; }
.iv-stage img[hidden] { display: none; }
.iv-nav { position: absolute; top: 50%; z-index: 2; width: 40px; height: 40px; margin-top: -20px; padding: 0; border: 0; border-radius: 50%; display: grid; place-items: center;
  background: rgb(0 0 0 / .42); color: #fff; cursor: pointer; transition: background .15s, opacity .2s; -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.iv-nav:hover, .iv-nav:focus-visible { background: rgb(0 0 0 / .65); outline: none; }
.iv-nav:focus-visible { box-shadow: 0 0 0 2px #fff; }
.iv-nav:disabled { opacity: 0; pointer-events: none; }
.iv-nav::before { content: ""; width: 10px; height: 10px; border: solid currentColor; border-width: 0 0 2.5px 2.5px; }
.iv-prev { left: 10px; } .iv-prev::before { transform: translateX(2px) rotate(45deg); }
.iv-next { right: 10px; } .iv-next::before { transform: translateX(-2px) rotate(-135deg); }
.iv-count { position: absolute; left: 50%; bottom: 10px; z-index: 2; transform: translateX(-50%); padding: 4px 11px; border-radius: 999px; background: rgb(0 0 0 / .55); color: #fff; font-size: 12.5px; line-height: 1.3; font-variant-numeric: tabular-nums; pointer-events: none; }
@media (max-width: 768px) {
  .iv-nav { width: 34px; height: 34px; margin-top: -17px; }
  .iv-prev { left: 6px; } .iv-next { right: 6px; }
  .iv-count { bottom: 6px; font-size: 11.5px; padding: 3px 9px; }
}

/* 사진 뷰어: 3초 동안 아무 동작이 없으면 화살표 · 장 번호를 숨김 (imgview.js) */
.iv-nav, .iv-count { transition: background .15s, opacity .35s; }
.iv-stage.iv-idle .iv-nav, .iv-stage.iv-idle .iv-count { opacity: 0; pointer-events: none; }

/* 바닥글 주소: 주소 · T. · F. · E. 가 각각 한 덩어리 (중간에서 줄이 끊기지 않게) */
.footer-main address .adr-a { display: inline-block; margin-right: 14px; }
.footer-main address .adr-u { display: inline-block; white-space: nowrap; margin-right: 14px; }
.footer-main address .adr-u:last-child { margin-right: 0; }

/* 회원 계정 · 승인: 인증을 시도 중인 회원 (주황 '변경 신청' 상자와 같은 모양, 파랑) */
.vtry { border-color: #c9d8f0; background: #f3f7fd; }
.vtry h2 .count { background: var(--navy); }
.vtry h2 small { margin-left: 6px; color: var(--text-3); font-size: 12px; font-weight: 400; }
.vtry li { border-top-color: #dde6f4; }
.vtry-what { flex: 1 1 360px; min-width: 0; color: #333; }
.vtry-what small { color: var(--text-3); font-size: 12px; }
.vtry .badge { margin: 0 0 0 4px; font-size: 11.5px; padding: 0 6px; }
/* 동문 선택 · 인증 (/admin/link.php) */
.lk-who { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px 20px; margin: 4px 0 22px; padding: 14px 18px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.lk-who dt { font-size: 12px; color: var(--text-3); }
.lk-who dd { margin: 2px 0 0; font-size: 14.5px; color: #111; overflow-wrap: anywhere; }
.lk-kid { font-variant-numeric: tabular-nums; user-select: all; }
.lk-log { margin: 0 0 22px; padding: 0; list-style: none; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.lk-log li { padding: 10px 16px; border-top: 1px solid var(--line-2); font-size: 14px; line-height: 1.55; }
.lk-log li:first-child { border-top: 0; }
.lk-log .badge { margin: 0 4px; font-size: 11.5px; padding: 0 6px; }
.lk-t { display: inline-block; min-width: 108px; color: var(--text-3); font-size: 12.5px; font-variant-numeric: tabular-nums; }
.lk-log blockquote { margin: 6px 0 0 108px; padding: 8px 12px; border-left: 3px solid #fdba74; background: #fff7ed; white-space: normal; color: #333; }
.lk-box { margin: 0 0 22px; padding: 16px 18px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.lk-box h2 { margin: 0 0 6px; font-size: 16px; }
.lk-box > p { margin: 0 0 10px; color: var(--text-2); font-size: 14px; line-height: 1.6; }
.lk-row { display: flex; flex-wrap: wrap; gap: 8px; }
.lk-row input { flex: 1 1 260px; height: 36px; padding: 0 12px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 14.5px; }
.lk-find { margin-bottom: 10px; }
.lk .mem-table td.c-act { text-align: center; }
@media (max-width: 600px) { .lk-log blockquote { margin-left: 0; } }
/* 면허번호 인증이 안 됩니다 (/auth/license_help.php) */
.auth-help { margin: 16px 0 0 !important; font-size: 14px !important; text-align: center; }
.auth-help a { color: var(--text-2); text-decoration: underline; text-underline-offset: 3px; }
.auth-help a:hover { color: var(--navy); }
.help-head { display: flex; flex-direction: column; gap: 4px; padding: 12px 14px; border-radius: var(--radius); background: var(--bg-2); text-align: left; }
.help-head span { font-size: 13px; color: var(--text-2); }
.help-head b { color: #111; font-variant-numeric: tabular-nums; }
.help-head strong { font-size: 16px; color: #111; }
.field textarea { padding: 12px 14px; border: 1px solid #bbb; border-radius: var(--radius); font: inherit; font-size: 15px; line-height: 1.6; resize: vertical; outline: none; }
.field textarea:focus { border-color: var(--navy); }
.field textarea:disabled { background: var(--bg-2); }

/* 인증을 시도 중인 회원: 넣은 면허번호와 같거나 한 자리만 다른 동문 → 바로 인증 */
.vtry-lics { display: flex; flex-direction: column; gap: 4px; margin-top: 6px; }
.vtry-lic { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 8px; }
.vtry-no { font-size: 13px; }
.vtry-no b { font-variant-numeric: tabular-nums; letter-spacing: .02em; }
.vtry-near { display: inline-flex; align-items: center; gap: 4px; margin: 0; }
.vtry-sim { color: #b45309; font-size: 11.5px; }
.lk-lic { font-variant-numeric: tabular-nums; letter-spacing: .02em; }

/* 메일링 리스트 왼쪽 목록: 그룹마다 맨 밑 '+ 메일링 리스트 추가', 목록 맨 밑 '+ 그룹 추가' (누르면 그 자리에서 이름 칸) */
.ml-add-d > summary { display: block; padding: 7px 10px; border-radius: var(--radius); color: var(--navy); font-size: 13px; font-weight: 600; cursor: pointer; list-style: none; opacity: .75; }
.ml-add-d > summary::-webkit-details-marker { display: none; }
.ml-add-d > summary:hover { background: #f5f7fa; opacity: 1; }
.ml-add-d[open] > summary { opacity: 1; }
.ml-add-f { display: flex; gap: 6px; padding: 2px 4px 8px 10px; }
.ml-add-f input[name=name] { flex: 1 1 auto; min-width: 0; height: 30px; padding: 0 8px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 13.5px; }
.ml-add-f input[name=name]:focus { outline: none; border-color: var(--navy); box-shadow: 0 0 0 3px rgba(27, 69, 150, .12); }
.ml-add-f .btn { flex: none; white-space: nowrap; }
.ml-addgrp { padding: 6px 0 2px; }
.ml-addgrp .ml-add-d > summary { font-size: 13px; }

/* 옆으로 미는 칩·탭 줄 (scroll-fade.js): 넘친 쪽 끝을 흐리게 */
.sf-r { -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 48px), transparent); mask-image: linear-gradient(90deg, #000 calc(100% - 48px), transparent); }
.sf-l { -webkit-mask-image: linear-gradient(90deg, transparent, #000 48px); mask-image: linear-gradient(90deg, transparent, #000 48px); }
.sf-l.sf-r { -webkit-mask-image: linear-gradient(90deg, transparent, #000 48px, #000 calc(100% - 48px), transparent); mask-image: linear-gradient(90deg, transparent, #000 48px, #000 calc(100% - 48px), transparent); }
/* 좁은 화면: 분류·분과·연도 칩 줄은 여러 줄로 쌓지 않고 한 줄로 옆으로 밀어 보게 (교수진과 같게) */
@media (max-width: 760px) {
  .cat-tabs, .hs-divs, .po-nav, .fac-nav, .prose .dh-nav, .grade-tabs, .rs-mb-kinds, .cf-years, .cf-divs { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
  .cat-tabs::-webkit-scrollbar, .hs-divs::-webkit-scrollbar, .po-nav::-webkit-scrollbar, .fac-nav::-webkit-scrollbar, .prose .dh-nav::-webkit-scrollbar, .grade-tabs::-webkit-scrollbar, .rs-mb-kinds::-webkit-scrollbar, .cf-years::-webkit-scrollbar, .cf-divs::-webkit-scrollbar, .adm-nav::-webkit-scrollbar { display: none; }
  .cat-tabs > *, .hs-divs > *, .po-nav > *, .fac-nav > *, .prose .dh-nav > *, .grade-tabs > *, .rs-mb-kinds > *, .cf-years > *, .cf-divs > *, .aw-nav > * { flex: none; }
  .adm-nav { scrollbar-width: none; }
}

/* ── SCI 발표논문 (관리자) ── */
.pp-page { max-width: 1100px; }
.pp-top-btns { display: flex; gap: 8px; }
.pp-badge { margin-left: 6px; padding: 1px 8px; border-radius: 999px; background: #fff; color: var(--navy); font-size: 12px; font-weight: 700; }
.pp-autobar { margin: 0 0 14px; padding: 10px 14px; border-left: 3px solid #ea580c; background: #fff7ed; color: #7c2d12; font-size: 14px; }
.pp-search { display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0 10px; }
.pp-search input, .pp-search select { height: 40px; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 14px; background: #fff; }
.pp-search input[type=search] { flex: 1 1 300px; }
.pp-search input[type=number] { width: 104px; }
.pp-search .btn { min-height: 40px; }
.pp-total { margin: 0 0 6px; font-size: 14px; color: var(--text-2); }
.pp-total b { color: var(--navy); }
.pp-list-main { margin: 0; padding: 0; list-style: none; border-top: 2px solid var(--line-dark); }
.pp-row { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 14px; padding: 16px 4px; border-bottom: 1px solid var(--line-2); }
.pp-no { display: grid; align-content: start; justify-items: center; gap: 2px; padding-top: 2px; color: var(--text-3); font-size: 12px; }
.pp-no b { color: var(--navy); font-size: 15px; }
.pp-body { min-width: 0; }
.pp-ko { margin: 0 0 3px; font-size: 13.5px; font-weight: 700; color: #333; }
.pp-authors { margin: 0 0 4px; font-size: 13.5px; line-height: 1.6; color: #555; }
.pp-au { padding: 0; border: 0; border-bottom: 1px dotted transparent; background: none; font: inherit; color: inherit; cursor: pointer; }
.pp-au:hover { color: var(--navy); border-bottom-color: var(--navy); }
.pp-au.is-linked { color: var(--navy); font-weight: 700; }
.pp-au sup { margin-left: 1px; }
.pp-more { color: var(--text-3); }
.pp-ttl { display: inline; color: #111; font-size: 16px; font-weight: 700; line-height: 1.45; text-decoration: none; }
.pp-ttl:hover { color: var(--navy); text-decoration: underline; }
.pp-st { display: inline-block; margin-left: 8px; padding: 1px 8px; border-radius: 999px; font-size: 12px; font-weight: 700; vertical-align: 2px; }
.pp-st-auto { background: #ffedd5; color: #9a3412; }
.pp-st-draft { background: #e5e7eb; color: #374151; }
.pp-cite { margin: 4px 0 0; font-size: 13.5px; color: var(--text-2); font-style: italic; }
.pp-meta { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 14px; margin-top: 6px; font-size: 13px; color: var(--text-2); }
.pp-meta a { color: var(--navy); }
.pp-meta b { color: #111; }
.pp-absd > summary { display: inline-block; color: var(--navy); font-weight: 600; cursor: pointer; list-style: none; }
.pp-absd > summary::-webkit-details-marker { display: none; }
.pp-absd > summary::after { content: " ▾"; font-size: 11px; }
.pp-absd[open] > summary::after { content: " ▴"; }
.pp-meta .pp-absd[open] { flex: 1 1 100%; order: 9; }
.pp-abs { margin-top: 8px; padding: 14px 16px; border-left: 3px solid var(--navy); background: var(--bg-2); color: #333; font-size: 14.5px; line-height: 1.75; }
.pp-abs p { margin: 0 0 8px; }
.pp-abs p:last-child { margin: 0; }
.pp-abs-l { color: var(--navy); }
.pp-empty { padding: 40px 0; text-align: center; color: var(--text-2); }
/* 논문 보기 */
.pp-view { padding-top: 6px; }
.pp-view .pp-cite { margin: 0 0 8px; font-style: normal; }
.pp-title { margin: 0 0 12px; font-size: 24px; line-height: 1.4; color: #111; }
.pp-view .pp-authors { font-size: 14.5px; }
.pp-view .pp-ko { margin: 6px 0 0; font-weight: 400; }
.pp-ids { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 14px 0; padding: 10px 0; border-top: 1px solid var(--line-2); border-bottom: 1px solid var(--line-2); font-size: 13.5px; color: var(--text-2); }
.pp-ids a { color: var(--navy); }
.pp-tools { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 18px; }
.pp-tools form { margin: 0; }
.pp-sec { margin: 22px 0 0; }
.pp-sec h2, .pp-sec > summary { margin: 0 0 8px; font-size: 16px; color: #111; }
details.pp-sec > summary { cursor: pointer; font-weight: 700; }
.pp-sec > p { margin: 0; font-size: 14.5px; line-height: 1.7; color: #333; }
.pp-affils ol { margin: 6px 0 0; padding-left: 22px; font-size: 13.5px; line-height: 1.6; color: #444; }
.pp-kw { display: flex; flex-wrap: wrap; gap: 6px; }
.pp-kw span { padding: 3px 10px; border-radius: 999px; background: #eef3fb; color: var(--navy); font-size: 13px; }
.pp-figs { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px; align-items: start; }
.pp-figs figure { margin: 0; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; overflow: hidden; }
.pp-figs img { display: block; width: 100%; height: 180px; object-fit: contain; background: #fafafa; }
/* 그림 설명: 다섯 줄까지 보이고(줄 중간에서 잘리지 않게 … 로), 넘치면 [설명 더 보기]로 펼친다 (papers.js) */
.pp-figs figcaption { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 5; line-clamp: 5; margin: 8px 10px 0; overflow: hidden; font-size: 12.5px; line-height: 1.5; color: #444; overflow-wrap: anywhere; }
.pp-figs figure.is-open figcaption { display: block; -webkit-line-clamp: unset; line-clamp: none; }
.pp-figs figure > figcaption:last-child { margin-bottom: 10px; }
.pp-figmore { display: block; margin: 2px 10px 8px; padding: 2px 0; border: 0; background: none; font: inherit; font-size: 12.5px; font-weight: 500; color: var(--navy); cursor: pointer; }
.pp-figmore:hover { text-decoration: underline; }
/* 논문 그림 크게 보기 (papers.js): 그림 + 설명 전체 */
html.pfx-open { overflow: hidden; }
.pfx { position: fixed; inset: 0; z-index: 10000; display: flex; flex-direction: column; background: rgb(14, 16, 20); }
.pfx[hidden] { display: none; }
.pfx-top { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 10px; height: 56px; padding: 0 14px; color: rgba(255,255,255,.8); font-size: 14px; font-variant-numeric: tabular-nums; }
.pfx-acts { display: flex; gap: 6px; }
.pfx-btn { display: inline-flex; align-items: center; justify-content: center; height: 34px; padding: 0 14px; border: 1px solid rgba(255,255,255,.25); border-radius: 999px; background: none; color: #fff; font: inherit; font-size: 13.5px; text-decoration: none; cursor: pointer; }
.pfx-btn:hover, .pfx-btn:focus-visible { background: rgba(255,255,255,.12); outline: none; }
.pfx-x { width: 34px; padding: 0; }
.pfx-main { flex: 1; min-height: 0; display: flex; align-items: center; justify-content: center; padding: 0 76px 56px; }
/* 그림과 설명을 한 장의 흰 판에: 그림은 왼쪽 칸을 가득(작은 그림도 키워서), 설명은 오른쪽 세로 단 */
.pfx-sheet { flex: 0 1 1160px; min-width: 0; height: min(100%, 700px); display: flex; background: #fff; border-radius: 6px; overflow: hidden; box-shadow: 0 10px 40px rgba(0,0,0,.4); }
.pfx-img { flex: 1; min-width: 0; position: relative; }
.pfx-img img { position: absolute; inset: 0; width: 100%; height: 100%; box-sizing: border-box; padding: 36px; object-fit: contain; }
.pfx-cap { flex: 0 0 clamp(300px, 30%, 380px); box-sizing: border-box; overflow: auto; padding: 28px 26px; border-left: 1px solid #e3e6ea; background: #f7f8fa; color: #333; font-size: 15px; line-height: 1.75; overflow-wrap: anywhere; }
.pfx-cap b:first-child { display: block; margin-bottom: 6px; font-size: 17px; color: var(--navy); }
.pfx-cap .pp-figcap { display: block; margin-top: 10px; color: #444; }
.pfx-cap:focus-visible { outline: 2px solid var(--navy); }
.pfx-nav { position: absolute; top: 50%; width: 48px; height: 48px; margin-top: -24px; border: 0; border-radius: 50%; background: rgba(255,255,255,.12); color: #fff; font-size: 30px; line-height: 1; cursor: pointer; }
.pfx-nav:hover, .pfx-nav:focus-visible { background: rgba(255,255,255,.25); outline: none; }
.pfx-nav[hidden] { display: none; }
.pfx-prev { left: 12px; } .pfx-next { right: 12px; }
@media (max-width: 860px) {
  .pfx-main { padding: 0 8px 8px; }
  .pfx-main { align-items: stretch; }
  .pfx-sheet { flex: 1 1 auto; height: auto; flex-direction: column; }
  .pfx-img { flex: 0 0 46%; border-bottom: 1px solid #e3e6ea; }
  .pfx-img img { padding: 12px; }
  .pfx-cap { flex: 1 1 auto; min-height: 0; border-left: 0; padding: 16px 18px; font-size: 14.5px; }
  .pfx-nav { margin-top: 0; top: calc(56px + 23% - 20px); width: 40px; height: 40px; font-size: 26px; background: rgba(0,0,0,.45); }
  .pfx-prev { left: 4px; } .pfx-next { right: 4px; }
}
.pp-figcap { color: var(--text-2); }
.pp-list { margin: 0; padding-left: 18px; font-size: 14px; line-height: 1.7; }
.pp-tag { display: inline-block; min-width: 92px; color: var(--text-2); font-size: 13px; }
.pp-dl { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 6px 14px; margin: 8px 0 0; font-size: 13.5px; }
.pp-dl dt { color: var(--text-3); }
.pp-dl dd { margin: 0; color: #333; line-height: 1.6; }
.pp-hint { color: var(--text-3); font-size: 13px; }
/* 고치기 */
.pp-edit { max-width: 900px; }
.pp-f { display: grid; gap: 4px; font-size: 13px; color: var(--text-2); }
.pp-f input, .pp-f select, .pp-f textarea { height: 40px; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 14.5px; color: #111; background: #fff; }
.pp-f textarea { height: auto; padding: 8px 10px; line-height: 1.5; }
.pp-f-wide { margin-bottom: 12px; }
.pp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }
.pp-if { display: flex; flex-wrap: wrap; align-items: end; gap: 12px; margin: 18px 0 12px; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius); }
.pp-if legend { padding: 0 6px; font-size: 14px; font-weight: 700; }
.pp-if .pp-f input { width: 120px; }
.pp-chk { display: inline-flex; align-items: center; gap: 6px; font-size: 13.5px; color: #333; }
.pp-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 14px; }
/* 가져오기 */
.pp-import { display: grid; gap: 8px; margin: 6px 0 18px; }
.pp-import label { font-size: 14px; font-weight: 700; }
.pp-import textarea { padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--radius); font: 14px/1.6 ui-monospace, Consolas, monospace; }
.pp-res { margin: 0 0 18px; padding: 10px 14px; border: 1px solid var(--line); border-radius: var(--radius); list-style: none; font-size: 13.5px; line-height: 1.8; }
.pp-res li > span { display: inline-block; min-width: 64px; font-weight: 700; }
.pp-res .is-new > span { color: #15803d; }
.pp-res .is-dup > span { color: var(--text-3); }
.pp-res .is-error > span { color: #b91c1c; }
.pp-drafts-h { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 8px 0; }
.pp-drafts-h h2 { margin: 0; font-size: 18px; }
.pp-card { margin: 0 0 12px; padding: 14px 16px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.pp-card .pp-cite { margin: 0 0 4px; font-style: normal; }
.pp-card .pp-authors { margin-top: 4px; }
.pp-quick { display: flex; flex-wrap: wrap; align-items: end; gap: 8px 10px; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line-2); }
.pp-quick label:not(.pp-chk) { display: grid; gap: 3px; font-size: 12px; color: var(--text-2); }
.pp-quick input:not([type=checkbox]), .pp-quick select { height: 34px; padding: 0 8px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; font-size: 13.5px; background: #fff; }
.pp-quick input[name=if_value] { width: 80px; }
.pp-quick input[name^=ko_] { width: 130px; }
.pp-quick-btns { display: flex; flex-wrap: wrap; gap: 6px; margin-left: auto; }
/* 저자 팝업 */
.pp-pop { position: absolute; z-index: 60; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; box-shadow: 0 12px 32px rgba(0, 0, 0, .14); font-size: 13.5px; line-height: 1.55; color: #222; }
.pp-pop p { margin: 0 0 6px; }
.pp-pop-h { position: relative; display: flex; align-items: baseline; gap: 6px; margin-bottom: 6px; padding-right: 22px; }
.pp-pop-h b { font-size: 15px; }
.pp-pop-x { position: absolute; top: -4px; right: -6px; width: 26px; height: 26px; border: 0; background: none; font-size: 18px; color: var(--text-3); cursor: pointer; }
.pp-pop-dim { color: var(--text-3); font-size: 12.5px; }
.pp-pop-affil { max-height: 6.2em; overflow: auto; color: var(--text-2); font-size: 12.5px; }
.pp-pop-links a { display: inline-block; margin-right: 10px; color: var(--navy); }
.pp-pop-alum { margin: 8px 0; padding: 8px 10px; border-left: 3px solid var(--navy); background: #eef3fb; }
.pp-pop-alum a { color: var(--navy); }
.pp-pop-k { font-weight: 700; color: var(--navy); }
.pp-pop-act { margin-top: 6px; }
.pp-pop-wrong { padding: 0; border: 0; background: none; color: var(--text-3); font: inherit; font-size: 12.5px; text-decoration: underline; cursor: pointer; }
.pp-pop-fix { display: flex; flex-wrap: wrap; gap: 6px; }
.pp-pop-fix[hidden] { display: none; }
.pp-pop-box { flex: 1 1 100%; }
.pp-pop-pick { margin-top: 8px; }
.pp-pop-pick input { width: 100%; height: 34px; padding: 0 10px; border: 1px solid var(--line); border-radius: var(--radius); font: inherit; }
.pp-pop-pick ul { max-height: 200px; margin: 6px 0; padding: 0; overflow: auto; list-style: none; }
.pp-pop-pick li button { display: block; width: 100%; padding: 6px 8px; border: 0; background: none; text-align: left; font: inherit; cursor: pointer; }
.pp-pop-pick li button:hover { background: #f5f7fa; }
@media (max-width: 640px) {
  .pp-row { grid-template-columns: 1fr; gap: 4px; }
  .pp-no { display: flex; gap: 8px; }
  .pp-title { font-size: 20px; }
  .pp-dl { grid-template-columns: 1fr; }
}

/* SCI 발표논문 (공개 /research/papers) */
.pp-pub { max-width: none; }
.pp-an.is-linked { color: var(--navy); font-weight: 700; }
.pp-ko-l { color: var(--text-3); font-weight: 400; font-size: 12.5px; }
.pp-back { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; margin: 0 0 14px; font-size: 14px; }
.pp-back a:first-child { color: var(--navy); text-decoration: none; }
.pp-foot { margin-top: 18px; }
.pp-total-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 0 0 8px; }
.pp-total-row .pp-total { margin: 0; }
.pp-total-btns { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
.pp-h2 { margin: 0 0 12px; font-size: 20px; color: #111; }
.pp-drafts-h h3 { margin: 0; font-size: 17px; }
.pp-flash { position: fixed; left: 50%; bottom: 24px; z-index: 90; transform: translateX(-50%); max-width: calc(100% - 32px); padding: 10px 16px; background: #1f2937; color: #fff; font-size: 14px; box-shadow: 0 8px 24px rgba(0,0,0,.2); }
.pp-flash.is-bad { background: #9b231d; }
.pp-pub .pp-tools form { display: inline; }
.pp-search input[type=search] { flex: 1 1 260px; }
.pp-search input[type=number] { flex: 0 0 104px; }
.pp-search select, .pp-search .btn { flex: 0 0 auto; }
@media (min-width: 900px) { /* 한 줄로: 찾기 칸이 줄어든다 */
  .pp-search { flex-wrap: nowrap; }
  .pp-search input[type=search] { flex: 1 1 120px; min-width: 120px; }
  .pp-search input[type=number] { flex: 0 0 92px; width: 92px; }
  .pp-search select { flex: 0 1 auto; min-width: 0; max-width: 170px; }
}
/* SCI 발표논문 처음 화면: 연도별 */
.pp-years { margin: 6px 0 0; border-top: 2px solid var(--line-dark); }
.pp-dec { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 12px; padding: 16px 0; border-bottom: 1px solid var(--line-2); }
.pp-dec h3 { margin: 6px 0 0; font-size: 16px; color: #111; }
.pp-dec h3 small { display: block; margin-top: 2px; font-size: 12.5px; font-weight: 400; color: var(--text-3); }
.pp-dec ul { display: grid; grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 8px; margin: 0; padding: 0; list-style: none; }
.pp-dec a { display: flex; flex-direction: column; gap: 2px; padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; color: #111; text-decoration: none; transition: border-color .15s, background .15s; }
.pp-dec a:hover { border-color: var(--navy); background: #f5f8fd; }
.pp-dec a b { font-size: 18px; color: var(--navy); }
.pp-dec a span { font-size: 13px; color: var(--text-2); }
.pp-allink { margin: 14px 0 0; text-align: right; font-size: 14px; }
.pp-allink a { color: var(--navy); }
.pp-ytabs { margin: 0 0 12px; }
@media (max-width: 640px) {
  .pp-dec { grid-template-columns: 1fr; gap: 8px; }
  .pp-dec h3 { margin: 0; }
  .pp-dec h3 small { display: inline; margin-left: 6px; }
  .pp-dec ul { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* 비전 페이지 (/intro/vision, builder/intro_pages.py vision_html): 바깥 상자 없이 구역 제목과 얇은 연결선으로 · Mission 은 신전 그림 */
.vs { max-width: 760px; margin: 0 auto; text-align: center; }
.vs ul { margin: 0; padding: 0; list-style: none; }
.vs ul li { margin: 0; padding: 0; }
.vs ul li::before { display: none; }
.vs-k { display: table; margin: 0 auto 14px; padding: 3px 12px; border-radius: 999px; background: #eef2fa; color: var(--navy); font-size: 11.5px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; }
.vs-vision { position: relative; overflow: hidden; padding: 30px 24px 32px; border-radius: var(--radius); background: radial-gradient(120% 140% at 85% 0%, #3a74d4 0%, #1f4fa8 45%, #163c84 100%); box-shadow: 0 14px 30px -12px rgba(22, 60, 132, .55); color: #fff; }
.vs-vision::after { content: ""; position: absolute; right: -40px; top: -40px; width: 160px; height: 160px; border-radius: 50%; background: rgba(255, 255, 255, .07); }
.vs-vision .vs-k { background: rgba(255, 255, 255, .16); color: #fff; }
.prose .vs-vision p { position: relative; z-index: 1; margin: 0; color: #fff; font-size: 24px; font-weight: 700; line-height: 1.45; letter-spacing: -.01em; }
.vs-link { width: 2px; height: 40px; margin: 10px auto; background: linear-gradient(#c3d0ea, #e4eaf6); }
.vs-chips { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.vs-chips { counter-reset: vs; }
.prose .vs-chips li { position: relative; overflow: hidden; counter-increment: vs; display: flex; flex-direction: column; align-items: center; padding: 20px 10px 18px; border-radius: var(--radius); background: #f4f7fd; }
/* 1 2 3 4: 카드 오른쪽 아래에 옅은 큰 숫자 */
.vs-chips li::after { content: counter(vs); position: absolute; right: 12px; bottom: 10px; font-size: 96px; font-weight: 800; line-height: .72; letter-spacing: 0; font-variant-numeric: tabular-nums; color: #1f4fa8; opacity: .045; pointer-events: none; }
.vs-hanja { position: relative; font-size: 13px; font-weight: 600; letter-spacing: .12em; color: #7d8db0; }
.vs-chips b { position: relative; margin-top: 6px; font-size: 17px; line-height: 1.25; color: var(--navy); }
.vs-chips small { position: relative; margin-top: 10px; padding-top: 10px; border-top: 1px solid #cdd8ec; font-size: 11.5px; line-height: 1.3; color: var(--text-2); }
.prose .vs-quote { max-width: 600px; margin: 0 auto 28px; font-size: 21px; font-weight: 700; line-height: 1.6; letter-spacing: -.01em; color: #1b2a4a; }
/* 신전: 박공 지붕 · 처마 · 기둥 셋 · 기단 두 단 — 기둥이 처마와 기단에 맞붙는다 */
.vs-temple { max-width: 560px; margin: 0 auto; }
.vs-roof { display: flex; align-items: flex-end; justify-content: center; height: 92px; padding-bottom: 14px; background: linear-gradient(180deg, #2c63c4, #1f4fa8); clip-path: polygon(50% 0, 100% 100%, 0 100%); color: #fff; font-size: 18px; font-weight: 700; letter-spacing: .08em; }
.vs-beam { height: 12px; margin: 0 3%; background: #163c84; }
.prose .vs-cols { display: flex; justify-content: space-around; padding: 0 9%; }
.prose .vs-cols li { position: relative; display: flex; align-items: center; justify-content: center; width: 19%; height: 150px;
  background: repeating-linear-gradient(90deg, #eaf0fb 0 6px, #dbe5f6 6px 8px); border-left: 1px solid #c6d4ee; border-right: 1px solid #c6d4ee; }
.vs-cols li::before, .vs-cols li::after { content: ""; position: absolute; left: -9px; right: -9px; height: 9px; background: #c6d4ee; }
.vs-cols li::before { top: 0; }
.vs-cols li::after { bottom: 0; }
.vs-cols span { padding: 6px 4px; background: #fff; border-radius: 4px; box-shadow: 0 1px 3px rgba(22, 60, 132, .15); color: var(--navy); font-size: 17px; font-weight: 700; letter-spacing: .1em; writing-mode: vertical-rl; text-orientation: upright; }
.vs-base { margin: 0 1%; padding: 14px 10px; background: linear-gradient(135deg, #1f4fa8, #163c84); color: #fff; font-size: 16px; font-weight: 700; letter-spacing: .02em; }
.vs-step { height: 10px; background: #9fb3dc; }
@media (max-width: 640px) {
  .vs-chips { grid-template-columns: repeat(2, 1fr); gap: 10px; }
  .prose .vs-vision p { font-size: 18px; }
  .prose .vs-quote { font-size: 17px; }
  .vs-roof { height: 70px; padding-bottom: 10px; font-size: 16px; }
  .prose .vs-cols { padding: 0 6%; }
  .prose .vs-cols li { width: 22%; height: 120px; }
  .vs-cols li::before, .vs-cols li::after { left: -6px; right: -6px; height: 7px; }
  .vs-base { font-size: 14px; }
}

/* 게시판 검색 › 날짜 달력 (app.js) */
.board-search { position: relative; }
.dp { position: absolute; top: calc(100% + 6px); right: 0; z-index: 30; width: 300px; padding: 12px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; box-shadow: 0 12px 30px -10px rgba(0, 0, 0, .25); user-select: none; -webkit-user-select: none; }
.board-search .dp button { height: auto; padding: 0; border: 0; border-radius: 0; background: none; font: inherit; color: #333; cursor: pointer; }
.dp-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.board-search .dp-head > button { width: 32px; height: 32px; border-radius: 50%; font-size: 18px; }
.board-search .dp-head > button.dp-title { width: auto; padding: 4px 10px; border-radius: var(--radius); }
.board-search .dp-head > button:hover { background: #eef2fa; }
.board-search .dp-title, .dp-head b { font-size: 15px; font-weight: 700; color: var(--navy); }
.dp-grid { display: grid; grid-template-columns: repeat(7, 1fr); row-gap: 2px; touch-action: none; }
.dp-grid span { padding: 4px 0; text-align: center; font-size: 12px; color: var(--text-3); }
.dp-grid span:first-child { color: #c0392b; }
.board-search .dp-grid button { height: 36px; font-size: 14px; }
.board-search .dp-grid button:hover { background: #f1f4fa; }
.board-search .dp-grid button.is-today { font-weight: 700; color: var(--navy); }
.board-search .dp-grid button.is-in { background: #dde6f7; color: var(--navy); }
.board-search .dp-grid button.is-lo { border-top-left-radius: 18px; border-bottom-left-radius: 18px; }
.board-search .dp-grid button.is-hi { border-top-right-radius: 18px; border-bottom-right-radius: 18px; }
.board-search .dp-grid button.is-end { background: var(--navy); color: #fff; font-weight: 700; }
.dp-months { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.board-search .dp-months button { height: 44px; border-radius: var(--radius); font-size: 14px; }
.board-search .dp-months button:hover { background: #f1f4fa; }
.board-search .dp-months button.is-in { background: #dde6f7; color: var(--navy); font-weight: 700; }
.board-search .dp-months button.is-end { background: var(--navy); color: #fff; }
.dp-sum { margin: 10px 0 0; min-height: 20px; font-size: 13.5px; text-align: center; color: var(--navy); }
.dp-sum small { color: var(--text-3); font-weight: 500; }
.dp-sum .dp-none { color: var(--text-3); }
.board-search .dp .dp-mark { display: block; width: 100%; margin: 0 0 6px; padding: 5px 8px; border-radius: var(--radius); background: #f4f7fd; font-size: 12px; color: var(--navy); }
.board-search .dp .dp-mark[hidden] { display: none; }
.dp-tip { margin: 2px 0 0; font-size: 12px; color: var(--text-3); text-align: center; }
.dp-foot { display: flex; gap: 6px; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line); }
.board-search .dp-foot button { height: 34px; padding: 0 10px; border-radius: var(--radius); font-size: 13px; }
.board-search .dp-foot [data-whole], .board-search .dp-foot [data-clear] { border: 1px solid var(--line); }
.board-search .dp-foot .dp-go { margin-left: auto; background: var(--navy); color: #fff; }
@media (max-width: 640px) { .dp { left: 0; right: 0; width: auto; } }
.board-list thead th.subject { text-align: center; padding-left: 0; } /* 발표제목 머리줄은 가운데 (칸 내용은 왼쪽) */
