@charset "utf-8";
/* ============================================================
 *  메인페이지 전용 CSS (기본버전)
 *  메인페이지에서만 불러옵니다. ($MAIN_PAGE = 1; 선언 시 title.php 가 로드)
 *  ── 사이트별 값은 아래 :root 변수만 바꾸면 됩니다.
 *  ── .container 는 base.css 에서 정의합니다. (부트스트랩 미사용)
 * ============================================================ */

:root {
	--mv-img:    url('/img/main/main_visual.png');   /* 메인비주얼 배경 */
	/* 메인비주얼 높이 (PC) — 화면 한 판을 꽉 채웁니다.
	   min-height 로 쓰이므로 창이 아주 낮아도 글자·버튼이 잘리지 않고 그만큼 늘어납니다.
	   ※ 992px 이하는 배경 그림 비율로 높이를 잡으므로 아래 미디어쿼리에서 따로 관리합니다. */
	--mv-h:      100vh;
	/* --hd-h(헤더 높이) 는 css/header.css 의 :root 에서 관리합니다.
	   서브비주얼(sub.css)도 같은 값을 쓰므로 한 곳에 모아 뒀습니다. */
	--mv-dim:    rgba(0, 0, 0, .3);                   /* 글자 가독성용 어둡게 */
	--mv-text:   #ffffff;                             /* 메인비주얼 글자색 */
	--mn-point:  #0076d7;                             /* 대회 포인트 컬러 */
	--mn-title:  #222;                             /* 섹션 제목색 */
	--mn-gray:   #f7f7f7;                             /* 회색 섹션 배경 */
}

/* 공통 */
.main .container {
	max-width: 1400px;
}



/* ------------------------------------------------------------
 * 1. 메인비주얼
 * ------------------------------------------------------------ */
.main_visual {
	position: relative;
	width: 100%;
	min-height: var(--mv-h);
	display: flex;
	align-items: center;

	/* 헤더(position:absolute)가 비주얼 위에 겹치지 않도록 헤더 높이만큼 내립니다.
	   ⚠ margin-top 을 쓰면 안 됩니다 — body 에 padding/border 가 없고 header 는
	   흐름 밖(absolute)이라, .main_visual 이 body 의 첫 "흐름 안" 자식이 됩니다.
	   이때 위쪽 margin 은 body 밖으로 빠져나가(margin collapsing) 페이지 전체를
	   밀어버려서 헤더 위에 흰 여백이 생깁니다. padding 은 collapse 가 없습니다. */
	padding-top: var(--hd-h, 103px);

	background-image: url(/img/main/visual-bg.webp);
	background-color: #fff;
	background-repeat: no-repeat;
	background-size: cover;
	background-position: center;
}


.main_visual .container {
	position: relative;
	z-index: 10;
	max-width: none;
    padding: 0 200px;
}

.main_visual .main_visual_txt {
	display: flex;
    width: 40%;
    flex-direction: column;
    align-items: flex-end;
}

.main_visual .btn_wrap {
	margin-top: 40px;
	display: flex;
    gap: 10px;
}
.main_visual .btn_wrap a {
	display: inline-block;
	text-align: center;
	background: #7adf10;
	padding: 15px 45px;
	font-size: 20px;
	font-weight: 700;
	color: #111;
	border-radius: 50px;
	transition: opacity .2s;
}
.main_visual .btn_wrap a:last-child {
	background: #0076d7;
	color: #fff;
}
.main_visual .btn_wrap a:hover {
	color: #ffffff;
	opacity: .85;
}





/* ------------------------------------------------------------
 * 2. 메인 섹션
 * ------------------------------------------------------------ */


/* 섹션 제목 — 메인의 모든 섹션이 함께 씁니다 */
.main_title {
	margin-bottom: 40px;
	font-size: 60px;
	font-weight: 800;
	line-height: 1.3;
	letter-spacing: -0.03em;
	color: var(--mn-title);
	text-align: center;
}

/* 인트로 */
.intro_wrap {
	background: url(/img/main/section-top-bg.webp) no-repeat center;
	background-size: cover;
	border-radius: 0 0 300px 0;
}

/* 섹션1 */
.sec01 {
	position: relative;
	padding: 180px 0 120px;
}
.sec01 .txt {
	position: relative;
	z-index: 2;
}
.sec01 .txt h2 {
	font-size: 60px;
}
.sec01 .txt h2 span {
	color: #fff;
	padding: 0 10px;
	background: #0076d7;
}
.sec01 .txt p {
	font-size: 26px;
	margin-top: 60px;
}
.sec01 .txt p span {
	color: #0076d7;
	font-weight: bold;
}
.sec01 img {
	position: absolute;
	right: -50px;
	top: 180px;
}

