:root{
  --cream:#FDFBF5;
  --cream-deep:#F7F5E8;
  --sand:#EBEBE0;
  --sand-mid:#C0C0B8;
  --gray:#929289;
  --gray-deep:#5E5E58;
  --ink:#211F15;
  --teal-deep:#0B7677;
  --teal-forest:#0E4E4A;
  --teal-mid:#74ABA1;
  --teal-light:#AFC7B8;
  --kr:'Noto Sans KR',sans-serif;
  --en:'Roboto Condensed','Noto Sans KR',sans-serif;
  --display:'Anton','Roboto Condensed','Noto Sans KR',sans-serif;
  --line:rgba(33,31,21,.16);
  --line-soft:rgba(33,31,21,.09);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--kr);background:var(--cream);color:var(--ink);line-height:1.6;-webkit-font-smoothing:antialiased}
img{max-width:100%}
a{color:inherit;text-decoration:none}
.wrap{max-width:1280px;margin:0 auto;padding:0 32px}
.en{font-family:var(--en)}
section{padding:120px 0}
.eyebrow{display:flex;align-items:center;gap:10px;font-family:var(--en);font-weight:700;letter-spacing:.24em;text-transform:uppercase;font-size:12.5px;color:var(--teal-deep);margin-bottom:20px}
.eyebrow::before{content:"";width:10px;height:10px;background:var(--teal-deep);flex-shrink:0}
.sec-title{font-size:clamp(32px,4.2vw,50px);font-weight:900;letter-spacing:-.03em;line-height:1.22;margin-bottom:14px;word-break:keep-all}
.sec-sub{color:var(--gray-deep);font-size:16.5px;max-width:640px}
.sec-head{margin-bottom:64px}
.rule{border:none;border-top:1px solid var(--ink);margin:26px 0 0;opacity:.9}

/* reveal: JS가 실행되는 환경에서만 숨겼다가 등장 (JS 미실행 시 항상 표시) */
.js .rv{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease}
.js .rv.on{opacity:1;transform:none}

/* 스크롤 방향 변형 */
.js .rv.rv-l{transform:translateX(-40px)}
.js .rv.rv-r{transform:translateX(40px)}
.js .rv.rv-zoom{transform:translateY(14px) scale(.92)}
.js .rv.rv-l.on,.js .rv.rv-r.on,.js .rv.rv-zoom.on{transform:none}

/* 스크롤 진행바 */
#progress{position:fixed;top:0;left:0;height:3px;background:var(--teal-deep);z-index:100;width:0}

/* 타임테이블 행 스태거 */
.js .tt-scroll tbody tr{opacity:0;transform:translateX(-22px);transition:opacity .45s ease,transform .45s ease}
.js .tt-scroll.on tbody tr{opacity:1;transform:none}
.js .tt-scroll.on tbody tr:nth-child(1){transition-delay:.02s}
.js .tt-scroll.on tbody tr:nth-child(2){transition-delay:.06s}
.js .tt-scroll.on tbody tr:nth-child(3){transition-delay:.1s}
.js .tt-scroll.on tbody tr:nth-child(4){transition-delay:.14s}
.js .tt-scroll.on tbody tr:nth-child(5){transition-delay:.18s}
.js .tt-scroll.on tbody tr:nth-child(6){transition-delay:.22s}
.js .tt-scroll.on tbody tr:nth-child(7){transition-delay:.26s}
.js .tt-scroll.on tbody tr:nth-child(8){transition-delay:.3s}
.js .tt-scroll.on tbody tr:nth-child(9){transition-delay:.34s}
.js .tt-scroll.on tbody tr:nth-child(10){transition-delay:.38s}
.js .tt-scroll.on tbody tr:nth-child(11){transition-delay:.42s}
.js .tt-scroll.on tbody tr:nth-child(12){transition-delay:.46s}
.js .tt-scroll.on tbody tr:nth-child(13){transition-delay:.5s}
.js .tt-scroll.on tbody tr:nth-child(14){transition-delay:.54s}
.js .tt-scroll.on tbody tr:nth-child(15){transition-delay:.58s}
.js .tt-scroll.on tbody tr:nth-child(16){transition-delay:.62s}
.js .tt-scroll.on tbody tr:nth-child(17){transition-delay:.66s}
.js .tt-scroll.on tbody tr:nth-child(18){transition-delay:.7s}
.js .tt-scroll.on tbody tr:nth-child(19){transition-delay:.74s}
.js .tt-scroll.on tbody tr:nth-child(20){transition-delay:.78s}
.js .tt-scroll.on tbody tr:nth-child(21){transition-delay:.82s}

/* 주간 일정 · 세션 리스트 · FAQ 스태거 */
.js .week .day{opacity:0;transform:translateY(22px) scale(.88);transition:opacity .5s cubic-bezier(.2,.8,.3,1.2),transform .5s cubic-bezier(.2,.8,.3,1.2)}
.js .week.on .day{opacity:1;transform:none}
.js .week.on .day:nth-child(2){transition-delay:.08s}
.js .week.on .day:nth-child(3){transition-delay:.16s}
.js .week.on .day:nth-child(4){transition-delay:.24s}
.js .week.on .day:nth-child(5){transition-delay:.32s}
.js .week.on .day:nth-child(6){transition-delay:.4s}
.js .track .sess li{opacity:0;transform:translateX(-18px);transition:opacity .45s ease,transform .45s ease}
.js .track.on .sess li{opacity:1;transform:none}
.js .track.on .sess li:nth-child(1){transition-delay:.15s}
.js .track.on .sess li:nth-child(2){transition-delay:.23s}
.js .track.on .sess li:nth-child(3){transition-delay:.31s}
.js .track.on .sess li:nth-child(4){transition-delay:.39s}
.js .track.on .sess li:nth-child(5){transition-delay:.47s}
.js .track.on .sess li:nth-child(6){transition-delay:.55s}
.js .track.on .sess li:nth-child(7){transition-delay:.63s}
.js .faq-list .faq{opacity:0;transform:translateY(18px);transition:opacity .5s ease,transform .5s ease}
.js .faq-list.on .faq{opacity:1;transform:none}
.js .faq-list.on .faq:nth-child(2){transition-delay:.09s}
.js .faq-list.on .faq:nth-child(3){transition-delay:.18s}
.js .faq-list.on .faq:nth-child(4){transition-delay:.27s}
.js .faq-list.on .faq:nth-child(5){transition-delay:.36s}
.js .logo-wall .logo-chip{opacity:0;transform:translateY(14px) scale(.9);transition:opacity .45s cubic-bezier(.2,.8,.3,1.2),transform .45s cubic-bezier(.2,.8,.3,1.2)}
.js .partner-group.on .logo-chip{opacity:1;transform:none}
.js .partner-group.on .logo-chip:nth-child(2){transition-delay:.07s}
.js .partner-group.on .logo-chip:nth-child(3){transition-delay:.14s}
.js .partner-group.on .logo-chip:nth-child(4){transition-delay:.21s}
.js .partner-group.on .logo-chip:nth-child(5){transition-delay:.28s}
.js .partner-group.on .logo-chip:nth-child(6){transition-delay:.35s}
.js .partner-group.on .logo-chip:nth-child(7){transition-delay:.42s}

/* 언어 토글: 원형 국기 + 필 스타일 */
.lang-toggle{display:flex;gap:2px;align-items:center;border:1px solid var(--line);border-radius:999px;padding:4px;background:var(--cream);flex-shrink:0}
.lang-toggle button{display:flex;align-items:center;gap:7px;border:none;background:transparent;font-family:var(--en);font-weight:700;font-size:12px;letter-spacing:.04em;padding:6px 13px 6px 8px;cursor:pointer;color:var(--gray);border-radius:999px;transition:background .25s,color .25s}
.lang-toggle button img{width:20px;height:20px;border-radius:50%;object-fit:cover;display:block;box-shadow:0 0 0 1px rgba(33,31,21,.12)}
.lang-toggle button:hover:not(.active){background:var(--cream-deep);color:var(--ink)}
.lang-toggle button.active{background:var(--teal-deep);color:#fff}
.lang-toggle button.active img{box-shadow:0 0 0 1.5px rgba(253,251,245,.7)}
html[lang="en"] .k-kr,html[lang="en"] .kr-t,html[lang="en"] .prog-en,html[lang="en"] .hero-eyebrow-kr,html[lang="en"] .sub-head-en,
html[lang="id"] .k-kr,html[lang="id"] .kr-t,html[lang="id"] .prog-en,html[lang="id"] .hero-eyebrow-kr,html[lang="id"] .sub-head-en{display:none}

/* 연사 사진 슬롯: .avatar 안에 <img>를 넣으면 자동으로 원형 사진으로 표시 */
.avatar{position:relative;overflow:hidden;flex-shrink:0}
.avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:0}

