/* koreadesk-2 r2 — 참가 신청 페이지(신청·마감·완료). tokens.css(--ds-*) 다음에 읽는다.
   r1에서: 흰 바탕 열린 배치, 큰 섹션 제목+선, 채운 섹션 목록, 그린 체크·라디오, 항공편 머리 띠, 알약형 업로드·제출 (forum_dev 패턴 참고, 자산·색은 가져오지 않음) */
:root{color-scheme:light}
[hidden]{display:none !important}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:var(--ds-space-5)}
body{margin:0;background:var(--ds-surface);color:var(--ds-text);font-family:var(--ds-font-family-base);font-size:var(--ds-font-size-md);line-height:var(--ds-font-line-height-body);-webkit-text-size-adjust:100%}
a{color:var(--ds-link)}
:focus-visible{outline:var(--ds-focus-width) solid var(--ds-accent);outline-offset:var(--ds-focus-offset)}

/* 배너 — PC 1920×480 cover, 모바일 750×500 원본 비율 */
.banner{background:var(--ds-line)}
.banner img{display:block;width:100%;height:clamp(280px,25vw,480px);object-fit:cover;object-position:center}

/* 행사 제목 */
.event{border-bottom:1px solid var(--ds-line)}
.event__inner{max-width:var(--ds-layout-max);margin:0 auto;padding:var(--ds-space-6) var(--ds-space-4)}
.event__name{margin:0;font-size:var(--ds-font-size-title);line-height:var(--ds-font-line-height-tight);font-weight:var(--ds-font-weight-bold);letter-spacing:-.01em}
.event__date{margin:var(--ds-space-3) 0 0;font-size:var(--ds-font-size-xl);font-weight:var(--ds-font-weight-semibold);color:var(--ds-accent)}
.event__place{margin:var(--ds-space-1) 0 0;font-size:var(--ds-font-size-lg);color:var(--ds-text-muted)}
.event__form{margin:var(--ds-space-5) 0 0;padding-top:var(--ds-space-4);border-top:1px solid var(--ds-line);font-size:var(--ds-font-size-xl);font-weight:var(--ds-font-weight-medium)}

/* 본문: 섹션 목록 + 폼 */
.page{max-width:var(--ds-layout-max);margin:0 auto;padding:var(--ds-space-6) var(--ds-space-4) var(--ds-space-7);display:grid;grid-template-columns:var(--ds-layout-nav) minmax(0,1fr);gap:var(--ds-space-7);align-items:start}
.steps{position:sticky;top:var(--ds-space-5)}
.steps ol{list-style:none;margin:0;padding:var(--ds-space-2) 0;background:var(--ds-panel);border-radius:var(--ds-radius-sm)}
.steps a{display:flex;gap:var(--ds-space-2);align-items:baseline;padding:10px var(--ds-space-4);color:var(--ds-text-muted);text-decoration:none;font-size:var(--ds-font-size-sm);font-weight:var(--ds-font-weight-medium);line-height:var(--ds-font-line-height-tight)}
.steps a:hover{color:var(--ds-text)}
.steps a[aria-current="step"]{background:var(--ds-accent);color:var(--ds-on-accent);font-weight:var(--ds-font-weight-semibold)}
.steps__no{flex:none;font-variant-numeric:tabular-nums}
.steps__no::after{content:"."}
.steps__done{margin-left:auto;color:var(--ds-tone-ok-fg);font-weight:var(--ds-font-weight-bold)}
.steps a[aria-current="step"] .steps__done{color:inherit}
.steps__note{margin:var(--ds-space-3) 0 0;font-size:var(--ds-font-size-xs);color:var(--ds-text-muted)}

/* 섹션: 카드 없이 큰 제목 + 진한 선 */
.section{margin-bottom:var(--ds-space-7)}
.section__head{padding-bottom:var(--ds-space-4);border-bottom:1px solid var(--ds-text)}
.section__title{margin:0;font-size:var(--ds-font-size-section);line-height:var(--ds-font-line-height-tight);font-weight:var(--ds-font-weight-medium);letter-spacing:-.01em}
.section__no{color:var(--ds-accent);font-weight:var(--ds-font-weight-bold)}
.section__body{padding-top:var(--ds-space-2)}
.group{margin:var(--ds-space-6) 0 0;padding-bottom:var(--ds-space-2);border-bottom:1px solid var(--ds-accent);color:var(--ds-accent);font-size:var(--ds-font-size-lg);font-weight:var(--ds-font-weight-semibold)}