/* 섹션2 */
.sec02 .con {
	display: flex;
	position: relative;
	background: #fff;
	border-radius: 50px;
	padding: 50px 50px 0;
	justify-content: space-between;
}
.sec02 .con::before {
	position: absolute;
	content: '';
	background: url(/img/main/section2-img1.webp) no-repeat center;
	background-size: contain;
	width: 1139px;
	height: 70px;
	top: -30px;
	left: 50%;
	transform: translateX(-50%);
}
.sec02 .txt img {
	margin-bottom: 30px;
}
.sec02 .txt h2 {
	font-size: 50px;
	line-height: 1.4;
}
.sec02 .txt h2 span {
	font-size: 66px;
	color: #fff;
	background: #0076d7;
	padding: 0 20px 0 10px;
	font-style: italic;
		margin-bottom: 20px;
}
.sec02 .txt h2 b {
	color: #0076d7;
}
.sec02 .txt p {
	font-size: 20px;
	margin-top: 50px;
}

/* 섹션3 */
.sec03 {
	padding-bottom: 150px;
}
.sec03 h2 {
	font-size: 60px;
	text-align: center;
}
.sec03 h2 b {
	color: #0076d7
}
/* 햇님 아이콘 — 글자 크기에 묶어 둡니다.
   원본이 63x61 이라 PC(60px) 기준 폭이 글자의 약 1.05 배입니다. em 으로 두면
   화면이 줄어 글자가 작아질 때 아이콘도 같은 비율로 따라 줄어듭니다.
   ⚠ height 가 아니라 width 로 잡습니다. sub.css 의 .con img 가 height:auto 를
      걸고 있어 height 로 쓰면 그쪽에 밀립니다. 높이는 비율대로 따라옵니다. */
.sec03 h2 img {
	width: 1.05em;
}
.sec03 .video {
	margin-top: 50px;
}
/* 유튜브 iframe 은 마크업에 width="960" height="670" 이 박혀 있습니다.
   폭만 100% 로 늘리면 높이는 670px 그대로라 비율이 약 2:1 로 어긋나고,
   플레이어 위아래에 검은 여백이 생깁니다. 16:9 로 고정합니다. */
.sec03 .video iframe {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
}

/* 대회요강 섹션4 */
.sec04 {
	background: url(/img/main/section4-bg.webp) no-repeat center;
	background-size: cover;
}
.sec04 .top {
	font-size: 26px;
	color: #0076d7;
	text-align: center;
	margin-bottom: 40px;
}
.sec04 .con {
	width: 80%;
	margin-left: 50%;
	transform: translateX(-50%);
	background: #e5f1fb;
	border-radius: 20px;
	padding: 40px 60px;
}
.sec04 table {
	margin-left: 40px;
}
.sec04 th,
.sec04 td {
	vertical-align: top;
}

/* 항목 이름(파란 알약) — ⚠ white-space: nowrap 을 빼지 마세요.
   알약은 ::before 로 그린 "높이 40px 고정" 상자입니다. 글자가 두 줄이 되면
   둘째 줄이 알약 밖으로 나가 연한 배경 위 흰 글씨가 되어 보이지 않습니다.
   표에 폭 지정이 없어 오른쪽 칸(로고)이 넓어질수록 이 열이 눌리는데,
   협찬 로고가 9개가 되면서 실제로 "주최/주관" 이 두 줄로 깨졌습니다. */
.sec04 th {
	position: relative;
	z-index: 2;
	padding-top: 10px;
	font-size: 22px;
	color: #fff;
	text-align: center;
	white-space: nowrap;
}
.sec04 th::before {
	content: '';
	position: absolute;
	z-index: -1;
	width: 185px;
	height: 40px;
	background: #0076d7;
	left: 50%;
	transform: translateX(-50%);
	border-radius: 10px;
}
.sec04 td {
	padding: 10px 0 10px 70px;
	font-size: 22px;
}
.sec04 td small {
	display: block;
	font-size: 16px;
	/* 이 글자만 연한 하늘색 상자(.sec04 .con) 위에 놓입니다.
	   본문 파랑(#0076d7)을 그대로 쓰면 3.94:1 로 기준(4.5)에 못 미쳐 살짝 어둡게 씁니다.
	   흰 배경인 대회요강 페이지(sub.css)는 #0076d7 그대로도 5.10:1 이라 손대지 않았습니다. */
	color: #0069bf;
	line-height: 1.4;
}
/* 협찬사 로고 칸 — 로고 개수가 늘어나면 다음 줄로 넘깁니다.
   ⚠ flex-wrap 을 빼지 마세요. 기본값(nowrap)이면 로고가 한 줄에 계속 이어붙어
     표 바깥으로 삐져나갑니다. (협찬 9개가 되면서 실제로 그렇게 됐습니다)
   세로 간격(18px)을 가로보다 조금 넉넉히 둬서 두 줄이 붙어 보이지 않게 합니다. */