/* 그리드 자식 순차 등장 */
.js .cards3>.rv:nth-child(2),.js .prog-grid>.rv:nth-child(2),.js .spk-grid>.rv:nth-child(2),.js .tracks-grid>.rv:nth-child(2),.js .venue-grid>.rv:nth-child(2){transition-delay:.14s}
.js .cards3>.rv:nth-child(3),.js .prog-grid>.rv:nth-child(3),.js .spk-grid>.rv:nth-child(3){transition-delay:.28s}
.js .mini-grid>.rv:nth-child(2){transition-delay:.08s}
.js .mini-grid>.rv:nth-child(3){transition-delay:.16s}
.js .mini-grid>.rv:nth-child(4){transition-delay:.24s}
.js .mini-grid>.rv:nth-child(5){transition-delay:.32s}
.js .mini-grid>.rv:nth-child(6){transition-delay:.4s}
.js .mini-grid>.rv:nth-child(7){transition-delay:.48s}
.js .mini-grid>.rv:nth-child(8){transition-delay:.56s}
.js .mini-grid>.rv:nth-child(9){transition-delay:.64s}
.js .mini-grid>.rv:nth-child(10){transition-delay:.72s}
.js .stats>.stat:nth-child(2){transition-delay:.12s}
.js .stats>.stat:nth-child(3){transition-delay:.24s}
.js .stats>.stat:nth-child(4){transition-delay:.36s}

/* 섹션 헤더 연출: 아이브로 → 타이틀 → 서브 → 라인 드로잉 */
.js .sec-head .eyebrow{opacity:0;transform:translateY(14px);transition:opacity .55s ease,transform .55s ease}
.js .sec-head .sec-title{opacity:0;transform:translateY(28px);transition:opacity .7s ease .12s,transform .7s ease .12s}
.js .sec-head .sec-sub{opacity:0;transform:translateY(20px);transition:opacity .7s ease .24s,transform .7s ease .24s}
.js .sec-head .rule{transform:scaleX(0);transform-origin:left center;transition:transform .9s cubic-bezier(.2,.7,.2,1) .3s}
.js .sec-head.on .eyebrow,.js .sec-head.on .sec-title,.js .sec-head.on .sec-sub{opacity:1;transform:none}
.js .sec-head.on .rule{transform:scaleX(1)}

/* 히어로 오프닝 연출 */
.hero h1 .line{display:block;overflow:hidden;padding-bottom:.06em;margin-bottom:-.06em}
.hero h1 .line>span{display:inline-block}
.js .hero h1 .line>span{transform:translateY(112%);animation:lineUp .95s cubic-bezier(.16,.84,.26,1) forwards}
.js .hero h1 .line.l1>span{animation-delay:.12s}
.js .hero h1 .line.l2>span{animation-delay:.26s}
.js .hero h1 .line.l3>span{animation-delay:.4s}
@keyframes lineUp{to{transform:translateY(0)}}
.js .hi{opacity:0;animation:hiUp .75s cubic-bezier(.2,.7,.2,1) forwards}
.js .hi.hd1{animation-delay:.05s}
.js .hi.hd2{animation-delay:.15s}
.js .hi.hd3{animation-delay:.62s}
.js .hi.hd4{animation-delay:.74s}
.js .hi.hd5{animation-delay:1.15s}
.js .hi.hd6{animation-delay:1.3s}
@keyframes hiUp{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
.js .hero-chips .chip{opacity:0;animation:chipPop .55s cubic-bezier(.2,.8,.3,1.25) forwards}
.js .hero-chips .chip:nth-child(1){animation-delay:.88s}
.js .hero-chips .chip:nth-child(2){animation-delay:.98s}
.js .hero-chips .chip:nth-child(3){animation-delay:1.08s}
@keyframes chipPop{from{opacity:0;transform:translateY(16px) scale(.85)}to{opacity:1;transform:none}}
.js .count-cells .count-cell{opacity:0;animation:cellFlip .6s cubic-bezier(.2,.8,.3,1.2) forwards}
.js .count-cells .count-cell:nth-child(1){animation-delay:1.4s}
.js .count-cells .count-cell:nth-child(2){animation-delay:1.5s}
.js .count-cells .count-cell:nth-child(3){animation-delay:1.6s}
.js .count-cells .count-cell:nth-child(4){animation-delay:1.7s}
@keyframes cellFlip{from{opacity:0;transform:perspective(400px) rotateX(70deg)}to{opacity:1;transform:none}}

/* 신청 버튼 젠틀 펄스 */
.apply-band .btn{animation:btnPulse 2.8s ease-in-out infinite}
@keyframes btnPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.045)}}

