/* 동북권 ICT이노베이션스퀘어 공통 - common.css (모든 페이지에서 가장 먼저 로드)
   - 폰트 · 색상 변수 · 기본 스타일 · 공통 도구(.visually-hidden · .ic-swap · .dot) · 섹션 제목 · 더보기 링크
   - 공통 부품 : 버튼 / 입력 / 체크·라디오 / 탭 / 표 / 페이지 번호 / 선택 버튼 / 안내 박스 / 목록 머리(건수 · 정렬) / 조건 찾기(.filter-box) / 레이어 팝업 / 입력 양식 · 동의 상자 (메인 · 모든 서브 공통)
   - 불러오는 순서 : 메인 common → layout → main  /  서브 common → layout → content (커뮤니티는 community, 마이페이지는 mypage) */
/* ===================== FONTS (사이트 안 fonts 폴더) =====================
   - 본문 Pretendard : 쓰는 굵기 400 · 500 · 600 · 700 · 800 만 (woff2 먼저, 안 되면 woff)
   - 제목 Cafe24Danjunghae (카페24 단정해) : 굵기 하나
   - 파일을 바꿀 때는 fonts 폴더에 같은 이름으로 넣으면 됨 */
@font-face{font-family:'Pretendard';font-weight:400;font-style:normal;font-display:swap;src:url('../fonts/Pretendard-Regular.woff2') format('woff2'),url('../fonts/Pretendard-Regular.woff') format('woff');}
@font-face{font-family:'Pretendard';font-weight:500;font-style:normal;font-display:swap;src:url('../fonts/Pretendard-Medium.woff2') format('woff2'),url('../fonts/Pretendard-Medium.woff') format('woff');}
@font-face{font-family:'Pretendard';font-weight:600;font-style:normal;font-display:swap;src:url('../fonts/Pretendard-SemiBold.woff2') format('woff2'),url('../fonts/Pretendard-SemiBold.woff') format('woff');}
@font-face{font-family:'Pretendard';font-weight:700;font-style:normal;font-display:swap;src:url('../fonts/Pretendard-Bold.woff2') format('woff2'),url('../fonts/Pretendard-Bold.woff') format('woff');}
@font-face{font-family:'Pretendard';font-weight:800;font-style:normal;font-display:swap;src:url('../fonts/Pretendard-ExtraBold.woff2') format('woff2'),url('../fonts/Pretendard-ExtraBold.woff') format('woff');}
@font-face{font-family:'Cafe24Danjunghae';font-weight:normal;font-style:normal;font-display:swap;src:url('../fonts/Cafe24Danjunghae.woff2') format('woff2'),url('../fonts/Cafe24Danjunghae.woff') format('woff');}