.sec04 td.spon {
	display: flex;
	flex-wrap: wrap;
	gap: 18px 15px;
	align-items: center;
}
.sec04 td.spon .mt {margin-top: 8px;}

/* 코스도 섹션5 ------------------------------------------------
 *  10K / 3K 탭으로 코스도 이미지를 갈아 끼웁니다.
 *  · 동작은 index.php 의 코스도 섹션 바로 아래 <script> 에 있습니다.
 *  · 탭을 늘리려면 버튼과 .course_map 에 같은 data-course 값을 짝으로 넣으면 됩니다.
 * ------------------------------------------------------------ */
.sec05 {
	position: relative;
	overflow: hidden;                   /* 흘러나간 배경 글자가 가로 스크롤을 만들지 않게 */
	padding: 120px 0;
	background: var(--mn-point);

	/* ▼ 배경 흐르는 글자 조절값 — 이 3개만 바꾸면 됩니다 */
	--mq-size:  550px;                  /* 글자 크기 */
	--mq-time:  40s;                    /* 한 바퀴 도는 시간 (클수록 느림) */
	--mq-bottom: -100px;                   /* 섹션 맨 아래에서 띄울 거리.
	                                       글자띠를 "섹션 하단 기준"으로 붙여 둡니다.
	                                       %(=섹션 높이 기준)로 잡으면 화면 폭마다 섹션 높이가
	                                       달라져 위치가 흔들리므로 bottom 기준이 안정적입니다.
	                                       값을 키우면 글자가 위로 올라옵니다. */
}

.sec05 .container {
	position: relative;
	z-index: 1;                         /* 제목·탭·지도를 배경 글자 위로 */
}