/* ---------- nav ---------- */
header{position:sticky;top:0;z-index:50;background:rgba(253,251,245,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--sand)}
.nav{display:flex;align-items:center;gap:16px;height:66px}
.nav .nav-links{margin-left:auto}
.brand{font-family:var(--display);font-weight:400;font-size:20px;letter-spacing:.04em;line-height:1.05;text-transform:uppercase}
.brand span{color:var(--teal-deep)}
.nav-links{display:flex;gap:26px;align-items:center}
.nav-links a{font-size:14.5px;font-weight:500;color:var(--gray-deep)}
.nav-links a:hover{color:var(--teal-deep)}
.nav-links a.btn{color:#fff}
.nav-links a.btn:hover{color:#fff}
.btn{display:inline-flex;align-items:center;gap:10px;background:var(--teal-deep);color:#fff;font-weight:700;font-size:15px;padding:14px 28px;border-radius:0;transition:background .25s,gap .25s}
.btn::after{content:"→";font-family:var(--en);font-weight:400;transition:transform .25s}
.btn:hover{background:var(--ink)}
.btn:hover::after{transform:translateX(4px)}
.btn.sm{padding:10px 18px;font-size:13.5px}
.btn.ghost{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.btn.ghost:hover{background:var(--ink);color:var(--cream)}
.menu-toggle{display:none;background:none;border:none;font-size:24px;color:var(--ink);cursor:pointer}

/* ---------- hero ---------- */
.hero{padding:84px 0 72px;overflow:hidden}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:48px;align-items:center}
.hero-grid>div{min-width:0}
.hero-eyebrow{font-family:var(--en);font-weight:700;letter-spacing:.18em;font-size:13px;color:var(--teal-deep);text-transform:uppercase;margin-bottom:6px}
.hero-eyebrow-kr{font-size:14.5px;color:var(--gray-deep);margin-bottom:26px}
.hero h1{font-family:var(--display);font-weight:400;font-size:clamp(58px,7.6vw,106px);line-height:.94;letter-spacing:.01em;text-transform:uppercase}
.hero h1 .year{color:var(--teal-deep)}
.hero-theme{margin-top:30px;font-family:var(--en);font-weight:700;font-size:clamp(19px,2.2vw,25px);letter-spacing:.01em;color:var(--teal-forest)}
.hero-copy{margin-top:14px;font-size:16.5px;color:var(--gray-deep);max-width:500px;word-break:keep-all}
.hero-chips{display:flex;flex-wrap:wrap;margin-top:34px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.chip{padding:13px 22px 13px 0;font-size:14.5px;font-weight:600;font-family:var(--en);letter-spacing:.02em}
.chip+.chip{padding-left:22px;border-left:1px solid var(--line)}
.chip b{color:var(--teal-deep);font-weight:700}
.hero-cta{display:flex;gap:12px;margin-top:34px;flex-wrap:wrap}
.keyvisual{display:flex;justify-content:center}
.keyvisual svg{width:100%;max-width:520px;height:auto;display:block}
.kv-float{animation:kvfloat 7s ease-in-out infinite}
.kv-float.d1{animation-delay:-2s}
.kv-float.d2{animation-delay:-4s}
@keyframes kvfloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
.kv-in{opacity:0;transform-box:fill-box;transform-origin:center;animation:kvin .85s cubic-bezier(.18,.75,.3,1.15) forwards}
.kv-in.i1{animation-delay:.05s}.kv-in.i2{animation-delay:.15s}.kv-in.i3{animation-delay:.25s}
.kv-in.i4{animation-delay:.4s}.kv-in.i5{animation-delay:.55s}.kv-in.i6{animation-delay:.7s}
.kv-in.i7{animation-delay:.85s}.kv-in.i8{animation-delay:1s}.kv-in.i9{animation-delay:1.15s}
@keyframes kvin{from{opacity:0;transform:translateY(26px) scale(.6)}to{opacity:1;transform:none}}
.kv-spin{transform-box:fill-box;transform-origin:center;animation:kvspin 30s linear infinite}
@keyframes kvspin{to{transform:rotate(360deg)}}
.kv-wave{animation:kvwave 4.5s ease-in-out infinite alternate}
@keyframes kvwave{from{transform:translateX(-14px)}to{transform:translateX(14px)}}
.kv-dots circle{animation:kvdot 2.8s ease-in-out infinite}
.kv-dots circle:nth-child(2){animation-delay:.18s}.kv-dots circle:nth-child(3){animation-delay:.36s}
.kv-dots circle:nth-child(4){animation-delay:.54s}.kv-dots circle:nth-child(5){animation-delay:.72s}
.kv-dots circle:nth-child(6){animation-delay:.9s}.kv-dots circle:nth-child(7){animation-delay:1.08s}
.kv-dots circle:nth-child(8){animation-delay:1.26s}
@keyframes kvdot{0%,100%{opacity:.35}50%{opacity:1}}

/* section deco shapes (key visual vocabulary) */
.has-deco{position:relative;overflow:hidden}
.has-deco>.wrap{position:relative;z-index:1}
.deco{position:absolute;z-index:0;pointer-events:none;will-change:transform}
.deco.f1>*,.deco.f2>*,.deco.spin>*{transform-box:fill-box;transform-origin:center}
.deco.f1>*{animation:decofloat 8s ease-in-out infinite}
.deco.f2>*{animation:decofloat 10s ease-in-out -4s infinite}
.deco.spin>*{animation:decospin 36s linear infinite}
@keyframes decofloat{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-26px) rotate(4deg)}}
@keyframes decospin{to{transform:rotate(360deg)}}
.keyvisual svg{transition:transform .6s cubic-bezier(.2,.7,.3,1)}

/* hover: 배경 틴트 (라인 기반 레이아웃에 맞게) */
.prog,.spk,.day{transition:background .3s ease}
.prog:not(.main):hover,.spk:hover,.day:not(.hl):hover{background:var(--cream-deep)}
.card .glyph{transition:transform .4s ease}
.card:hover .glyph{transform:rotate(90deg)}

/* band letter pop */
.band-grid.on .band-cell{animation:cellin .55s cubic-bezier(.2,.8,.3,1.2) both}
.band-grid.on .band-cell:nth-child(1){animation-delay:0s}
.band-grid.on .band-cell:nth-child(2){animation-delay:.09s}
.band-grid.on .band-cell:nth-child(3){animation-delay:.18s}
.band-grid.on .band-cell:nth-child(4){animation-delay:.27s}
.band-grid.on .band-cell:nth-child(5){animation-delay:.36s}
@keyframes cellin{from{opacity:0;transform:translateY(16px) scale(.85)}to{opacity:1;transform:none}}

@media (prefers-reduced-motion:reduce){
  .kv-float,.kv-in,.kv-spin,.kv-wave,.kv-dots circle,.deco.f1,.deco.f2,.band-grid.on .band-cell{animation:none}
  .kv-in{opacity:1}
  .rv{transition:none}
  .card,.prog,.spk,.track,.day,.stat,.card .glyph{transition:none}
  .js .hero h1 .line>span,.js .hi,.js .hero-chips .chip,.js .count-cells .count-cell{animation:none;opacity:1;transform:none}
  .apply-band .btn{animation:none}
  .js .sec-head .eyebrow,.js .sec-head .sec-title,.js .sec-head .sec-sub,.js .sec-head .rule{opacity:1;transform:none;transition:none}
  .js .tt-scroll tbody tr,.js .week .day,.js .track .sess li,.js .faq-list .faq,.js .logo-wall .logo-chip{opacity:1;transform:none;transition:none}
}

/* ---------- countdown ---------- */
.count-row{display:flex;gap:10px;margin-top:30px;align-items:center;flex-wrap:wrap}
.count-label{font-size:13.5px;font-weight:700;color:var(--teal-deep)}
.count-cells{display:flex;gap:8px}
.count-cell{background:var(--teal-forest);color:var(--cream);border-radius:0;min-width:58px;padding:9px 6px 7px;text-align:center}
.count-cell .n{font-family:var(--display);font-weight:400;font-size:24px;line-height:1}
.count-cell .u{font-family:var(--en);font-size:10px;letter-spacing:.12em;color:var(--teal-light);text-transform:uppercase;margin-top:3px}

/* ---------- ticker ---------- */
.ticker{background:var(--teal-deep);overflow:hidden;padding:16px 0;white-space:nowrap}
.ticker-inner{display:inline-flex;animation:tick 26s linear infinite}
.ticker span{font-family:var(--display);font-weight:400;font-size:18px;letter-spacing:.14em;color:var(--cream);text-transform:uppercase;padding:0 26px;position:relative}
.ticker span::after{content:"";position:absolute;right:-6px;top:50%;width:11px;height:11px;background:var(--teal-light);transform:translateY(-50%) rotate(45deg)}
@keyframes tick{from{transform:translateX(0)}to{transform:translateX(calc(-1 * var(--tickw,50%)))}}
@media (prefers-reduced-motion:reduce){.ticker-inner{animation:none}}

/* ---------- acronym band ---------- */
.band{background:var(--teal-forest);color:var(--cream);padding:88px 0}
.band-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border-left:1px solid rgba(253,251,245,.22)}
.band-cell{text-align:left;padding:8px 8px 8px 22px;border-right:1px solid rgba(253,251,245,.22);min-width:0;overflow:hidden}
.band-cell .big{font-family:var(--display);font-weight:400;font-size:clamp(44px,7vw,96px);line-height:1;color:var(--cream)}
.band-cell .word{font-family:var(--en);font-weight:500;font-size:13.5px;letter-spacing:.14em;margin-top:12px;text-transform:uppercase;color:var(--teal-light)}
.band-copy{margin-top:44px;font-size:16.5px;color:var(--teal-light);word-break:keep-all;max-width:720px}

/* ---------- about ---------- */
.cards3{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--ink)}
.card{background:transparent;border-right:1px solid var(--line);padding:38px 32px 38px 0;margin-right:32px;display:flex;flex-direction:column;min-height:250px;border-radius:0}
.cards3 .card:last-child{border-right:none;margin-right:0}
.card .k{font-family:var(--en);font-weight:800;font-size:25px;letter-spacing:.01em;text-transform:uppercase}
.card .k-kr{font-size:14px;color:var(--teal-deep);font-weight:700;margin-top:4px}
.card p{margin-top:auto;padding-top:30px;color:var(--gray-deep);font-size:15px;word-break:keep-all}
.card .glyph{margin-top:20px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:56px}
.stat{background:var(--teal-deep);color:#fff;border-radius:0;text-align:center;padding:32px 12px}
.stat .num{font-family:var(--display);font-weight:400;font-size:clamp(42px,4vw,54px);line-height:1}
.stat .lbl{margin-top:8px;font-size:14px;color:var(--teal-light);font-weight:500}

/* ---------- programs ---------- */
.prog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border:1px solid var(--line)}
.prog{background:transparent;border-right:1px solid var(--line);border-radius:0;padding:40px 34px;position:relative;display:flex;flex-direction:column}
.prog:last-child{border-right:none}
.prog.main{background:var(--teal-forest);color:var(--cream);border-color:var(--teal-forest)}
.prog-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}
.prog-no{font-family:var(--display);font-weight:400;font-size:34px;color:var(--teal-mid);line-height:1}
.prog.main .prog-no{color:var(--teal-light)}
.prog-date{font-family:var(--en);font-weight:700;font-size:13.5px;letter-spacing:.08em;border:1px solid var(--line);padding:6px 14px;text-transform:uppercase}
.prog.main .prog-date{border-color:rgba(253,251,245,.35);color:var(--cream)}
.prog h3{font-size:21px;font-weight:900;letter-spacing:-.01em}
.prog .prog-en{font-family:var(--en);font-size:13px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--teal-mid);margin-top:2px}
.prog .desc{margin-top:14px;font-size:14.5px;color:var(--gray-deep);word-break:keep-all}
.prog.main .desc{color:var(--teal-light)}
.prog ul{margin-top:20px;list-style:none;display:flex;flex-direction:column;gap:9px}
.prog li{font-size:14px;padding-left:20px;position:relative;color:var(--ink)}
.prog.main li{color:var(--cream)}
.prog li::before{content:"";position:absolute;left:0;top:8px;width:9px;height:9px;background:var(--teal-mid);border-radius:2px}
.prog.main li::before{background:var(--teal-light)}
.main-tag{position:absolute;top:-13px;right:24px;background:var(--teal-deep);color:#fff;font-size:12.5px;font-weight:700;padding:5px 14px;border-radius:0;letter-spacing:.06em}

/* ---------- week ---------- */
.week{display:grid;grid-template-columns:repeat(6,1fr);border:1px solid var(--line);border-right:none}
.day{background:transparent;border-right:1px solid var(--line);border-radius:0;padding:24px 18px;text-align:left}
.day .d{font-family:var(--display);font-weight:400;font-size:30px;letter-spacing:.02em}
.day .w{font-family:var(--en);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--gray);margin-top:4px}
.day .t{font-size:13.5px;font-weight:600;margin-top:16px;color:var(--gray-deep);word-break:keep-all;line-height:1.45}
.day.hl{background:var(--teal-deep);color:#fff;border-color:var(--teal-deep)}
.day.hl .w,.day.hl .t{color:var(--teal-light)}
.day.soft .d,.day.soft .t{color:var(--sand-mid)}

/* ---------- timetable ---------- */
.tt{width:100%;border-collapse:collapse}
.tt th{font-family:var(--en);font-size:12px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--gray);text-align:left;padding:0 16px 12px}
.tt td{padding:16px;font-size:14.5px;vertical-align:middle;border-bottom:1px solid var(--line-soft)}
.tt tbody tr:first-child td{border-top:1px solid var(--ink)}
.tt tr td:first-child{font-family:var(--display);font-weight:400;font-size:15px;letter-spacing:.03em;white-space:nowrap;color:var(--teal-deep);width:150px}
.tt tr td:last-child{color:var(--gray);font-size:13.5px;width:240px}
.tt tr.phase td{background:var(--teal-forest);color:var(--cream);font-weight:700;font-size:13.5px;letter-spacing:.04em}
.tt tr.phase td:first-child{color:var(--teal-light)}
.tt tr.hl td{background:var(--teal-deep);color:#fff}
.tt tr.hl td:first-child{color:var(--teal-light)}
.tt tr.hl td:last-child{color:var(--teal-light)}
.tt tbody tr:not(.phase):not(.hl):hover td{background:var(--cream-deep)}
.tt b{font-weight:700}
.tt-note{margin-top:16px;font-size:13px;color:var(--gray)}
.tt-scroll{overflow-x:auto}
.tt-scroll .tt{min-width:680px}

/* ---------- tracks ---------- */
.tracks-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--line)}
.track{border-radius:0;padding:44px 40px;background:transparent;border-right:1px solid var(--line)}
.track:last-child{border-right:none}
.track.t2{background:var(--teal-forest);color:var(--cream)}
.track-tag{display:inline-block;font-family:var(--en);font-weight:700;font-size:13px;letter-spacing:.1em;padding:6px 14px;border-radius:0;background:var(--teal-deep);color:#fff;text-transform:uppercase}
.track h3{font-family:var(--display);font-weight:400;font-size:28px;margin-top:16px;letter-spacing:.02em;text-transform:uppercase;line-height:1.15}
.track .kr-t{font-size:15px;font-weight:700;color:var(--teal-deep);margin-top:4px}
.track.t2 .kr-t{color:var(--teal-light)}
.track .time{font-family:var(--en);font-size:13.5px;font-weight:600;color:var(--gray);margin-top:4px;letter-spacing:.04em}
.track.t2 .time{color:var(--teal-mid)}
.sess{margin-top:28px;list-style:none;display:flex;flex-direction:column;border-top:1px solid var(--line)}
.sess li{display:flex;gap:14px;align-items:baseline;background:transparent;padding:13px 2px;font-size:14px;border-bottom:1px solid var(--line-soft)}
.track.t2 .sess{border-top-color:rgba(253,251,245,.3)}
.track.t2 .sess li{background:transparent;border-bottom-color:rgba(253,251,245,.14)}
.sess .st{font-family:var(--en);font-weight:700;font-size:12.5px;color:var(--teal-deep);white-space:nowrap;min-width:86px}
.track.t2 .sess .st{color:var(--teal-light)}
.sess .sn{font-weight:500;word-break:keep-all}
.sess .who{margin-left:auto;font-size:12.5px;color:var(--gray);white-space:nowrap}
.track.t2 .sess .who{color:var(--teal-mid)}

/* ---------- speakers ---------- */
.speakers{background:var(--cream)}
.spk-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border:1px solid var(--line)}
.spk{background:transparent;border-right:1px solid var(--line);border-radius:0;padding:36px 32px;text-align:left}
.spk:last-child{border-right:none}
.spk .no{font-family:var(--en);font-weight:700;font-size:12.5px;letter-spacing:.14em;color:var(--teal-deep);text-transform:uppercase}
.spk .avatar{width:104px;height:104px;border-radius:0;background:var(--teal-deep);color:#fff;font-family:var(--display);font-weight:400;font-size:34px;display:flex;align-items:center;justify-content:center;margin:20px 0 18px}
.spk:nth-child(2) .avatar{background:var(--teal-mid)}
.spk:nth-child(3) .avatar{background:var(--teal-forest)}
.spk h3{font-size:19px;font-weight:900}
.spk .org{font-size:13.5px;color:var(--gray);margin-top:3px}
.spk .topic{margin-top:16px;padding-top:16px;border-top:1px solid var(--sand);font-size:14.5px;font-weight:600;color:var(--teal-forest);word-break:keep-all}
.spk-note{margin-top:20px;font-size:13px;color:var(--gray)}
.spk-desc{margin-top:10px;font-size:13.5px;color:var(--gray-deep);word-break:keep-all}
.sub-head{margin:64px 0 6px;font-size:22px;font-weight:900;letter-spacing:-.01em}
.sub-head-en{font-family:var(--en);font-size:12.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--teal-deep);margin-bottom:22px}
.mini-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:0;border:1px solid var(--line);border-right:none;border-bottom:none}
.mini{background:transparent;border-right:1px solid var(--line);border-bottom:1px solid var(--line);border-radius:0;padding:26px 22px;transition:background .3s ease}
.mini:hover{background:var(--cream-deep)}
.mini .avatar{width:56px;height:56px;border-radius:0;color:#fff;font-family:var(--display);font-weight:400;font-size:20px;display:flex;align-items:center;justify-content:center;background:var(--teal-deep)}
.mini:nth-child(3n+2) .avatar{background:var(--teal-mid)}
.mini:nth-child(3n) .avatar{background:var(--teal-forest)}
.mini h4{font-size:15.5px;font-weight:900;margin-top:14px}
.mini .org{font-size:12.5px;color:var(--gray);margin-top:3px;word-break:keep-all;line-height:1.5}
.mini .tag{display:inline-block;margin-top:12px;font-family:var(--en);font-size:10.5px;font-weight:700;letter-spacing:.08em;color:var(--teal-deep);border:1px solid var(--line);padding:3px 10px;text-transform:uppercase}
.track-desc{margin-top:14px;font-size:14px;color:var(--gray-deep);word-break:keep-all}
.track.t2 .track-desc{color:var(--teal-light)}

/* ---------- venue / apply ---------- */
.venue-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.venue-card{background:transparent;border:1px solid var(--line);padding:40px 36px}
.venue-card h3{font-size:21px;font-weight:900}
.venue-card .en-s{font-family:var(--en);font-size:13px;font-weight:600;letter-spacing:.1em;color:var(--teal-deep);text-transform:uppercase}
.venue-card p{margin-top:14px;color:var(--gray-deep);font-size:14.5px;word-break:keep-all}
.venue-card .links{margin-top:22px;display:flex;gap:10px;flex-wrap:wrap}
.apply-band{background:var(--teal-deep);color:#fff;text-align:center;padding:88px 0}
.apply-band h2{font-size:32px;font-weight:900;letter-spacing:-.02em;word-break:keep-all}
.apply-band p{margin-top:14px;color:var(--teal-light);font-size:16px;word-break:keep-all}
.apply-band .btn{background:var(--cream);color:var(--teal-deep);margin-top:32px;font-size:16px;padding:15px 40px}
.apply-band .btn:hover{background:#fff}
.apply-band .mail{margin-top:18px;font-size:14px;color:var(--teal-light)}
.apply-band .mail a{text-decoration:underline;text-underline-offset:3px}

/* ---------- why attend ---------- */
.why .card .k{font-size:20px}
.why .card p{padding-top:20px}
.why .card .exp{margin-top:14px;font-size:14px;font-weight:700;color:var(--teal-deep)}

/* ---------- partners ---------- */
.partner-group{margin-bottom:34px}
.pg-label{font-family:var(--en);font-size:12.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--gray);margin-bottom:14px}
.logo-wall{display:flex;flex-wrap:wrap;gap:12px}
.logo-chip{background:transparent;border:1px solid var(--line);padding:16px 26px;font-weight:700;font-size:15px;color:var(--gray-deep);transition:transform .25s ease,border-color .25s ease,color .25s ease}
.logo-chip.main-p{background:var(--teal-forest);color:var(--cream);border-color:var(--teal-forest);font-size:16px}
.logo-chip:hover{transform:translateY(-3px);border-color:var(--teal-mid);color:var(--teal-deep)}
.logo-chip.main-p:hover{color:#fff}

/* ---------- faq ---------- */
.faq-list{display:flex;flex-direction:column;max-width:860px}
.faq{background:transparent;border-bottom:1px solid var(--line);overflow:hidden}
.faq:first-child{border-top:1px solid var(--ink)}
.faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:24px 4px;font-weight:700;font-size:15.5px;word-break:keep-all}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--en);font-weight:400;font-size:24px;color:var(--teal-deep);flex-shrink:0;line-height:1}
.faq[open] summary::after{content:"–"}
.faq .a{padding:0 4px 26px;color:var(--gray-deep);font-size:14.5px;word-break:keep-all}

