@charset "utf-8";
/* ==========================================================================
   main.css — index only (hero · intro/cylinder · festival map · programs · news · partners)
   ========================================================================== */

/* ---------- hero ---------- */
.hero{position:relative;background:var(--c-navy);overflow:hidden}
.hero__media{position:relative;aspect-ratio:2560/1101;max-height:100svh;min-height:56rem;container-type:size;overflow:hidden}
.hero__art{position:absolute;left:50%;top:50%;width:max(100cqw,calc(100cqh * 2560 / 1080));aspect-ratio:2560/1080;transform:translate(-50%,-50%)}
.hero__bg{position:absolute;inset:0;width:100%;height:100%}
.hero__title{position:absolute;inset:0;pointer-events:none}
.hero__line{position:absolute;left:27.34375%;width:45.3125%;display:block}
.hero__line img{width:100%;height:auto}
.hero__line--1{top:10.926%}
.hero__line--2{top:19.815%}
.hero__line--3{top:30.556%}
.hero__line--4{top:38.148%}
.hero__snow{position:absolute;inset:0;pointer-events:none}
.hero__snow i{position:absolute;top:-2%;width:var(--s,6px);height:var(--s,6px);border-radius:50%;background:#fff;opacity:var(--o,.7)}
@media (max-width:1023px){
  .hero__media{aspect-ratio:auto;min-height:0;max-height:none;height:calc(140vw * 1080 / 2560 + 80px);container-type:normal}
  .hero__art{top:80px;width:140vw;transform:translateX(-50%)}
}
@media (max-width:767px){
  .hero__media{height:calc(210vw * 1080 / 2560 + 64px)}
  .hero__art{top:64px;width:210vw}
}

/* ---------- intro (sec01) ---------- */
.intro{position:relative;padding:14rem 0 20rem;background:#fff;overflow:hidden}
.intro__circles{position:absolute;left:calc(50% - 42.2rem);top:-118.778rem;width:177.7rem;max-width:none;height:290.2rem;pointer-events:none}
.intro .inner{position:relative}
.intro__title{position:relative;z-index:1;font-size:10rem;font-weight:700;line-height:1.2;color:#000}
.intro__title span{display:block}
.intro__body{position:relative;z-index:2;display:flex;flex-direction:column;align-items:flex-start;gap:10rem;width:70rem;margin:15rem 0 0 auto}
.intro__text{display:flex;flex-direction:column;gap:3rem;color:#000}
.intro__lead{font-size:4rem;font-weight:600;line-height:1.4}
.intro__lead span{display:block;white-space:pre}
.intro__desc{font-size:max(15px,2.4rem);line-height:1.4}
.intro__date{font-size:max(14px,2rem);line-height:1}
.intro__cylinder{position:absolute;left:-1.3rem;top:35.929rem;z-index:1;width:66.4rem;height:52.4rem}

/* cylinder (3D ring of posters, Y-axis only) */
.cylinder{position:relative;width:100%;height:100%}
.cylinder__stage{position:absolute;inset:-6rem -4rem;perspective:170rem;perspective-origin:50% -30%}
.cylinder__ring{--r:31.1rem;position:absolute;left:50%;top:50%;width:30rem;height:42rem;transform-style:preserve-3d;transform:translate3d(-50%,-50%,0) rotateY(0deg)}
.cylinder__poster{position:absolute;inset:0;display:block;transform:rotateY(calc(var(--i,0) * 60deg)) translateZ(var(--r));backface-visibility:visible}
.cylinder__poster img{width:100%;height:100%;object-fit:cover}
.cylinder__ring.is-curved>.cylinder__poster{display:none}
.cylinder__slice{position:absolute;left:50%;top:0;height:100%;background-repeat:no-repeat;backface-visibility:visible}
.cylinder__slice.is-back{filter:brightness(.55)}
.cylinder{cursor:pointer}
.cylinder__view{position:absolute;left:50%;top:50%;z-index:5;display:flex;align-items:center;justify-content:center;width:12.4rem;height:12.4rem;border-radius:50%;background:#e2875f;color:#1f2b46;font-size:max(15px,2.2rem);font-weight:700;transform:translate(-50%,-50%) scale(0);transition:transform .45s var(--ease-out),background-color .25s ease}
.cylinder:hover .cylinder__view,.cylinder__view:focus-visible{transform:translate(-50%,-50%) scale(1)}
.cylinder__view:hover{background:var(--c-orange)}
.cylinder__fallback{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.cylinder.is-3d .cylinder__fallback{display:none}

@media (max-width:1023px){
  .intro{padding:72px 0 120px}
  .intro__circles{left:auto;right:-60vw;top:-40vw;width:150vw;height:auto}
  .intro__title{font-size:clamp(40px,8vw,72px)}
  .intro__cylinder{position:relative;left:auto;top:auto;width:min(100%,560px);height:auto;aspect-ratio:664/524;margin:56px auto 0}
  .intro__body{width:100%;margin:80px 0 0;gap:44px}
  .intro__lead{font-size:clamp(22px,3.6vw,32px)}
  .intro__desc{font-size:17px}
  .intro__date{font-size:16px}
  .cylinder__stage{inset:0;perspective:1100px}
  .cylinder__ring{width:40%;height:auto;aspect-ratio:300/420}
  .cylinder__view{width:84px;height:84px;font-size:16px}
}
@media (max-width:767px){
  .intro{padding:56px 0 96px}
  .intro__title{font-size:clamp(34px,10vw,48px)}
  .intro__cylinder{margin-top:36px}
  .intro__body{margin-top:40px;gap:36px}
  .intro__lead{font-size:clamp(19px,5.6vw,24px)}
  .intro__lead span{white-space:normal}
  .intro__desc{font-size:15px;line-height:1.6}
}

/* ---------- festival map (sec02) ---------- */
.fmap{position:relative;background:var(--c-ink);color:#fff}
.fmap__edge{display:block;height:2.398rem;background:#fff url("../images/main/main_map_edge.png") center bottom/auto 100% repeat-x}
.fmap__container{padding:15rem 0;overflow:hidden}
.fmap__content{position:relative;display:flex;align-items:stretch;height:90rem}
.fmap__list{flex-shrink:0;display:flex;flex-direction:column;width:50rem;height:100%}
.fmap__item{flex:1 1 0;min-height:0;margin-bottom:-1px;border:1px solid #1c1c1c;transition:flex-grow .5s var(--ease)}
.fmap__item:last-child{margin-bottom:0}
.fmap__item.is-active{flex:0 0 17rem;background:#1c1c1c}
.fmap__btn{display:flex;align-items:center;width:100%;height:100%;padding:3rem 5rem;text-align:left;color:rgba(255,255,255,.5);transition:background-color .3s ease,color .3s ease}
.fmap__btn:hover,.fmap__btn:focus-visible{background:#161616;color:#fff}
.fmap__item.is-active .fmap__btn{color:#fff;background:#1c1c1c}
.fmap__item.is-active .fmap__btn:hover .fmap__name,.fmap__item.is-active .fmap__btn:focus-visible .fmap__name{color:var(--c-orange)}
.fmap__num{flex-shrink:0;width:5rem;font-family:var(--ff-num);font-size:max(16px,2.4rem);line-height:1.4}
.fmap__body{display:flex;flex-direction:column;min-width:0}
.fmap__name{font-size:max(14px,2rem);font-weight:600;line-height:1;transition:font-size .35s var(--ease),color .25s ease}
.fmap__date{display:block;max-height:0;overflow:hidden;opacity:0;font-size:max(13px,2rem);line-height:1;transform:translateY(.6rem);transition:max-height .4s var(--ease),opacity .3s ease,transform .4s var(--ease),margin .4s var(--ease)}
.fmap__item.is-active .fmap__name{font-size:max(18px,3rem);font-weight:700}
.fmap__item.is-active .fmap__date{max-height:3rem;margin-top:1.4rem;opacity:1;transform:none}
.fmap__map{position:relative;flex:1;min-width:0;height:100%;overflow:hidden}
.fmap__canvas{position:absolute;inset:0}
.fmap__bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.fmap__icons{position:absolute;inset:0;pointer-events:none}
.fmap__icon{position:absolute;height:auto}
.fmap__icon--1{left:7.545%;top:18.145%;width:5.091%}
.fmap__icon--2{left:7.182%;top:26.145%;width:6.364%}
.fmap__icon--3{left:23.273%;top:37.367%;width:10.182%}
.fmap__icon--4{left:18%;top:54.479%;width:7.909%}
.fmap__icon--5{left:89.727%;top:44.479%;width:6.818%}
.fmap__icon--7{left:27.636%;top:31.701%;width:6.818%}
.fmap__pins{position:absolute;inset:0}
.fmap__pin{position:absolute;display:grid;place-items:center;width:3.8rem;height:3.8rem;border:1px solid rgba(255,255,255,.5);border-radius:50%;background:rgba(0,0,0,.5);color:#fff;transform:scale(1);transition:transform .3s var(--ease-out),background-color .25s ease,border-color .25s ease,color .25s ease;isolation:isolate}
.fmap__pin::before{content:"";position:absolute;inset:-1px;z-index:-1;border-radius:50%;background:var(--c-orange);opacity:0;pointer-events:none}
.fmap__pin i{font-style:normal;font-family:var(--ff-num);font-size:max(13px,1.7rem);line-height:1}
.fmap__pin:hover,.fmap__pin:focus-visible{background:var(--c-orange);border-color:var(--c-orange);transform:scale(1.1)}
.fmap__pin.is-active{background:var(--c-orange);border-color:transparent;transform:scale(1.2);z-index:2}
.fmap__pin.is-active::before{animation:pin-pulse 1.8s cubic-bezier(.2,.62,.3,1) infinite}
@keyframes pin-pulse{0%{opacity:.4;transform:scale(1)}75%,100%{opacity:0;transform:scale(2.2)}}
.fmap__pin--1{left:13.909%;top:21.365%}
.fmap__pin--2{left:13.909%;top:26.365%}
.fmap__pin--3{left:19.182%;top:37.81%}
.fmap__pin--4{left:18.273%;top:50.477%}
.fmap__pin--5{left:92%;top:40.032%}
.fmap__pin--6{left:95.636%;top:42.921%}
.fmap__pin--7{left:34.273%;top:34.477%}
.fmap__card{position:absolute;right:3rem;bottom:2.971rem;z-index:3;display:flex;height:20rem;color:#000;transition:opacity .24s ease,transform .3s var(--ease-out)}
.fmap__card.is-changing{opacity:.15;transform:translateY(.8rem)}
.fmap__poster{position:relative;flex-shrink:0;width:14.2rem;height:100%;overflow:hidden;background:var(--c-navy)}
.fmap__poster>img{width:100%;height:100%;object-fit:cover}
.fmap__soon{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:2.6rem;padding:0 1rem 2rem;background:var(--c-navy);color:rgba(255,255,255,.5);font-size:max(9px,1.1rem);font-weight:700;line-height:1.4;text-align:center}
.fmap__soon[hidden]{display:none}
.fmap__soon img{width:80%;height:auto}
.fmap__info{display:flex;flex-direction:column;justify-content:space-between;width:33rem;padding:3rem 2.5rem;background:var(--c-orange);transition:background-color .25s ease}
.fmap__card:hover .fmap__info{background:#ffae3d}
.fmap__info-num{align-self:flex-end;font-family:var(--ff-num);font-size:max(16px,2.4rem);line-height:1}
.fmap__info-text{display:flex;flex-direction:column;gap:1.6rem;line-height:1}
.fmap__info-name{font-size:max(17px,2.6rem);font-weight:700}
.fmap__info-place{font-size:max(13px,1.8rem);color:rgba(0,0,0,.5)}

@media (max-width:1023px){
  .fmap__container{padding:72px 0 88px}
  .fmap__content{flex-direction:column;height:auto}
  .fmap__list{width:100%;height:auto}
  .fmap__item,.fmap__item.is-active{flex:none}
  .fmap__btn{padding:16px 20px;min-height:56px}
  .fmap__num{width:44px;font-size:20px}
  .fmap__name{font-size:16px}
  .fmap__item.is-active .fmap__name{font-size:20px}
  .fmap__item.is-active .fmap__date{margin-top:10px;font-size:15px}
  .fmap__item.is-active .fmap__btn{padding-block:22px}
  .fmap__map{order:-1;flex:none;width:100%;height:auto;margin-bottom:24px;overflow:visible}
  .fmap__canvas{position:relative;inset:auto;aspect-ratio:1100/900;overflow:hidden}
  .fmap__pin{width:30px;height:30px}
  .fmap__pin i{font-size:14px}
  .fmap__card{position:relative;right:auto;bottom:auto;height:160px;margin-top:16px}
  .fmap__poster{width:114px}
  .fmap__info{flex:1;width:auto;padding:22px 20px}
  .fmap__info-name{font-size:20px}
  .fmap__info-place{font-size:15px}
}
@media (max-width:767px){
  .fmap__pin{width:24px;height:24px}
  .fmap__pin i{font-size:12px}
  .fmap__btn{padding:14px 16px}
}

/* ---------- programs (sec03) ---------- */
.programs{position:relative;color:#fff;background:var(--c-blue)}
.programs__container{position:relative;height:135rem;padding:15rem 0 10rem;overflow:hidden}
.programs__inner{position:relative;height:110rem}
.programs__title{position:relative;z-index:3;font-size:10rem;font-weight:700;line-height:1;text-align:center}
.programs__stage{position:absolute;inset:0}
.programs__names{position:absolute;left:50%;top:34.7rem;z-index:1;display:flex;flex-direction:column;align-items:center;gap:4rem;font-size:max(15px,2.6rem);font-weight:700;line-height:1;color:rgba(255,255,255,.25);white-space:nowrap;transform:translateX(-50%)}
.programs__names li.is-active{font-size:5.6rem;color:#fff}
.programs.is-pinned .programs__names{display:block;top:0;bottom:0;width:100%;gap:0;transform:none;left:0}
.programs.is-pinned .programs__names li{position:absolute;left:50%;top:var(--cy,40%);font-size:5.6rem;transform-origin:50% 50%;will-change:transform,opacity}
.programs__cards{position:absolute;inset:0;z-index:2}
.pcard{position:absolute;left:0;top:0;width:40rem;filter:drop-shadow(1rem 1rem 1rem rgba(0,0,0,.15));will-change:transform}
.pcard__link{display:flex;flex-direction:column;gap:2rem;padding:2rem;background:#fff;color:#000;transition:background-color .3s ease}
.pcard__link:hover,.pcard__link:focus-visible{background:#fffbe9}
.pcard__text{display:flex;flex-direction:column;gap:1rem}
.pcard__name{font-size:4.4rem;font-weight:800;line-height:1.2;white-space:pre}
.pcard__name span{display:block}
.pcard__date{font-size:max(12px,1.6rem);font-weight:700;line-height:1.2}
.pcard__img{position:relative;display:block;aspect-ratio:360/506;overflow:hidden;background:var(--c-navy)}
.pcard__img img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease-out)}
.pcard__link:hover .pcard__img img,.pcard__link:focus-visible .pcard__img img{transform:scale(1.05)}
.pcard__link:hover .pcard__name{color:var(--c-blue)}
.pcard__name{transition:color .25s ease}
.pcard__img--soon{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:5rem;padding:0 2rem 4rem;color:rgba(255,255,255,.5);font-size:max(13px,2.4rem);font-weight:700;line-height:1.4;text-align:center}
.pcard__img--soon img{width:70%;height:auto;object-fit:contain}
/* design snapshot (static / no-JS) — slot positions from Figma 53:585 */
.pcard--s-1{transform:translate(-55.2rem,20.9rem) rotate(-48.07deg) scale(.893)}
.pcard--s0{transform:translate(27.3rem,25.031rem)}
.pcard--s1{transform:translate(107.6rem,20.0rem) rotate(25.58deg) scale(.82)}
.pcard--s2{transform:translate(192.2rem,26.25rem) rotate(6.63deg) scale(.683)}
.pcard--s3{transform:translate(260rem,30rem) rotate(-3deg) scale(.6);opacity:0}
.programs__count{position:absolute;left:50%;bottom:0;z-index:3;padding:2rem 7rem;border-radius:10rem;background:rgba(0,0,0,.2);font-size:max(13px,1.4rem);line-height:1;transform:translateX(-50%);white-space:nowrap}
.programs__count strong{font-weight:700}
.programs__count span{font-weight:300}
.programs__edge{display:block;height:2.398rem;background:#fff url("../images/main/main_program_edge.png") center top/auto 100% repeat-x}
.programs.is-pinned .programs__container{height:100vh;height:100svh;min-height:56rem;padding:0}
.programs.is-pinned .programs__inner{position:absolute;left:50%;top:50%;width:160rem;height:110rem;transform:translate(-50%,-50%) scale(var(--k,1))}
.programs.is-pinned .pcard{transition:none}

@media (max-width:1023px){
  .programs__container{height:auto;padding:80px 0 72px}
  .programs__inner{height:auto}
  .programs__title{font-size:clamp(44px,9vw,80px)}
  .programs__stage{position:relative;inset:auto;margin-top:36px}
  .programs__names{display:none}
  .programs__cards{position:relative;inset:auto;display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;padding:8px 4px 24px;-webkit-overflow-scrolling:touch}
  .pcard,.pcard--s-1,.pcard--s0,.pcard--s1,.pcard--s2,.pcard--s3{position:relative;flex:0 0 min(70vw,320px);width:auto;transform:none;opacity:1;scroll-snap-align:center}
  .pcard__name{font-size:26px}
  .programs__count{position:relative;left:auto;bottom:auto;display:table;margin:24px auto 0;transform:none;padding:14px 40px}
  .programs.is-pinned .programs__container{height:100svh;min-height:520px}
  .programs.is-pinned .programs__inner{position:absolute;inset:0;width:auto;height:auto;transform:none}
  .programs.is-pinned .programs__title{position:absolute;left:0;right:0;top:max(9svh,76px)}
  .programs.is-pinned .programs__stage{position:absolute;inset:0;margin:0}
  .programs.is-pinned .programs__names{display:block}
  .programs.is-pinned .programs__names li{font-size:24px}
  .programs.is-pinned .programs__cards{position:absolute;inset:0;display:block;overflow:visible;padding:0}
  .programs.is-pinned .pcard{position:absolute;flex:none;width:var(--cw,62vw)}
  .programs.is-pinned .programs__count{position:absolute;left:50%;bottom:max(5svh,28px);margin:0;transform:translateX(-50%)}
}
@media (max-width:767px){
  .pcard__link{gap:14px;padding:14px}
  .pcard__name{font-size:22px}
  .pcard__date{font-size:12px}
  .pcard__img--soon{gap:24px;padding-bottom:24px;font-size:14px}
}

/* ---------- news (sec04) ---------- */
.news{padding:15rem 0;background:#fff}
.news__title{font-size:10rem;font-weight:700;line-height:1;text-align:center;color:#000}
.news__list{margin-top:7rem}
.news__item{margin-bottom:-1px;border-top:1px solid #000;border-bottom:1px solid #000;transition:background-color .35s ease}
.news__link{display:block;color:#000;transition:color .3s ease}
.news__row{display:flex;align-items:center;justify-content:space-between;gap:4rem;height:13rem}
.news__subject{display:flex;align-items:center;gap:3rem;width:106.65rem;min-width:0}
.news__text{font-size:max(15px,2.6rem);font-weight:600;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.news__arrow{flex-shrink:0;width:3.4rem;height:3.4rem;opacity:0;transform:translate(-1rem,1rem);transition:opacity .3s ease,transform .4s var(--ease-out)}
.news__meta{flex-shrink:0;display:flex;align-items:center;gap:5rem;font-size:max(13px,2rem);line-height:1}
.news__item.is-active{background:var(--c-blue)}
.news__item.is-active .news__link{color:#fff}
.news__item.is-active .news__arrow{opacity:1;transform:none}
.news__item.is-active .news__link:hover .news__arrow,.news__item.is-active .news__link:focus-visible .news__arrow{transform:translate(.5rem,-.5rem)}
.news__link:hover .news__text,.news__link:focus-visible .news__text{text-decoration:underline;text-underline-offset:.5rem;text-decoration-thickness:1px}
.news__link:focus-visible{outline-offset:-3px}
@media (max-width:1023px){
  .news{padding:96px 0}
  .news__title{font-size:clamp(44px,9vw,80px)}
  .news__list{margin-top:48px}
  .news__row{height:auto;min-height:100px;padding-block:24px}
  .news__subject{width:auto;flex:1}
  .news__text{font-size:18px;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
  .news__arrow{width:26px;height:26px}
  .news__meta{gap:20px;font-size:15px}
}
@media (max-width:767px){
  .news{padding:72px 0}
  .news__row{flex-direction:column;align-items:flex-start;gap:12px;padding-block:20px}
  .news__subject{width:100%;gap:12px}
  .news__text{font-size:16px}
  .news__arrow{width:22px;height:22px}
  .news__meta{font-size:13px;color:inherit;opacity:.8}
}

/* ---------- partners (sec05) ---------- */
.partners{padding:0 0 10rem;background:#fff}
.partners__rows{display:flex;flex-direction:column;gap:10rem}
.partners__row{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 6%,#000 94%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 6%,#000 94%,transparent 100%)}
.partners__track{display:flex;width:max-content}
.partners__group{display:flex;align-items:center;gap:17rem;padding-right:17rem;height:6rem}
.partners__group li{flex-shrink:0}
.partners__group img{height:auto}
.partners__group .p-seoul{width:19.7rem}
.partners__group .p-seoul2{width:18.9rem}
.partners__group .p-sto{width:23rem}
.partners__group .p-sdf{width:13rem}
.partners__group .p-sba{width:16.7rem}
@media (max-width:1023px){
  .partners{padding-bottom:40px}
  .partners__rows{gap:40px}
  .partners__group{gap:72px;padding-right:72px;height:48px}
  .partners__group .p-seoul{width:150px}.partners__group .p-seoul2{width:144px}.partners__group .p-sto{width:175px}.partners__group .p-sdf{width:99px}.partners__group .p-sba{width:127px}
}
@media (max-width:767px){
  .partners__rows{gap:28px}
  .partners__group{gap:48px;padding-right:48px;height:40px}
  .partners__group .p-seoul{width:118px}.partners__group .p-seoul2{width:113px}.partners__group .p-sto{width:138px}.partners__group .p-sdf{width:78px}.partners__group .p-sba{width:100px}
}