.sec05 .main_title { color: #ffffff; }

/* 배경 흐르는 글자 ------------------------------------------------
 *  span 6개 = "같은 내용 3개" 묶음이 2벌. 그래서 -50% 만큼만 밀면 딱 한 묶음이
 *  넘어가 이음매 없이 반복됩니다. 문구나 크기를 바꿔도 span 개수를 짝수로,
 *  좌우 절반이 같은 내용이 되게만 유지하면 그대로 동작합니다.
 * ------------------------------------------------------------ */
.sec05 .marquee {
	position: absolute;
	left: 0;
	bottom: var(--mq-bottom);           /* 시안처럼 섹션 아래쪽에 깔립니다 */
	z-index: 0;
	width: 100%;
	pointer-events: none;               /* 뒤에 깔린 글자가 클릭을 가로채지 않게 */
	user-select: none;
	/* overflow 는 걸지 않습니다. 넘치는 부분은 .sec05 의 overflow:hidden 이 잘라주고,
	   여기서 또 자르면 글자 크기에 따라 위아래가 잘릴 수 있습니다. */
}

.sec05 .marquee_track {
	display: flex;
	width: max-content;
	will-change: transform;
	animation: sec05_marquee var(--mq-time) linear infinite;
}

.sec05 .marquee_track span {
	padding-right: .1em;
	font-size: var(--mq-size);
	font-weight: 900;
	font-style: italic;
	line-height: 1;
	letter-spacing: -0.02em;
	white-space: nowrap;
	color: rgba(255, 255, 255, .14);
}

@keyframes sec05_marquee {
	from { transform: translateX(0); }
	to   { transform: translateX(-50%); }
}

/* 시스템에서 "모션 줄이기"를 켠 사용자에게는 흐름을 멈춥니다 */
@media (prefers-reduced-motion: reduce) {
	.sec05 .marquee_track { animation: none; }
}

/* ⚠ overflow: hidden 을 다시 넣지 마세요.
   안쪽 버튼에 키보드 초점이 갔을 때 초점 테두리가 이 상자에 잘려 보이지 않습니다.
   (모서리를 둥글게 유지하려고 넣었던 값인데, 대신 아래에서 첫/마지막 버튼에
    같은 곡률을 직접 줘서 모양은 그대로 두었습니다) */
.sec05 .tab {
	display: flex;
	width: 100%;
	max-width: 620px;
	margin: 0 auto 40px;
	border: 2px solid #ffffff;
	border-radius: 10px;
}

.sec05 .tab button {
	flex: 1 1 0;                        
	padding: 13px 10px;
	border: 0;
	border-radius: 0;
	background: transparent;
	font-size: 24px;
	font-weight: 800;
	font-style: italic;
	line-height: 1.2;
	color: #ffffff;
	cursor: pointer;
	transition: background-color .25s, color .25s;
}

.sec05 .tab button + button { border-left: 2px solid #ffffff; }

/* 상자의 둥근 모서리(10px)에서 테두리 두께(2px)를 뺀 값 */
.sec05 .tab button:first-child { border-radius: 8px 0 0 8px; }
.sec05 .tab button:last-child  { border-radius: 0 8px 8px 0; }

.sec05 .tab button:hover { background-color: rgba(255, 255, 255, .18); }

/* 선택된 탭 */
.sec05 .tab button.on,
.sec05 .tab button.on:hover {
	background-color: #7adf10;
	color: #111111;
}
.sec05 .course_wrap {
	background: #ffffff;
	border-radius: 20px;
	padding: 0;
}

.sec05 .course_map img {
	display: block;
	width: 100%;
	height: auto;
}

.sec05 .course_map[hidden] { display: none; }

/* bot_wrap */
.bot_wrap {
	background: url(/img/main/section-bot-bg.webp) no-repeat center;
	background-size: cover;
}


/* ------------------------------------------------------------
 * 3. 공지사항 (최신글)
 *    .con 이 flex 라 왼쪽 .img 를 넣으면 2단, 빼면 게시판이 전체 폭을 씁니다.
 * ------------------------------------------------------------ */

.notice_sec .container { max-width: 1100px; }

.notice_sec .con {
	display: flex;
	align-items: center;
	gap: 70px;
}

.notice_sec .con .img { flex: 0 0 auto; }

.notice_sec .board {
	flex: 1;
	min-width: 0;                       /* 제목 말줄임이 동작하도록 */
}

/* 더보기 */
.notice_sec .board .btn-more {
	margin-bottom: 15px;
	text-align: right;
}

.notice_sec .board .btn-more a {
	font-size: 17px;
	color: var(--mn-title);
	transition: color .2s;
}

.notice_sec .board .btn-more a:hover { color: var(--mn-point); }

/* 목록 */
.notice_sec .board ul {
	width: 100%;
	border-top: 2px solid var(--mn-title);
}

/* 목록 한 줄의 상자 — 글이 있으면 <a>, 없는 자리는 <div> 입니다.
   빈 줄까지 <a href="#"> 로 두면 키보드로 넘길 때 눌러도 아무 일 없는 링크에
   초점이 멈춥니다. 그래서 빈 줄만 <div> 로 바꾸고, 모양은 여기서 함께 잡습니다. */
.notice_sec .board ul li > a,
.notice_sec .board ul li.empty > div {
	display: flex;
	align-items: center;
	gap: 25px;
	padding: 15px 20px;
	border-bottom: 1px solid #dddddd;
	color: var(--mn-title);
}

.notice_sec .board ul li a:hover { background: #fafafa; }

.notice_sec .board ul li .tag {
	flex: 0 0 auto;
	padding: 7px 22px;
	border-radius: 20px;
	background: var(--mn-point);
	color: #ffffff;
	font-size: 14px;
	font-weight: 700;
	line-height: 1;
}

.notice_sec .board ul li p {
	flex: 1;
	min-width: 0;
	margin: 0;
	font-size: 18px;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.notice_sec .board ul li .date {
	flex: 0 0 auto;
	font-size: 15px;
	color: #727272;   /* 흰 배경 4.81:1 — 원래 #888888 은 3.54:1 로 기준(4.5) 미달이었습니다 */
}

/* 글이 없어 빈 줄로 채운 항목 */
.notice_sec .board ul li.empty > div {
	cursor: default;
	color: #bbbbbb;
}


/* ------------------------------------------------------------
 * 4. FAQ
 *    AM 게시판(FAQ 스킨)을 그대로 붙이고, 메인에 맞게 최소한만 손봅니다.
 *    ※ 아래 .new_board_2021 ~ 클래스는 AM FAQ 스킨의 구조입니다.
 *      스킨 버전이 다르면 클래스명이 달라질 수 있으니 그때 맞춰 수정하세요.
 * ------------------------------------------------------------ */
.faq_sec { background: var(--mn-gray); }

.faq_sec .container { max-width: 1170px; }

/* 메인에서는 검색창·페이징을 숨깁니다 */
.faq_sec .con .sch_box,
.faq_sec .con .board_paging,
.faq_sec .con .board_btn { display: none; }

/* 목록 항목 */
.faq_sec .con .new_board_2021 .board_wrap .board_faq_con .list_table { border-top: 0; }

.faq_sec .con .new_board_2021 .board_wrap .board_faq_con .list_table li {
	margin-bottom: 10px;
	background: #ffffff;
	border-radius: 8px;
	overflow: hidden;
}

.faq_sec .con .new_board_2021 .board_wrap .board_faq_con .list_table .n_tbody .n_tr { border-bottom: 0; }

.faq_sec .con .new_board_2021 .board_wrap .board_faq_con .list_table .n_tbody .n_tr .n_td { color: var(--mn-title); }

.faq_sec .con .new_board_2021 .board_wrap .board_faq_con .list_table .n_tbody .n_tr .n_td.title span { font-weight: 700; }

/* 열린 항목 */
.faq_sec .con .new_board_2021 .board_wrap .board_faq_con .list_table .n_tbody li.active .n_td.title {
	color: var(--mn-point) !important;
}

/* 답변 영역 */
.faq_sec .con .new_board_2021 .board_wrap .board_faq_con .list_table .n_tbody .content .n_tr {
	background: none;
	border-bottom: 0;
	border-top: 1px solid #e5e5e5;
}

.spon_sec {}

/* 두 묶음(후원·협찬)의 왼쪽 시작점을 맞춥니다.
   가운데 정렬을 각 묶음이 따로 하면 폭이 달라 라벨이 어긋나므로,
   바깥 상자 하나만 가운데로 놓고 그 안에서 둘 다 왼쪽에 붙입니다. */
.spon_sec .con {
	width: -moz-fit-content;
	width: fit-content;
	max-width: 100%;
	margin-left: auto;
	margin-right: auto;
}
.spon_sec .spon_wrap {
	display: flex;

	/* 라벨(후원·협찬)을 첫 줄 로고와 눈높이를 맞춥니다.
	   center 로 두면 줄이 2줄인 "협찬"에서 라벨이 두 줄 사이로 내려갑니다. */
	align-items: flex-start;

	gap: 60px;

	/* 가운데 정렬 — ⚠ margin-left:50% + translateX(-50%) 를 쓰면 안 됩니다.
	   그 방식은 요소가 쓸 수 있는 폭을 절반(약 685px)으로 줄여 버려서,
	   로고를 추가할 때마다 flex 가 그 줄 전체를 강제로 축소합니다.
	   (실제로 4개 줄은 원본의 61%까지 줄어 있었습니다)
	   fit-content 는 내용만큼만 차지하므로 로고가 원본 크기로 나옵니다. */
	width: fit-content;
	max-width: 100%;
}

/* 줄이 여러 개인 묶음(협찬)의 줄 사이 간격 — 여기 한 곳에서만 잡습니다.
   ⚠ 마크업의 mb40 같은 클래스에 기대면 화면이 좁아져도 40px 로 고정돼
     다른 간격들만 줄어들어 어긋나 보입니다. */
.spon_sec .spon_wrap > div {
	display: flex;
	flex-direction: column;
	gap: 40px;
}

.spon_sec .spon_wrap ul[class*="mb"] { margin-bottom: 0; }

/* 라벨 — 첫 줄 로고 높이 안에서 세로 가운데에 오게 합니다.
   --spon-row-h 는 "첫 줄 로고의 실제 높이"입니다. (현재 62~64px)
   로고를 세로로 훨씬 크거나 작은 것으로 바꾸면 이 값만 다시 맞추면 됩니다. */
.spon_sec .spon_wrap h4 {
	--spon-row-h: 64px;
	display: flex;
	align-items: center;
	min-height: var(--spon-row-h);
	font-size: 30px;
	white-space: nowrap;
}
.spon_sec .spon_wrap ul {
	display: flex;
	align-items: center;
	gap: 45px;
}
.spon_sec .spon_wrap li img.mt {margin-top: 15px;}


/* ============================================================
 *  반응형
 * ============================================================ */

/* ── 태블릿 (~992px) ───────────────────────────────────────── */
@media all and (max-width: 992px) {
	:root { --mv-h: 560px; }

	.main_visual .mv_title { font-size: 48px; }

	.main_title { font-size: 40px; margin-bottom: 30px; }

	.notice_sec .con { gap: 40px; }

	/* 메인비주얼 ────────────────────────────────────────────
	   PC 는 좌우 200px 여백을 두고 글자를 오른쪽 40% 폭에 몰아뒀습니다.
	   좁은 화면에서는 그 폭이 안 나와 버튼이 화면 밖으로 밀려납니다.
	   또 배경(visual-bg.webp 1920x860)은 왼쪽 절반이 비어 있고 오른쪽에 일러스트가 있는
	   가로형이라, cover 로 두면 가운데(=일러스트)가 잘려 글자와 겹칩니다.
	   → 글자는 위, 일러스트는 아래에 깔리도록 배경을 아래쪽 기준으로 내렸습니다. */
	/* ★ 모바일 배경 이미지 교체 지점 ★
	 *
	 *  지금은 PC용 배경(visual-bg.webp 1920x860)을 그대로 쓰고 있습니다.
	 *  이 이미지는 왼쪽 절반이 비어 있고 오른쪽에 일러스트가 있는 가로형이라,
	 *  cover 로 두면 좁은 화면에서 가운데(=일러스트)만 잘려 글자와 겹칩니다.
	 *  그래서 "배경을 화면 폭에 맞춰 아래에 깔고, 그 높이만큼 아래 여백을 비우는"
	 *  방식으로 글자와 겹치지 않게 해뒀습니다.
	 *  (padding 의 % 는 부모 "폭" 기준이라 배경 높이와 항상 같이 움직입니다)
	 *
	 *  ▼ 모바일 전용 배경을 만들면 아래 두 값만 바꾸면 됩니다.
	 *      --mv-img-m    : 이미지 경로
	 *      --mv-bg-ratio : 그 이미지의 (세로 ÷ 가로) × 100%
	 *    예) 780x1040 이미지라면 → 1040/780 = 1.333 → 133%
	 *
	 *  ※ 글자까지 이미지 안에 넣은 "통짜" 배경이라면, 아래 padding-bottom 을 0 으로 두고
	 *     index.php 의 .main_visual_txt 를 비우거나 숨기면 됩니다.
	 */
	.main_visual {
		--mv-img-m: url(/img/main/visual-bg-mo.webp);

		/* ★ 글자 아래로 비워 둘 여백 ★  (화면 "폭" 기준 %)
		   배경 그림 높이가 아니라 "아치·러너가 시작되는 지점"에 맞추는 값입니다.
		   지금 그림(720x1418)은 위쪽 1/3 정도가 비어 있어서, 그림 높이(197%)를
		   그대로 넣으면 비주얼만 쓸데없이 길어집니다.
		   ⚠ 배경 그림을 바꾸면 이 값을 다시 맞춰 주세요. 작으면 그림이 위로 올라와
		     날짜·장소 글자가 아치에 묻힙니다. (예전 그림 기준 95% 였던 값이
		     그대로 남아 글자가 가려져 있었습니다) */
		--mv-bg-ratio: 128%;

		align-items: flex-start;
		background-image: var(--mv-img-m);
		background-size: 100% auto;
		background-position: center bottom;
		padding-bottom: var(--mv-bg-ratio);
	}

	/* position:static 으로 되돌리는 이유 —
	   아래 .btn_wrap 을 "비주얼 맨 아래"에 붙이는데, .container 가 relative 로 남아 있으면
	   글자 블록 높이를 기준으로 붙어 버려 버튼이 글자 바로 밑에 그대로 남습니다.
	   배경은 background-image 라 z-index 가 필요 없어 빼도 안전합니다. */
	.main_visual .container { padding: 30px 20px 0; position: static; }

	/* 글자 이미지 ─────────────────────────────────────────────
	   모바일 배경(visual-bg-mo.webp)은 왼쪽 5~39% 구간에 파란 세로줄무늬가 있고
	   오른쪽 위가 비어 있습니다. 글자를 가로로 꽉 채우면 왼쪽 "2026 Miracle365" 가
	   그 줄무늬에 묻히므로, 폭을 줄여 빈 오른쪽으로 붙입니다.

	   ▼ 크기 조절은 --mv-txt-w 한 값만 바꾸면 됩니다. (작을수록 더 작고 더 오른쪽) */
	.main_visual .main_visual_txt {
		--mv-txt-w: 72%;

		width: 100%;
		align-items: flex-end;
		text-align: right;
	}

	/* 글자 이미지를 감싼 div 에 폭을 주고 이미지는 그 안을 채웁니다.
	   (img 에 직접 % 를 주면 부모 폭이 이미지 크기로 정해져서 값이 안 먹습니다) */
	.main_visual .main_visual_txt > div:first-child { width: var(--mv-txt-w); }

	.main_visual .main_visual_txt img {
		width: 100%;
		max-width: none;
		height: auto;
	}

	/* 참가신청·신청확인 버튼 — 비주얼 맨 아래에 붙입니다.
	   글자 바로 밑이 아니라 일러스트 아래쪽에 놓여, 첫 화면에서 손이 닿는 위치가 됩니다. */
	.main_visual .btn_wrap {
		position: absolute;
		left: 20px;
		right: 20px;
		bottom: 40px;
		width: auto;
		max-width: 420px;
		margin: 0 auto;
	}

	.main_visual .btn_wrap a {
		flex: 1 1 0;
		min-width: 0;
		padding: 13px 10px;
		font-size: 17px;
	}

	.intro_wrap { border-radius: 0 0 140px 0; }
	.sec01 { padding: 90px 0 70px; }
	.sec01 .txt h2 { font-size: 38px; }
	.sec01 .txt p { font-size: 18px; margin-top: 30px; }

	.sec01 img {
		position: static;
		width: 100%;
		height: auto;
		margin-top: 36px;
		transform: translateX(20px);
	}

	/* 섹션2 — 좌우 2단을 위아래 1단으로 */
	.sec02 .con {
		flex-direction: column;
		padding: 40px 30px 0;
		border-radius: 30px;
	}

	.sec02 .con::before { width: 90%; max-width: 560px; height: 46px; top: -22px; }

	.sec02 .txt img { max-width: 80px; margin-bottom: 20px; }
	.sec02 .txt h2 { font-size: 32px; }
	.sec02 .txt h2 span { font-size: 40px; }
	.sec02 .txt p { font-size: 16px; margin-top: 26px; }
	.sec02 .img img { width: 100%; height: auto; }

	/* 섹션3 — iframe 이 width="960" height="670" 고정이라 폭만 100% 로 줄면
	   세로는 670px 그대로 남아 비율이 완전히 깨집니다. */
	.sec03 { padding-bottom: 90px; }
	.sec03 h2 { font-size: 38px; }
	.sec03 .video { margin-top: 30px; }

	.sec03 .video iframe {
		display: block;
		aspect-ratio: 16 / 9;
		height: auto;
	}

	/* 섹션4 대회요강 — 카드가 화면 폭을 다 쓰도록 */
	.sec04 .con {
		width: 100%;
		margin-left: 0;
		transform: none;
		padding: 34px 28px;
	}

	.sec04 .top { font-size: 17px; margin-bottom: 26px; }
	.sec04 table { margin-left: 26px; }
	.sec04 th { padding-top: 8px; font-size: 17px; }
	.sec04 th::before { width: 120px; height: 32px; }
	.sec04 td { padding: 8px 0 8px 44px; font-size: 17px; }
	.sec04 td small { font-size: 13px; }
	.sec04 td.spon img { max-height: 30px; width: auto; }

	/* 코스도 */
	.sec05 { padding: 80px 0; --mq-size: 150px; --mq-bottom: -27px; }
	.sec05 .tab { max-width: 440px; margin-bottom: 28px; }
	.sec05 .tab button { padding: 11px 10px; font-size: 19px; }

	/* 함께한 기업 */
	.spon_sec .spon_wrap { gap: 30px; }
	.spon_sec .spon_wrap h4 { --spon-row-h: 48px; font-size: 22px; }
	.spon_sec .spon_wrap ul { flex-wrap: wrap; justify-content: center; gap: 28px; }
	.spon_sec .spon_wrap > div { gap: 28px; }

	/* 로고는 원본 크기를 지키고, 폭이 모자라면 다음 줄로 넘깁니다.
	   flex:none 이 없으면 한 줄에 욱여넣느라 로고가 통째로 작아집니다. */
	.spon_sec .spon_wrap li { flex: none; }
	.spon_sec .spon_wrap img { max-width: 100%; height: auto; }
}

/* ── 모바일 (~768px) ───────────────────────────────────────── */
@media all and (max-width: 768px) {
	:root { --mv-h: 520px; }

	.main_visual .mv_sub   { font-size: 16px; margin-bottom: 10px; }
	.main_visual .mv_title { font-size: 32px; }
	.main_visual .mv_place { font-size: 15px; margin-bottom: 26px; }

	.main_visual .mv_btn {
		min-width: 180px;
		padding: 13px 30px;
		font-size: 15px;
	}

	.main_title { font-size: 26px; margin-bottom: 28px; }

	.main_title span { font-size: 14px; margin-bottom: 6px; }

	.sec_pd {padding: 60px 0;}

	/* 공지사항 — 이미지가 위, 게시판이 아래로 */
	.notice_sec .con {
		flex-direction: column;
		gap: 20px;
	}

	.notice_sec .con .img { text-align: center; }

	.notice_sec .con .img img { width: 60%; }

	.notice_sec .board { width: 100%; }

	.notice_sec .board .btn-more a { font-size: 14px; }

	.notice_sec .board ul li > a,
	.notice_sec .board ul li.empty > div { gap: 10px; padding: 12px 10px; }

	.notice_sec .board ul li .tag { padding: 5px 12px; font-size: 12px; }

	.notice_sec .board ul li p { font-size: 14px; }

	.notice_sec .board ul li .date { font-size: 12px; }

	/* 메인비주얼 */
	.main_visual .container { padding: 26px 15px 0; }
	.main_visual .btn_wrap { gap: 8px; left: 15px; right: 15px; bottom: 32px; }
	.main_visual .btn_wrap a { padding: 12px 10px; font-size: 16px; }

	.intro_wrap { border-radius: 0 0 80px 0; }

	/* 섹션1 */
	.sec01 { padding: 60px 0 50px; }
	.sec01 .txt h2 { font-size: 26px; }
	.sec01 .txt p { font-size: 15px; margin-top: 22px; }
	.sec01 img { margin-top: 26px; transform: translateX(20px); }

	/* 섹션2 */
	.sec02 .con { padding: 32px 20px 0; border-radius: 20px; }
	.sec02 .con::before { height: 34px; top: -16px; }
	.sec02 .txt img { max-width: 40px; margin-bottom: 14px; }
	.sec02 .txt h2 { font-size: 22px; }
	.sec02 .txt h2 span { font-size: 26px; padding: 0 12px 0 6px; }
	.sec02 .txt p { font-size: 13px; margin-top: 20px; }

	/* 섹션3 */
	.sec03 { padding-bottom: 60px; }
	.sec03 h2 { font-size: 26px; }
	.sec03 .video { margin-top: 22px; }

	/* 섹션4 대회요강 — 표를 세로로 쌓습니다.
	   PC 처럼 th|td 2단으로 두면 알약(185px)과 td 왼쪽여백(70px)만으로 폭을 다 써버려
	   값이 카드 밖으로 밀려납니다. 라벨을 위, 값을 아래로 내려 폭을 확보합니다. */
	.sec04 {background: #fff;}
	.sec04 .con { padding: 24px 16px; border-radius: 14px; }
	.sec04 .top { font-size: 14px; margin-bottom: 20px; }

	.sec04 table,
	.sec04 tbody,
	.sec04 tr,
	.sec04 th,
	.sec04 td { display: block; width: 100%; }

	.sec04 table { margin-left: 0; }

	.sec04 tr { margin-bottom: 20px; }
	.sec04 tr:last-child { margin-bottom: 0; }

	.sec04 th {
		width: 108px;
		padding: 0;
		font-size: 14px;
		line-height: 30px;
		margin-left: 50%;
    	transform: translateX(-50%);
	}

	.sec04 th::before { width: 108px; height: 30px; border-radius: 8px; }

	.sec04 td { padding: 10px 0 0; font-size: 15px; line-height: 1.55; text-align: center; }
	.sec04 td small { font-size: 12px; margin-top: 6px; }

	.sec04 td.spon { flex-wrap: wrap; gap: 12px; padding-top: 12px; justify-content: center; }
	.sec04 td.spon img { max-height: 26px; width: auto; }

	/* 코스도 — .tab 은 width:100% + max-width:440px 이라 화면이 좁아지면 알아서 줄어듭니다 */
	.sec05 { padding: 60px 0; --mq-size: 92px; --mq-time: 28s; --mq-bottom: -17px; }
	.sec05 .tab button { font-size: 17px; }

	/* 코스도 지도 — 원본이 1400x477(약 2.9:1)이라 폭에 맞춰 줄이면 높이가 110px 남짓이 되어
	   지명·거리 표기를 읽을 수 없습니다. 높이를 고정하고 카드 안에서 가로로 넘겨 보게 합니다. */
	.sec05 .course_wrap {
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
	}

	.sec05 .course_map { width: max-content; }

	.sec05 .course_map img {
		width: auto;
		max-width: none;
		height: 240px;
	}
	.sec05 p.small {
		font-size: 14px;
		color: #fff;
	}

	/* 함께한 기업 — 가로 한 줄을 세로로 */
	.spon_sec .spon_wrap {
		flex-direction: column;
		align-items: center;
		gap: 14px;
		width: auto;
	}

	.spon_sec .con { width: auto; }
	.spon_sec .spon_wrap h4 { font-size: 20px; min-height: 0; }
	.spon_sec .spon_wrap ul { gap: 20px; }
	.spon_sec .spon_wrap > div { gap: 20px; }

	/* 모바일은 원본 크기로 두면 로고가 너무 커 보여서, 예전처럼 폭을 제한합니다.
	   (992px 이하에서 준 flex:none 도 여기서 풀어 줄에 맞게 줄어들 수 있게 합니다) */
	.spon_sec .spon_wrap li { flex: 0 1 auto; }
	.spon_sec .spon_wrap img { max-width: 120px; }
}

/* ── 소형 모바일 (~480px) ──────────────────────────────────── */
@media all and (max-width: 480px) {
	:root { --mv-h: 460px; }

	.main_visual .mv_title { font-size: 26px; }
	.main_visual .btn_wrap a { padding: 11px 8px; font-size: 15px; }

	.main_title { font-size: 26px; margin-bottom: 22px; }

	.sec01 .txt h2 { font-size: 26px; }
	.sec02 .txt h2 { font-size: 20px; }
	.sec02 .txt h2 span { font-size: 28px; margin-bottom: 0 !important;}
	.sec03 h2 { font-size: 23px; }

	.sec04 .con { padding: 20px 14px; }
	.sec04 td { font-size: 14px; }

	.sec05 { --mq-size: 74px; --mq-bottom: -13px; }
	.sec05 .course_map img { height: 210px; }
}