/* ---------- footer ---------- */
footer{background:var(--teal-forest);color:var(--teal-light);padding:56px 0 40px;font-size:13.5px}
.foot-grid{display:flex;justify-content:space-between;gap:32px;flex-wrap:wrap}
.foot-brand{font-family:var(--display);font-weight:400;font-size:clamp(30px,3vw,44px);letter-spacing:.03em;color:var(--cream);text-transform:uppercase;line-height:1.1}
.foot-meta{margin-top:14px;line-height:1.9;word-break:keep-all}
.foot-meta b{color:var(--cream);font-weight:700}
.copyright{margin-top:36px;padding-top:20px;border-top:1px solid rgba(253,251,245,.15);font-family:var(--en);font-size:12px;color:var(--teal-mid)}

/* ---------- responsive ---------- */
@media (max-width:960px){
  .hero-grid{grid-template-columns:minmax(0,1fr);gap:40px}
  .keyvisual{order:-1}
  .keyvisual svg{max-width:400px}
  .cards3,.prog-grid,.spk-grid{grid-template-columns:1fr}
  .mini-grid{grid-template-columns:repeat(2,1fr)}
  .stats{grid-template-columns:repeat(2,1fr)}
  .tracks-grid,.venue-grid{grid-template-columns:1fr}
  .week{grid-template-columns:repeat(3,1fr)}
  .band-grid{grid-template-columns:repeat(5,1fr);gap:6px}
  .band-cell .big{font-size:30px}
  .band-cell .word{font-size:10.5px;letter-spacing:.04em}
  .nav-links{display:none;position:absolute;top:66px;left:0;right:0;background:var(--cream);flex-direction:column;padding:20px 24px;gap:16px;border-bottom:1px solid var(--sand)}
  .nav-links.open{display:flex}
  .menu-toggle{display:block}
  .lang-toggle{margin-left:auto}
  .eyebrow{-webkit-text-stroke-width:1.2px}
  section{padding:72px 0}
  .sec-title{font-size:27px}
}
@media (max-width:520px){
  .week{grid-template-columns:repeat(2,1fr)}
  .stats{grid-template-columns:1fr 1fr}
  .sess .who{display:none}
  .band-cell{padding:16px 4px}
  .band-cell .big{font-size:24px}
  .band-cell .word{font-size:8.5px;letter-spacing:0}
}