/* 안내문 */
.notice{margin:var(--ds-space-4) 0 0;padding:var(--ds-space-4) var(--ds-space-5);background:var(--ds-surface-sunken);border-radius:var(--ds-radius-sm);font-size:var(--ds-font-size-sm)}
.notice p{margin:0}.notice p+p,.notice ul+p,.notice p+ul{margin-top:var(--ds-space-2)}
.notice ul{margin:0;padding-left:1.2em}
.notice strong{font-weight:var(--ds-font-weight-semibold)}
.lead-accent{color:var(--ds-accent)}
.notice--info{background:var(--ds-tone-info-bg)}
.notice--flush{margin-top:0}
.hint{margin:var(--ds-space-1) 0 0;font-size:var(--ds-font-size-sm);color:var(--ds-text-muted)}
.hint--lead{margin:0 0 var(--ds-space-2)}
.hint--intro{margin-top:var(--ds-space-4)}

/* 행: 굵은 라벨 | 입력 */
.row{display:grid;grid-template-columns:var(--ds-control-label-width) minmax(0,1fr);gap:var(--ds-space-2) var(--ds-space-6);padding:var(--ds-space-5) 0;border-bottom:1px solid var(--ds-line)}
.row:last-child{border-bottom:0}
.row__label{padding-top:10px;font-size:var(--ds-font-size-lg);font-weight:var(--ds-font-weight-bold);line-height:var(--ds-font-line-height-tight)}
fieldset.row{display:flow-root;margin:0;padding:var(--ds-space-5) 0;border-width:0 0 1px;border-style:solid;border-color:var(--ds-line);min-width:0}
fieldset.row:last-child{border-bottom:0}
fieldset.row>legend{float:left;padding:10px 0 0;width:var(--ds-control-label-width);font-size:var(--ds-font-size-lg);font-weight:var(--ds-font-weight-bold);line-height:var(--ds-font-line-height-tight)}
fieldset.row>.row__field{margin-left:calc(var(--ds-control-label-width) + var(--ds-space-6))}
.req{color:var(--ds-required);margin-left:2px}
.opt{font-weight:var(--ds-font-weight-regular);color:var(--ds-text-muted);font-size:var(--ds-font-size-sm)}

/* 입력 */
.input{display:block;width:100%;min-height:var(--ds-control-height);padding:9px var(--ds-space-3);border:1px solid var(--ds-line-strong);border-radius:var(--ds-radius-sm);background:var(--ds-surface);color:var(--ds-text);font:inherit;font-size:var(--ds-font-size-md)}
.input::placeholder{color:var(--ds-text-muted)}
.input:hover{border-color:var(--ds-text-muted)}
.input:focus-visible{outline-offset:0;border-color:var(--ds-accent)}
textarea.input{min-height:120px;resize:vertical}
textarea.input[rows]{min-height:0}
select.input{appearance:none;padding-right:40px;background-image:linear-gradient(45deg,transparent 50%,var(--ds-text-muted) 50%),linear-gradient(135deg,var(--ds-text-muted) 50%,transparent 50%);background-position:calc(100% - 20px) 50%,calc(100% - 14px) 50%;background-size:6px 6px;background-repeat:no-repeat}
.row__field>.input[type=date]{max-width:280px}
.grid{display:grid;gap:var(--ds-space-3)}
.grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.sub{display:block;margin-bottom:var(--ds-space-1);font-size:var(--ds-font-size-sm);font-weight:var(--ds-font-weight-medium);color:var(--ds-text)}
.sub--gap{margin-top:var(--ds-space-4)}

