/* ===== 페이지 전용 (메인 히어로 · 스터디 · 갤러리 · 신청) ===== */

/* 히어로: 좌 대형 슬라이더 / 우 랭킹 패널 */
.hero{padding-top:var(--s-7);padding-bottom:var(--s-7)}
.hero__grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:var(--s-5);align-items:start}
@media (max-width:1023px){ .hero__grid{grid-template-columns:minmax(0,1fr)} }
.hero__badge{display:inline-flex;align-items:center;gap:var(--s-2);height:38px;padding:0 16px;border-radius:999px;
  background:var(--brand);color:#fff;font-size:14px;font-weight:700;line-height:1;margin-bottom:var(--s-4)}
.hero__badge .icon{--icon:20px;color:#fff}
.slider{position:relative;border-radius:var(--r-4);overflow:hidden;background:#101322}
.slide{position:relative;aspect-ratio:16/9;display:none}
.slide.is-on{display:block}
@media (max-width:767px){ .slide{aspect-ratio:4/5} }
.slide img{width:100%;height:100%;object-fit:cover}
.slide__scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(6,8,18,.28) 0%,rgba(6,8,18,.72) 46%,rgba(6,8,18,.94) 100%)}
.slide__txt{position:absolute;left:0;right:0;bottom:0;padding:var(--s-7) var(--s-6);display:flex;flex-direction:column;gap:var(--s-3)}
@media (max-width:767px){ .slide__txt{padding:var(--s-6) var(--s-5)} }
.slide__cat{font-size:14px;font-weight:700;color:#DCE2FF}
.slide__tt{font-size:30px;line-height:1.4;color:#fff;text-align:left;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
@media (max-width:767px){ .slide__tt{font-size:22px} }
.slider__ctrl{position:absolute;right:var(--s-5);bottom:var(--s-5);z-index:3;display:inline-flex;align-items:center;gap:var(--s-2);
  height:38px;padding:0 16px;border-radius:999px;background:rgba(6,8,18,.80);color:#fff;font-size:14px;
  font-variant-numeric:tabular-nums;border:1px solid rgba(255,255,255,.45)}
.slider__ctrl .icon{--icon:16px;color:#fff}
.slider__nav{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:space-between;
  padding:0 var(--s-4);pointer-events:none}
.slider__nav button{pointer-events:auto;width:44px;height:44px;border-radius:50%;background:rgba(6,8,18,.66);
  border:1px solid rgba(255,255,255,.45);display:inline-flex;align-items:center;justify-content:center}
.slider__nav .icon{--icon:20px;color:#fff}
@media (hover:hover){ .slider__nav button:hover{background:rgba(6,8,18,.9)} }

.rank{display:flex;flex-direction:column;gap:var(--s-5)}
.rank__item{display:flex;align-items:flex-start;gap:var(--s-4);padding-bottom:var(--s-5);border-bottom:1px solid var(--line-strong)}
.rank__item:last-child{padding-bottom:0;border-bottom:0}
.rank__n{font-size:20px;font-weight:700;color:var(--brand);font-variant-numeric:tabular-nums;width:24px;flex:0 0 auto;line-height:1.5}
.rank__txt{flex:1;min-width:0}
.rank__tt{font-size:15px;line-height:1.5;text-align:left;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rank__meta{margin-top:var(--s-2);font-size:13px;color:var(--text-sub)}
.rank__thumb{width:64px;height:64px;flex:0 0 auto;border-radius:var(--r-2);overflow:hidden;background:var(--bg-soft)}
.rank__thumb img{width:100%;height:100%;object-fit:cover}

/* 가로 스크롤 스터디 레일 */
.rail{display:flex;gap:var(--s-5);overflow-x:auto;padding-bottom:var(--s-4);scroll-snap-type:x mandatory}
.rail>*{flex:0 0 320px;scroll-snap-align:start}
@media (max-width:479px){ .rail>*{flex:0 0 268px} }

/* 스터디 카드 */
.scard{display:flex;flex-direction:column;height:100%;background:#fff;border:1px solid var(--line);
  border-radius:var(--r-3);box-shadow:var(--shadow);padding:var(--box-pad)}
.scard__top{display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap}
.scard__tt{margin-top:var(--s-3);font-size:18px;line-height:1.5;text-align:left;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2lh}
.scard__desc{margin-top:var(--s-3);font-size:14px;line-height:1.7;color:var(--text-sub);text-align:left;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.scard__info{margin-top:var(--s-5);display:flex;flex-direction:column;gap:var(--s-2);font-size:13px;color:var(--text-sub)}
.scard__foot{margin-top:auto;padding-top:var(--s-5)}

/* 멤버 카드 */
.mcard{display:flex;flex-direction:column;height:100%;background:#fff;border:1px solid var(--line);
  border-radius:var(--r-3);box-shadow:var(--shadow);overflow:hidden}
.mcard__head{display:flex;align-items:center;gap:var(--s-3);padding:var(--box-pad);border-bottom:1px solid var(--line-strong)}
.mcard__ava{width:48px;height:48px;border-radius:50%;overflow:hidden;flex:0 0 auto;background:var(--bg-soft)}
.mcard__ava img{width:100%;height:100%;object-fit:cover}
.mcard__nm{font-size:16px;font-weight:700;line-height:1.5}
.mcard__role{font-size:13px;color:var(--text-sub);margin-top:var(--s-1)}
.mcard__list{padding:var(--box-pad);display:flex;flex-direction:column;gap:var(--s-4);flex:1}
.mcard__row{display:flex;align-items:flex-start;gap:var(--s-3)}
.mcard__row p{flex:1;min-width:0;font-size:14px;line-height:1.7;text-align:left;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.mcard__row img{width:56px;height:56px;flex:0 0 auto;border-radius:var(--r-2);object-fit:cover}

/* 가입 유도 밴드 */
.joinband{background:linear-gradient(135deg,#EEF1FE 0%,#F7F4FF 50%,#EAF3FF 100%)}
.joinband__in{display:flex;align-items:center;justify-content:space-between;gap:var(--s-6);flex-wrap:wrap}
.joinband__tt{font-size:28px;line-height:1.5;text-align:left}
.joinband__desc{margin-top:var(--s-3);font-size:16px;color:var(--text-sub);text-align:left;max-width:56ch}
@media (max-width:767px){ .joinband__tt{font-size:22px} .joinband .btn-group{width:100%} .joinband .btn-group .btn{width:100%} }

/* 통계 */
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s-5)}
@media (max-width:767px){ .stats{grid-template-columns:repeat(2,minmax(0,1fr))} }
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--r-3);padding:var(--box-pad);box-shadow:var(--shadow)}
.sec--dark .stat{background:#1A1F35;border-color:var(--line)}
.stat__v{font-size:30px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.5}
.stat__l{margin-top:var(--s-3);font-size:14px;color:var(--text-sub)}

/* 갤러리 */
.gal{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-5)}
@media (max-width:767px){ .gal{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:479px){ .gal{grid-template-columns:minmax(0,1fr)} }
.gal__it{position:relative;display:block;border-radius:var(--r-3);overflow:hidden;border:1px solid var(--line);
  background:var(--bg-soft);aspect-ratio:4/3;width:100%;padding:0}
.gal__it img{width:100%;height:100%;object-fit:cover}
.gal__cap{position:absolute;left:0;right:0;bottom:0;padding:var(--s-5) var(--s-4) var(--s-4);
  background:linear-gradient(180deg,rgba(6,8,18,.62) 0%,rgba(6,8,18,.94) 100%);color:#fff;font-size:14px;font-weight:600;text-align:left}
.lbox{position:fixed;inset:0;z-index:90;background:rgba(6,8,18,.92);display:flex;align-items:center;justify-content:center;padding:var(--s-5)}
.lbox__fig{max-width:min(1000px,92vw);width:100%}
.lbox__fig img{width:100%;height:auto;max-height:76vh;object-fit:contain;border-radius:var(--r-2)}
.lbox__cap{margin-top:var(--s-4);color:#fff;font-size:15px;text-align:center}
.lbox__x{position:absolute;top:16px;right:16px;width:44px;height:44px;border-radius:50%;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.5);display:inline-flex;align-items:center;justify-content:center}
.lbox__x .icon{--icon:24px;color:#fff}
.lbox__nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.5);display:inline-flex;align-items:center;justify-content:center}
.lbox__nav .icon{--icon:24px;color:#fff}
.lbox__prev{left:16px} .lbox__next{right:16px}

/* 목록 툴바 */
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);flex-wrap:wrap;margin-bottom:var(--s-6)}
.toolbar__l{display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap}
.toolbar__r{display:flex;align-items:center;gap:var(--s-3);margin-left:auto}
.toolbar__cnt{font-size:15px;color:var(--text-sub);font-variant-numeric:tabular-nums}
.toolbar select.inp{width:auto;min-width:148px;height:38px;font-size:14px}
.searchbar{display:flex;gap:var(--s-2);align-items:center}
.searchbar .inp{height:38px;width:220px;font-size:14px}
@media (max-width:479px){ .searchbar .inp{width:100%} .toolbar__r{width:100%;margin-left:0} }

/* 상세 레이아웃 */
.dtl{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--s-8);align-items:start}
@media (max-width:1023px){ .dtl{grid-template-columns:minmax(0,1fr)} }
.aside{position:sticky;top:calc(var(--header-h) + var(--s-5));display:flex;flex-direction:column;gap:var(--s-5)}
@media (max-width:1023px){ .aside{position:static} }
.pn{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-4);margin-top:var(--s-8)}
@media (max-width:479px){ .pn{grid-template-columns:minmax(0,1fr)} }
.pn__it{display:flex;flex-direction:column;gap:var(--s-2);background:#fff;border:1px solid var(--line);
  border-radius:var(--r-3);padding:var(--box-pad);box-shadow:var(--shadow);min-height:60px}
.pn__lb{font-size:13px;color:var(--text-sub)}
.pn__tt{font-size:15px;font-weight:700;line-height:1.5;text-align:left;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pn__it--next{text-align:right}
.pn__it--next .pn__lb,.pn__it--next .pn__tt{text-align:right}

/* 댓글 */
.cmt{display:flex;gap:var(--s-4);padding:var(--s-5) 0;border-bottom:1px solid var(--line-strong)}
.cmt img{width:40px;height:40px;border-radius:50%;flex:0 0 auto;object-fit:cover}
.cmt__b{flex:1;min-width:0}
.cmt__nm{font-size:14px;font-weight:700}
.cmt__dt{font-size:13px;color:var(--text-sub);margin-left:var(--s-2)}
.cmt__tx{margin-top:var(--s-2);font-size:15px;line-height:1.7;text-align:left;max-width:80ch}

/* 지도 자리 */
.mapbox{aspect-ratio:16/9;border-radius:var(--r-3);border:1px solid var(--line-strong);background:
  repeating-linear-gradient(45deg,#EEF1F6 0 12px,#E6EAF2 12px 24px);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-3);text-align:center;padding:var(--s-5)}
@media (max-width:767px){ .mapbox{aspect-ratio:4/3} }
.mapbox__t{font-size:16px;font-weight:700}
.mapbox__d{font-size:14px;color:var(--text-sub)}

/* 완료 화면 */
.done{max-width:640px;margin:0 auto;text-align:center}
.done__ico{width:64px;height:64px;border-radius:50%;background:var(--brand);display:grid;place-items:center;margin:0 auto var(--s-5)}
.done__ico .icon{--icon:40px;color:#fff}
.done__tt{font-size:28px;line-height:1.5}
.done__d{margin-top:var(--s-4);font-size:16px;line-height:1.8;color:var(--text-sub)}
.done .panel{margin-top:var(--s-6);text-align:left}
.done .btn-group{margin-top:var(--s-6);justify-content:center}
@media (max-width:479px){ .done .btn-group{flex-direction:column;align-items:stretch} .done .btn-group .btn{width:100%} }

/* 요약 정의 목록 */
.dl{display:grid;grid-template-columns:132px minmax(0,1fr);gap:var(--s-3) var(--s-4);font-size:15px;line-height:1.7}
.dl dt{color:var(--text-sub);text-align:left}
.dl dd{margin:0;font-weight:600;text-align:left;overflow-wrap:anywhere}
@media (max-width:479px){ .dl{grid-template-columns:100px minmax(0,1fr)} }

/* 연혁 */
.hist{border-top:1px solid var(--line-strong)}
.hist__row{display:grid;grid-template-columns:120px minmax(0,1fr);gap:var(--s-5);padding:var(--s-5) 0;border-bottom:1px solid var(--line-strong)}
.hist__y{font-size:20px;font-weight:700;color:var(--brand);font-variant-numeric:tabular-nums;line-height:1.5}
.hist__li{font-size:15px;line-height:1.7;margin-bottom:var(--s-2)}
@media (max-width:479px){ .hist__row{grid-template-columns:minmax(0,1fr);gap:var(--s-3)} }

/* 탭 */
.tabs{display:flex;gap:var(--s-2);border-bottom:1px solid var(--line-strong);margin-bottom:var(--s-6);overflow-x:auto}
.tabs button{height:44px;padding:0 16px;font-size:15px;font-weight:700;color:var(--text-sub);white-space:nowrap;
  border-bottom:2px solid transparent}
.tabs button.is-on{color:var(--brand);border-bottom-color:var(--brand)}

/* span 블록 보정 */
.rank__txt,.rank__tt,.rank__meta{display:block}
.mcard__txt{min-width:0;display:block}
.mcard__nm,.mcard__role{display:block}
.scard__info>span{display:inline-flex}
.hcard__tt a,.card__tt a,.rank__tt a,.mcard__row a{display:block}
.pn__lb,.pn__tt{display:block}
.pn__it{justify-content:center}
.aside .notebox p strong{display:inline-block;margin-bottom:var(--s-2)}

/* 신청 폼 · 선택 카드 */
#stepForm fieldset{border:0;margin:0;padding:0;min-width:0}
#stepForm legend{padding:0}
.picks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-4)}
@media (max-width:767px){ .picks{grid-template-columns:minmax(0,1fr)} }
.pickcard{position:relative;display:block;cursor:pointer}
.pickcard input{position:absolute;top:16px;left:16px;width:20px;height:20px;margin:0;accent-color:var(--brand);z-index:2}
.pickcard__b{display:block;background:#fff;border:1px solid var(--line-strong);border-radius:var(--r-3);
  padding:var(--box-pad) var(--box-pad) var(--box-pad) 52px;height:100%}
.pickcard input:checked + .pickcard__b{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand) inset}
.pickcard__top{display:flex;gap:var(--s-2);flex-wrap:wrap}
.pickcard__tt{display:block;margin-top:var(--s-3);font-size:16px;font-weight:700;line-height:1.5}
.pickcard__meta{display:block;margin-top:var(--s-2);font-size:13px;color:var(--text-sub)}
.pickcard .prog{margin-top:var(--s-4)}
.pickcard .prog__row{display:flex}
@media (hover:hover){ .pickcard:hover .pickcard__b{border-color:var(--text)} }
.calwrap{display:grid;grid-template-columns:minmax(0,320px) minmax(0,1fr);gap:var(--s-6);align-items:start}
@media (max-width:767px){ .calwrap{grid-template-columns:minmax(0,1fr)} }
.slotbox{min-width:0}
.steps{list-style:none}

/* 공지 목록 */
.nlist{border-top:1px solid var(--line-strong)}
.nlist__it{display:flex;align-items:center;gap:var(--s-4);padding:var(--s-5) 0;border-bottom:1px solid var(--line-strong)}
.nlist__tt{flex:1;min-width:0;font-size:17px;font-weight:700;line-height:1.5;text-align:left}
.nlist__tt a{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nlist__meta{display:flex;align-items:center;gap:var(--s-5);font-size:13px;color:var(--text-sub);flex:0 0 auto}
@media (max-width:767px){
  .nlist__it{flex-wrap:wrap;gap:var(--s-2)}
  .nlist__tt{flex:1 1 100%;order:2;white-space:normal}
  .nlist__tt a{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
  .nlist__meta{order:3;flex:1 1 100%;justify-content:flex-start}
}
.linklist li{padding:var(--s-3) 0;border-bottom:1px solid var(--line-strong);font-size:14px;line-height:1.7}
.linklist li:last-child{border-bottom:0;padding-bottom:0}
.linklist a{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 줄바꿈 클램프를 링크에도 동일 적용 (부모 clamp 만으로는 링크 박스가 넘침) */
.card__tt a,.hcard__tt a,.scard__tt a{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rank__tt a{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.mcard__row p a{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* 카드 하단 줄바꿈 — 좁은 카드에서 작성자 이름이 잘리지 않도록 */
.card__foot{flex-wrap:wrap;row-gap:var(--s-2)}
.card__author{flex:1 0 auto;min-width:0}
.card__stats{flex:0 0 auto}
.card__author span{overflow:visible;text-overflow:clip;white-space:nowrap}
/* 툴바 좁은 폭 */
@media (max-width:560px){
  .toolbar__r{flex-wrap:wrap;width:100%;margin-left:0}
  .toolbar .searchbar{flex:1 1 100%}
  .toolbar .searchbar .inp{flex:1 1 auto;width:auto;min-width:0}
  .toolbar select.inp{width:100%;min-width:0;flex:1 1 100%}
}

/* 좁은 폭 보정 2차 */
.searchbar{width:100%;min-width:0}
.searchbar .inp{flex:1 1 0;min-width:0}
@media (max-width:560px){ .step__t{display:none} }
@media (max-width:767px){ .hero .cards--2{grid-template-columns:minmax(0,1fr)} }
@media (max-width:479px){ .hcard__thumb{width:80px} }
.linklist a{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;text-overflow:clip}
.nlist__tt a{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;text-overflow:clip}
@media (max-width:767px){ .nlist__tt a{-webkit-line-clamp:2} }