/* ---------- multi-page additions ---------- */
.nav-links a.active{color:var(--teal-deep);font-weight:700}
.page-head{padding:88px 0 60px;position:relative;overflow:hidden}
.page-head .crumb{font-family:var(--en);font-weight:700;font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:var(--teal-deep);margin-bottom:12px}
.page-head h1{font-family:var(--display);font-weight:400;font-size:clamp(54px,8vw,112px);line-height:1.02;text-transform:uppercase;letter-spacing:.02em}
.page-head h1 .accent{color:var(--teal-deep)}
.page-head .desc{margin-top:16px;color:var(--gray-deep);font-size:16px;max-width:660px;word-break:keep-all}
.js .page-head .crumb,.js .page-head h1,.js .page-head .desc{opacity:0;animation:hiUp .8s cubic-bezier(.2,.7,.2,1) forwards}
.js .page-head h1{animation-delay:.12s}
.js .page-head .desc{animation-delay:.26s}
.deco{transition:transform .5s cubic-bezier(.2,.7,.3,1)}
.more-row{display:flex;justify-content:center;margin-top:40px}
.map-embed{overflow:hidden;border:1px solid var(--line)}
.map-embed iframe{display:block;width:100%;height:430px;border:0}
.addr-row{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin:18px 0 44px}
.addr-row .addr{font-weight:700;font-size:15px}
.transport{margin-top:0}
.transport .card{min-height:auto}
.transport .card p{margin-top:16px;padding-top:0;flex:none}
.transport .card .tip{margin-top:12px;font-size:13px;color:var(--teal-deep);font-weight:700}
@media (prefers-reduced-motion:reduce){
  .js .page-head .crumb,.js .page-head h1,.js .page-head .desc{animation:none;opacity:1}
  .deco{transition:none}
}