/* ===================== RESET / TOKENS ===================== */
:root{
  --primary:#053ea5;
  --primary-dark:#032a73;
  --primary-light:#e8f1fd;
  --sky:#eaf3fd;
  --navy-900:#050f26;
  --navy-800:#0a1a3f;
  --navy-700:#0f2557;
  --ink:#131a2c;
  --gray-700:#4b5468;
  --gray-500:#646e84; /* 흰 배경 대비 5.12:1 (웹접근성 4.5:1 이상) */
  --gray-300:#d7dce6;
  --gray-100:#f4f6fa;
  --white:#ffffff;
  --red:#c9381f; /* 흰 글자 대비 5.16:1 */
  --radius-lg:32px;
  --radius-md:20px;
  --radius-sm:12px;
  --container:1500px;   /* 틀 폭 (max-width, 양쪽 여백 40px 포함 → 내용 폭 1420px) : 메인 · 서브 · 헤더 · 푸터 공통 (2026-09-30 1600 → 1500) */
  --header-h:80px;   /* 로고 · 메뉴 줄 (.main-row) 높이 96 → 80 (사용자 지시, 2026-11-05) */
  --font-title:'Cafe24Danjunghae','Pretendard',sans-serif;
  --font-body:'Pretendard',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  --ease:cubic-bezier(.65,.05,.36,1);
}
*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;scroll-padding:140px 0 96px;-webkit-text-size-adjust:100%;text-size-adjust:100%;}   /* 모바일 가로 화면에서 글자 저절로 커지지 않게 (손가락 확대는 그대로) / scroll-padding : Tab 으로 초점이 갈 때 위에 붙은 헤더(124px) · 오른쪽 아래 맨 위로 버튼에 가리지 않게 띄움 (웹접근성 2.1.2) */
@media (max-width:1000px){ html{scroll-padding-top:92px;} }   /* 태블릿 · 모바일 헤더 76px */
@media (max-width:640px){ html{scroll-padding-bottom:76px;} }   /* 모바일 맨 위로 버튼 46px + 아래 18px */
body{
  margin:0;
  font-family:var(--font-body);
  color:var(--ink);
  background:var(--white);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
ul{list-style:none;margin:0;padding:0;}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;}
.container{max-width:var(--container);margin:0 auto;padding:0 40px;}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;}
/* 아이콘 이미지 색 바꾸기 : 색만 다른 이미지 2장(.ic-off 기본 / .ic-on 바뀐 색) - 마우스를 올리는 요소에 .ic-swap */
.ic-swap .ic-on,.ic-swap:hover .ic-off{display:none;}
.ic-swap:hover .ic-on{display:block;}
.skip-link{
  position:absolute;left:12px;top:-60px;z-index:999;background:var(--primary);color:#fff;
  padding:12px 20px;border-radius:8px;font-weight:700;font-size:clamp(13px, 12.69px + 0.082vw, 14px);transition:top .2s var(--ease);
}
.skip-link:focus{top:12px;}
::selection{background:var(--primary);color:#fff;}

/* generic section title */
.sec-eyebrow{display:inline-flex;align-items:center;gap:8px;color:var(--primary);font-weight:700;font-size:clamp(13px, 12.39px + 0.163vw, 15px);margin-bottom:10px;}
.sec-title{
  font-family:var(--font-title);
  font-size:clamp(26px, 20.49px + 1.469vw, 44px);
  line-height:1.3;
  color:var(--ink);
  font-weight:400;
  letter-spacing:-.5px;
  word-break:keep-all;   /* 좁은 화면에서 한 글자씩 끊기지 않고 낱말째 다음 줄로 (예 : "교육과정", 사용자 지시) */
  margin-bottom:0;   /* 제목 · 설명(.sec-desc) 간격 = 설명 위 12px (h2 기본 아래 여백 36px 없앰, 사용자 지시 2026-11-02 — 메인 모든 섹션 같게) */
}
.sec-title b, .sec-title .accent{color:var(--primary);font-weight:400;}
/* 카페24 단정해에는 가운뎃점(·) 글자가 없어 본문 폰트로 표시 : <span class="dot">·</span> */
.dot{font-family:var(--font-body);font-weight:800;}
.sec-desc{margin-top:12px;font-size:clamp(14px, 12.47px + 0.408vw, 19px);color:var(--gray-700);line-height:1.6;word-break:keep-all;}

/* ===================== RESPONSIVE TYPOGRAPHY =====================
   글자 크기는 각 요소에서 clamp(모바일 375px 크기, 비례값, PC 1600px 크기)로 지정 → 화면 폭에 맞춰 자동 조절 */
.more-link{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--font-title);font-size:clamp(13px, 12.39px + 0.163vw, 15px);font-weight:400;color:var(--gray-700);
  transition:color .25s var(--ease);
}
.more-link:hover{color:var(--primary);}
.more-link .plus{
  width:26px;height:26px;border-radius:8px;background:var(--sky);color:var(--primary);
  display:flex;align-items:center;justify-content:center;font-size:clamp(14px, 13.69px + 0.082vw, 15px);flex:none;
  transition:background .35s var(--ease),color .35s var(--ease);
}
.more-link .plus-icon{
  display:flex;align-items:center;justify-content:center;
  width:14px;height:14px;transform-origin:50% 50%;
  transition:transform .5s cubic-bezier(.34,1.56,.64,1);
}
.more-link .plus-icon img{width:100%;height:100%;display:block;transition:filter .35s var(--ease);}
.more-link:hover .plus{background:var(--primary);color:#fff;}
.more-link:hover .plus-icon img{filter:brightness(0) invert(1);}   /* 아이콘 흰색 */
.more-link:hover .plus-icon{transform:rotate(360deg);}

/* ===================== 공통 부품 : 버튼 / 입력 / 체크·라디오 / 탭 / 표 / 페이지 번호 ===================== */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:96px;height:48px;padding:0 22px;border-radius:12px;
  border:1px solid transparent;font-size:clamp(14px, 13.69px + 0.082vw, 15px);font-weight:700;transition:background .2s,color .2s,border-color .2s;
}
.btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px;}
.btn-primary{background:var(--primary);color:#fff;}
.btn-primary:hover{background:var(--primary-dark);}
.btn-line{background:#fff;border-color:#cfd8e6;color:var(--ink);}
.btn-line:hover{border-color:var(--primary);color:var(--primary);}
/* 알약 + 파란 원 화살표 버튼 (.ab-ct-go + 안에 <span class="ab-ct-go-ic" aria-hidden="true"></span>, 새 창은 .is-ext ↗) : 교육장 소개 누리집 · 소개 오시는 길 · 마이페이지 강의실 [수강내역으로] — 위 간격은 쓰는 곳 CSS 에서 */
.ab-ct-go{display:inline-flex;align-items:center;gap:12px;height:52px;padding:0 7px 0 24px;border-radius:999px;background:#fff;box-shadow:inset 0 0 0 1.5px var(--primary),0 12px 22px -16px rgba(5,62,165,.6);font-size:clamp(14.5px, 14.19px + 0.082vw, 15.5px);font-weight:800;color:var(--primary);text-decoration:none;white-space:nowrap;transition:background .25s,color .25s;}   /* 흰 알약 + 파란 테두리 + 파란 원 화살표, 마우스 올리면 파랑 채움 (사용자 지시 3안 중 B — 이용안내 버튼 .gb-btn 과 같은 모양) */
.ab-ct-go:hover{background:var(--primary);color:#fff;}
.ab-ct-go [lang="en"]{letter-spacing:.04em;}   /* VIEW MORE (원문 글자, 사용자 지시) */
.ab-ct-go:focus-visible{outline:2px solid var(--primary);outline-offset:3px;}
.ab-ct-go-ic{flex:none;display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;background:var(--primary);transition:background .25s;}
.ab-ct-go-ic::before{content:'';width:16px;height:16px;background:#fff;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4'/%3E%3C/svg%3E") center/contain no-repeat;transition:transform .25s var(--ease),background .25s;}   /* → 화살표 (장식) */
.ab-ct-go-ic.is-ext::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.5 11.5l7-7M6 4.5h5.5V10'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.5 11.5l7-7M6 4.5h5.5V10'/%3E%3C/svg%3E");}   /* 새 창 : ↗ 화살표 (장식, 새 창 안내는 title · 숨김 글자) */
.ab-ct-go:hover .ab-ct-go-ic{background:#fff;}
.ab-ct-go:hover .ab-ct-go-ic::before{background:var(--primary);transform:translateX(3px);}
.ab-ct-go:hover .ab-ct-go-ic.is-ext::before{transform:translate(2px,-2px);}
@media (prefers-reduced-motion:reduce){ .ab-ct-go,.ab-ct-go-ic,.ab-ct-go-ic::before{transition:none;} }

.input{height:44px;padding:0 12px;border:1px solid #7f8ba0;border-radius:10px;background:#fff;font:inherit;font-size:clamp(13px, 12.69px + 0.082vw, 14px);color:var(--ink);}
.input:focus{border-color:var(--primary);outline:2px solid var(--primary);outline-offset:-1px;}
.input:disabled{background:#eef2f7;color:var(--gray-500);cursor:not-allowed;}

.chk{display:inline-flex;align-items:center;gap:8px;font-size:clamp(13.5px, 13.19px + 0.082vw, 14.5px);color:var(--ink);cursor:pointer;word-break:keep-all;}
.chk input{flex:none;width:18px;height:18px;margin:0;accent-color:var(--primary);cursor:pointer;}
.chk input:focus-visible{outline:2px solid var(--primary);outline-offset:2px;}

/* 탭 (서브 공통) : 흰 둥근 바 + 선택 탭만 파란 알약 (내용 폭만큼, 가운데)
   <div class="tab-switch" role="tablist" aria-label="탭 설명" data-tabs>
     <button type="button" role="tab" id="탭id" aria-controls="패널id" aria-selected="true"><span class="tl-txt">이름</span></button> ...
   - 이름 옆 작은 설명 : <span class="tl-sub">설명</span> / 개수 : <span class="count">12</span> (js/content.js 가 전환·방향키 처리) */
.tab-switch{
  display:flex;flex-wrap:wrap;justify-content:center;gap:4px;width:fit-content;max-width:100%;margin:0 auto clamp(28px, 22.49px + 1.469vw, 46px);padding:8px;
  border-radius:999px;background:#fff;border:1px solid #e8eef7;box-shadow:0 14px 32px -18px rgba(5,40,100,.3);
}
.tab-switch [role="tab"]{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:clamp(48px, 44.94px + 0.816vw, 58px);padding:0 clamp(20px, 13.88px + 1.633vw, 40px);
  border-radius:999px;font-size:clamp(15px, 14.08px + 0.245vw, 18px);font-weight:600;color:var(--ink);white-space:nowrap;
  transition:background .25s var(--ease),color .25s var(--ease),box-shadow .25s var(--ease);
}
.tab-switch [role="tab"]:hover{background:var(--primary-light);color:var(--primary);}
.tab-switch [role="tab"][aria-selected="true"]{background:var(--primary);color:#fff;font-weight:700;box-shadow:0 8px 18px -8px rgba(5,62,165,.6);}
.tab-switch [role="tab"]:focus-visible{outline:2px solid var(--primary);outline-offset:2px;}
.tab-switch .tl-sub{font-size:.88em;font-weight:500;color:var(--gray-700);}
.tab-switch [aria-selected="true"] .tl-sub{color:rgba(255,255,255,.85);}
.tab-switch .count{
  display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:24px;padding:0 8px;border-radius:999px;
  background:#f2f7fd;color:var(--gray-700);font-size:clamp(12px, 11.69px + 0.082vw, 13px);font-weight:700;
}
.tab-switch [aria-selected="true"] .count{background:rgba(255,255,255,.2);color:#fff;}
@media (max-width:640px){   /* 스크립트가 없을 때 모바일 */
  .tab-switch{width:100%;padding:6px;border-radius:28px;}
  .tab-switch [role="tab"]{flex:1 1 auto;gap:6px;padding:6px 14px;white-space:normal;text-align:center;word-break:keep-all;}
  .tab-switch [role="tab"]:has(.tl-sub){flex-direction:column;gap:0;}   /* 이름 + 설명 탭(오시는 길)은 두 줄 */
}

/* 탭 드롭다운 (반응형 1000px 이하) : 서브 비주얼 아래 위치 바와 같은 모양 - [현재 탭 ▾] 버튼 + 펼쳐지는 탭 목록
   - 버튼·감싸는 요소(.tab-drop)는 js/content.js 가 만듦, PC 에서는 버튼을 숨기고 위의 둥근 탭 그대로
   - 대상 : .tab-switch 탭 + data-tab-drop 이 붙은 탭 목록(교육장 소개 카드 탭 .ab-ct-tabs) — 그래서 목록 선택자는 [role="tablist"] */
.tab-drop{position:relative;}
.tab-drop-btn{display:none;}
@media (max-width:1000px){
  .tab-drop{z-index:20;margin-bottom:clamp(24px, 19.1px + 1.306vw, 40px);}
  .tab-drop-btn{
    display:flex;align-items:center;gap:8px;width:100%;height:56px;padding:0 22px;border-radius:14px;
    background:var(--primary);color:#fff;font-size:clamp(16px, 15.54px + 0.122vw, 17.5px);font-weight:700;text-align:left;transition:border-radius .2s;
  }
  .tab-drop-btn::after{   /* ▼ (열리면 ▲) */
    content:'';flex:none;margin-left:auto;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid #fff;transition:transform .25s var(--ease);
  }
  .tab-drop-btn[aria-expanded="true"]{border-radius:14px 14px 0 0;}
  .tab-drop-btn[aria-expanded="true"]::after{transform:rotate(180deg);}
  .tab-drop-btn:focus-visible{outline:2px solid var(--primary);outline-offset:3px;}
  .tdb-txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .tdb-sub{overflow:hidden;min-width:0;font-size:.88em;font-weight:500;color:rgba(255,255,255,.85);text-overflow:ellipsis;white-space:nowrap;}
  .tab-drop [role="tablist"]{
    display:none;position:absolute;left:0;right:0;top:100%;flex-direction:column;flex-wrap:nowrap;gap:0;width:auto;margin:0;padding:10px 0;
    border:0;border-radius:0 0 14px 14px;background:#fff;box-shadow:0 18px 30px -18px rgba(5,40,100,.35);
  }
  .tab-drop.is-open [role="tablist"]{display:flex;}
  .tab-drop [role="tablist"] [role="tab"]{
    flex:none;flex-direction:row;justify-content:center;gap:8px;min-height:44px;padding:9px 16px;border-radius:0;
    background:none;box-shadow:none;color:var(--gray-700);font-size:clamp(15px, 14.69px + 0.082vw, 16px);font-weight:500;white-space:normal;
  }
  .tab-drop [role="tablist"] [role="tab"]{border-bottom:1px solid #e9edf3;}   /* 펼친 목록 항목 아래 선 (사용자 지시 — 모바일 메뉴 하위 목록 .mobile-sub li 와 같음) */
  .tab-drop [role="tablist"] [role="tab"]:last-child{border-bottom:0;}
  .tab-drop [role="tablist"] [role="tab"]:hover{background:var(--primary-light);color:var(--primary);}
  .tab-drop [role="tablist"] [role="tab"][aria-selected="true"]{background:none;box-shadow:none;color:var(--primary);font-weight:700;}
  .tab-drop [role="tablist"] [role="tab"][aria-selected="true"]::after{   /* 선택 표시 체크 (색 외에 모양으로도 구분) */
    content:'';flex:none;width:14px;height:14px;
    background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14' fill='none' stroke='%23053ea5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 7.3 5.6 10.2 11.5 3.8'/%3E%3C/svg%3E") center/contain no-repeat;
  }
  .tab-drop [role="tablist"] [role="tab"]:focus-visible{outline:2px solid var(--primary);outline-offset:-3px;}
  .tab-drop [role="tablist"] [aria-selected="true"] .tl-sub{color:var(--gray-700);}
  .tab-drop [role="tablist"] [aria-selected="true"] .count{background:var(--primary);color:#fff;}
}
@media (max-width:640px){
  .tab-drop-btn{height:50px;padding:0 16px;font-size:clamp(15px, 14.69px + 0.082vw, 16px);}
  .tab-drop [role="tablist"] [role="tab"]{font-size:clamp(14.5px, 14.19px + 0.082vw, 15.5px);}
}
.tab-panel:focus-visible{outline:2px solid var(--primary);outline-offset:8px;border-radius:8px;}

/* 표 : <table class="tbl"> + caption(보이지 않게 가능) + th scope(col/row) / 왼쪽 정렬 칸은 class="left" */
.tbl-wrap{width:100%;}
.tbl{width:100%;border-collapse:collapse;border-top:2px solid var(--ink);font-size:clamp(14px, 13.39px + 0.163vw, 16px);}
.tbl th,.tbl td{padding:clamp(14px, 12.16px + 0.49vw, 20px) clamp(10px, 6.94px + 0.816vw, 20px);border-bottom:1px solid #e3ecf7;text-align:center;line-height:1.6;word-break:keep-all;}
.tbl thead th{background:#f4f9fe;border-bottom-color:#cddbee;color:var(--ink);font-weight:700;}
.tbl tbody th{color:var(--ink);font-weight:700;}
.tbl td{color:var(--gray-700);}
.tbl .left{text-align:left;}
.tbl tbody tr{transition:background .2s;}
.tbl tbody tr:hover{background:#fafcff;}

/* 페이지 번호 : 현재 페이지는 a[aria-current="page"], 화살표 링크 안에는 visually-hidden 글자
   번호는 한 번에 10개까지 (… 없음, 사용자 지시 2026-11-05 — 모든 목록 공통) */
.pagination{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:6px;margin-top:clamp(32px, 27.1px + 1.306vw, 48px);}
.pagination a{
  display:flex;align-items:center;justify-content:center;min-width:40px;height:40px;padding:0 8px;border-radius:12px;border:1px solid #dfe6f0;   /* 모든 칸 테두리 실선 */
  font-size:clamp(14px, 13.69px + 0.082vw, 15px);font-weight:600;color:var(--gray-700);transition:background .2s,color .2s,border-color .2s;
}
.pagination a:hover{background:var(--primary-light);border-color:#b3cae9;color:var(--primary);}
.pagination a[aria-current="page"]{background:var(--primary);border-color:var(--primary);color:#fff;}
.pagination a:focus-visible{outline:2px solid var(--primary);outline-offset:2px;}
.pagination .pg-arrow{color:var(--gray-700);}
.pagination .pg-arrow::before{content:'';width:16px;height:16px;background:currentColor;-webkit-mask:var(--ic) center/contain no-repeat;mask-image:var(--ic);mask-position:center;mask-size:contain;mask-repeat:no-repeat;}
.pagination .pg-prev{margin-right:6px;}
.pagination .pg-next{margin-left:6px;}
.pg-first{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 4 4 8l4 4M12.5 4l-4 4 4 4'/%3E%3C/svg%3E");}
.pg-prev{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 4 6 8l4 4'/%3E%3C/svg%3E");}
.pg-next{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 4 4 4-4 4'/%3E%3C/svg%3E");}
.pg-last{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m3.5 4 4 4-4 4M8 4l4 4-4 4'/%3E%3C/svg%3E");}
.pg-ellipsis{display:flex;align-items:flex-end;justify-content:center;min-width:28px;height:40px;padding-bottom:10px;font-size:clamp(14px, 13.69px + 0.082vw, 15px);font-weight:700;color:var(--gray-500);letter-spacing:1px;}   /* 페이지가 많을 때 가운데 생략 (…) : 장식 */
@media (max-width:768px){   /* 태블릿 세로 · 모바일 : 처음 · 마지막 화살표는 숨기고 번호 10개 + 이전 · 다음을 한 줄에 (칸 폭은 화면에 맞춰 줄고, 세로 36px 은 유지) */
  .pagination{flex-wrap:nowrap;gap:3px;}
  .pagination a{flex:1 1 0;min-width:0;max-width:40px;height:36px;padding:0;border-radius:10px;}
  .pagination .pg-first,.pagination .pg-last,.pagination .pg-far{display:none;}   /* 모바일 : 처음 · 마지막 숨김, 번호는 현재 쪽 둘레 5개만 (.pg-far = js/common.js, 사용자 지시) */
  .pagination .pg-prev{margin-right:3px;}
  .pagination .pg-next{margin-left:3px;}
  .pagination .pg-arrow::before{width:14px;height:14px;}
}


/* 표 가로 스크롤 : <div class="tbl-scroll" tabindex="0" role="region" aria-label="표 이름"> 안에 표 (좁은 화면에서 좌우로 밀어서 보기) */
.tbl-scroll{position:relative;overflow-x:auto;}   /* position : 숨김 글자(.visually-hidden) 같은 absolute 요소도 스크롤 영역 안에 가둠 */
.tbl-scroll:focus-visible{outline:2px solid var(--primary);outline-offset:4px;border-radius:4px;}

/* 버튼 크기 · 모양 : 큰 버튼(.btn-lg) + 오른쪽 화살표(.btn-arrow) / 작은 버튼(.btn-sm) / 돋보기 검색 버튼(.btn-search) */
.btn-area{display:flex;justify-content:center;margin-top:clamp(28px, 22.49px + 1.469vw, 46px);}
.btn-lg{height:clamp(52px, 49.55px + 0.653vw, 60px);padding:0 clamp(28px, 24.33px + 0.98vw, 40px);border-radius:999px;font-size:clamp(15px, 14.39px + 0.163vw, 17px);}
.btn-arrow::after{   /* 오른쪽 화살표 (장식) */
  content:'';flex:none;width:16px;height:16px;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4'/%3E%3C/svg%3E") center/contain no-repeat;
  transition:transform .25s var(--ease);
}
.btn-arrow:hover::after{transform:translateX(3px);}
.btn-line.btn-arrow::after{   /* 흰 바탕 버튼 : 화살표가 글자색을 따라감 (마우스 올리면 파랑) */
  background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4'/%3E%3C/svg%3E") center/contain no-repeat;
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4'/%3E%3C/svg%3E");mask-position:center;mask-size:contain;mask-repeat:no-repeat;
}
.btn-sm{min-width:0;height:38px;padding:0 14px;border-radius:10px;font-size:clamp(12.5px, 12.19px + 0.082vw, 13.5px);}
.btn-search{flex:none;height:44px;min-width:0;padding:0 22px;border-radius:10px;}
.btn-search::before{   /* 돋보기 (장식) */
  content:'';flex:none;width:16px;height:16px;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round'%3E%3Ccircle cx='10.5' cy='10.5' r='6.5'/%3E%3Cpath d='M15.5 15.5 20 20'/%3E%3C/svg%3E") center/contain no-repeat;
}

/* 선택 버튼 : 알약 토글(.chip, aria-pressed) / 알약 라디오(.rdo) / 필수 표시(.req) */
.chip{
  display:inline-flex;align-items:center;gap:7px;height:40px;padding:0 18px;border-radius:999px;border:1px solid #d3deec;background:#fff;
  font-size:clamp(13.5px, 13.19px + 0.082vw, 14.5px);font-weight:600;color:var(--gray-700);transition:background .2s,border-color .2s,color .2s;
}
.chip:hover{border-color:var(--primary);color:var(--primary);}
.chip[aria-pressed="true"]{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:700;}
.chip:focus-visible{outline:2px solid var(--primary);outline-offset:2px;}
.chip-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--c);box-shadow:0 0 0 2px #fff;}
.rdo{position:relative;display:inline-flex;cursor:pointer;}
.rdo input{position:absolute;inset:0;margin:0;opacity:0;cursor:pointer;}   /* 실제 라디오 (보이지 않지만 키보드 · 스크린리더로 조작) */
.rdo span{display:inline-flex;align-items:center;height:40px;padding:0 18px;border-radius:999px;border:1px solid #d3deec;background:#fff;font-size:clamp(13.5px, 13.19px + 0.082vw, 14.5px);font-weight:600;color:var(--gray-700);transition:background .2s,border-color .2s,color .2s;}
.rdo:hover span{border-color:var(--primary);color:var(--primary);}
.rdo input:checked + span{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:700;}
.rdo input:focus-visible + span{outline:2px solid var(--primary);outline-offset:2px;}
.req{margin-left:3px;color:var(--red);font-weight:800;}

/* 안내 박스 : 연한 회색 바탕 + 안쪽 회색 점선 + 파란 원 아이콘(.gb-ic) + 안내 글 */
.guide-box{   /* 안쪽 점선 : 교육 소개(.cv-intro)와 같음 / 배경 : 아주 연한 회색 */
  position:relative;display:flex;align-items:center;gap:clamp(14px, 11.55px + 0.653vw, 22px);margin-bottom:clamp(20px, 16.33px + 0.98vw, 32px);
  padding:clamp(28px, 25.55px + 0.653vw, 36px) clamp(28px, 22.49px + 1.469vw, 46px);border-radius:28px;background:rgba(232, 232, 232, 0.2);
}
.guide-box::before{content:'';position:absolute;inset:12px;border:2px dashed #c3cddb;border-radius:20px;pointer-events:none;}   /* 안쪽 회색 점선 (장식) */
.guide-box > *{position:relative;}
.gb-ic{flex:none;display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:50%;background:var(--primary);box-shadow:0 0 0 6px #e3eefb;}   /* images/common/play_icon.svg */
.gb-ic img{width:18px;height:18px;margin-left:3px;}
.guide-box p{margin:0;font-size:clamp(14.5px, 14.04px + 0.122vw, 16px);line-height:1.7;color:var(--gray-700);word-break:keep-all;}
.guide-box strong{color:var(--primary);font-weight:800;}
.guide-box a{margin-left:2px;color:var(--primary);font-weight:800;text-decoration:underline;text-underline-offset:3px;transition:color .2s;}   /* 안내 글 안 링크 */
.guide-box a:hover{color:var(--primary-dark);}
.guide-box a:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:3px;}
/* 안내 박스 오른쪽 버튼 : <a class="gb-btn">글자<span class="gb-btn-ic" aria-hidden="true"></span></a> — 흰 알약 + 파란 테두리 + 파란 원 화살표, 마우스 올리면 파랑 채움 (사용자 지시) */
.guide-box .gb-btn{flex:none;display:inline-flex;align-items:center;gap:12px;height:50px;margin-left:auto;padding:0 7px 0 22px;border-radius:999px;background:#fff;box-shadow:inset 0 0 0 1.5px var(--primary),0 12px 22px -16px rgba(5,62,165,.6);font-size:clamp(14.5px, 14.19px + 0.082vw, 15.5px);font-weight:800;color:var(--primary);text-decoration:none;white-space:nowrap;transition:background .25s,color .25s;}
.gb-btn-ic{flex:none;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--primary);transition:background .25s;}
.gb-btn-ic::before{content:'';width:15px;height:15px;background:#fff;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4'/%3E%3C/svg%3E") center/contain no-repeat;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4'/%3E%3C/svg%3E");mask-position:center;mask-size:contain;mask-repeat:no-repeat;transition:background .25s,transform .25s var(--ease);}   /* 화살표 (장식) */
.guide-box .gb-btn:hover{background:var(--primary);color:#fff;}
.gb-btn:hover .gb-btn-ic{background:#fff;}
.gb-btn:hover .gb-btn-ic::before{background:var(--primary);transform:translateX(2px);}
.guide-box .gb-btn:focus-visible{outline:2px solid var(--primary);outline-offset:3px;border-radius:999px;}

/* 조건 찾기 (공통 : 교육신청 · 시설 · 장비 목록, 커뮤니티 게시판) : 연파랑 상자 + 줄마다 [이름 | 버튼 · 입력]
   <div class="filter-box"><div class="fb-row"><p class="fb-label" id="이름id">분류</p><div class="fb-chips" role="group" aria-labelledby="이름id">.chip …</div></div>
   <form class="fb-row fb-search" role="search" aria-label="…"><p class="fb-label">검색</p><div class="fb-fields">select.select + <div class="fb-keyword">input.input + button.btn-search</div></div></form></div>
   - 분류를 링크로 걸러 보는 게시판 : <nav class="fb-chips"> 안에 a.chip, 고른 분류 aria-current="true" */
.filter-box{padding:clamp(18px, 12.49px + 1.469vw, 36px) clamp(18px, 9.43px + 2.286vw, 46px);border-radius:24px;background:#f5f9fe;border:1px solid #e3ecf7;}
.fb-fold-head{display:none;}   /* 조건 찾기 열고 닫기 줄 : 태블릿 · 모바일에서만 (js/common.js 가 넣음) */
@media (max-width:1000px){
  .filter-box.is-fold{padding:16px 20px;}
  .fb-fold-head{display:flex;align-items:center;justify-content:space-between;gap:12px;}
  .fb-fold-title{margin:0;font-size:clamp(15px, 14.69px + 0.082vw, 16px);font-weight:800;color:var(--ink);}
  .fb-fold-btn{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 14px;border-radius:999px;border:1px solid #cfd8e6;background:#fff;font-size:clamp(14px, 13.69px + 0.082vw, 15px);font-weight:600;color:var(--ink);}   /* 통합검색 상세 필터 [필터 열기] 와 같은 모양 */
  .fb-fold-btn::after{content:'';width:7px;height:7px;border-right:1.8px solid currentColor;border-bottom:1.8px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .2s;}   /* 화살표 : 닫힘 ∨ / 열림 ∧ */
  .fb-fold-btn[aria-expanded="true"]::after{transform:translateY(2px) rotate(-135deg);}
  .fb-fold-btn:hover{border-color:var(--primary);color:var(--primary);}
  .fb-fold-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px;}
  .filter-box.is-fold-open .fb-fold-head{margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid #d9e4f2;}
}
@media (prefers-reduced-motion:reduce){ .fb-fold-btn::after{transition:none;} }
.fb-row{display:flex;align-items:center;gap:12px 20px;}
.fb-row + .fb-row{margin-top:14px;padding-top:14px;border-top:1px dashed #d6e2f1;}
.fb-label{flex:none;width:52px;margin:0;font-size:clamp(14px, 13.69px + 0.082vw, 15px);font-weight:800;color:var(--ink);}
.fb-chips{display:flex;flex-wrap:wrap;gap:8px;}
.fb-fields{flex:1 1 auto;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;}
.fb-fields .select{flex:none;}
.fb-dates{display:flex;align-items:center;gap:8px;color:var(--gray-700);}
.fb-dates .input{width:170px;}
.fb-keyword{flex:1 1 320px;min-width:0;display:flex;gap:8px;}
.fb-keyword .input{flex:1 1 auto;min-width:0;}
[data-filter-list] > [hidden]{display:none !important;}   /* 조건에 맞지 않아 숨긴 항목 (항목 display 보다 우선, js/common.js) */
.list-empty{margin:0;padding:clamp(48px, 40.65px + 1.959vw, 72px) 20px;border-radius:24px;background:#f5f9fe;text-align:center;font-size:clamp(14.5px, 14.19px + 0.082vw, 15.5px);color:var(--gray-700);}   /* 조건에 맞는 항목이 없을 때 (목록 아래 p.list-empty[data-filter-empty]) — 교육 · 예약 · 게시판 공통 */
.chip[aria-current="true"]{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:700;}   /* 링크 알약(a.chip)의 고른 분류 */
@media (max-width:1000px){
  .fb-row{align-items:flex-start;}
  .fb-label{padding-top:10px;}
  /* 검색 줄 : 검색 항목 선택 상자도 칸 끝까지, 검색어 칸은 다음 줄 (사용자 지시 — 태블릿에서 검색 옆 선택 상자 100%) / 선택 상자가 둘이면 반씩 */
  .fb-fields:has(> .fb-keyword) > .select{flex:1 1 0%;width:auto;min-width:0;}
  .fb-fields:has(> .select) > .fb-keyword{flex:1 1 100%;}
  /* 태블릿부터 분류 알약(.fb-chips) → 선택 상자 모양 (사용자 지시 — 위치 바 .sub-path 처럼, 줄마다 [이름 | 상자 칸 끝까지])
     - 닫힘 : 고른 항목(aria-pressed / aria-current = true)만 상자 안에 글자로, 나머지는 화면에서만 숨김(스크린리더 · Tab 으로는 그대로 닿음)
     - 열림(.is-open) : 상자(고른 항목)를 누르면 아래로 목록 — 열고 닫기는 js/common.js (항목 고르면 · 바깥 누르면 · Esc 닫힘, Tab 초점이 들어오면 열림)
     - 항목은 그대로 버튼 · 링크(누르면 기존 js 가 걸러 보기 · 이동) → 마크업 변경 없음 */
  .filter-box .fb-chips{position:relative;z-index:1;flex:1 1 auto;min-width:0;flex-direction:column;flex-wrap:nowrap;gap:0;height:44px;border-radius:10px;background:#fff;box-shadow:inset 0 0 0 1px #7f8ba0;}   /* 테두리는 안쪽 그림자 (목록 항목과 양쪽 끝이 정확히 같게 — 화면 배율에 따라 border 가 0.67px 로 그려져 어긋나던 것) */
  .filter-box .fb-chips::after{content:'';position:absolute;top:15px;right:16px;width:8px;height:8px;border-right:2px solid var(--gray-700);border-bottom:2px solid var(--gray-700);transform:rotate(45deg);transition:transform .25s var(--ease),top .25s var(--ease);pointer-events:none;}   /* 아래 화살표 (장식) */
  .filter-box .fb-chips .chip{position:absolute;width:1px;height:1px;padding:0;border:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;}   /* 닫힘 : 고르지 않은 항목은 화면에서만 숨김 */
  .filter-box .fb-chips .chip:is([aria-pressed="true"],[aria-current="true"]){order:-1;position:static;flex:none;width:100%;height:44px;padding:0 44px 0 14px;clip:auto;border:0;border-radius:10px;background:transparent;font-weight:700;color:var(--ink);}   /* 상자 글자 = 고른 항목 */
  .filter-box .fb-chips.is-open{z-index:30;border-radius:10px 10px 0 0;box-shadow:inset 0 0 0 1px var(--primary);filter:drop-shadow(0 14px 16px rgba(5,40,100,.16));}
  .filter-box .fb-chips.is-open::after{top:19px;transform:rotate(-135deg);}
  .filter-box .fb-chips.is-open .chip{position:static;flex:none;width:100%;height:42px;margin:0;padding:0 14px;clip:auto;border:0;border-radius:0;background:#fff;box-shadow:inset 1px 0 0 var(--primary),inset -1px 0 0 var(--primary),inset 0 1px 0 #e3ecf7;font-weight:600;color:var(--gray-700);}   /* 열림 : 아래로 목록 (상자와 같은 폭, 항목 사이 연한 선) */
  .filter-box .fb-chips.is-open .chip:is([aria-pressed="true"],[aria-current="true"]){height:44px;padding-right:44px;border-radius:10px 10px 0 0;background:var(--primary-light);box-shadow:inset 0 0 0 1px var(--primary);font-weight:700;color:var(--primary);}
  .filter-box .fb-chips.is-open .chip:last-child:not([aria-pressed="true"]):not([aria-current="true"]),
  .filter-box .fb-chips.is-open .chip:has(+ .chip:is([aria-pressed="true"],[aria-current="true"]):last-child){height:43px;border-radius:0 0 10px 10px;box-shadow:inset 1px 0 0 var(--primary),inset -1px 0 0 var(--primary),inset 0 1px 0 #e3ecf7,inset 0 -1px 0 var(--primary);}   /* 목록 맨 아래 항목 */
  .filter-box .fb-chips.is-open .chip:hover{background:var(--primary-light);color:var(--primary);}
  .filter-box .fb-chips .chip:focus-visible{outline:2px solid var(--primary);outline-offset:-3px;}
}
@media (max-width:640px){
  .fb-row{flex-direction:column;gap:10px;}
  .fb-label{width:auto;padding-top:0;}
  .fb-fields,.fb-dates{width:100%;}
  .filter-box .fb-chips{flex:none;width:100%;}   /* 모바일 : 이름 한 줄, 선택 상자는 아래 줄 칸 가득 (사용자 지시 — 태블릿은 [이름 | 상자] 한 줄 유지) */
  .fb-fields .select{width:100%;}
  .fb-dates .input{flex:1 1 0%;width:auto;min-width:0;}
}

/* 전화번호 링크 : <a href="tel:…" class="tel-link"> — 앞에 전화 아이콘 (조직도 연락처 표와 같은 모양, 사용자 지시) / 상세 요약 표 '문의' 등, 앞 글자(○○ 담당)와 8px 띄움 */
a.tel-link[href^="tel:"]{display:inline-flex;align-items:center;gap:6px;margin-left:8px;vertical-align:top;font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink);text-decoration:none;white-space:nowrap;transition:color .2s;}
a.tel-link[href^="tel:"]::before{content:'';flex:none;width:15px;height:15px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.6 10.8a15.1 15.1 0 0 0 6.6 6.6l2.2-2.2a1 1 0 0 1 1-.25 11.4 11.4 0 0 0 3.6.57 1 1 0 0 1 1 1V20a1 1 0 0 1-1 1A17 17 0 0 1 3 4a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1 11.4 11.4 0 0 0 .57 3.6 1 1 0 0 1-.25 1z'/%3E%3C/svg%3E") center/contain no-repeat;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.6 10.8a15.1 15.1 0 0 0 6.6 6.6l2.2-2.2a1 1 0 0 1 1-.25 11.4 11.4 0 0 0 3.6.57 1 1 0 0 1 1 1V20a1 1 0 0 1-1 1A17 17 0 0 1 3 4a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1 11.4 11.4 0 0 0 .57 3.6 1 1 0 0 1-.25 1z'/%3E%3C/svg%3E");mask-position:center;mask-size:contain;mask-repeat:no-repeat;}   /* 전화 아이콘 (장식) */
a.tel-link[href^="tel:"]:hover{color:var(--primary);text-decoration:underline;text-underline-offset:3px;}
a.tel-link[href^="tel:"]:focus-visible{outline:2px solid var(--primary);outline-offset:3px;border-radius:4px;}

/* 목록 머리 : 건수 + 정렬 */
.board-top{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 20px;margin:clamp(28px, 22.49px + 1.469vw, 46px) 0 clamp(16px, 13.55px + 0.653vw, 24px);}
.board-total{margin:0;font-size:clamp(14px, 13.69px + 0.082vw, 15px);color:var(--gray-700);}
.board-total b{color:var(--primary);font-weight:800;}
.sort-list{display:flex;align-items:center;margin:0;padding:0;list-style:none;}
.sort-list li{display:flex;align-items:center;}
.sort-list li + li::before{content:'';width:1px;height:12px;margin:0 12px;background:#cfd8e6;}
.sort-list a{display:inline-flex;align-items:center;gap:6px;font-size:clamp(13.5px, 13.19px + 0.082vw, 14.5px);color:var(--gray-700);transition:color .2s;}
.sort-list a:hover{color:var(--primary);}
.sort-list a[aria-current]{color:var(--primary);font-weight:700;}
.sort-list a[aria-current]::before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor;}   /* 색 외에 점으로도 선택 표시 */
.sort-list a:focus-visible{outline:2px solid var(--primary);outline-offset:3px;border-radius:4px;}

/* 신청 흐름 (공통 : 시설 · 장비 사용 신청, 행사 참가 신청) : 진행 순서(.ap-steps) + 신청 대상(.ap-target) + 아래 버튼(.ap-btns) + 신청 완료(.ap-done) */
/* 예약 순서 : 화살표 모양 3칸 (연파랑) + 지금 단계만 진한 파랑, 칸 사이 흰 틈 / --ar = 화살표 깊이 */
.ap-steps{--ar:clamp(14px, 11.55px + 0.653vw, 22px);display:flex;margin:0 0 clamp(28px, 22.49px + 1.469vw, 46px);padding:0;list-style:none;overflow:hidden;border-radius:14px;}
.ap-steps li{
  position:relative;flex:1 1 0%;min-width:0;display:flex;align-items:center;justify-content:center;gap:12px;height:clamp(52px, 45.88px + 1.633vw, 72px);padding:0 calc(var(--ar) + 12px);
  background:#dfe8f8;font-size:clamp(14.5px, 14.04px + 0.122vw, 16px);font-weight:700;color:#1d3f8f;white-space:nowrap;
  clip-path:polygon(0 0, calc(100% - var(--ar)) 0, 100% 50%, calc(100% - var(--ar)) 100%, 0 100%, var(--ar) 50%);
}
.ap-steps li:first-child{clip-path:polygon(0 0, calc(100% - var(--ar)) 0, 100% 50%, calc(100% - var(--ar)) 100%, 0 100%);}
.ap-steps li:last-child{clip-path:polygon(0 0, 100% 0, 100% 100%, 0 100%, var(--ar) 50%);}
.ap-steps li + li{margin-left:calc(var(--ar) * -1 + 7px);}   /* 앞 칸 화살표가 뒤 칸 홈에 들어감, 사이 흰 틈 7px */
.st-no{flex:none;display:flex;align-items:center;justify-content:center;width:clamp(26px, 24.16px + 0.49vw, 32px);aspect-ratio:1;border-radius:50%;background:#4a6db5;font-size:clamp(13px, 12.39px + 0.163vw, 15px);font-weight:800;color:#fff;}   /* 번호 원 : 흰 글자 대비 5:1 */
.ap-steps .is-current{background:var(--primary);font-weight:800;color:#fff;}
.ap-steps .is-current .st-no{background:#fff;color:var(--primary);}
/* 신청 대상 */
.ap-target{display:flex;align-items:center;gap:clamp(16px, 11.1px + 1.306vw, 32px);margin-bottom:clamp(48px, 37.59px + 2.776vw, 82px);padding:clamp(12px, 10.78px + 0.327vw, 16px);border:1px solid #e3ecf7;border-radius:24px;background:#fff;}
.apt-thumb{flex:none;width:clamp(120px, 95.51px + 6.531vw, 200px);aspect-ratio:4/3;overflow:hidden;border-radius:16px;background:var(--sky) url("../images/common/no_image.png?v=26102205") center/cover no-repeat;}   /* 사진이 없으면 노 이미지 바탕 */
.apt-thumb img{width:100%;height:100%;object-fit:cover;}
img.is-broken{visibility:hidden;}   /* 못 불러온 사진은 숨겨 칸의 노 이미지 바탕이 보이게 (js/common.js) */
.apt-body{flex:1 1 auto;min-width:0;}
.apt-body .cv-tags{margin-bottom:8px;}
.apt-title{margin:0 0 10px;font-family:var(--font-title);font-weight:400;font-size:clamp(22px, 19.55px + 0.653vw, 30px);line-height:1.25;color:var(--ink);word-break:keep-all;}
.apt-meta{display:flex;flex-wrap:wrap;gap:6px 22px;margin:0;padding:0;list-style:none;font-size:clamp(13px, 12.69px + 0.082vw, 14px);color:var(--gray-700);}
.apt-meta b{margin-right:8px;font-weight:700;color:var(--ink);}
.apt-back{flex:none;gap:8px;height:50px;margin-right:clamp(4px, -2.12px + 1.633vw, 20px);padding:0 22px 0 8px;border-color:transparent;border-radius:999px;background:linear-gradient(90deg, var(--primary), #1556c9);font-weight:800;color:#fff;box-shadow:0 12px 22px -12px rgba(5,62,165,.75);}   /* 시설 · 장비 정보 보기 : 진한 파랑 알약 + 흰 돋보기 + 화살표 (흰 글자 대비 6:1 이상, 사용자가 고른 E안) */
.apt-back::before{content:'';flex:none;width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.18) url("../images/contents/rv_search_icon02.svg") center/17px no-repeat;}   /* 돋보기 (장식) */
.apt-back::after{content:'';flex:none;width:7px;height:7px;border-top:2px solid currentColor;border-right:2px solid currentColor;transform:rotate(45deg);transition:transform .25s var(--ease);}   /* 화살표 (장식) */
.apt-back:hover{border-color:transparent;background:var(--primary-dark);color:#fff;}
.apt-back:hover::after{transform:translateX(3px) rotate(45deg);}
.ap-btns{gap:10px;margin-top:clamp(36px, 29.88px + 1.633vw, 56px);}
.ap-btns .btn{min-width:150px;}
/* 신청 완료 */
.ap-done{display:flex;flex-direction:column;align-items:center;padding:clamp(36px, 29.88px + 1.633vw, 56px) clamp(20px, 10.2px + 2.612vw, 52px);border:1px solid #e3ecf7;border-radius:28px;background:#fff;text-align:center;}
.ad-title{margin:0 0 10px;font-family:var(--font-title);font-weight:400;font-size:clamp(22px, 19.55px + 0.653vw, 30px);color:var(--ink);word-break:keep-all;}
.ad-text{max-width:560px;margin:0;font-size:clamp(14.5px, 14.04px + 0.122vw, 16px);line-height:1.7;color:var(--gray-700);word-break:keep-all;}
.ap-equip-guide{margin-top:clamp(20px, 16.94px + 0.816vw, 30px);font-weight:700;color:var(--ink);}   /* 시설 신청 완료 : 장비 함께 예약 안내 */
/* 신청 정보 : 카드 격자 (신청 번호는 넓은 연파랑 카드, 나머지 2칸) */
.ad-info{display:flex;flex-wrap:wrap;gap:10px;width:100%;max-width:680px;margin:clamp(24px, 19.1px + 1.306vw, 40px) 0 0;text-align:left;}
.ad-info > div{flex:1 1 calc(50% - 5px);min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:16px 20px;border:1px solid #e3ecf7;border-radius:16px;background:#fff;}
.ad-info > div:first-child{flex-basis:100%;border-color:#d5e3f7;background:#f3f8fe;}
.ad-info dt{font-size:clamp(12px, 11.69px + 0.082vw, 13px);font-weight:600;color:var(--gray-700);}
.ad-info dd{margin:0;font-size:clamp(15px, 14.39px + 0.163vw, 17px);font-weight:700;color:var(--ink);word-break:keep-all;}
.ad-info > div:first-child dd{font-size:clamp(18px, 16.78px + 0.327vw, 22px);font-weight:800;letter-spacing:.5px;color:var(--primary);}
.ad-state{display:inline-flex;align-items:center;height:26px;padding:0 11px;border-radius:999px;background:#fff4de;font-size:clamp(12px, 11.69px + 0.082vw, 13px);font-weight:800;color:#c2410c;}   /* 승인 대기 : 연주황 (대비 4.7:1, 11/9 시안 · 11/10 사용자 지시 "시안 기준" — 예전 10/29 진도회의 연파랑) */
@media (max-width:1000px){
  .ap-target{flex-wrap:wrap;}
  .apt-back{margin:0 0 0 auto;}
}
@media (max-width:640px){
  .ap-steps{--ar:12px;}
  .ap-steps li{flex:0 0 auto;gap:0;height:48px;padding:0 calc(var(--ar) + 10px) 0 calc(var(--ar) + 12px);}   /* 모바일 : 지난 · 다음 단계는 번호만 */
  .ap-steps li:first-child{padding-left:14px;}
  .ap-steps .is-current{flex:1 1 auto;gap:8px;}
  .ap-steps li:not(.is-current) .st-name{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;}   /* 이름은 스크린리더만 */
  .ad-info > div{flex-basis:100%;}
  .ap-target{flex-direction:column;align-items:stretch;}
  .apt-thumb{width:100%;}
  .apt-body{padding:0 4px;}
  .apt-back{margin:0;}
  .ap-btns .btn{flex:1 1 0%;min-width:0;}
  /* 큰 버튼 : 모바일은 글자 · 여백 줄여 한 줄 (사용자 지시 — 상세 아래 "장비 사용 신청" 등이 2줄 되던 것, 큰 버튼 모두 같게) */
  .btn-lg{gap:6px;padding:0 14px;font-size:clamp(14px, 13.69px + 0.082vw, 15px);}
  .btn-lg.btn-arrow::after{width:14px;height:14px;}
}
@media (max-width:450px){   /* 작은 모바일 (사용자 지시 : 360 → 450, 한 블록) */
  /* 진행 순서 : 번호만 (이름은 스크린리더만), 칸 같은 폭 */
  .ap-steps li,.ap-steps .is-current{flex:1 1 0%;gap:0;padding:0 var(--ar);}
  .ap-steps li:first-child{padding-left:0;}
  .ap-steps li:last-child{padding-right:0;padding-left:var(--ar);}
  .ap-steps .st-name{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;}
  /* 큰 버튼 : 한 번 더 줄임 */
  .btn-lg{padding:0 10px;font-size:clamp(13.5px, 13.35px + 0.041vw, 14px);letter-spacing:-.02em;}
}
@media (prefers-reduced-motion:reduce){ .guide-box .gb-btn,.gb-btn-ic,.gb-btn-ic::before{transition:none;} .apt-back::after{transition:none;} .apt-back:hover::after{transform:rotate(45deg);} }

/* 레이어 (공통) : <div class="layer" role="dialog" aria-modal="true" aria-labelledby="제목id" hidden><div class="layer-box" tabindex="-1">...</div></div>
   - 여는 버튼 : data-layer-open="레이어id" / 닫는 버튼 : data-layer-close (js/content.js) */
.layer{position:fixed;inset:0;z-index:400;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(5,12,30,.55);}
.layer[hidden]{display:none;}
.layer-box{
  position:relative;width:100%;max-width:560px;max-height:calc(100vh - 40px);overflow-y:auto;padding:clamp(28px, 24.33px + 0.98vw, 40px);
  border-radius:24px;background:#fff;box-shadow:0 40px 80px -30px rgba(5,12,30,.5);
}
.layer-box:focus{outline:none;}
.layer-title{margin:0 40px 20px 0;font-family:var(--font-title);font-weight:400;font-size:clamp(22px, 20.16px + 0.49vw, 28px);color:var(--ink);}
.layer-desc{margin:-12px 40px 4px 0;font-size:clamp(13px, 12.69px + 0.082vw, 14px);color:var(--gray-700);word-break:keep-all;}   /* 제목 아래 안내 한 줄 */
.layer-sub{display:flex;align-items:center;gap:8px;margin:22px 0 10px;font-size:clamp(14.5px, 14.04px + 0.122vw, 16px);font-weight:800;color:var(--ink);}
.layer-desc + .layer-sub{margin-top:18px;}
.layer-sub::before{content:'';flex:none;width:14px;height:14px;background:url("../images/common/bullet.svg") center/contain no-repeat;}   /* 제목 블릿 (.cont-title 과 같은 모양) */
.layer-info{margin:0;overflow:hidden;border:1px solid #e3e9f1;border-radius:10px;}   /* 표 : 얇은 테두리 + 둥근 모서리 */
.layer-info > div{display:flex;align-items:stretch;}
.layer-info > div + div{border-top:1px solid #eef2f7;}
.layer-info dt{flex:none;display:flex;align-items:center;width:92px;padding:12px 14px;background:#f5f7fa;font-size:clamp(13.5px, 13.19px + 0.082vw, 14.5px);font-weight:700;color:var(--gray-700);white-space:nowrap;}   /* 항목 칸만 연한 회색 배경 */
.layer-info dd{flex:1 1 auto;display:flex;align-items:center;min-width:0;margin:0;padding:10px 14px;font-size:clamp(13.5px, 13.19px + 0.082vw, 14.5px);font-weight:600;color:var(--ink);}
.layer-info .input{width:100%;height:42px;font-weight:400;}
.layer-info .li-course dd{font-weight:800;}   /* 교육명 강조 */
.layer-agree{margin-top:20px;padding:16px 18px;border-radius:14px;background:#f7f9fc;border:1px solid #e6ecf4;}   /* 동의 영역 : 회색 박스 */
.layer-agree .chk{align-items:flex-start;font-weight:700;line-height:1.5;}   /* 글이 두 줄이 되면 체크 상자는 첫 줄에 (사용자 지시) */
.layer-agree .chk input{margin-top:calc((1.5em - 18px) / 2);}   /* 체크 상자 = 첫 줄 글자 가운데 */
.layer-agree .req{color:var(--red);font-weight:700;}
.layer-note{margin:8px 0 0 26px;font-size:clamp(12px, 11.69px + 0.082vw, 13px);color:var(--gray-700);line-height:1.6;word-break:keep-all;}
.layer-msg{margin:8px 0 0 26px;font-size:clamp(12.5px, 12.19px + 0.082vw, 13.5px);font-weight:700;color:var(--red);}
.layer-msg:empty{margin:0;}
.layer-btns{display:flex;justify-content:center;gap:10px;margin-top:26px;}
.layer-btns .btn{flex:1 1 0%;height:52px;}   /* 버튼 두 개를 폭 가득 나란히 */
.layer-close{
  position:absolute;top:18px;right:18px;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;color:var(--ink);transition:background .2s;
}
.layer-close:hover{background:var(--gray-100);}
.layer-close:focus-visible{outline:2px solid var(--primary);outline-offset:2px;}
.layer-close img{width:22px;height:22px;}
/* 확인 · 알림 창 (브라우저 기본 alert · confirm 대신, js/common.js ictConfirm · ictAlert) : 가운데 정렬 작은 레이어 */
.dlg-box{max-width:440px;text-align:center;}
.ict-dialog .layer-title{margin:0 0 12px;}
.dlg-msg{margin:0;font-size:clamp(15px, 14.39px + 0.163vw, 17px);line-height:1.7;color:var(--gray-700);white-space:pre-line;word-break:keep-all;}
.layer-btns .btn[hidden]{display:none;}
.btn-danger{background:#b42318;border-color:#b42318;color:#fff;}   /* 위험한 일(탈퇴 · 삭제 · 취소) : 흰 글자 대비 6.6:1 */
.btn-danger:hover{background:#912018;border-color:#912018;color:#fff;}
.btn-danger:focus-visible{outline:2px solid #b42318;outline-offset:2px;}
.layer-done{display:flex;flex-direction:column;align-items:center;text-align:center;padding:12px 0 4px;}
.ld-ico{display:flex;align-items:center;justify-content:center;width:72px;height:72px;margin-bottom:18px;border-radius:50%;background:var(--primary);color:#fff;box-shadow:0 0 0 8px #e3eefb;}
.ld-ico img{width:34px;height:34px;}
.ld-tit{margin:0 0 8px;font-size:clamp(18px, 17.39px + 0.163vw, 20px);font-weight:800;color:var(--ink);}
.ld-txt{margin:0;font-size:clamp(14px, 13.69px + 0.082vw, 15px);color:var(--gray-700);}
.layer-info dd:empty::before{content:"-";content:"-" / "없음";color:var(--gray-500);}   /* 정보가 없는 항목 : 값 자리에 "-" (스크린리더는 "없음") */
/* 입력 양식 (공통) : 왼쪽 항목 이름(연한 회색 칸) + 오른쪽 입력 / 필수 = 이름 뒤 빨간 * (aria-hidden) + 입력에 required
   <div class="form-list"><div class="fm-row"><label class="fm-th" for="id">이름<span class="req" aria-hidden="true">*</span></label>
   <div class="fm-td"><input class="input fm-w-sm" id="id" required><p class="fm-help">도움말</p><p class="fm-err" id="idErr" hidden></p></div></div></div> */
.form-list{margin:0;border-top:2px solid var(--ink);}
.fm-row{display:flex;align-items:stretch;border-bottom:1px solid #e9eef5;}
.fm-th{flex:none;display:flex;align-items:center;width:200px;margin:0;padding:14px 24px;background:#f5f7fa;font-size:clamp(14px, 13.69px + 0.082vw, 15px);font-weight:700;color:var(--ink);word-break:keep-all;}   /* margin:0 = <p class="fm-th"> 일 때도 회색 칸이 줄 높이를 꽉 채우게 */
.fm-td{flex:1 1 auto;min-width:0;padding:12px 20px;}
.fm-td .input,.fm-td .select{max-width:100%;}   /* 칸이 좁아져도 넘치지 않게 */
.fm-w-xs{width:120px;}
.fm-w-sm{width:260px;}
.fm-w-md{width:420px;}
.fm-w-sel{width:180px;}
.fm-w-full{width:100%;}
.fm-inline{display:flex;align-items:center;gap:8px;font-size:clamp(14px, 13.69px + 0.082vw, 15px);color:var(--ink);}
.fm-range{display:flex;flex-wrap:wrap;align-items:center;gap:8px;}   /* 날짜 · 시간 나란히 : 시작 ~ 끝 (각 입력에 숨김 레이블) */
.fm-range .input{width:170px;}
.fm-range .input[type="time"]{width:130px;}
.fm-range span{color:var(--gray-700);}
.fm-help{position:relative;margin:6px 0 0;padding-left:22px;font-size:clamp(12px, 11.69px + 0.082vw, 13px);line-height:1.6;color:var(--gray-700);word-break:keep-all;}
.fm-help::before,.cv-note::before,.sb-note::before{   /* 안내 아이콘 i (장식, 스크린리더는 읽지 않음) : 입력 양식 도움말 + 교육 · 시설 상세 요약 안내 + 시설 일정 예약 현황 안내 */
  content:'i';content:'i' / '';position:absolute;left:0;top:2px;display:flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;
  background:var(--gray-500);color:#fff;font-size:clamp(10.5px, 10.35px + 0.041vw, 11px);font-weight:800;font-style:italic;font-family:Georgia,serif;
}
.fm-err{position:relative;margin:6px 0 0;padding-left:20px;font-size:clamp(12.5px, 12.19px + 0.082vw, 13.5px);font-weight:700;line-height:1.6;color:var(--red);word-break:keep-all;}
.fm-err::before{content:'!';content:'!' / '';position:absolute;left:0;top:3px;display:flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;background:var(--red);color:#fff;font-size:clamp(9.5px, 9.35px + 0.041vw, 10px);font-weight:800;}   /* 오류 아이콘 (장식) */
.fm-note{margin:0;font-size:clamp(12.5px, 12.19px + 0.082vw, 13.5px);color:var(--gray-700);}
.input[readonly]{background:#f7f9fc;}
.select{height:44px;padding:0 36px 0 12px;border:1px solid #7f8ba0;border-radius:10px;background:#fff url("../images/common/arrow_down_icon.svg") right 12px center/14px no-repeat;font:inherit;font-size:clamp(13px, 12.69px + 0.082vw, 14px);color:var(--ink);-webkit-appearance:none;appearance:none;cursor:pointer;}   /* 선택 상자 : 오른쪽 아래 화살표 */
.select:focus{border-color:var(--primary);outline:2px solid var(--primary);outline-offset:-1px;}
.fm-email{display:flex;flex-wrap:wrap;align-items:center;gap:8px;}   /* 이메일 : 아이디 @ 도메인 + 도메인 선택 */
.fm-at{flex:none;font-size:clamp(14px, 13.69px + 0.082vw, 15px);font-weight:700;color:var(--gray-700);}
.input[aria-invalid="true"],.textarea[aria-invalid="true"],.select[aria-invalid="true"]{border-color:var(--red);}
.fm-head{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:8px 16px;}   /* 양식 묶음 머리 : 제목(.cont-title) + 오른쪽 필수 안내(.fm-note) */
.fm-rdo{display:flex;flex-wrap:wrap;gap:8px;}   /* 알약 라디오(.rdo) 묶음 : <div class="fm-rdo" role="radiogroup" aria-labelledby="이름id"> */
.input-file{   /* 파일 첨부 : 브라우저 기본 파일 칸(키보드 · 스크린리더 그대로) + 버튼 모양만 */
  display:block;width:100%;padding:7px;border:1px dashed #cfd8e6;border-radius:12px;background:#f7f9fc;
  font:inherit;font-size:clamp(13px, 12.69px + 0.082vw, 14px);color:var(--gray-700);cursor:pointer;
}
.input-file::file-selector-button{margin-right:12px;height:36px;padding:0 16px;border:1px solid #cfd8e6;border-radius:9px;background:#fff;font:inherit;font-weight:700;color:var(--ink);cursor:pointer;transition:border-color .2s,color .2s;}
.input-file:hover::file-selector-button{border-color:var(--primary);color:var(--primary);}
.input-file:focus-visible{outline:2px solid var(--primary);outline-offset:2px;}
.input-file[aria-invalid="true"]{border-color:var(--red);}
.upl-list{margin:8px 0 0;padding:0 14px;list-style:none;border:1px solid #e3e9f1;border-radius:12px;background:#fff;}   /* 고른 첨부파일 목록 (js/board.js 가 만듦) */
.upl-list:empty{display:none;}
.upl-list li{display:flex;align-items:center;gap:8px 10px;padding:10px 0;font-size:clamp(13px, 12.69px + 0.082vw, 14px);}
.upl-list li + li{border-top:1px dashed #e3e9f1;}
.upl-name{position:relative;flex:0 1 auto;min-width:0;padding-left:22px;font-weight:600;color:var(--ink);overflow-wrap:anywhere;}
.upl-name::before{   /* 클립 (장식) */
  content:'';position:absolute;left:0;top:2px;width:16px;height:16px;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23646e84' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19.5 11.6 12 19.1a4.9 4.9 0 0 1-6.9-6.9l7.8-7.8a3.2 3.2 0 0 1 4.6 4.6l-7.7 7.7a1.6 1.6 0 0 1-2.3-2.3l7-7'/%3E%3C/svg%3E") center/contain no-repeat;
}
.upl-size{flex:none;color:var(--gray-500);}
.upl-del{flex:none;height:30px;margin-left:auto;padding:0 12px;border:1px solid #cfd8e6;border-radius:8px;background:#fff;font-size:clamp(12.5px, 12.19px + 0.082vw, 13.5px);font-weight:700;color:var(--gray-700);transition:border-color .2s,color .2s;}
.upl-del:hover{border-color:var(--red);color:var(--red);}
.upl-del:focus-visible{outline:2px solid var(--primary);outline-offset:2px;}
.textarea{display:block;width:100%;min-height:112px;padding:12px 14px;border:1px solid #7f8ba0;border-radius:10px;background:#fff;font:inherit;font-size:clamp(13px, 12.69px + 0.082vw, 14px);line-height:1.6;color:var(--ink);resize:vertical;}
.textarea:focus{border-color:var(--primary);outline:2px solid var(--primary);outline-offset:-1px;}
.input::placeholder,.textarea::placeholder{color:var(--gray-500);}
/* 동의 상자 : 체크 + (필수) + 내용 보기(details) */
.agree-box{padding:clamp(18px, 14.94px + 0.816vw, 28px) clamp(18px, 12.49px + 1.469vw, 36px);border:1px solid #e3e9f1;border-radius:20px;background:#f7f9fc;}
.ag-item + .ag-item{margin-top:16px;padding-top:16px;border-top:1px dashed #d6e2f1;}
.ag-item .chk{font-weight:700;}
.ag-item .req{margin-left:0;}
.ag-detail{margin:10px 0 0 26px;}
.ag-detail summary{display:inline-flex;align-items:center;gap:6px;font-size:clamp(12.5px, 12.19px + 0.082vw, 13.5px);font-weight:700;color:var(--primary);cursor:pointer;list-style:none;}
.ag-detail summary::-webkit-details-marker{display:none;}
.ag-detail summary::after{content:'';width:6px;height:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .2s;}
.ag-detail[open] summary::after{transform:translateY(1px) rotate(-135deg);}
.ag-detail summary:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px;}
.ag-detail p{margin:10px 0 0;font-size:clamp(12px, 11.69px + 0.082vw, 13px);color:var(--gray-700);word-break:keep-all;}
.ag-dl{margin:10px 0 0;padding:12px 16px;border:1px solid #e3e9f1;border-radius:12px;background:#fff;font-size:clamp(12.5px, 12.19px + 0.082vw, 13.5px);}
.ag-dl > div{display:flex;gap:12px;padding:4px 0;}
.ag-dl dt{flex:none;width:5em;font-weight:700;color:var(--ink);}
.ag-dl dd{margin:0;color:var(--gray-700);word-break:keep-all;}
.ag-link{display:inline-flex;align-items:center;gap:4px;margin:8px 0 0 26px;font-size:clamp(12.5px, 12.19px + 0.082vw, 13.5px);font-weight:700;color:var(--primary);text-decoration:underline;text-underline-offset:3px;}
.ag-link img{width:14px;height:14px;}
.ag-link:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:3px;}
.ag-item .fm-err{margin-left:26px;}
@media (max-width:640px){
  .input,.select,.textarea{font-size:clamp(16px, 15.54px + 0.122vw, 17.5px);}   /* 모바일 입력 칸 글자 16px 이상 : 아이폰 Safari 는 16px 보다 작은 칸을 누르면 화면을 저절로 확대함 (사용자 지시) */
  .chip{height:36px;padding:0 14px;font-size:clamp(14px, 13.69px + 0.082vw, 15px);}
  .fm-row{flex-direction:column;}   /* 모바일 : 항목 이름 위, 입력 아래 */
  .fm-th{width:auto;padding:11px 16px;}
  .fm-td{padding:12px 0;}
  .fm-w-sm,.fm-w-md,.fm-w-sel{width:100%;}
  .fm-range .input,.fm-range .input[type="time"]{flex:1 1 0%;width:auto;min-width:0;}
  .fm-range.is-when .input[type="date"]{flex-basis:100%;}   /* 행사 일시 : 날짜 한 줄, 시작 ~ 끝 시간 다음 줄 */   /* 모바일 : 입력 · 선택 상자 칸 가득 (이메일 도메인 선택은 .fm-email 규칙) */
  .fm-email .input{flex:1 1 0%;width:auto;min-width:0;}   /* 모바일 이메일 : 아이디 @ 도메인 한 줄 + 선택 상자 아래 줄 가득 */
  .fm-email .select{flex:1 1 100%;width:auto;}
  .layer-info dt{width:84px;padding:12px;}
  .layer-info dd{padding:10px 12px;}
  .guide-box{flex-direction:column;align-items:stretch;gap:14px;}   /* 모바일 : 안내 박스 아이콘은 위 가운데, 안내 글도 가운데 (목록은 왼쪽 그대로) */
  .gb-ic{align-self:center;}
  .guide-box p{text-align:center;}
  .guide-box .gb-btn{align-self:center;margin-left:0;}   /* 모바일 : 안내 글 아래 가운데 */
}
@media (prefers-reduced-motion:reduce){
  .tab-switch [role="tab"]{transition:none;}
  .btn-arrow::after{transition:none;}
  .btn-arrow:hover::after{transform:none;}
}

/* ===================== AOS 스크롤 나타남 (lib/aos/aos.js 가 화면에 들어오면 .aos-animate 를 붙이고, 나가면 뗌 — 모양은 여기서, aos.css 는 안 씀) =====================
   - data-aos 는 js/common.js 가 붙임 → 스크립트가 없거나 실패하면 아무것도 숨기지 않음
   - CSS 애니메이션 + translate · scale 속성 : 첫 화면에 있는 요소도 재생되고, 카드 마우스 올림(transform) · 원래 투명도와 겹치지 않음 (끝나면 원래 모양)
   - 거리 30px · 94%, 0.85초 / 위아래 어느 쪽으로 다시 들어와도 다시 나타남 (사용자 지시)
   - 움직임 줄이기 설정 · 인쇄 : 항상 보임 (웹접근성) */
@keyframes aos-fade-up{from{opacity:0;translate:0 30px;}}
@keyframes aos-fade-right{from{opacity:0;translate:-30px 0;}}
@keyframes aos-fade-left{from{opacity:0;translate:30px 0;}}
@keyframes aos-zoom-in{from{opacity:0;scale:.94;}}
[data-aos]:not(.aos-animate){opacity:0;}
[data-aos].aos-animate{animation:aos-fade-up .85s cubic-bezier(.215,.61,.355,1) backwards;}
[data-aos="fade-right"].aos-animate{animation-name:aos-fade-right;}
[data-aos="fade-left"].aos-animate{animation-name:aos-fade-left;}
[data-aos="zoom-in"].aos-animate{animation-name:aos-zoom-in;}
[data-aos][data-aos-delay="50"]{animation-delay:0.05s;}
[data-aos][data-aos-delay="100"]{animation-delay:0.1s;}
[data-aos][data-aos-delay="150"]{animation-delay:0.15s;}
[data-aos][data-aos-delay="200"]{animation-delay:0.2s;}
[data-aos][data-aos-delay="250"]{animation-delay:0.25s;}
[data-aos][data-aos-delay="300"]{animation-delay:0.3s;}
[data-aos][data-aos-delay="350"]{animation-delay:0.35s;}
[data-aos][data-aos-delay="400"]{animation-delay:0.4s;}
[data-aos][data-aos-delay="450"]{animation-delay:0.45s;}
[data-aos][data-aos-delay="500"]{animation-delay:0.5s;}
[data-aos][data-aos-delay="550"]{animation-delay:0.55s;}
[data-aos][data-aos-delay="600"]{animation-delay:0.6s;}
[data-aos][data-aos-delay="650"]{animation-delay:0.65s;}
[data-aos][data-aos-delay="700"]{animation-delay:0.7s;}
[data-aos][data-aos-delay="750"]{animation-delay:0.75s;}
[data-aos][data-aos-delay="800"]{animation-delay:0.8s;}
[data-aos][data-aos-delay="850"]{animation-delay:0.85s;}
[data-aos][data-aos-delay="900"]{animation-delay:0.9s;}
/* 탭 패널을 열 때 (처음에 숨어 있던 패널) : 안의 칸이 차례로 올라옴 (js/common.js .aos-reveal) */
.aos-reveal > *{animation:aos-fade-up .85s cubic-bezier(.215,.61,.355,1) backwards;}
.aos-reveal > :nth-child(2){animation-delay:.1s;}
.aos-reveal > :nth-child(3){animation-delay:.2s;}
.aos-reveal > :nth-child(n+4){animation-delay:.3s;}
@media (prefers-reduced-motion:reduce){ [data-aos]{opacity:1 !important;animation:none !important;} .aos-reveal > *{animation:none !important;} }
@media print{ [data-aos]{opacity:1 !important;animation:none !important;} }