/* 선택지 — 줄 전체가 눌림, 표시는 직접 그림(체크=네모, 라디오=원) */
.choices{display:flex;flex-wrap:wrap;gap:var(--ds-space-2)}
.choice{display:inline-flex;align-items:center;gap:10px;min-height:var(--ds-control-height);padding:0 var(--ds-space-4) 0 var(--ds-space-3);border:1px solid var(--ds-line-strong);border-radius:var(--ds-radius-sm);background:var(--ds-surface);cursor:pointer;user-select:none;font-weight:var(--ds-font-weight-medium)}
.choice:hover{border-color:var(--ds-text-muted)}
.choice input{appearance:none;flex:none;width:18px;height:18px;margin:0;border:1.5px solid var(--ds-line-strong);border-radius:4px;background:var(--ds-surface) no-repeat center/12px 12px;cursor:pointer}
.choice input[type=radio]{border-radius:50%}
.choice input:checked{border-color:var(--ds-accent);background-color:var(--ds-accent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.3 2.3 4.7-5' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
.choice input[type=radio]:checked{background-image:radial-gradient(circle,var(--ds-on-accent) 0 3px,transparent 3.5px);background-size:auto}
.choice:has(input:checked){border-color:var(--ds-accent);color:var(--ds-accent)}
.choice:has(input:focus-visible){outline:var(--ds-focus-width) solid var(--ds-accent);outline-offset:var(--ds-focus-offset)}
.choice input:focus-visible{outline:0}
.reveal{margin-top:var(--ds-space-3);padding-left:var(--ds-space-4);border-left:3px solid var(--ds-accent)}

/* 업로드 — 알약 버튼, 고른 뒤 파일 이름 칩 + 지우기 */
.file{display:flex;flex-wrap:wrap;align-items:center;gap:var(--ds-space-2) var(--ds-space-3)}
.file input{position:absolute;opacity:0;width:1px;height:1px}
.file__btn{display:inline-flex;align-items:center;gap:var(--ds-space-2);min-height:var(--ds-control-height);padding:0 var(--ds-space-5);border-radius:var(--ds-radius-pill);background:var(--ds-text-muted);color:var(--ds-on-accent);font-weight:var(--ds-font-weight-semibold);cursor:pointer}
.file__btn:hover{background:var(--ds-text)}
.file input:focus-visible+.file__chip,.file:has(input:focus-visible) .file__btn{outline:var(--ds-focus-width) solid var(--ds-accent);outline-offset:var(--ds-focus-offset)}
.file__chip{display:inline-flex;align-items:center;gap:var(--ds-space-1);max-width:100%;padding:var(--ds-space-1) var(--ds-space-1) var(--ds-space-1) var(--ds-space-3);border:1px solid var(--ds-accent);border-radius:var(--ds-radius-pill);color:var(--ds-accent);font-size:var(--ds-font-size-sm);font-weight:var(--ds-font-weight-medium)}
.file__chip>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file__remove{flex:none;width:28px;height:28px;border:0;border-radius:50%;background:transparent;color:inherit;font-size:20px;line-height:1;cursor:pointer}
.file__remove:hover{background:var(--ds-accent-soft)}

/* 항공편 — 채운 머리 띠 + 옅은 판 */
.legs{display:grid;gap:var(--ds-space-4);margin-top:var(--ds-space-5)}
.leg{border-radius:var(--ds-radius-sm);overflow:hidden;min-width:0}
.leg__title{margin:0;padding:var(--ds-space-3) var(--ds-space-5);background:var(--ds-accent);color:var(--ds-on-accent);font-size:var(--ds-font-size-lg);font-weight:var(--ds-font-weight-semibold)}
.leg__route{margin-left:var(--ds-space-2);font-weight:var(--ds-font-weight-regular);opacity:.85}
.leg__body{padding:var(--ds-space-2) var(--ds-space-5) var(--ds-space-5);background:var(--ds-surface-sunken);border:1px solid var(--ds-line);border-top:0;border-radius:0 0 var(--ds-radius-sm) var(--ds-radius-sm)}
.leg h4{margin:var(--ds-space-4) 0 var(--ds-space-2);font-size:var(--ds-font-size-sm);font-weight:var(--ds-font-weight-semibold);color:var(--ds-accent);text-transform:uppercase;letter-spacing:.04em}
/* 칸 4개(City/State·Airport·Flight No.·Date & time)를 한 줄에, 인천 쪽(2칸)은 오른쪽 두 열에 맞춘다 */
.leg .grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,.8fr) minmax(0,1.3fr)}
.leg .grid--icn>:first-child{grid-column:3}
.leg label{display:block;min-width:0}

/* 버튼 */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--ds-space-2);min-height:var(--ds-control-height);padding:0 var(--ds-space-5);border:1px solid var(--ds-accent);border-radius:var(--ds-radius-pill);background:var(--ds-surface);color:var(--ds-accent);font:inherit;font-weight:var(--ds-font-weight-semibold);cursor:pointer;text-decoration:none}
.btn:hover{background:var(--ds-accent-soft)}
.btn--primary{background:var(--ds-accent);color:var(--ds-on-accent)}
.btn--primary:hover{background:var(--ds-accent-hover)}
.btn--lg{min-height:56px;min-width:280px;padding:0 var(--ds-space-7);font-size:var(--ds-font-size-lg)}

/* 동의·제출 */
.consent{margin-top:var(--ds-space-5);max-height:200px;overflow:auto;padding:var(--ds-space-5);border:1px solid var(--ds-text);font-size:var(--ds-font-size-sm);font-weight:var(--ds-font-weight-medium)}
.consent p{margin:0}
.agree{justify-content:flex-end;margin-top:var(--ds-space-3)}
.submit{margin-top:var(--ds-space-6);text-align:center}
.submit p{margin:var(--ds-space-3) 0 0;font-size:var(--ds-font-size-sm);color:var(--ds-text-muted)}