/* ---------- program detail blocks ---------- */
.pdetail{position:relative;background:transparent;border:1px solid var(--line);padding:48px 44px;margin-bottom:0}
.pdetail+.pdetail{border-top:none}
.pdetail.alt{background:var(--teal-forest);color:var(--cream);border-color:var(--teal-forest)}
.pdetail-head{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.pdetail .no{font-family:var(--display);font-weight:400;font-size:52px;color:var(--teal-mid);line-height:1}
.pdetail h3{font-size:26px;font-weight:900;letter-spacing:-.01em}
.pdetail .en-t{font-family:var(--en);font-size:13px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--teal-mid);margin-top:2px}
.pdetail .intro{margin-top:18px;max-width:760px;font-size:15.5px;color:var(--gray-deep);word-break:keep-all}
.pdetail.alt .intro{color:var(--teal-light)}
.pd-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:28px}
.pd-item{background:transparent;border:1px solid var(--line-soft);padding:22px 20px}
.pdetail.alt .pd-item{background:rgba(253,251,245,.07)}
.pd-item .step{font-family:var(--en);font-weight:700;font-size:11.5px;letter-spacing:.1em;color:var(--teal-deep);text-transform:uppercase}
.pdetail.alt .pd-item .step{color:var(--teal-light)}
.pd-item .tt2{font-weight:700;font-size:15.5px;margin-top:6px;word-break:keep-all}
.pd-item p{font-size:13.5px;color:var(--gray-deep);margin-top:8px;word-break:keep-all;line-height:1.6}
.pdetail.alt .pd-item p{color:var(--teal-light)}
.js .pd-grid .pd-item{opacity:0;transform:translateY(16px);transition:opacity .5s ease,transform .5s ease}
.js .pdetail.on .pd-item{opacity:1;transform:none}
.js .pdetail.on .pd-item:nth-child(2){transition-delay:.1s}
.js .pdetail.on .pd-item:nth-child(3){transition-delay:.2s}
.js .pdetail.on .pd-item:nth-child(4){transition-delay:.3s}
/* 로고월 이미지 슬롯: .logo-chip 안에 <img>를 넣으면 로고 이미지로 표시 */
.logo-chip img{display:block;height:30px;width:auto;max-width:180px;object-fit:contain}
.logo-chip.has-img{display:flex;align-items:center;padding:14px 22px;background:#fff}
@media (max-width:960px){
  .pd-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pdetail{padding:32px 24px}
}
@media (prefers-reduced-motion:reduce){
  .js .pd-grid .pd-item{opacity:1;transform:none;transition:none}
}

/* ---------- editorial refinements ---------- */
.week{border:none;border-left:1px solid var(--line);border-top:1px solid var(--line)}
.day{border-bottom:1px solid var(--line)}
header{background:rgba(253,251,245,.94)}
.nav{height:72px}
.brand{font-size:21px}
.main-tag{border-radius:0;letter-spacing:.12em}
.track-tag{border-radius:0}
.count-cell{border-radius:0}
.apply-band h2{font-size:clamp(30px,4vw,46px)}
.apply-band{padding:110px 0}
footer{padding:72px 0 44px}
@media (max-width:960px){
  .card{border-right:none;margin-right:0;padding:32px 0;border-bottom:1px solid var(--line);min-height:auto}
  .cards3{border-top:1px solid var(--ink)}
  .cards3 .card:last-child{border-bottom:none}
  .prog{border-right:none;border-bottom:1px solid var(--line)}
  .prog:last-child{border-bottom:none}
  .spk{border-right:none;border-bottom:1px solid var(--line)}
  .spk:last-child{border-bottom:none}
  .track{border-right:none;border-bottom:1px solid var(--line)}
  .track:last-child{border-bottom:none}
  .band-cell .big{font-size:clamp(30px,8vw,54px)}
  .wrap{padding:0 22px}
  section{padding:84px 0}
  .chip{padding:11px 14px 11px 0;font-size:13px}
  .chip+.chip{padding-left:14px}
}

/* ---------- home program index rows ---------- */
.prog-index{border-top:1px solid var(--ink)}
.pi-row{position:relative;display:grid;grid-template-columns:110px minmax(0,1fr) 300px 56px;gap:30px;align-items:center;padding:40px 8px;border-bottom:1px solid var(--line);transition:background .3s ease}
.pi-row:hover{background:var(--cream-deep)}
.pi-no{font-family:var(--display);font-weight:400;font-size:58px;color:var(--teal-mid);line-height:1}
.pi-main h3{font-size:25px;font-weight:900;letter-spacing:-.01em}
.pi-main .pi-en{font-family:var(--en);font-size:12.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--teal-deep);font-weight:700;margin-left:12px}
.pi-main p{margin-top:8px;color:var(--gray-deep);font-size:14.5px;max-width:560px;word-break:keep-all}
.pi-tags{display:flex;flex-wrap:wrap;gap:8px}
.pi-tags span{border:1px solid var(--line);padding:6px 13px;font-size:12.5px;font-weight:600;white-space:nowrap}
.pi-arrow{font-family:var(--en);font-size:28px;justify-self:end;transition:transform .3s ease}
.pi-row:hover .pi-arrow{transform:translateX(8px)}
.pi-row.main{background:var(--teal-forest);color:var(--cream);border-bottom:none;padding:44px 28px}
.pi-row.main:hover{background:var(--teal-deep)}
.pi-row.main .pi-no{color:var(--teal-light)}
.pi-row.main .pi-en{color:var(--teal-light)}
.pi-row.main .pi-main p{color:var(--teal-light)}
.pi-row.main .pi-tags span{border-color:rgba(253,251,245,.35)}
.pi-row.main .main-tag{top:-13px;right:28px}
@media (max-width:960px){
  .pi-row{grid-template-columns:64px minmax(0,1fr) 36px;gap:18px;padding:30px 4px}
  .pi-no{font-size:40px}
  .pi-main h3{font-size:20px}
  .pi-main .pi-en{display:block;margin:4px 0 0}
  .pi-tags{grid-column:2/3;margin-top:2px}
  .pi-arrow{grid-row:1;grid-column:3}
  .pi-row.main{padding:34px 18px}
}

/* ---------- speaker hover: 키 컬러 반전 + 세션 주제 표시 ---------- */
.mini{position:relative;overflow:hidden}
.mini .mini-topic{position:absolute;inset:0;background:var(--teal-deep);color:#fff;padding:24px 22px;display:flex;flex-direction:column;justify-content:flex-end;gap:8px;transform:translateY(101%);transition:transform .38s cubic-bezier(.25,.8,.25,1)}
.mini:hover .mini-topic,.mini:focus-within .mini-topic{transform:none}
.mini .mt-label{font-family:var(--en);font-size:10.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--teal-light)}
.mini .mt-title{font-weight:700;font-size:15px;line-height:1.45;word-break:keep-all}
.mini .mt-time{font-family:var(--en);font-size:12px;font-weight:600;color:var(--teal-light);letter-spacing:.05em}
.spk{transition:background .35s ease}
.spk:hover{background:var(--teal-forest)}
.spk:hover .no{color:var(--teal-light)}
.spk:hover h3{color:var(--cream)}
.spk:hover .org{color:var(--teal-mid)}
.spk:hover .topic{color:#fff;border-top-color:rgba(253,251,245,.3)}
.spk:hover .spk-desc{color:var(--teal-light)}
.spk .no,.spk h3,.spk .org,.spk .topic,.spk .spk-desc{transition:color .35s ease,border-color .35s ease}
@media (prefers-reduced-motion:reduce){
  .mini .mini-topic{transition:none}
  .spk,.spk .no,.spk h3,.spk .org,.spk .topic,.spk .spk-desc{transition:none}
}

/* ---------- 키노트 카드 리디자인: 컬러 블록 + 타원 포토 + 겹침 정보박스, 호버 시 키 컬러 반전+주제 ---------- */
.spk-grid{border:none;gap:20px}
.spk{position:relative;background:var(--teal-forest);border:none;overflow:hidden;padding:28px 26px 34px;min-height:460px}
.spk:hover{background:var(--teal-forest)}
.spk .no{color:var(--teal-light)}
.spk .oval{position:relative;width:76%;aspect-ratio:1/1.26;margin:20px auto 0;border-radius:50%;overflow:hidden;background:var(--teal-mid);display:flex;align-items:center;justify-content:center;font-family:var(--display);font-weight:400;font-size:46px;color:#fff}
.spk .oval img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.spk .kinfo{position:relative;z-index:2;width:84%;margin:-58px 0 0 auto;background:var(--teal-deep);border:1px solid rgba(253,251,245,.45);padding:16px 18px}
.spk .kinfo h3{color:#fff;font-size:19px;font-weight:900}
.spk:hover .kinfo h3{color:#fff}
.spk .kinfo .org{color:var(--teal-light);font-size:12.5px;margin-top:4px;line-height:1.5}
.spk:hover .kinfo .org{color:var(--teal-light)}
.spk .ktopic{position:absolute;inset:0;z-index:3;background:var(--teal-deep);color:#fff;padding:30px 28px 36px;display:flex;flex-direction:column;justify-content:flex-end;gap:12px;opacity:0;transition:opacity .35s ease}
.spk:hover .ktopic,.spk:focus-within .ktopic{opacity:1}
.spk .ktopic .no{color:var(--teal-light)}
.spk .ktopic .t-title{font-size:22px;font-weight:900;line-height:1.4;word-break:keep-all;color:#fff}
.spk .ktopic .t-desc{font-size:14px;color:var(--teal-light);word-break:keep-all;line-height:1.7}
@media (max-width:960px){
  .spk{border-bottom:none;min-height:420px}
}
@media (prefers-reduced-motion:reduce){
  .spk .ktopic{transition:none}
}

/* ---------- 키노트 카드: 시안 C (풀포토 + 호버 키 컬러 반전) ---------- */
.spk-grid{border:none;gap:20px}
.spk{position:relative;background:var(--teal-forest);border:none;padding:0;min-height:0;aspect-ratio:3/4;overflow:hidden}
.spk:hover{background:var(--teal-forest)}
.spk .kphoto{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.spk:hover .kphoto{transform:scale(1.05)}
.spk.p-axel .kphoto{object-position:center 22%}
.spk.p-kim .kphoto{object-position:center 18%}
.spk.p-andi .kphoto{object-position:center 26%}
.spk .kn{font-family:var(--en);font-weight:700;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--teal-light)}
.spk .base{position:absolute;inset:auto 0 0 0;padding:22px;background:linear-gradient(to top,rgba(33,31,21,.85),transparent);color:#fff;z-index:1}
.spk .base h3{font-size:24px;font-weight:900;margin-top:4px;color:#fff}
.spk:hover .base h3{color:#fff}
.spk .base .org{font-size:12.5px;opacity:.85;margin-top:2px;color:#fff;line-height:1.5;word-break:keep-all}
.spk:hover .base .org{color:#fff}
.spk .over{position:absolute;inset:0;background:rgba(11,118,119,.94);color:#fff;padding:26px;display:flex;flex-direction:column;justify-content:flex-end;gap:10px;opacity:0;transition:opacity .35s ease;z-index:2}
.spk:hover .over,.spk:focus-within .over{opacity:1}
.spk .over h3{font-size:24px;font-weight:900;color:#fff}
.spk .over .topic{font-size:17px;font-weight:700;line-height:1.5;word-break:keep-all;color:#fff}
.spk .over .desc{font-size:13px;color:var(--teal-light);word-break:keep-all;line-height:1.7}
@media (max-width:960px){
  .spk{border:none;min-height:0}
}
@media (prefers-reduced-motion:reduce){
  .spk .kphoto,.spk .over{transition:none}
}

/* 키노트 2카드 대응 + 윤순진 사진 초점 */
.spk-grid{grid-template-columns:repeat(2,minmax(0,460px))}
/* 키노트 카드가 1장뿐일 때 풀폭 방지 */
.spk-grid .spk:only-child{max-width:460px}
/* 모바일 언어 드롭다운: 640px 이하에서 병렬 필 대신 표시 */
.lang-dd{position:relative;font-family:var(--en);display:none;flex-shrink:0}
.lang-dd-btn{display:flex;align-items:center;gap:5px;border:1px solid var(--line);background:var(--cream);padding:4px 9px;border-radius:999px;font-family:var(--en);font-weight:700;font-size:11px;letter-spacing:.05em;cursor:pointer;color:var(--ink)}
.lang-dd-btn img{width:14px;height:14px;border-radius:50%;object-fit:cover;display:block;box-shadow:0 0 0 1px rgba(33,31,21,.12)}
.lang-dd-btn .car{font-size:7px;color:var(--teal-deep);transition:transform .2s}
.lang-dd.open .lang-dd-btn .car{transform:rotate(180deg)}
.lang-dd-list{position:absolute;top:calc(100% + 8px);right:0;min-width:148px;background:var(--cream);border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:0 8px 22px rgba(33,31,21,.16);display:none;z-index:80}
.lang-dd.open .lang-dd-list{display:block}
.lang-dd-list button{display:flex;align-items:center;gap:8px;width:100%;padding:9px 12px;background:none;border:none;border-bottom:1px solid var(--line);font-family:var(--en);font-size:11.5px;font-weight:700;letter-spacing:.04em;color:var(--ink);cursor:pointer;text-align:left}
.lang-dd-list button:last-child{border-bottom:none}
.lang-dd-list img{width:16px;height:16px;border-radius:50%;object-fit:cover;box-shadow:0 0 0 1px rgba(33,31,21,.12)}
.lang-dd-list .native{font-family:'Noto Sans KR',sans-serif;font-weight:500;font-size:10.5px;color:#84847a;margin-left:auto;padding-left:10px}
.lang-dd-list button.cur{background:var(--teal-deep);color:#fff}
.lang-dd-list button.cur .native{color:rgba(253,251,245,.75)}
@media (max-width:640px){
  .lang-toggle{display:none}
  .lang-dd{display:block;margin-left:auto}
}
/* 로고 대체 세션 카드(아임인부산 등) */
.scard.logo-card{background:var(--teal-forest)}
.scard.logo-card .klogo{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%);width:62%;filter:brightness(0) invert(1);opacity:.95}
.spk.p-yoon .kphoto{object-position:50% 30%}

/* 푸터 로고 행: .flogo 안에 <img src="assets/logos/xx.png">를 넣으면 이미지 로고로 표시 */
.foot-logos{display:flex;gap:14px 34px;align-items:center;flex-wrap:wrap;justify-content:flex-end;align-self:center}
.flogo{font-family:var(--en);font-weight:800;font-size:16px;letter-spacing:.06em;color:var(--cream);text-transform:uppercase;opacity:.92;white-space:nowrap}
.flogo img{height:30px;width:auto;display:block;filter:brightness(0) invert(1);opacity:.92}
@media (max-width:960px){.foot-logos{justify-content:flex-start}}
/* 카운트다운 셀: 살짝 라운드 */
.count-cell{border-radius:12px;overflow:hidden}
/* 홈 세션 행 넘버(1부·2부) */
.pi-no{white-space:nowrap}
.pi-row .pi-no{font-size:44px}

/* 교통편 4카드 그리드 */
.cards3.transport{grid-template-columns:repeat(4,minmax(0,1fr))}
.transport .card .k-kr{margin-top:2px}
@media (max-width:960px){.cards3.transport{grid-template-columns:1fr}}
/* 푸터 로고: 트림 후 동일 높이 */
.flogo img{height:28px;width:auto}

/* ---------- 홈 키노트 풀와이드 배너 ---------- */
.kbanner{display:grid;grid-template-columns:380px minmax(0,1fr);background:var(--teal-forest);color:#fff;overflow:hidden}
.kbanner .kb-photo{position:relative;min-height:340px}
.kbanner .kb-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 28%}
.kb-main{padding:46px 56px;display:flex;flex-direction:column;justify-content:center}
.kb-label{display:flex;gap:14px;align-items:center;flex-wrap:wrap;font-family:var(--en);font-weight:700;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--teal-light);padding-bottom:18px;margin-bottom:24px;border-bottom:1px solid rgba(253,251,245,.25)}
.kb-label .kb-sk{color:rgba(253,251,245,.75);letter-spacing:.06em}
.kb-main .kn{font-family:var(--en);font-weight:700;font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--teal-light)}
.kb-main h3{font-size:32px;font-weight:900;margin-top:6px}
.kb-main .org{color:var(--teal-light);font-size:14px;margin-top:8px;line-height:1.7}
.kb-topic{margin-top:20px;font-size:clamp(20px,2.4vw,28px);font-weight:900;line-height:1.4;word-break:keep-all}
@media (max-width:960px){
  .kbanner{grid-template-columns:1fr}
  .kbanner .kb-photo{aspect-ratio:4/3;min-height:0}
  .kb-main{padding:32px 26px}
}

/* ---------- SK 로고 카드 ---------- */
.spk.sk-card .klogo{position:absolute;left:50%;top:40%;transform:translate(-50%,-50%);width:54%;filter:brightness(0) invert(1);opacity:.95}

/* ---------- 세션별 그룹 + 풀포토/실루엣 카드 ---------- */
.sgroup{margin-top:76px}
.sgroup:first-of-type{margin-top:0}
.sgroup-head{display:flex;align-items:center;gap:16px;margin-bottom:22px}
.sg-title{font-size:23px;font-weight:900;letter-spacing:-.01em}
.scard-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.scard{position:relative;aspect-ratio:3/4;overflow:hidden;background:var(--teal-mid)}
.scard .kphoto{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.scard:hover .kphoto{transform:scale(1.05)}
.scard.p-noh .kphoto{object-position:center 20%}
.scard.p-chairul .kphoto{object-position:center 25%}
.scard.p-ji .kphoto{object-position:center 30%}
.scard .sil{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:center;background:linear-gradient(180deg,var(--teal-light) 0%,var(--teal-mid) 100%)}
.scard .sil svg{width:72%;height:auto;display:block;opacity:.5}
.scard .kn{font-family:var(--en);font-weight:700;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--teal-light)}
.scard .base{position:absolute;inset:auto 0 0 0;z-index:1;padding:48px 18px 18px;background:linear-gradient(to top,rgba(33,31,21,.85),transparent);color:#fff}
.scard .base h4{font-size:17px;font-weight:900;margin-top:4px;line-height:1.35;word-break:keep-all}
.scard .base .org{font-size:11.5px;color:rgba(253,251,245,.8);margin-top:4px;line-height:1.5;word-break:keep-all}
.scard .over{position:absolute;inset:0;z-index:2;background:rgba(11,118,119,.95);color:#fff;padding:20px 18px 22px;display:flex;flex-direction:column;justify-content:flex-end;gap:8px;opacity:0;transition:opacity .35s ease}
.scard:hover .over,.scard:focus-within .over{opacity:1}
.scard .over h4{font-size:18px;font-weight:900}
.scard .over .topic{font-size:14px;font-weight:700;line-height:1.5;word-break:keep-all;padding-top:10px;border-top:1px solid rgba(253,251,245,.35)}
.js .scard-grid .scard{opacity:0;transform:translateY(18px);transition:opacity .5s ease,transform .5s ease}
.js .sgroup.on .scard{opacity:1;transform:none}
.js .sgroup.on .scard:nth-child(2){transition-delay:.1s}
.js .sgroup.on .scard:nth-child(3){transition-delay:.2s}
.js .sgroup.on .scard:nth-child(4){transition-delay:.3s}
@media (max-width:960px){
  .scard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (prefers-reduced-motion:reduce){
  .scard .kphoto,.scard .over{transition:none}
  .js .scard-grid .scard{opacity:1;transform:none;transition:none}
}

/* 세션 연사 필터 버튼 (라운드 필) */
.sfilter{display:flex;gap:10px;flex-wrap:wrap;margin:-28px 0 44px}
.sf-btn{border-radius:999px;border:1px solid var(--line);background:transparent;padding:10px 24px;font-family:var(--kr);font-weight:700;font-size:14px;color:var(--gray-deep);cursor:pointer;transition:background .25s,color .25s,border-color .25s}
.sf-btn:hover:not(.active){background:var(--cream-deep);color:var(--ink)}
.sf-btn.active{background:var(--teal-deep);color:#fff;border-color:var(--teal-deep)}

/* 함께 만드는 기관: 가로형 로우 (좌 로고 · 우 설명) */
.org-rows{border-top:1px solid var(--ink);margin-top:18px}
.org-row{display:grid;grid-template-columns:280px minmax(0,1fr);gap:44px;align-items:center;padding:38px 8px;border-bottom:1px solid var(--line)}
.org-logo{display:flex;align-items:center;justify-content:flex-start}
.org-logo img{width:190px;height:auto;display:block}
.org-desc h3{font-size:18px;font-weight:900;margin-bottom:8px}
.org-desc p{font-size:14.5px;color:var(--gray-deep);word-break:keep-all;line-height:1.8;max-width:760px}
.js .org-rows .org-row{opacity:0;transform:translateY(16px);transition:opacity .55s ease,transform .55s ease}
.js .org-rows .org-row.on{opacity:1;transform:none}
@media (max-width:960px){
  .org-row{grid-template-columns:1fr;gap:16px;padding:28px 4px}
}
@media (prefers-reduced-motion:reduce){
  .js .org-rows .org-row{opacity:1;transform:none;transition:none}
}
.scard.p-stephanus .kphoto{object-position:center 24%}
/* IDN 연사 v3 (2026-08-07): 호버 바이오 + 신규 사진 초점 */
.scard .over .bio{font-size:11.5px;line-height:1.6;color:rgba(253,251,245,.85);word-break:keep-all}
.scard.p-bayu .kphoto{object-position:center 18%}
.scard.p-cokro .kphoto,.scard.p-jonathan .kphoto{object-position:center 30%}
/* 협력기관 푸터 로고: 폭 대신 높이 통일. UC 씰은 면형이라 화이트 반전 시 원판이 됨 → 원본 컬러 유지 */
.foot-orgs .foot-group:last-child .flogo img{width:auto;height:30px}
.foot-orgs .foot-group:last-child .flogo img[src*="ecoxyztem"]{height:44px}
.foot-orgs .foot-group:last-child .flogo img[src*="uciputra"]{height:46px}

/* ---------- TYPE 03 톤 강화 (레이아웃 불변, CSS 전용) ---------- */
/* 1) 아이브로 마커: 단색 사각형 → 2×2 체커 모듈 */
.eyebrow::before{width:12px;height:12px;background:conic-gradient(var(--teal-deep) 0 25%,var(--teal-light) 25% 50%,var(--teal-deep) 50% 75%,var(--teal-light) 75% 100%)}
/* 2) 할프톤 도트 필드: 히어로·페이지헤드 (틸 도트) */
.hero{position:relative}
.hero::before{content:"";position:absolute;right:4%;top:48px;width:300px;height:200px;background-image:radial-gradient(var(--teal-mid) 1.6px,transparent 1.6px);background-size:13px 13px;opacity:.28;pointer-events:none;-webkit-mask-image:radial-gradient(closest-side,#000 40%,transparent);mask-image:radial-gradient(closest-side,#000 40%,transparent)}
.hero::after{content:"";position:absolute;left:-40px;bottom:30px;width:260px;height:180px;background-image:radial-gradient(var(--teal-light) 1.8px,transparent 1.8px);background-size:15px 15px;opacity:.4;pointer-events:none;-webkit-mask-image:radial-gradient(closest-side,#000 40%,transparent);mask-image:radial-gradient(closest-side,#000 40%,transparent)}
.page-head::after{content:"";position:absolute;right:6%;bottom:-30px;width:300px;height:180px;background-image:radial-gradient(var(--teal-mid) 1.6px,transparent 1.6px);background-size:13px 13px;opacity:.3;pointer-events:none;z-index:0;-webkit-mask-image:radial-gradient(closest-side,#000 40%,transparent);mask-image:radial-gradient(closest-side,#000 40%,transparent)}
/* 3) 다크 밴드: 크림 도트 오버레이 */
.band{position:relative;overflow:hidden}
.band::after{content:"";position:absolute;right:-50px;top:-30px;width:360px;height:260px;background-image:radial-gradient(rgba(253,251,245,.22) 1.6px,transparent 1.6px);background-size:13px 13px;transform:rotate(6deg);pointer-events:none}
.apply-band::before{content:"";position:absolute;right:8%;top:34px;width:300px;height:200px;background-image:radial-gradient(rgba(253,251,245,.2) 1.6px,transparent 1.6px);background-size:13px 13px;pointer-events:none;z-index:0}
/* 4) 키비주얼 뒤 가이드 그리드 (3안 배너의 헤어라인 그리드) */
.keyvisual{position:relative}
.keyvisual::before{content:"";position:absolute;inset:6% 4%;background-image:linear-gradient(var(--line-soft) 1px,transparent 1px),linear-gradient(90deg,var(--line-soft) 1px,transparent 1px);background-size:64px 64px;pointer-events:none}
.keyvisual svg{position:relative;z-index:1}
/* 5) 디스플레이 자간: 콘덴스드 테크노 톤 근접 */
.hero h1,.page-head h1{letter-spacing:.03em}
.foot-brand{letter-spacing:.04em}

/* 히어로 이머시브 v2: 커서 글로우 + 요소 개별 반응 */
#kvglow{position:absolute;width:620px;height:620px;border-radius:50%;pointer-events:none;z-index:0;opacity:0;transition:opacity .6s;background:radial-gradient(circle,rgba(116,171,161,.15) 0%,transparent 62%);transform:translate(-50%,-50%)}
.js .kv-in{transition:translate .18s cubic-bezier(.2,.7,.3,1),rotate .18s cubic-bezier(.2,.7,.3,1)}
@media (prefers-reduced-motion:reduce){#kvglow{display:none}.js .kv-in{transition:none}}

/* 푸터: SOLVE 로고타입 + 기관 로고 가로폭 통일 */
.foot-brand{display:flex;flex-direction:column;gap:12px}
.fb-logo{width:230px;height:auto;display:block;filter:brightness(0) invert(1);opacity:.97}
.fb-sub{font-family:var(--display);font-weight:400;font-size:22px;letter-spacing:.08em;color:var(--cream);text-transform:uppercase}
.flogo img{width:140px;height:auto}
.foot-logos{max-width:380px;justify-content:flex-end}
/* 반응형: 장식 레이어가 글자 위로 오지 않도록 */
.hero .wrap{position:relative;z-index:2}
.band .wrap{position:relative;z-index:1}
@media (max-width:960px){
  .hero::before,.hero::after,.page-head::after{display:none}
  .keyvisual::before{inset:2% 0}
  .foot-logos{justify-content:flex-start;max-width:none}
  .flogo img{width:120px}
}

/* 카운트다운(메인 컨퍼런스까지) 위 도트 겹침 수정: 레이어 최하단 + 텍스트 영역 밖으로 이동 */
.hero::before,.hero::after{z-index:0}
.hero::after{left:-80px;bottom:-52px;width:220px;height:150px;opacity:.3}
.hero .wrap,.hero .wrap *{position:relative}
.hero .wrap{z-index:2}
.org-sub{display:flex;align-items:center;gap:10px;margin-top:14px}
.org-sub span{font-family:var(--en);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gray)}
.org-sub img{height:18px;width:auto;display:block}
.pg-label.og2{margin-top:64px}

/* 푸터 주최·협력 2단 로고 */
.foot-orgs{display:flex;flex-direction:column;gap:26px;align-items:flex-end}
.foot-orgs .foot-group{width:560px;max-width:100%}
.foot-group .fg-label{display:block;font-family:var(--en);font-size:10.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--teal-light);margin-bottom:12px;text-align:left}
.foot-orgs .foot-logos{max-width:560px;justify-content:flex-start}
@media (max-width:960px){.foot-orgs{align-items:flex-start}}