/* 오류 */
.errors{margin-bottom:var(--ds-space-6);padding:var(--ds-space-4) var(--ds-space-5);background:var(--ds-tone-fail-bg);border-left:4px solid var(--ds-tone-fail-fg);border-radius:var(--ds-radius-sm);color:var(--ds-tone-fail-fg)}
.errors h2{margin:0 0 var(--ds-space-2);font-size:var(--ds-font-size-lg)}
.errors ul{margin:0;padding-left:1.2em}
.errors a{color:inherit}
.err{margin:var(--ds-space-1) 0 0;font-size:var(--ds-font-size-sm);font-weight:var(--ds-font-weight-medium);color:var(--ds-tone-fail-fg)}
.is-invalid .input,.is-invalid .choice{border-color:var(--ds-tone-fail-fg)}

/* 마감·완료 화면 */
.state{max-width:760px;margin:0 auto;padding:var(--ds-space-7) var(--ds-space-4);text-align:center}
.state__icon{display:inline-grid;place-items:center;width:64px;height:64px;border-radius:50%;background:var(--ds-accent-soft);color:var(--ds-accent)}
.state__icon--ok{background:var(--ds-tone-ok-bg);color:var(--ds-tone-ok-fg)}
.state__title{margin:var(--ds-space-4) 0 0;font-size:var(--ds-font-size-section);line-height:var(--ds-font-line-height-tight);font-weight:var(--ds-font-weight-semibold)}
.state__text{margin:var(--ds-space-3) 0 0;font-size:var(--ds-font-size-lg);color:var(--ds-text-muted)}
.state__box{margin:var(--ds-space-5) 0 0;padding:var(--ds-space-4) var(--ds-space-5);background:var(--ds-surface-sunken);border-radius:var(--ds-radius-sm);text-align:left;font-size:var(--ds-font-size-sm)}
.state__box p{margin:0}.state__box p+p{margin-top:var(--ds-space-2)}

.foot{margin:0 var(--ds-space-4);padding:var(--ds-space-5) 0;border-top:1px solid var(--ds-line);text-align:center;font-size:var(--ds-font-size-xs);color:var(--ds-text-muted)}

/* 태블릿 이하: 섹션 목록을 위쪽에 붙는 남색 띠로 */
@media (max-width:1023px){
  .page{grid-template-columns:minmax(0,1fr);gap:0;padding-top:0}
  .steps{position:sticky;top:0;z-index:5;margin:0 calc(-1 * var(--ds-space-4)) var(--ds-space-5);background:var(--ds-accent)}
  .steps__note{display:none}
  .steps ol{display:flex;gap:var(--ds-space-5);overflow-x:auto;padding:0 var(--ds-space-4);background:none;border-radius:0;scrollbar-width:none}
  .steps ol::-webkit-scrollbar{display:none}
  .steps a{position:relative;flex:none;height:52px;align-items:center;padding:0;white-space:nowrap;color:var(--ds-on-accent);opacity:.7}
  .steps a:hover{color:var(--ds-on-accent);opacity:1}
  .steps a[aria-current="step"]{background:none;opacity:1}
  .steps a[aria-current="step"]::after{content:"";position:absolute;left:0;right:0;bottom:0;height:4px;background:var(--ds-on-accent)}
  .steps__done{color:inherit}
  html{scroll-padding-top:72px}
  .leg .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .leg .grid--icn>:first-child{grid-column:auto}
}
@media (max-width:767px){
  .banner img{height:auto;aspect-ratio:3/2}
  .event__inner{padding:var(--ds-space-5) var(--ds-space-4)}
  .event__name{font-size:26px}
  .event__date{font-size:var(--ds-font-size-lg)}
  .event__place{font-size:var(--ds-font-size-md)}
  .event__form{font-size:var(--ds-font-size-lg);margin-top:var(--ds-space-4)}
  .section__title{font-size:24px}
  .row{grid-template-columns:minmax(0,1fr);gap:var(--ds-space-2);padding:var(--ds-space-4) 0}
  .row__label{padding-top:0;font-size:var(--ds-font-size-md)}
  fieldset.row{padding:var(--ds-space-4) 0}
  fieldset.row>legend{float:none;width:auto;padding:0 0 var(--ds-space-2);font-size:var(--ds-font-size-md)}
  fieldset.row>.row__field{margin-left:0}
  .grid--3{grid-template-columns:minmax(0,1fr)}
  .leg__body{padding-left:var(--ds-space-4);padding-right:var(--ds-space-4)}
  .leg__title{padding-left:var(--ds-space-4);padding-right:var(--ds-space-4)}
  .leg .grid{grid-template-columns:minmax(0,1fr)}
  .choice{flex:1 1 auto}
  .btn--lg{width:100%;min-width:0}
  .agree .choice{flex:0 1 auto}
}

/* koreadesk: 읽기 전용 복사 칸 (4번 Hotel 의 Passport No.) */
.input[readonly]{background:var(--ds-surface-sunken);color:var(--ds-text-muted);cursor:default}
