/* ══════════════════════════════════════════
   NONÜR · components — 네비 · 푸터 · 보드 ·
   정보존 · 버튼 · 툴팁 · 공용 섹션
   ══════════════════════════════════════════ */

/* ── 분위기 배경 — 실제 에셋 또는 색면만 사용(외부 플레이스홀더 금지) ── */
.atmosphere{position:relative;overflow:hidden;background-color:var(--charcoal-soft);background-size:cover;background-position:center}
.atmosphere--biwon{background-image:linear-gradient(165deg,rgba(28,32,26,.42) 0%,rgba(20,26,21,.7) 100%),url('../img/rainystone.jpg')}
.atmosphere--biwon-deep{background-image:linear-gradient(180deg,#232e24 0%,#141a15 100%)}
.atmosphere--rose{background-image:radial-gradient(120% 90% at 70% 15%,#6e4448 0%,transparent 60%),linear-gradient(165deg,#4a2328 0%,#241214 100%)}
.atmosphere--rose-deep{background-image:linear-gradient(180deg,#3a1c20 0%,#1d0f11 100%)}
.atmosphere--jasmin{background-image:radial-gradient(110% 85% at 68% 18%,#7a6540 0%,transparent 62%),linear-gradient(165deg,#33291a 0%,#14100a 100%)}
.atmosphere--jasmin-deep{background-image:linear-gradient(180deg,#2a2216 0%,#120e08 100%)}
.atmosphere--inn{background-image:linear-gradient(170deg,#8f8b83 0%,#403d38 100%)}
.atmosphere--salt{background-image:linear-gradient(165deg,rgba(50,38,26,.35) 0%,rgba(40,30,20,.6) 100%),url('../img/afternoon.jpg')}
.atmosphere--notes{background-image:linear-gradient(165deg,rgba(60,58,52,.4) 0%,rgba(40,38,34,.68) 100%),url('../img/windyclassroom.jpg')}
.atmosphere--object{background-image:linear-gradient(160deg,rgba(46,36,26,.4) 0%,rgba(36,28,20,.66) 100%),url('../img/jagejang.jpg')}
.atmosphere--navy{background-image:linear-gradient(170deg,#2a3644 0%,#121821 100%)}

/* ── NAV ─────────────────────────────── */
/* 레퍼런스 실측: padding 20px 40px 0 · 위쪽 정렬(가운데 정렬 아님) */
.nav{
  position:fixed;inset:0 0 auto 0;z-index:40;
  display:flex;justify-content:space-between;align-items:flex-start;
  padding:20px 40px 0;color:var(--white);
  transition:color .6s var(--ease);
}
.nav--dark{color:var(--charcoal)}
/* 스크림 — 고정 내비 아래로 콘텐츠가 지나갈 때 글자끼리 겹치지 않게 */
.nav::before{
  content:"";position:absolute;inset:-1px 0 auto;height:calc(100% + 2.4rem);z-index:-1;
  background:linear-gradient(180deg,rgba(14,16,14,.5) 0%,transparent 100%);
  opacity:1;transition:opacity .6s var(--ease);pointer-events:none;
}
.nav--dark::before{background:linear-gradient(180deg,rgba(242,239,231,.92) 0%,rgba(242,239,231,0) 100%)}
.nav__brand{display:block}
.nav__logo{
  display:block;height:1.35rem;aspect-ratio:1749/410;
  background:currentColor;
  -webkit-mask:url('../img/logo-nav.png') center/contain no-repeat;
  mask:url('../img/logo-nav.png') center/contain no-repeat;
}
/* ── 링크 격자 ──
   레퍼런스 실측(1440px): 로고 x40 / 링크 묶음 x730–1400 / 열 간격 125px /
   한 열에 두 줄, 줄 간격 19px, 13px / menu는 우측 끝.
   한 줄로 늘어놓지 않고 2행으로 흩어 놓는 것이 이 내비의 성격이다. */
/* 페이지가 다섯 개로 정리되면서 2행 흩뿌림 대신 한 줄로 세운다 */
/* 링크와 장바구니가 한 줄에 이어진다 — 별도 묶음으로 떼지 않는다 */
.nav__row{display:flex;gap:2.2rem;margin-left:auto;align-items:center}
.nav__row .nav__ico{width:auto;height:19px;place-items:center}
.nav__row a{
  font-size:var(--fs-cap);letter-spacing:.16em;line-height:19px;
  opacity:.85;transition:opacity .4s;white-space:nowrap;
}
.nav__row a:hover,.nav__row a[aria-current]{opacity:1}
.nav__row a[aria-current]{border-bottom:1px solid currentColor}
@media (max-width:991px){ .nav__row{gap:1.4rem} }
@media (max-width:767px){
  .nav__row{gap:.9rem;flex:0 1 auto;min-width:0;overflow:hidden}
  .nav__row a{font-size:11px;letter-spacing:.06em}
}

.nav__grid{display:flex;gap:125px;margin-left:auto;align-items:flex-start}
/* 줄 간격은 line-height 19px가 전부다 — gap을 주면 원본보다 벌어진다 */
.nav__col{display:flex;flex-direction:column;gap:0}
.nav__col a{
  font-size:var(--fs-cap);line-height:19px;letter-spacing:.02em;
  opacity:.85;transition:opacity .4s;white-space:nowrap;
}
.nav__col a:hover,.nav__col a[aria-current]{opacity:1}
.nav__col a[aria-current]{border-bottom:1px solid currentColor}
.nav__col a sup{font-size:9px;vertical-align:super;opacity:.75}

.nav__acts{display:flex;align-items:flex-start;gap:1rem;margin-left:2.5rem}
.nav__menu{
  font-size:12px;letter-spacing:.02em;text-transform:uppercase;
  line-height:19px;opacity:.85;transition:opacity .4s;
}
.nav__menu:hover{opacity:1}
/* 실측: 991↓에서 링크 묶음이 통째로 사라지고 menu만 남는다.
   좁은 화면에서 링크를 욱여넣지 않는 것이 이 내비의 규칙이다. */
@media (max-width:991px){ .nav__grid{display:none} }
.nav__ico{
  position:relative;width:44px;height:44px;display:grid;place-items:center;
  opacity:.85;transition:opacity .4s;color:inherit;
}
.nav__ico:hover{opacity:1}
.nav__ico svg{width:19px;height:19px;display:block}
.nav__badge{
  position:absolute;top:5px;right:4px;min-width:15px;height:15px;padding:0 3px;
  border-radius:9px;background:currentColor;
  display:grid;place-items:center;
}
.nav__badge b{
  font-size:9px;line-height:1;font-weight:600;font-variant-numeric:tabular-nums;
  color:var(--charcoal);
}
.nav--dark .nav__badge b{color:var(--ivory)}
.nav__badge[data-empty="1"]{display:none}
/* 좁은 화면에선 링크가 이미 빽빽하다 — 링크 줄이 먼저 줄어들고 아이콘은 자리를 지킨다 */
@media (max-width:767px){
  .nav__acts{margin-left:.5rem;flex:none}
  .nav__links{min-width:0;flex:0 1 auto;overflow:hidden}
  .nav__ico{width:40px;height:40px}
  .nav__ico svg{width:17px;height:17px}
}
.nav__links a{
  font-size:var(--fs-cap);letter-spacing:.18em;
  opacity:.85;transition:opacity .4s;padding:.3rem 0;
}
.nav__links a:hover,.nav__links a.active{opacity:1}
.nav__links a.active{border-bottom:1px solid currentColor}

/* ── 커서 말풍선 ──
   레퍼런스의 .cursor + .cursor-bubble. 커서를 따라오다 대상 위에서 글자가 바뀐다. */
/* 기본 커서를 숨기고 비행기가 대신한다 — 지구본 위에서는 globe.js가 그리므로 되돌린다 */
html.has-cursor,html.has-cursor *{cursor:none!important}
.cursor{position:fixed;top:0;left:0;z-index:120;pointer-events:none;will-change:transform}
.cursor.is-hidden{opacity:0}
.cursor__plane{
  position:absolute;left:0;top:0;width:52px;height:52px;
  color:var(--charcoal);transition:opacity .25s var(--ease),color .3s;
  will-change:transform;
}
/* 어두운 섹션 위에서는 밝게 — 데이터 속성이 아니라 섹션 색을 따라간다 */
.cursor.on-dark .cursor__plane{color:var(--ivory)}
.cursor.is-on .cursor__plane{opacity:0}
.cursor.is-press .cursor__plane{transform-origin:50% 50%}
.cursor__bubble{
  position:absolute;left:0;top:0;transform:translate(-50%,-50%) scale(.2);
  display:grid;place-items:center;min-width:5.4rem;height:5.4rem;padding:0 1rem;
  border-radius:999px;background:var(--charcoal);color:var(--ivory);
  opacity:0;transition:opacity .28s var(--ease),transform .38s var(--ease);
}
.cursor.is-on .cursor__bubble{opacity:1;transform:translate(-50%,-50%) scale(1)}
.cursor.is-on.is-press .cursor__bubble{transform:translate(-50%,-50%) scale(.9)}
.cursor__bubble i{
  font-style:normal;font-size:var(--fs-cap);letter-spacing:.14em;
  text-transform:uppercase;text-align:center;line-height:1.3;
}
@media (hover:none),(max-width:767px){
  .cursor{display:none}
  html.has-cursor,html.has-cursor *{cursor:auto!important}
}

/* ── 페이지 전환 — 덮인 상태로 시작해 걷히고, 떠날 때 다시 덮는다 ── */
.pageload{
  position:fixed;inset:0;z-index:110;background:var(--charcoal);
  transform:scaleY(1);transform-origin:top;pointer-events:none;
}
html.is-ready .pageload{transform:scaleY(0);transition:transform .55s var(--ease)}
html.is-leaving .pageload{transform:scaleY(1);transform-origin:bottom;transition:transform .46s var(--ease)}
@media (prefers-reduced-motion:reduce){.pageload{display:none}}

/* ── 스크롤 진행 레일 (전역) ─────────── */
.rail{
  position:fixed;top:50%;right:14px;transform:translateY(-50%);z-index:38;
  display:flex;flex-direction:column;align-items:center;gap:10px;
  color:var(--white);transition:color .6s var(--ease);pointer-events:none;
}
.nav--dark ~ .rail,.rail.rail--dark{color:var(--charcoal)}
.rail__track{width:2px;height:34vh;background:currentColor;opacity:.18;position:relative;border-radius:2px}
.rail__fill{position:absolute;top:0;left:0;width:100%;height:0%;background:currentColor;opacity:1;border-radius:2px}
.rail__label{font-size:11px;letter-spacing:.2em;writing-mode:vertical-rl;opacity:.7}
@media (max-width:767px){.rail{display:none}}

/* ── 건너뛰기 (재방문자용) ───────────── */
.skip{
  position:fixed;top:4.6rem;right:2.4rem;z-index:39;
  font-family:var(--mono);font-size:var(--fs-cap);letter-spacing:.12em;
  color:var(--white);opacity:.65;transition:opacity .3s,color .6s var(--ease);
  padding:.4rem .2rem;
}
.skip:hover{opacity:1}
.skip.skip--dark{color:var(--charcoal)}
.skip.is-hidden{opacity:0;pointer-events:none}
@media (max-width:767px){.skip{top:4.2rem;right:1.4rem}}

/* ── 버튼 — CTA는 한국어, 동작이 보이게 ── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.6rem;
  min-height:44px;padding:.85rem 1.8rem;
  font-size:15px;font-weight:600;letter-spacing:-.01em;
  border:1px solid currentColor;cursor:pointer;
  transition:background .3s,color .3s,transform .25s var(--ease);
}
.btn--fill{background:var(--charcoal);color:var(--white);border-color:var(--charcoal)}
.btn--fill:hover{background:var(--moss);border-color:var(--moss)}
.btn--ghost:hover{background:rgba(28,27,24,.06)}
.btn:active{transform:translateY(1px)}

/* ── 향료 용어 툴팁 (§10) ─────────────
   사용: <button class="term" data-tip="뿌리에서 나는 흙 냄새. 마르고 묵직함">베티버</button>
   hover + focus + tap 모두 동작. */
.term{
  position:relative;display:inline;padding:0 .05em;
  border-bottom:1px dashed var(--stone);cursor:help;font:inherit;
}
.term::after{
  content:attr(data-tip);
  position:absolute;left:50%;bottom:calc(100% + 10px);transform:translateX(-50%) translateY(4px);
  width:max-content;max-width:240px;padding:.6rem .8rem;
  background:var(--charcoal);color:var(--white);
  font-size:13px;font-weight:400;line-height:1.6;letter-spacing:0;text-align:left;
  opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;
  z-index:30;word-break:keep-all;white-space:normal;
}
.term:hover::after,.term:focus-visible::after,.term.is-open::after{opacity:1;transform:translateX(-50%) translateY(0)}

/* ── 빵부스러기 ──────────────────────── */
.crumb{display:flex;gap:.6rem;align-items:center;font-family:var(--mono);font-size:var(--fs-cap);letter-spacing:.1em;color:var(--stone)}
.crumb a:hover{color:currentColor}
.crumb span[aria-current]{color:inherit}

/* ── FAQ 아코디언 ────────────────────── */
.faq{border-top:1px solid rgba(28,27,24,.16)}
.faq details{border-bottom:1px solid rgba(28,27,24,.16)}
.faq summary{
  display:flex;justify-content:space-between;align-items:center;gap:2rem;
  padding:1.4rem .2rem;cursor:pointer;font-weight:600;font-size:15px;list-style:none;
}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-weight:200;font-size:22px;color:var(--stone);transition:transform .3s}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq .faq__a{padding:0 .2rem 1.6rem;font-weight:400;line-height:1.85;color:var(--charcoal-soft);max-width:44rem}

/* ── 폼 ──────────────────────────────── */
.field{display:flex;border-bottom:1px solid currentColor;gap:1rem}
.field input{
  flex:1;background:none;border:none;color:inherit;
  font-family:var(--mono);font-size:14px;padding:.9rem 0;outline:none;min-height:44px;
}
.field input::placeholder{color:currentColor;opacity:.4}
.field button{font-weight:600;font-size:14px;letter-spacing:-.01em;white-space:nowrap;min-height:44px}
.field button:hover{color:var(--orange)}
.form-msg{font-size:13px;margin-top:.8rem;min-height:1.2em}
.form-msg.is-err{color:var(--orange)}
.form-msg.is-ok{color:var(--moss)}

/* ── PASSAGE 보드 (출발안내판) ───────── */
.board{position:relative;background:var(--white);padding:0 0 8rem}
.board--index{padding-top:7rem}
.board__bg{position:absolute;inset:0;opacity:0;transition:opacity 1.2s var(--ease);pointer-events:none}
.board__bg.active{opacity:.26}
.board__head{position:relative;padding:0 2.4rem 4rem;display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:1rem}
.board__title{font-weight:200;font-size:var(--fs-display);letter-spacing:.02em}
.board__sub{color:var(--stone)}
.board__list{list-style:none;position:relative}
.passage{border-top:1px solid rgba(28,27,24,.16)}
.passage:last-child{border-bottom:1px solid rgba(28,27,24,.16)}
.passage__row{
  width:100%;display:grid;text-align:left;
  grid-template-columns:8rem 1fr 2fr 10rem;
  align-items:baseline;gap:2rem;
  padding:3.2rem 2.4rem;cursor:pointer;
  transition:padding .7s var(--ease);
}
a.passage__row{display:grid}
.passage:hover .passage__row{padding-left:3.4rem}
.passage__no{font-size:var(--fs-cap);color:var(--stone);font-variant-numeric:tabular-nums;letter-spacing:.06em}
.passage__country{font-size:var(--fs-cap);letter-spacing:.24em;color:var(--charcoal-soft)}
.passage__name{
  font-weight:200;font-size:clamp(1.7rem,3.5vw,3rem);line-height:1.15;letter-spacing:.02em;
  transition:color .6s;
}
.passage__name small{display:block;font-weight:400;font-size:var(--fs-cap);letter-spacing:0;color:var(--stone);margin-top:.7rem}
.passage__spec{display:block;margin-top:1.1rem;color:var(--charcoal-soft);font-size:var(--fs-cap);font-weight:400;font-variant-numeric:tabular-nums;letter-spacing:.06em}
.passage:hover .passage__name{color:var(--moss)}
.passage[data-passage="rose"]:hover .passage__name{color:var(--oxblood)}
.passage__status{font-size:var(--fs-cap);justify-self:end;color:var(--stone);letter-spacing:.06em}
.passage__status--open{color:var(--moss)}
.passage__meta{
  display:flex;justify-content:space-between;align-items:baseline;gap:2rem;
  padding:0 2.4rem;max-height:0;overflow:hidden;opacity:0;
  font-size:var(--fs-cap);color:var(--stone);
  transition:max-height .8s var(--ease),opacity .8s var(--ease),padding .8s var(--ease);
}
.passage:hover .passage__meta,.passage:focus-within .passage__meta{max-height:7rem;opacity:1;padding-bottom:2.2rem}
.passage__caption{font-weight:400;font-size:var(--fs-cap);line-height:1.7;letter-spacing:0;color:var(--charcoal-soft);text-align:right}
.board__more{display:block;padding:2.6rem 2.4rem 0;font-size:var(--fs-cap);letter-spacing:.16em;color:var(--stone);transition:color .4s}
.board__more:hover{color:var(--charcoal)}

/* ── 지도 트랜지션 오버레이 ──────────── */
.map{
  position:fixed;inset:0;z-index:60;background:var(--charcoal);overflow:hidden;
  opacity:0;visibility:hidden;transition:opacity 1s var(--ease),visibility 0s 1s;
}
.map.active{opacity:1;visibility:visible;transition:opacity 1s var(--ease)}
.map__svg{width:100%;height:100%}
.map__grid line{stroke:rgba(250,248,243,.07);stroke-width:1}
.map__route{stroke:rgba(250,248,243,.55);stroke-width:1;stroke-dasharray:3 6}
.map__dot{fill:var(--orange)}
.map__origin,.map__dest{fill:none;stroke:rgba(250,248,243,.6);stroke-width:1}
.map__readout{
  position:absolute;left:2.4rem;bottom:2.4rem;display:flex;flex-direction:column;gap:.6rem;
  color:var(--white);font-size:var(--fs-cap);
}
.map__readout span:last-child{color:var(--stone)}

/* ── 페이지 헤드 (서브페이지) ─────────── */
.page-head{padding:10rem 2.4rem 4rem;display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:1.5rem;background:var(--white)}
.page-head__title{font-weight:200;font-size:var(--fs-display);letter-spacing:.02em}
.page-head__sub{font-weight:400;font-size:1rem;line-height:1.7;color:var(--stone);max-width:24rem;text-align:right}

/* ── 스테이트먼트 · 리드 섹션 ─────────── */
.statement{font-weight:600;font-size:clamp(1.8rem,4.2vw,3.4rem);line-height:1.3;letter-spacing:-.02em;text-wrap:balance}
.statement .kr{font-weight:400;font-size:.5em;margin-top:.9em;color:var(--stone);line-height:1.7}
.statement--wide{font-size:clamp(1.25rem,2.7vw,2.25rem);max-width:54rem;text-wrap:wrap}
.statement--wide .kr{font-size:.56em}
.section-lead{max-width:56rem;margin:0 auto;padding:8rem 2.4rem;text-align:center}
@media (max-width:767px){.section-lead{padding:5rem 1.4rem}}

/* ── ATLAS 구획 ──────────────────────── */
.atlas-intro{max-width:52rem;margin:0 auto;padding:7rem 2.4rem;text-align:center}
.atlas-intro .detail__serif{margin-top:2rem}
.atlas-map{position:relative;background:var(--charcoal);color:var(--white);overflow:hidden}
.atlas-map svg{width:100%;height:72vh;display:block}
.atlas-map .map__route{stroke:rgba(250,248,243,.4)}
.atlas-map text{font-family:var(--mono);font-size:11px;letter-spacing:.18em;fill:var(--stone)}
.atlas-map .pt{fill:var(--orange)}
.atlas-structure{max-width:52rem;margin:0 auto;padding:8rem 2.4rem}
.atlas-structure h2{font-weight:200;font-size:clamp(1.6rem,3.2vw,2.4rem);letter-spacing:.07em;text-align:center;margin-bottom:4rem}
.atlas-structure dl div{display:grid;grid-template-columns:15rem 1fr;gap:2rem;padding:1.8rem 0;border-top:1px solid rgba(28,27,24,.16);align-items:baseline}
.atlas-structure dl div:last-child{border-bottom:1px solid rgba(28,27,24,.16)}
.atlas-structure dt{font-family:var(--mono);font-size:var(--fs-cap);letter-spacing:.22em}
.atlas-structure dd{font-weight:400;font-size:1.1rem;line-height:1.8}

/* ── 아카이브 밴드 ───────────────────── */
.archive{background:var(--navy);color:var(--white)}
.archive__stmt{font-weight:600;font-size:clamp(1.25rem,2.7vw,2.25rem);line-height:1.35;letter-spacing:-.01em;max-width:54rem}
.archive__stmt .kr{font-weight:400;font-size:.55em;margin-top:1em;color:var(--stone);line-height:1.7}
.archive-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:2.5rem;max-width:60rem;margin:3.5rem auto 0;text-align:left}
.archive-steps div{border-top:1px solid rgba(250,248,243,.25);padding-top:1.4rem}
.archive-steps span{font-family:var(--mono);font-size:var(--fs-cap);color:var(--stone);letter-spacing:.2em}
.archive-steps h3{font-weight:600;font-size:1.05rem;line-height:1.55;margin-top:.9rem;letter-spacing:-.01em}
.archive-steps p{font-weight:400;font-size:.9rem;line-height:1.8;color:rgba(250,248,243,.75);margin-top:.5rem}
@media (max-width:767px){.archive-steps{grid-template-columns:1fr;gap:2rem}}

/* ── 키트 리스트 ─────────────────────── */
.kit-list{list-style:none;margin-top:1rem;text-align:left;max-width:34rem;margin-inline:auto}
.kit-list li{display:flex;justify-content:space-between;gap:2rem;padding:1.3rem 0;border-top:1px solid rgba(28,27,24,.16);font-weight:400;font-size:1.05rem;align-items:baseline;line-height:1.6}
.kit-list li:last-child{border-bottom:1px solid rgba(28,27,24,.16)}
.kit-list li span{font-family:var(--mono);font-size:var(--fs-cap);color:var(--stone);letter-spacing:.2em;white-space:nowrap}

/* ── 정보존 · 상세 공용 (legacy detail) ── */
.detail__hero{position:relative;height:100svh;display:flex;align-items:flex-end;overflow:hidden}
.detail__heroBg{position:absolute;inset:0}
.detail__heroVeil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.1) 0%,transparent 40%,rgba(0,0,0,.4) 100%)}
.detail__heroCopy{position:relative;z-index:2;color:var(--white);padding:0 2.4rem 4rem}
.detail__kicker{font-size:var(--fs-cap);margin-bottom:1.4rem;opacity:.8}
.detail__title{font-weight:200;font-size:var(--fs-giant);line-height:1.05;letter-spacing:.02em;text-wrap:balance}
.detail__title small{display:block;font-weight:400;font-size:clamp(1rem,1.8vw,1.3rem);letter-spacing:.02em;margin-top:1.4rem;opacity:.85}
.detail__data{font-size:var(--fs-cap);margin-top:2rem;line-height:2;opacity:.8}
.detail__block{max-width:52rem;margin:0 auto;padding:8rem 2.4rem;text-align:center}
.detail__label{font-family:var(--mono);font-size:var(--fs-cap);color:var(--stone);letter-spacing:.3em;margin-bottom:2.4rem}
.detail__serif{font-weight:400;font-size:clamp(1.05rem,1.8vw,1.4rem);line-height:1.65;text-wrap:balance}
.detail__kr{font-weight:400;font-size:clamp(1rem,1.5vw,1.2rem);line-height:1.9;color:var(--charcoal-soft);opacity:.85;margin-top:2.2rem;max-width:38rem;margin-inline:auto}
.detail__block--dark .detail__kr{color:var(--stone);opacity:1}
.detail__block--dark{max-width:none;background:var(--charcoal);color:var(--white);padding:0 0 8rem}
.detail__block--dark .detail__label{margin-top:6rem}
.detail__block--dark .detail__serif{max-width:52rem;margin:0 auto;padding:0 2.4rem}
.detail__block--dark .detail__kr{padding:0 2.4rem}
.detail__imgWide{height:70svh}
.detail__tension{display:flex;justify-content:center;align-items:baseline;gap:2.5rem;flex-wrap:wrap;margin-top:1rem}
.detail__tension p{font-weight:200;font-size:clamp(1.4rem,2.8vw,2.2rem);line-height:1.4}
.detail__tension span{font-family:var(--mono);font-size:var(--fs-cap);color:var(--stone);letter-spacing:.2em}
.detail__block--notes{max-width:64rem}
.detail__notes{display:grid;grid-template-columns:repeat(3,1fr);gap:3rem;margin-top:1rem}
.detail__notes>div{border-top:1px solid rgba(28,27,24,.2);padding-top:1.6rem}
.detail__notes span{font-size:var(--fs-cap);color:var(--stone);letter-spacing:.24em}
.detail__notes p{font-weight:400;font-size:1.15rem;margin-top:1rem;line-height:1.5}
.detail__notes .kr{font-size:.85rem;color:var(--stone);margin-top:.5rem;line-height:1.7}
.detail__block--record{max-width:44rem}
.spec{margin-top:1rem;text-align:left}
.spec div{display:grid;grid-template-columns:13rem 1fr;gap:2rem;padding:1.4rem 0;border-top:1px solid rgba(28,27,24,.16);align-items:baseline}
.spec div:last-child{border-bottom:1px solid rgba(28,27,24,.16)}
.spec dt{font-family:var(--mono);font-size:var(--fs-cap);letter-spacing:.22em;color:var(--stone)}
.spec dd{font-weight:400;font-size:1.05rem;line-height:1.7}
.ticket{
  max-width:30rem;margin:1rem auto 0;text-align:left;
  border:1px solid rgba(28,27,24,.3);padding:2.2rem 2.4rem;background:var(--white);
}
.ticket header{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid rgba(28,27,24,.2);padding-bottom:1.2rem;margin-bottom:1.6rem}
.ticket header strong{font-family:var(--mono);font-weight:400;font-size:.75rem;letter-spacing:.3em}
.ticket header span{font-family:var(--mono);font-size:var(--fs-cap);color:var(--stone)}
.ticket div{display:grid;grid-template-columns:9rem 1fr;gap:1rem;padding:.45rem 0;font-family:var(--mono);font-size:var(--fs-cap);letter-spacing:.1em}
.ticket div span:first-child{color:var(--stone)}
.detail__block--object{padding-bottom:11rem}
.detail__objName{font-weight:200;font-size:clamp(1.5rem,2.8vw,2.2rem);letter-spacing:.05em}
.detail__objName .kr{font-size:.9rem;color:var(--stone);margin-top:.7rem}
.detail__objData{font-family:var(--mono);font-size:var(--fs-cap);color:var(--stone);margin:1.4rem 0 3rem}
.purchase{display:flex;justify-content:center;gap:2rem;flex-wrap:wrap}
.purchase a{
  border:1px solid rgba(28,27,24,.3);padding:2rem 2.6rem;min-width:15rem;
  display:flex;flex-direction:column;gap:.7rem;transition:border-color .4s,background .4s;
}
.purchase a:hover{border-color:var(--charcoal);background:var(--white)}
.purchase .mono{color:var(--stone);letter-spacing:.24em}
.purchase strong{font-weight:600;font-size:1.1rem;letter-spacing:.02em}
.purchase em{font-style:normal;font-weight:400;font-size:.85rem;color:var(--stone)}
.purchase__note{font-weight:400;font-size:.9rem;line-height:1.8;color:var(--stone);margin-top:2.4rem}
.detail__bottle{display:flex;justify-content:center;margin-bottom:4.5rem}
.bottle{display:flex;flex-direction:column;align-items:center}
.bottle__cap{width:34px;height:30px;background:linear-gradient(90deg,#2a2823,#4a463e,#2a2823);border-radius:2px}
.bottle__glass{
  width:110px;height:150px;margin-top:4px;border-radius:3px;
  background:linear-gradient(105deg,rgba(58,74,59,.28),rgba(58,74,59,.65) 45%,rgba(58,74,59,.35));
  border:1px solid rgba(28,27,24,.25);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 30px 50px -28px rgba(28,27,24,.5);
}
.bottle--rose .bottle__glass{background:linear-gradient(105deg,rgba(92,46,46,.28),rgba(92,46,46,.62) 45%,rgba(92,46,46,.35))}
.bottle--jasmin .bottle__glass{background:linear-gradient(105deg,rgba(122,101,64,.28),rgba(122,101,64,.62) 45%,rgba(122,101,64,.35))}
.bottle__label{font-size:10px;text-align:center;letter-spacing:.3em;color:var(--charcoal);line-height:2}
.detail__nav{display:flex;border-top:1px solid rgba(28,27,24,.16);background:var(--white)}
.detail__nav a{flex:1;padding:3rem 2.4rem;display:flex;flex-direction:column;gap:.8rem;transition:background .4s}
.detail__nav a:hover{background:var(--ivory)}
.detail__nav a+a{border-left:1px solid rgba(28,27,24,.16);text-align:right;align-items:flex-end}
.detail__nav .mono{color:var(--stone);letter-spacing:.22em}
.detail__nav strong{font-weight:400;font-size:1.2rem;letter-spacing:.03em}

/* ── 향의 세 시간 (movements) ─────────── */
.movements{max-width:62rem;margin:0 auto;padding:8rem 2.4rem}
.movements__head{text-align:center;margin-bottom:1rem}
.movement{
  display:grid;grid-template-columns:15rem 1fr;gap:3.5rem;
  padding:3.6rem 0;border-top:1px solid rgba(28,27,24,.16);align-items:start;text-align:left;
}
.movement:last-of-type{border-bottom:1px solid rgba(28,27,24,.16)}
.movement__label span{font-family:var(--mono);font-size:var(--fs-cap);letter-spacing:.24em;color:var(--stone);display:block}
.movement__label h3{font-weight:600;font-size:1.02rem;line-height:1.55;margin-top:.9rem;letter-spacing:-.01em}
.movement__body p{font-weight:400;font-size:1rem;line-height:1.95;color:var(--charcoal-soft)}
.movement__body p.movement__notes{
  font-weight:600;font-size:clamp(1.15rem,2.2vw,1.6rem);letter-spacing:-.01em;
  line-height:1.5;margin:1.7rem 0;color:var(--charcoal);
}
.movement__body p.movement__close{font-weight:400;font-size:.92rem;line-height:1.85;color:var(--stone)}
@media (max-width:767px){
  .movements{padding:5rem 1.4rem}
  .movement{grid-template-columns:1fr;gap:1.3rem;padding:2.6rem 0}
}

/* ── 어바웃 밴드 ─────────────────────── */
.about{
  background:var(--charcoal);color:var(--white);text-align:center;
  padding:11rem 2rem;display:flex;flex-direction:column;gap:2.6rem;align-items:center;
}
.about__text{font-weight:200;font-size:clamp(1.5rem,3.4vw,2.7rem);line-height:1.5;color:var(--stone);text-wrap:balance}
.about__text .kr{font-size:.6em;margin-top:1.2em;opacity:.85;line-height:1.8}
.about__brand{font-weight:200;font-size:clamp(3rem,7vw,5.5rem);letter-spacing:.3em}
.about__logo{
  display:block;height:clamp(2.8rem,6.5vw,4.8rem);aspect-ratio:1749/410;
  background:currentColor;
  -webkit-mask:url('../img/logo.png') center/contain no-repeat;
  mask:url('../img/logo.png') center/contain no-repeat;
}
.about__tag{font-weight:400;font-size:1.1rem;color:var(--stone)}
.about__line{font-family:var(--mono);font-size:var(--fs-cap);letter-spacing:.3em;color:var(--stone)}

/* ── NONIL — fragrances 오프닝 (횡단보도 영상 위) ──
   높이 200svh + sticky 핀. 스크롤을 뺏지 않으면서 문장이 머무는 구간을 만든다.
   기존 벡터 병 목업은 걷어냈다 — 영상 위에 얹으면 합성처럼 보인다. */
.house{position:relative;height:200svh;background:var(--charcoal)}
.house__pin{position:sticky;top:0;height:100svh;overflow:hidden;padding:0 8vw;
  display:flex;align-items:center;justify-content:center;text-align:center}
.house__bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  transform:scale(calc(1.04 + var(--p,0) * .06));will-change:transform}
.house__veil{position:absolute;inset:0;
  background:
    linear-gradient(180deg,rgba(14,16,14,.66) 0%,rgba(14,16,14,.28) 34%,rgba(14,16,14,.78) 100%),
    radial-gradient(74% 58% at 50% 50%,transparent 0%,rgba(14,16,14,.42) 100%)}
/* 패딩은 핀이 갖는다 — copy에 두면 max-width 안쪽을 깎아 문장이 한 줄에 안 들어간다 */
.house__copy{position:relative;z-index:2;max-width:56rem;color:var(--white)}
.house__kicker{font-family:var(--mono);font-size:var(--fs-cap);letter-spacing:.28em;
  color:rgba(250,248,243,.72)}
.house__line{margin-top:2.2rem;font-weight:300;font-size:var(--fs-title);
  line-height:1.28;letter-spacing:-.02em}
.house__kr{margin-top:1.4rem;font-size:var(--fs-body);color:rgba(250,248,243,.76)}
/* 순차 등장 — .rise는 main.js가 화면에 들어올 때 .on을 붙인다 */
.house__line.rise{transition-delay:.14s}
.house__kr.rise{transition-delay:.28s}
/* 좁은 화면에선 강제 줄바꿈을 풀어 자연스럽게 흐르게 둔다 */
@media (max-width:767px){
  .br-lg{display:none}
  .house{height:170svh}
  .house__pin{padding:0 6vw}
  .house__kicker{letter-spacing:.2em}
}
html.rm .house{height:auto}
html.rm .house__pin{position:static;height:auto;padding:16svh 0}
html.rm .house__bg{transform:none}

/* ── 저널 그리드 ─────────────────────── */
.journal{background:var(--ivory);padding:7rem 2.4rem 10rem}
.journal--sub{padding-top:3rem}
.journal__head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:1rem;margin-bottom:4.5rem}
.journal__title{font-weight:200;font-size:var(--fs-display);letter-spacing:.02em}
.journal__sub{font-weight:400;font-size:1.05rem;color:var(--stone)}
.journal__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2.4rem 2rem;align-items:start}
.j-card{cursor:pointer}
.j-card__img{height:300px;transition:opacity .6s}
.j-card--tall .j-card__img{height:420px}
.j-card:hover .j-card__img{opacity:.88}
.j-card__cat{font-family:var(--mono);font-size:var(--fs-cap);color:var(--stone);margin:1.4rem 0 .7rem;letter-spacing:.26em}
.j-card__title{font-weight:400;font-size:1.3rem;line-height:1.45}
.j-card__title .kr{font-size:.85rem;color:var(--stone);margin-top:.5rem}

/* ── 푸터 ────────────────────────────── */
.footer{background:var(--charcoal);color:var(--white);padding:0 2.4rem 3rem;border-top:1px solid rgba(250,248,243,.12)}

/* ── 라벨 묶음 ──
   레퍼런스 실측(1440px): 왼쪽은 카피라이트·크레딧이 차지하고,
   오른쪽에 여섯 묶음이 flex·gap 35px로 나열된다. 균등 그리드가 아니다. */
.footer__top{
  display:flex;gap:35px;padding:4rem 0 3.5rem;align-items:flex-start;
  border-bottom:1px solid rgba(250,248,243,.12);
}
.footer__meta{
  flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1.1rem;
  font-size:var(--fs-cap);letter-spacing:.1em;color:var(--stone);
}
.footer__meta b{font-weight:400;color:var(--white);opacity:.85}
.footer__grid{display:flex;gap:35px;flex:0 1 auto;align-items:flex-start}
.footer__col{display:flex;flex-direction:column;align-items:flex-start;min-width:0}
.footer__k{
  font-family:var(--mono);font-size:var(--fs-cap);letter-spacing:.16em;
  color:var(--stone);margin-bottom:.9rem;
}
.footer__col a,.footer__col span.f-item{
  font-size:.8rem;opacity:.75;transition:opacity .4s;
  min-height:34px;display:inline-flex;align-items:center;
}
.footer__col a:hover{opacity:1}


.footer__nav{display:flex;gap:2.6rem;padding:3rem 0;flex-wrap:wrap}
.footer__nav a{font-size:.8rem;font-weight:400;opacity:.75;transition:opacity .4s;min-height:44px;display:inline-flex;align-items:center}
.footer__nav a:hover{opacity:1}
.footer__news{max-width:26rem;padding-bottom:3.5rem}
.footer__news label{font-family:var(--mono);font-size:var(--fs-cap);color:var(--stone)}
.footer__field{display:flex;border-bottom:1px solid rgba(250,248,243,.3);margin-top:1rem}
.footer__field input{flex:1;background:none;border:none;color:var(--white);font-family:var(--mono);font-size:.75rem;padding:.7rem 0;outline:none;min-height:44px}
.footer__field input::placeholder{color:rgba(250,248,243,.35)}
.footer__field button{font-family:var(--mono);font-size:var(--fs-cap);letter-spacing:.2em;color:var(--stone);transition:color .4s;min-height:44px}
.footer__field button:hover{color:var(--white)}
.footer__base{display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;font-size:var(--fs-cap);letter-spacing:.1em;color:var(--stone);padding-top:2.5rem}

/* 푸터 안의 뉴스레터 — 묶음 하나로 들어간다 */
.footer__col .footer__field{margin-top:.2rem;width:100%;min-width:13rem;max-width:15rem}
@media (max-width:991px){
  .footer__top{flex-direction:column;gap:2.5rem}
  .footer__grid{flex-wrap:wrap;gap:2.2rem 2.6rem}
  .footer__col{flex:0 0 calc(33.333% - 1.8rem)}
}
@media (max-width:767px){
  .footer__top{padding:3rem 0 2.5rem}
  .footer__col{flex:0 0 calc(50% - 1.3rem)}
}

/* ═══ 라인업 — 상세에서 형태를 고른다 ═══ */
.lineup{padding:7rem 6vw;background:var(--ivory)}
.lineup__h{font-weight:200;font-size:var(--fs-title);letter-spacing:-.03em;margin-bottom:2.5rem}
.lineup__h .kr{margin-top:.7rem;font-size:var(--fs-body);color:var(--stone)}
/* ── 라인업 카드 — 티켓 조판(끊어내는 절취선 + 스텁) ── */
.lineup__list{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:1.25em;max-width:1500px}
.lu{
  position:relative;display:flex;flex-direction:column;
  background:var(--white);border:1px solid rgba(28,27,24,.18);
}
.lu__img{display:block;aspect-ratio:1;overflow:hidden;background:var(--ivory)}
.lu__img img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--ease)}
.lu:hover .lu__img img{transform:scale(1.04)}
/* 절취선 — 티켓처럼 위아래를 끊는다 */
.lu__stub{
  display:block;height:0;border-top:1px dashed rgba(28,27,24,.3);position:relative;
}
.lu__stub::before,.lu__stub::after{
  content:"";position:absolute;top:-7px;width:14px;height:14px;border-radius:50%;
  background:var(--ivory);border:1px solid rgba(28,27,24,.18);
}
.lu__stub::before{left:-8px;clip-path:inset(0 0 0 50%)}
.lu__stub::after{right:-8px;clip-path:inset(0 50% 0 0)}
.lu__b{padding:1.1rem 1rem 1.1rem;display:flex;flex-direction:column;gap:.35rem;flex:1}
.lu__n{font-size:var(--fs-body);font-weight:600;letter-spacing:-.01em}
.lu__n span{display:block;font-weight:400;font-size:var(--fs-cap);color:var(--stone);margin-top:.15rem}
.lu__s{font-size:var(--fs-cap);color:var(--stone);letter-spacing:.06em}
.lu__p{font-size:var(--fs-body);font-variant-numeric:tabular-nums;margin-top:.2rem}
.lu__add{
  margin-top:auto;border:1px solid var(--charcoal);padding:.75rem .8rem;
  font-size:var(--fs-cap);letter-spacing:.14em;min-height:44px;
  transition:background .3s var(--ease),color .3s var(--ease);
}
.lu__add:hover{background:var(--charcoal);color:var(--white)}
.lu__add.is-done{background:var(--moss);border-color:var(--moss);color:var(--white)}
@media (max-width:991px){.lineup__list{grid-template-columns:repeat(2,1fr)}}
@media (max-width:767px){.lineup__list{grid-template-columns:repeat(2,1fr);gap:.625em}}

.lineup__list--rows{list-style:none;max-width:52em;border-top:1px solid rgba(28,27,24,.16)}
.lineup__item{
  display:grid;grid-template-columns:1fr auto auto;gap:1.5rem;align-items:center;
  padding:1.2rem 0;border-bottom:1px solid rgba(28,27,24,.16);
}
.lineup__t b{display:block;font-size:var(--fs-body);font-weight:600;letter-spacing:-.01em}
.lineup__t span{font-size:var(--fs-cap);color:var(--stone)}
.lineup__p{font-size:var(--fs-body);font-variant-numeric:tabular-nums}
.lineup__add{
  border:1px solid var(--charcoal);padding:.7rem 1.1rem;
  font-size:var(--fs-cap);letter-spacing:.14em;min-height:44px;white-space:nowrap;
  transition:background .3s var(--ease),color .3s var(--ease);
}
.lineup__add:hover{background:var(--charcoal);color:var(--white)}
.lineup__add.is-done{background:var(--moss);border-color:var(--moss);color:var(--white)}
.lineup__note{margin-top:2rem;font-size:var(--fs-cap);color:var(--stone)}
@media (max-width:767px){
  .lineup{padding:5rem 1.4rem}
  .lineup__item{grid-template-columns:1fr auto;gap:.6rem 1rem}
  .lineup__add{grid-column:1/-1;justify-self:start}
}

/* 향 카드의 라인 표기 */
.p-card__no{display:block;font-size:var(--fs-cap);color:var(--stone);letter-spacing:.14em;margin-bottom:.4rem}
.p-card__add{text-align:center;display:inline-flex;align-items:center;justify-content:center}

/* ═══ 어바웃 — 홈에서 옮겨온 설명 ═══ */
.ab-emo{padding:7rem 6vw;background:var(--ivory)}
.ab-emo__h{font-weight:200;font-size:var(--fs-title);letter-spacing:-.03em;margin-bottom:3rem}
.ab-emo__list{list-style:none;display:grid;gap:0;max-width:52em;border-top:1px solid rgba(28,27,24,.16)}
.ab-emo__list li{
  display:grid;grid-template-columns:3.5rem 1fr auto;gap:1.2rem;align-items:baseline;
  padding:1.3rem 0;border-bottom:1px solid rgba(28,27,24,.16);
}
.ab-emo__list .n{font-size:var(--fs-cap);color:var(--stone);letter-spacing:.14em}
.ab-emo__list b{font-size:var(--fs-body);font-weight:600;letter-spacing:-.01em}
.ab-emo__list em{font-style:normal;font-size:var(--fs-cap);color:var(--stone)}
.ab-emo__note{margin-top:2.5rem;max-width:34em;font-size:var(--fs-body);line-height:1.9;opacity:.78}

.ab-rec{padding:7rem 6vw;background:var(--charcoal);color:var(--white)}
.ab-rec__list{list-style:none;display:flex;flex-direction:column;gap:2.2rem;max-width:34em}
.ab-rec__list li{font-size:var(--fs-lead);line-height:1.5;letter-spacing:-.02em;text-wrap:balance}
@media (max-width:767px){
  .ab-emo,.ab-rec{padding:5rem 1.4rem}
  .ab-emo__list li{grid-template-columns:2.6rem 1fr;gap:.3rem 1rem}
  .ab-emo__list em{grid-column:2}
}

/* ═══ 라벨 · 향 아카이브 ═══ */
.arc{padding:0 6vw 6rem;max-width:1500px;margin:0 auto}
.arc__list{list-style:none;border-top:1px solid rgba(28,27,24,.16)}
.arc__row{
  display:grid;grid-template-columns:4.5rem 1fr 9rem 8rem 7rem;
  gap:1.5rem;align-items:baseline;padding:1.6rem 0;
  border-bottom:1px solid rgba(28,27,24,.16);
  transition:background .3s var(--ease),padding .3s var(--ease);
}
.arc__row:hover{background:rgba(28,27,24,.035);padding-left:.8rem;padding-right:.8rem}
.arc__no{font-size:var(--fs-cap);color:var(--stone);letter-spacing:.14em}
.arc__t{font-size:var(--fs-body);font-weight:600;letter-spacing:-.01em}
.arc__t small{display:block;font-weight:400;font-size:var(--fs-cap);color:var(--stone);margin-top:.3rem;letter-spacing:0}
.arc__meta{font-size:var(--fs-cap);color:var(--charcoal);opacity:.7}
.arc__date{font-family:var(--mono);font-size:var(--fs-cap);color:var(--stone);letter-spacing:.06em}
.arc__acts{display:flex;gap:1rem;justify-self:end}
.arc__acts a,.arc__acts button{
  font-size:var(--fs-cap);letter-spacing:.1em;color:var(--stone);
  border-bottom:1px solid transparent;min-height:34px;display:inline-flex;align-items:center;
}
.arc__acts a:hover,.arc__acts button:hover{color:var(--charcoal);border-bottom-color:currentColor}
.arc__row--soon{opacity:.55}
.arc__row--soon .arc__t{font-weight:400}

/* 노트 펼침 — 원본의 '재생'에 해당하는 자리 */
.arc__notes{
  grid-column:1/-1;display:none;padding:1.4rem 0 .4rem;
  border-top:1px dashed rgba(28,27,24,.2);margin-top:1.2rem;
}
.arc__row.is-open .arc__notes{display:grid;gap:.7rem}
.arc__notes div{display:grid;grid-template-columns:8rem 1fr;gap:1.2rem;align-items:baseline}
.arc__notes dt,.arc__notes .k{font-family:var(--mono);font-size:var(--fs-cap);color:var(--stone);letter-spacing:.08em}
.arc__notes .v{font-size:var(--fs-cap);line-height:1.7}
.arc__notes .v em{font-style:normal;color:var(--stone)}

/* ═══ 조향 — 사진이 없으므로 조판으로 푼다 ═══ */
.perf{background:var(--ivory);padding:7rem 6vw}
.perf__h{font-weight:200;font-size:var(--fs-title);letter-spacing:-.03em;margin-bottom:.9rem}
.perf__sub{font-size:var(--fs-cap);color:var(--stone);max-width:36em;line-height:1.8;margin-bottom:3rem}
/* 실측: 슬라이드 항목 폭 33.3%(변형 25% / 20%) · 묶음 간격 2.5rem.
   우리는 슬라이더 대신 고정 배치로 두되 비율은 그대로 쓴다 — 4열 = 25%. */
.perf__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.25em;max-width:1500px}
.perf__card{
  border:1px solid rgba(28,27,24,.18);padding:1.6rem 1.4rem;
  display:flex;flex-direction:column;gap:.5rem;min-height:11rem;
}
.perf__card .n{font-family:var(--mono);font-size:var(--fs-cap);color:var(--stone);letter-spacing:.14em}
.perf__card b{font-size:var(--fs-body);font-weight:600;letter-spacing:-.01em}
.perf__card p{font-size:var(--fs-cap);line-height:1.75;color:var(--charcoal);opacity:.72;margin-top:auto}
.perf__card--tbd{border-style:dashed;opacity:.62}
@media (max-width:991px){.perf__grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:991px){
  .arc__row{grid-template-columns:3.5rem 1fr;gap:.5rem 1.2rem}
  .arc__meta,.arc__date{grid-column:2}
  .arc__acts{grid-column:2;justify-self:start;margin-top:.6rem}
}
@media (max-width:767px){
  .arc{padding-left:1.4rem;padding-right:1.4rem}
  .perf{padding:5rem 1.4rem}
  .perf__grid{grid-template-columns:1fr}
  .arc__notes div{grid-template-columns:1fr;gap:.2rem}
}

/* ── 반응형 공통 ─────────────────────── */
@media (max-width:991px){
  /* 상태 칸을 고정폭에서 빼고 이름 아래로 내려 — 좁은 화면에서 밀려 넘치지 않게 */
  .passage__row{grid-template-columns:3.4rem 1fr;gap:.4rem 1.2rem}
  .passage__country{display:none}
  .passage__status{grid-column:2;justify-self:start;margin-top:.9rem}
  .passage__name{grid-column:2}
  .passage__no{grid-row:1}
  .journal__grid{grid-template-columns:1fr 1fr}
  .detail__notes{grid-template-columns:1fr}
  .atlas-structure dl div,.spec div{grid-template-columns:1fr;gap:.6rem}
  .page-head__sub{text-align:left;max-width:none}
}
@media (max-width:767px){
  /* 모바일 내비는 한 줄로 — 2단으로 쌓으면 96px를 먹어 본문 첫 줄을 계속 가린다 */
  /* 링크 히트영역이 44px이므로 패딩은 줄여 바 높이를 ~58px로 유지 */
  .nav{padding:.4rem 1.2rem;flex-direction:row;gap:.8rem;align-items:center;justify-content:space-between}
  .nav__brand{min-height:44px;display:flex;align-items:center}
  .nav__logo{height:1.05rem}
  .nav__links{gap:.95rem;flex-wrap:nowrap}
  /* 손가락으로 누를 수 있는 최소 크기 확보 — 글자만 작게, 히트 영역은 44px */
  .nav__links a{font-size:11px;letter-spacing:.09em;white-space:nowrap;
    min-height:44px;display:inline-flex;align-items:center}
  /* 좁은 화면에선 지나가는 본문이 로고·링크와 엉킨다.
     그라디언트만으로는 부족해서 프로스트 글래스로 덮는다 —
     글자가 '뒤로 지나간다'가 분명해지고, 어떤 배경에서도 링크가 읽힌다. */
  .nav::before{
    height:calc(100% + .9rem);
    -webkit-backdrop-filter:blur(14px) saturate(1.1);
    backdrop-filter:blur(14px) saturate(1.1);
    background:linear-gradient(180deg,rgba(14,16,14,.72) 0%,rgba(14,16,14,.46) 62%,rgba(14,16,14,0) 100%);
    -webkit-mask:linear-gradient(180deg,#000 0%,#000 62%,transparent 100%);
    mask:linear-gradient(180deg,#000 0%,#000 62%,transparent 100%);
  }
  .nav--dark::before{
    background:linear-gradient(180deg,rgba(242,239,231,.86) 0%,rgba(242,239,231,.56) 62%,rgba(242,239,231,0) 100%)}
  .board__head,.journal,.page-head{padding-left:1.4rem;padding-right:1.4rem}
  .page-head{padding-top:9rem}
  .passage__row{padding:2.4rem 1.4rem}
  .passage__meta{flex-direction:column;gap:.6rem;padding:0 1.4rem}
  .passage__caption{text-align:left}
  .journal__grid{grid-template-columns:1fr}
  .j-card--tall .j-card__img,.j-card__img{height:260px}
  .detail__block{padding:6rem 1.4rem}
  .detail__block--dark .detail__serif,.detail__block--dark .detail__kr{padding:0 1.4rem}
  .detail__heroCopy{padding:0 1.4rem 3rem}
  .detail__imgWide{height:50svh}
  .purchase a{min-width:100%}
  .detail__nav{flex-direction:column}
  .detail__nav a+a{border-left:none;border-top:1px solid rgba(28,27,24,.16);text-align:left;align-items:flex-start}
  .ticket{padding:1.8rem 1.4rem}
  .ticket div{grid-template-columns:7rem 1fr}
  .footer{padding:0 1.4rem 3rem}
}

/* ═══ 장바구니 ═══
   페이지를 떠나지 않고 우측에서 밀려 들어온다. 좁은 화면에서는 전체 시트.
   저장은 브라우저에만 — 결제는 버튼까지고 PG는 나중에 붙는다. */
.nav__cart{
  font-size:var(--fs-cap);letter-spacing:.16em;
  min-height:44px;display:inline-flex;align-items:center;gap:.4rem;
}
.nav__cart .num{font-variant-numeric:tabular-nums}

.cart-scrim{
  position:fixed;inset:0;background:rgba(28,27,24,.42);opacity:0;visibility:hidden;
  transition:opacity .35s var(--ease),visibility .35s;z-index:80;
}
.cart-scrim.is-on{opacity:1;visibility:visible}

.cart{
  position:fixed;top:0;right:0;bottom:0;width:min(420px,100vw);z-index:90;
  background:var(--white);border-left:1px solid rgba(28,27,24,.14);
  transform:translateX(101%);transition:transform .45s var(--ease);
  display:flex;flex-direction:column;visibility:hidden;
}
.cart.is-on{transform:none;visibility:visible}
.cart__top{
  display:flex;align-items:center;justify-content:space-between;
  padding:1.6rem 1.6rem 1.2rem;border-bottom:1px solid rgba(28,27,24,.14);
}
.cart__top h2{font-size:var(--fs-cap);letter-spacing:.22em;font-weight:400}
.cart__close{font-size:var(--fs-cap);letter-spacing:.16em;color:var(--stone);min-height:44px;padding:0 .2rem}
.cart__close:hover{color:var(--charcoal)}

.cart__body{flex:1;overflow-y:auto;padding:1.2rem 1.6rem;-webkit-overflow-scrolling:touch}
.cart__empty{color:var(--stone);font-size:var(--fs-cap);letter-spacing:.04em;padding:2.5rem 0;text-align:center}
.cart__list{display:grid;gap:1.4rem}
.cart__item{
  display:grid;grid-template-columns:72px 1fr auto;gap:.9rem;
  padding-bottom:1.4rem;border-bottom:1px solid rgba(28,27,24,.1);align-items:start;
}
.cart__item img{width:72px;height:72px;object-fit:cover;background:var(--ivory)}
.cart__item-t{display:flex;flex-direction:column;gap:.2rem;font-size:var(--fs-cap)}
.cart__item-t b{font-size:var(--fs-body);font-weight:600;letter-spacing:-.01em}
.cart__item-t span{color:var(--stone);letter-spacing:.04em}
.cart__item-t .num{color:var(--charcoal);font-variant-numeric:tabular-nums}
.cart__qty{display:flex;align-items:center;gap:.2rem;grid-column:2;margin-top:.4rem}
.cart__qty button{
  width:32px;height:32px;border:1px solid rgba(28,27,24,.24);
  display:grid;place-items:center;font-size:var(--fs-cap);
}
.cart__qty button:hover{border-color:var(--charcoal)}
.cart__qty span{min-width:2.2rem;text-align:center;font-size:var(--fs-cap)}
.cart__del{
  grid-column:3;grid-row:1;font-size:var(--fs-cap);color:var(--stone);
  letter-spacing:.1em;min-height:44px;
}
.cart__del:hover{color:var(--burgundy)}

.cart__foot{padding:1.4rem 1.6rem 1.8rem;border-top:1px solid rgba(28,27,24,.14)}
.cart__sum{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:.5rem}
.cart__sum-k{font-size:var(--fs-cap);letter-spacing:.2em;color:var(--stone)}
.cart__sum-v{font-size:var(--fs-body);font-variant-numeric:tabular-nums;letter-spacing:.02em}
.cart__vat{font-size:var(--fs-cap);color:var(--stone);letter-spacing:.04em}
.cart__pay{
  width:100%;margin-top:1.2rem;background:var(--charcoal);color:var(--white);
  padding:1rem;font-size:var(--fs-cap);letter-spacing:.2em;min-height:52px;
  transition:opacity .3s;
}
.cart__pay:hover{opacity:.86}
.cart__pay:disabled{opacity:.3;cursor:default}
.cart__notice{
  margin-top:1rem;padding:.9rem 1rem;background:var(--ivory);
  border-left:2px solid var(--orange);font-size:var(--fs-cap);
  line-height:1.6;letter-spacing:.02em;
}
.cart__notice:focus{outline:none}

@media (max-width:479px){
  .cart{width:100vw;border-left:none}
  .cart__item{grid-template-columns:56px 1fr auto}
  .cart__item img{width:56px;height:56px}
}
/* 서랍이 열린 동안 뒤 페이지가 따라 스크롤되지 않게 */
html.cart-open,html.cart-open body{overflow:hidden}

/* ═══ 페이지 머리 ═══ */
.page-head__lead{
  margin-top:1.6rem;max-width:38em;font-size:var(--fs-body);
  line-height:1.85;color:var(--charcoal);opacity:.78;
}

/* ═══ 필터 (SHOP) ═══ */
.filter{
  padding:0 6vw 2.5rem;display:grid;gap:1.1rem;max-width:1500px;margin:0 auto;
  border-bottom:1px solid rgba(28,27,24,.14);
}
.filter__row{display:flex;gap:1.5rem;align-items:baseline;flex-wrap:wrap}
.filter__k{font-size:var(--fs-cap);letter-spacing:.2em;color:var(--stone);min-width:3.5rem}
.filter__set{display:flex;gap:1.3rem;flex-wrap:wrap}
.filter__set button{
  font-size:var(--fs-cap);letter-spacing:.12em;color:var(--stone);
  padding:.35rem 0;border-bottom:1px solid transparent;min-height:44px;
}
.filter__set button[aria-pressed="true"]{color:var(--charcoal);border-bottom-color:currentColor}
.filter__reset{
  justify-self:start;font-size:var(--fs-cap);letter-spacing:.12em;
  color:var(--burgundy);min-height:44px;
}
.shop-page{padding:3rem 6vw 8rem;max-width:1500px;margin:0 auto}
.shop-page__count{color:var(--stone);margin-bottom:2rem;letter-spacing:.14em}
.shop-page__none{color:var(--stone);padding:4rem 0;text-align:center}
.shop-grid--page{margin:0}

/* ═══ 키트 구성 ═══ */
.kit{background:var(--ivory);padding:8rem 6vw}
.kit__h{font-weight:200;font-size:var(--fs-title);letter-spacing:-.03em;margin-bottom:3rem}
.kit__h .kr{margin-top:.7rem;font-size:var(--fs-body);color:var(--stone)}
.kit__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2.5rem;max-width:1500px}
.kit__n{display:block;font-size:var(--fs-cap);color:var(--stone);letter-spacing:.16em;margin-bottom:.9rem}
.kit__item b{display:block;font-size:var(--fs-body);font-weight:600;margin-bottom:.5rem}
.kit__item p{font-size:var(--fs-cap);line-height:1.8;color:var(--charcoal);opacity:.74}
.kit__note{margin-top:3rem;font-size:var(--fs-cap);color:var(--stone);letter-spacing:.04em}

/* ═══ 정보 존 — 은유를 쓰지 않는 구역 ═══ */
.info-zone{
  background:var(--white);padding:6rem 6vw;display:grid;
  grid-template-columns:repeat(3,1fr);gap:2.5rem;
  border-top:1px solid rgba(28,27,24,.14);
}
.info-zone h3{font-size:var(--fs-body);font-weight:600;margin-bottom:.7rem;letter-spacing:-.01em}
.info-zone p{font-size:var(--fs-cap);line-height:1.85;color:var(--charcoal);opacity:.74;max-width:32em}

/* ═══ CROSSING — /events 레이아웃 · 카드 아트워크는 보딩패스 ═══ */
.section-ev{padding:8rem 6vw 8rem;max-width:1500px;margin:0 auto}
.ev-names{list-style:none;border-top:1px solid rgba(28,27,24,.16);margin-bottom:1.25em}
.ev-names li{display:flex;gap:1.5rem;align-items:baseline;padding:1rem 0;
  border-bottom:1px solid rgba(28,27,24,.16);transition:opacity .3s var(--ease)}
.ev-names .n{color:var(--stone);letter-spacing:.14em;flex:none}
.ev-names .c{color:var(--orange);flex:none}
.ev-names .t{font-size:var(--fs-body)}
.ev-meta{display:flex;justify-content:space-between;gap:1.5rem;padding:.9rem 0 1.6rem;
  font-size:var(--fs-cap);letter-spacing:.16em;color:var(--stone)}
.ev-list{list-style:none}
.ev-item{grid-column:span 6}
.ev-card{display:flex;flex-direction:column;gap:.625em;width:100%}
.ev-card__thumb{position:relative;display:block;width:calc(100% - 1em);background:var(--ivory);
  border:1px solid rgba(28,27,24,.14);overflow:hidden}
.ev-card__thumb img{display:block;width:100%;height:auto;transition:transform .6s var(--ease)}
.ev-card:hover .ev-card__thumb img{transform:scale(1.03)}
/* 스크롤로 화면에 들어오면 올라온다 */
.ev-item{opacity:0;transform:translateY(24px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.ev-item.is-in{opacity:1;transform:none}
.ev-card__count{display:none}   /* 번호는 티켓 안(FLIGHT)에 이미 있다 */
.ev-card__bottom{display:flex;justify-content:space-between;gap:1rem;align-items:baseline;width:100%}
.ev-card__title{display:flex;flex-direction:column;gap:.375em;min-width:0}
.ev-card__title b{font-size:var(--fs-body);font-weight:600;letter-spacing:-.01em}
.ev-card__title em{font-style:normal;font-size:var(--fs-cap);color:var(--stone)}
.ev-card__date{color:var(--stone);letter-spacing:.1em;flex:none}
.ev-card__cta{font-size:var(--fs-cap);letter-spacing:.14em;color:var(--orange);
  border:1px solid currentColor;padding:.3rem .7rem;align-self:flex-start}

/* 보딩패스 아트워크 */
.tkt{display:block;width:100%;height:auto}
.tkt__paper{fill:var(--white);stroke:rgba(28,27,24,.16)}
.tkt__bar{fill:var(--charcoal)}
.tkt__brand{fill:var(--ivory);font-family:var(--mono);font-size:11px;letter-spacing:.16em}
.tkt__plane{fill:var(--ivory)}
.tkt__perf{stroke:rgba(28,27,24,.3);stroke-width:1;stroke-dasharray:4 5}
.tkt__k{fill:var(--stone);font-family:var(--mono);font-size:9px;letter-spacing:.16em}
.tkt__v{fill:var(--charcoal);font-family:var(--mono);font-size:15px;letter-spacing:.04em}
.tkt__code rect{fill:var(--charcoal)}

@media (max-width:991px){ .ev-item{grid-column:span 6} }
@media (max-width:767px){
  .section-ev{padding:6rem 1.4rem 5rem}
  .ev-meta{display:none}
  .ev-item{grid-column:span 5}
  .ev-card__thumb{width:100%}
  .ev-card__title{flex-direction:row;align-items:baseline;gap:.6rem;flex-wrap:wrap}
}

/* ═══ PASSAGES — /label 레이아웃 · 가운데 아트워크는 향수 병 ═══ */
.section-lb{padding:8rem 0}
.lb-slider{position:relative}
.lb-list{
  list-style:none;display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;
  padding:0 6vw;scrollbar-width:none;
}
.lb-list::-webkit-scrollbar{display:none}
.lb-item{flex:0 0 calc(33.333% - 14px);scroll-snap-align:center}
.lb-item > a,.lb-item > span{display:flex;flex-direction:column;gap:1.6rem;align-items:center;text-align:center}
.lb-item__art{display:block;width:100%;background:none;padding:0;
  transition:transform .5s var(--ease)}
.lb-item__art img{display:block;width:100%;height:auto;max-height:52svh;object-fit:contain;
  filter:drop-shadow(0 20px 40px rgba(28,27,24,.24));transition:transform .5s var(--ease)}
/* 스크롤로 가운데에 온 항목이 선택된다 */
.lb-item{opacity:.42;transition:opacity .45s var(--ease)}
.lb-item.is-on{opacity:1}
.lb-item.is-on .lb-item__art img{transform:translateY(-8px) scale(1.03)}
.lb-item.is-soon .lb-item__art img{filter:grayscale(.85)}
.lb-item__kr{font-style:normal;font-size:var(--fs-cap);color:var(--stone)}
.btl{display:block;width:100%;height:auto;max-height:46svh}
.btl__shadow{fill:rgba(28,27,24,.09)}
.btl__no{fill:rgba(28,27,24,.5);font-family:var(--mono);font-size:15px;letter-spacing:.2em}
.lb-item__meta{display:flex;flex-direction:column;gap:.5rem}
.lb-item__t{font-size:var(--fs-body);font-weight:600;letter-spacing:-.01em}
.lb-item__t em{display:block;font-style:normal;font-weight:400;font-size:var(--fs-cap);color:var(--stone);margin-top:.35rem}
.lb-item__by{font-size:var(--fs-cap);letter-spacing:.16em;color:var(--stone)}
.lb-item .is-soon{opacity:.5}
.lb-nav{display:flex;gap:1.25em;justify-content:flex-end;padding:2.5rem 6vw 0}
.lb-nav button{font-size:var(--fs-cap);letter-spacing:.16em;color:var(--stone);min-height:44px}
.lb-nav button:hover{color:var(--charcoal)}
@media (max-width:991px){ .lb-item{flex:0 0 calc(50% - 10px)} }
@media (max-width:767px){
  .lb-list{padding:0 1.4rem}
  .lb-item{flex:0 0 82%}
  .lb-nav{padding:2rem 1.4rem 0}
}

/* ═══ CROSSING (구) ═══ */
.xindex{padding:0 6vw 3rem;max-width:1500px;margin:0 auto}
.xindex__list{list-style:none;border-top:1px solid rgba(28,27,24,.14)}
.xindex__list li{
  display:flex;gap:1.5rem;align-items:baseline;padding:1rem 0;
  border-bottom:1px solid rgba(28,27,24,.14);transition:opacity .3s var(--ease);
}
.xindex__list .n{color:var(--stone);letter-spacing:.14em;flex:none}
.xindex__list .c{color:var(--orange);flex:none}
.xindex__list .t{font-size:var(--fs-body)}
[data-x].is-dim{opacity:.32}

.xboard{
  display:grid;grid-template-columns:minmax(0,1fr) 9rem;gap:3rem;
  padding:2rem 6vw 8rem;max-width:1500px;margin:0 auto;
}
.xboard__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:2.5rem}
.xcard{transition:opacity .3s var(--ease)}
.xcard__img{
  aspect-ratio:4/3;background:var(--charcoal);position:relative;
  display:grid;place-items:center;overflow:hidden;
}
.xcard__img--empty{background:var(--ivory);border:1px dashed rgba(28,27,24,.24)}
.xcard__redact{
  width:52%;height:14%;background:repeating-linear-gradient(
    90deg,var(--stone) 0 12px,transparent 12px 18px);opacity:.5;
}
.xcard__hud{
  position:absolute;left:1.2rem;bottom:1.2rem;color:var(--orange);
  line-height:1.7;font-size:var(--fs-cap);letter-spacing:.06em;
}
.xcard__b{padding-top:1.2rem}
.xcard__no{display:block;font-size:var(--fs-cap);color:var(--stone);letter-spacing:.16em;margin-bottom:.6rem}
.xcard__b h2{font-size:var(--fs-body);font-weight:600;letter-spacing:-.01em;margin-bottom:.5rem}
.redact{
  display:inline-block;vertical-align:-.1em;width:6.5em;height:1em;
  background:repeating-linear-gradient(90deg,var(--charcoal) 0 8px,transparent 8px 12px);
}
.xcard__kr{font-size:var(--fs-cap);line-height:1.8;color:var(--charcoal);opacity:.74;margin-bottom:.8rem}
.xcard__date{color:var(--stone);letter-spacing:.1em;margin-bottom:.6rem}
.xcard__state{
  display:inline-block;font-size:var(--fs-cap);letter-spacing:.14em;
  color:var(--orange);border:1px solid currentColor;padding:.3rem .7rem;
}
.xcard.is-empty .xcard__state{color:var(--stone)}
.xdates{display:grid;gap:.9rem;align-content:start;padding-top:.4rem}
.xdates__k{font-size:var(--fs-cap);letter-spacing:.2em;color:var(--stone)}
.xdates span.mono{color:var(--charcoal);opacity:.8}

.drop{background:var(--ivory);padding:8rem 6vw}
.drop__h{font-weight:200;font-size:var(--fs-title);letter-spacing:-.03em;margin-bottom:3rem}
.drop__steps{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:2.5rem;max-width:1500px}
.drop__steps .num{display:block;font-size:var(--fs-cap);color:var(--orange);letter-spacing:.16em;margin-bottom:.9rem}
.drop__steps b{display:block;font-size:var(--fs-body);font-weight:600;margin-bottom:.5rem}
.drop__steps p{font-size:var(--fs-cap);line-height:1.8;color:var(--charcoal);opacity:.74}
.drop__note{margin-top:3rem;font-size:var(--fs-cap);color:var(--stone);max-width:36em;line-height:1.8}

.xnotify{padding:6rem 6vw;background:var(--white);border-top:1px solid rgba(28,27,24,.14)}
.xnotify h2{font-size:var(--fs-body);font-weight:600;margin-bottom:1.2rem}
.xnotify__f{display:flex;gap:0;max-width:26rem;border-bottom:1px solid var(--charcoal)}
.xnotify__f input{
  flex:1;border:none;background:none;font:inherit;font-size:var(--fs-cap);
  padding:.8rem 0;color:var(--charcoal);min-height:44px;
}
.xnotify__f input:focus{outline:none}
.xnotify__f button{font-size:var(--fs-cap);letter-spacing:.16em;padding:0 .4rem;min-height:44px}
.xnotify__note{margin-top:.9rem;font-size:var(--fs-cap);color:var(--moss);min-height:1.4em}

/* ═══ ABOUT ═══ */
.ab-hero{padding:16svh 6vw 12svh}
.ab-hero .label{display:block;margin-bottom:2.5rem}
.ab-hero__h{
  font-weight:200;font-size:var(--fs-display);letter-spacing:-.04em;
  line-height:1.08;max-width:16em;
}
.ab-hero__p{
  margin-top:2.5rem;max-width:32em;font-size:var(--fs-lead);
  line-height:1.85;letter-spacing:-.01em;
}
.ab-hero__etym{margin-top:2.5rem;font-size:var(--fs-cap);color:var(--stone);letter-spacing:.04em}
.ab-hero__etym b{font-weight:600;color:var(--charcoal)}

.ab-three{padding:0 6vw}
.ab-step{
  max-width:44em;padding:7rem 0;border-bottom:1px solid rgba(28,27,24,.14);
}
.ab-step__c{display:block;color:var(--stone);letter-spacing:.14em;margin-bottom:1.2rem}
.ab-step h2{font-weight:200;font-size:var(--fs-title);letter-spacing:-.03em;margin-bottom:1.8rem}
.ab-step__lead{font-size:var(--fs-lead);line-height:1.85;letter-spacing:-.01em;margin-bottom:1.6rem}
.ab-step__body{font-size:var(--fs-body);line-height:1.9;color:var(--charcoal);opacity:.78;margin-bottom:1.4rem}
.ab-step__body em{font-style:normal;color:var(--moss)}
.ab-step__imgs{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:2.5rem}
.ab-step__imgs img{width:100%;aspect-ratio:16/9;object-fit:cover}
.ab-step__cta{
  display:inline-flex;align-items:center;min-height:44px;margin-top:1rem;
  font-size:var(--fs-cap);letter-spacing:.16em;border-bottom:1px solid currentColor;
}
.ab-seq{display:grid;gap:1.1rem;margin:2rem 0 2.5rem}
.ab-seq div{display:grid;grid-template-columns:10rem 1fr;gap:1.2rem;align-items:baseline}
.ab-seq dt{color:var(--stone);letter-spacing:.1em;font-size:var(--fs-cap)}
.ab-seq dd{margin:0;font-size:var(--fs-body)}
.ab-seq dd span{display:block;font-size:var(--fs-cap);color:var(--stone);margin-top:.25rem}

.ab-house{display:grid;grid-template-columns:1fr 1fr;gap:0;align-items:stretch}
.ab-house__img img{width:100%;height:100%;object-fit:cover;min-height:60svh}
.ab-house__t{padding:7rem 5vw;background:var(--ivory)}
.ab-house__t h2{font-weight:200;font-size:var(--fs-title);letter-spacing:-.03em;margin-bottom:1.2rem}
.ab-house__t p{font-size:var(--fs-body);line-height:1.9;opacity:.78;margin-bottom:3rem;max-width:26em}
.ab-house__t p b{font-weight:600;opacity:1}

@media (max-width:991px){
  .xboard{grid-template-columns:1fr;gap:2rem}
  .xboard__grid{grid-template-columns:1fr 1fr}
  .xdates{display:flex;gap:1.5rem;flex-wrap:wrap;align-items:baseline}
}
/* 실측: 767↓에서 날짜(meta) 컬럼은 아예 감춘다.
   카드 안에 이미 날짜가 있으므로 좁은 화면에서 중복을 지우는 쪽을 택한 구조다. */
@media (max-width:767px){
  .xdates{display:none}
  .xboard__grid{grid-template-columns:1fr}
  .xcard__b{display:flex;flex-direction:column}
  .kit__grid,.drop__steps,.info-zone{grid-template-columns:1fr;gap:2rem}
  .ab-house{grid-template-columns:1fr}
  .ab-house__img img{min-height:44svh}
  .ab-seq div{grid-template-columns:1fr;gap:.2rem}
}
@media (max-width:767px){
  .filter,.shop-page,.kit,.info-zone,.xindex,.xboard,.drop,.xnotify,.ab-three{padding-left:1.4rem;padding-right:1.4rem}
  .ab-hero{padding:14svh 1.4rem 9svh}
  .ab-house__t{padding:5rem 1.4rem}
  .ab-step{padding:4.5rem 0}
  .ab-step__imgs{grid-template-columns:1fr}
}

/* ══════════════════════════════════════════
   통일 규칙 — 페이지마다 제각각이던 조판을 한 곳에서 맞춘다
   · 섹션 라벨은 mono 대문자 트래킹 .18em
   · 큰 제목은 200 웨이트 · 자간 -.035em
   · 여백은 좌우 6vw(모바일 1.4rem)
   ══════════════════════════════════════════ */
/* 모든 큰 제목은 t-md 규칙 하나를 따른다 */
.atlas__h,.atl__h,.collab__h,.hm-about__h,.ab-hero__h,.kit__h,.drop__h,.perf__h,
.shop-sec__head h2,.page-head h1,.lineup__h,.ab-emo__h,.ab-step h2{
  font-weight:200;font-size:var(--fs-title);letter-spacing:-.035em;line-height:1.1;
}
/* 카드·항목 제목도 하나로 — 여기저기 600/400이 섞여 있었다 */
.lb-item__t,.hn__t,.ev-row__r b,.p-card__n,.lu__n,.arc__t{
  font-weight:400;font-size:var(--fs-lead);letter-spacing:-.02em;line-height:1.22;
}
.lb-item__kr,.hn__kr,.ev-row__r em,.p-card__s,.lu__n span{
  font-weight:400;font-size:var(--fs-body);color:var(--stone);letter-spacing:0;
}

/* ── 한 화면 고정 페이지 ──
   아래로 스크롤하지 않는 페이지. 다만 사업자·배송 고지는 법으로 붙어 있어야 하므로
   푸터를 지우지 않고 한 화면 아래에 숨겨 둔다(한 번 더 밀면 나온다). */
/* 세로로는 움직이지 않는다. 한 화면에서 끝난다. */
html.fixed-page,html.fixed-page body{height:100%;overflow:hidden}
body.is-fixed main{height:100svh;display:flex;flex-direction:column;overflow:hidden}
/* 사업자·배송 고지는 법으로 붙어 있어야 하므로 지우지 않고 여닫는 패널로 둔다 */
body.is-fixed .footer{
  position:fixed;inset:auto 0 0 0;z-index:70;max-height:86svh;overflow-y:auto;
  transform:translateY(100%);transition:transform .5s var(--ease);
}
body.is-fixed.legal-open .footer{transform:none}
.legal-btn{
  position:fixed;right:2.4rem;bottom:1.6rem;z-index:71;
  font-family:var(--mono);font-size:var(--fs-cap);letter-spacing:.16em;
  color:var(--stone);min-height:44px;display:inline-flex;align-items:center;
}
.legal-btn:hover{color:var(--charcoal)}
body.is-fixed.legal-open .legal-btn{color:var(--ivory)}
@media (max-width:767px){
  html.fixed-page,html.fixed-page body{height:auto;overflow:visible}
  body.is-fixed .footer{position:static;transform:none;max-height:none}
  .legal-btn{display:none}
}

/* ═══ ATLAS 페이지 — 한 화면, 좌 지구본 / 우 정보 ═══ */
/* 제목·패널은 격자에 그대로 두고, 지구본만 흐름에서 빼 화면 정중앙에 못 박는다 */
.atl{
  flex:1;display:grid;grid-template-columns:minmax(0,1fr) 22rem;
  gap:0 2vw;padding:0 6vw;align-items:center;position:relative;
}
/* 주인공은 지구본이다 — 제목은 작게 왼쪽 위에 눕힌다 */
.atl__head{
  position:absolute;top:6.5rem;left:6vw;right:6vw;z-index:2;
  display:flex;align-items:baseline;gap:1.6rem;flex-wrap:wrap;
}
.atl__h{font-size:var(--fs-lead);font-weight:200;letter-spacing:-.02em;line-height:1.2;
  margin:0;text-align:left;flex:0 1 auto;max-width:26em}
.atl__filter{display:flex;gap:.7rem;align-items:baseline;margin-left:auto}
.atl__filter button{font-size:var(--fs-cap);letter-spacing:.16em;color:var(--stone);min-height:44px}
.atl__filter button[aria-pressed="true"]{color:var(--charcoal);text-decoration:underline;text-underline-offset:5px}
.atl__filter span{color:var(--stone)}
.atl .globe{width:min(46vw,58svh);height:min(46vw,58svh);aspect-ratio:1;margin:0 auto;justify-self:center}
.atl .globe__cv{width:100%;height:100%}
.atl__panel{grid-column:2;display:flex;flex-direction:column;gap:1rem;align-self:center}
.atl__dest{font-size:var(--fs-cap);letter-spacing:.06em;line-height:1.5;min-height:2.6em}
.atl__rows{display:grid;gap:.5rem}
.atl__rows div{display:grid;grid-template-columns:6rem 1fr;gap:1rem;align-items:baseline}
.atl__rows .k{font-size:var(--fs-cap);letter-spacing:.2em;color:var(--stone)}
.atl__rows .v{font-family:var(--mono);font-size:var(--fs-cap);font-variant-numeric:tabular-nums}
.atl__list{display:grid;border-top:1px solid rgba(28,27,24,.16);margin-top:.4rem}
.atl__list a,.atl__list .atl__row{
  display:flex;gap:1rem;align-items:baseline;padding:.7rem 0;
  border-bottom:1px solid rgba(28,27,24,.16);font-size:var(--fs-cap);
}
.atl__list .n{color:var(--stone);letter-spacing:.14em;flex:none}
.atl__list .s{margin-left:auto;color:var(--stone);flex:none;letter-spacing:.12em}
.atl__hint{font-size:var(--fs-cap);color:var(--stone)}
.gpop__img{display:block;width:100%;height:9rem;object-fit:cover;margin-bottom:.8rem;background:var(--ivory)}
@media (max-width:991px){
  .atl{grid-template-columns:1fr;padding:7rem 1.4rem 2rem;gap:1.4rem}
  .atl__panel{grid-column:1}
  .atl__head{position:static;left:auto;right:auto;top:auto}
  .atl .globe{position:static;transform:none;margin:0 auto}
  .atl__h{text-align:left;margin-left:0}
  .atl .globe{width:min(82vw,40svh);height:min(82vw,40svh)}
  body.is-fixed main{height:auto;overflow:visible}
  body.is-fixed .footer{margin-top:0}
}

/* ═══ CROSSING — 한 장씩 크게 ═══ */
.ev-head{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem;margin-bottom:1.6rem}
.ev-names{display:flex;gap:2.4rem;overflow-x:auto;border-top:1px solid rgba(28,27,24,.16);
  border-bottom:1px solid rgba(28,27,24,.16);padding:.9rem 0;margin-bottom:3rem;scrollbar-width:none}
.ev-names::-webkit-scrollbar{display:none}
.ev-names li{display:flex;gap:.7rem;align-items:baseline;white-space:nowrap;padding:0;border:0;
  opacity:.4;transition:opacity .35s var(--ease);cursor:pointer}
.ev-names li.is-on{opacity:1}
.ev-list{display:flex;flex-direction:column;gap:9rem}
.ev-item{grid-column:auto;max-width:1600px;margin:0 auto;width:100%;opacity:1;
  transition:opacity .6s var(--ease),transform .6s var(--ease)}
.ev-item.is-on{opacity:1}
.ev-card__thumb{width:100%}
.ev-card__bottom{margin-top:1.2rem}
.ev-card__title b{font-size:var(--fs-lead);font-weight:400;letter-spacing:-.02em}
@media (max-width:767px){ .ev-list{gap:5rem} }

/* ═══ NEW ARRIVALS (홈) ═══ */
.hm-new{background:var(--white);padding:12svh 6vw;overflow:hidden}
.hm-new__head{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem;margin-bottom:2.6rem;flex-wrap:wrap}
.hm-new__nav{display:flex;gap:1.6rem;align-items:baseline}
.hm-new__nav button,.hm-new__more{font-size:var(--fs-cap);letter-spacing:.16em;color:var(--stone);min-height:44px;display:inline-flex;align-items:center}
.hm-new__nav button:hover,.hm-new__more:hover{color:var(--charcoal)}
.hm-new__list{list-style:none;display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}
.hm-new__list::-webkit-scrollbar{display:none}
.hn{flex:0 0 calc(25% - 15px);scroll-snap-align:center;opacity:.45;transition:opacity .45s var(--ease)}
.hn.is-on{opacity:1}
.hn > a,.hn > span{display:flex;flex-direction:column;gap:.5rem}
.hn__art{display:block;background:none;padding:0}
.hn__art img{display:block;width:100%;height:auto;max-height:34svh;object-fit:contain;
  filter:drop-shadow(0 16px 30px rgba(28,27,24,.22));transition:transform .5s var(--ease)}
.hn.is-on .hn__art img{transform:translateY(-10px) scale(1.03)}
.hn.is-soon .hn__art img{filter:grayscale(.85)}
.hn__tag{font-size:var(--fs-cap);color:var(--orange);letter-spacing:.16em;margin-top:.6rem}
.hn__t{font-size:var(--fs-lead);font-weight:400;letter-spacing:-.02em;line-height:1.2}
.hn__kr{font-size:var(--fs-body);color:var(--charcoal);opacity:.72}
.hn__d{font-size:var(--fs-cap);color:var(--stone)}
@media (max-width:991px){.hn{flex:0 0 calc(50% - 10px)}}
@media (max-width:767px){.hm-new{padding:8svh 1.4rem}.hn{flex:0 0 78%}}

/* ═══ 콜라보 제안 ═══ */
.collab{background:var(--charcoal);color:var(--white);padding:6rem 6vw}
.collab .label{color:rgba(250,248,243,.5)}
.collab__h{font-size:var(--fs-title);margin:1.2rem 0 1.4rem;max-width:16em}
.collab__p{font-size:var(--fs-body);line-height:1.75;max-width:34em;color:rgba(250,248,243,.72)}
.collab__cta{display:inline-flex;align-items:center;min-height:44px;margin-top:1.8rem;
  font-size:var(--fs-cap);letter-spacing:.16em;border-bottom:1px solid currentColor}
@media (max-width:767px){.collab{padding:4.5rem 1.4rem}}

/* ═══ about 키트 목업 ═══ */
.ab-kit{margin:2.5rem 0}
.ab-kit img{width:100%;max-width:34rem;height:auto;display:block}
.ab-kit figcaption{margin-top:.9rem;font-family:var(--mono);font-size:var(--fs-cap);color:var(--stone);letter-spacing:.06em}


/* ═══ CROSSING — 한 줄에 한 제품, 좌우로 정보 ═══ */
.ev-row{
  display:grid;grid-template-columns:minmax(9rem,1.3fr) minmax(0,6fr) minmax(11rem,1.5fr);
  gap:2vw;align-items:center;
}
.ev-row__l,.ev-row__r{display:flex;flex-direction:column;gap:.6rem}
.ev-row__r{text-align:right}
.ev-row__no{font-size:var(--fs-cap);color:var(--stone);letter-spacing:.14em}
.ev-row__code{color:var(--orange)}
.ev-row__state{font-size:var(--fs-cap);letter-spacing:.14em;color:var(--stone)}
.ev-row__c{display:block}
.ev-row__c img{width:100%;height:auto;display:block;transition:transform .6s var(--ease)}
.ev-item.is-on .ev-row__c img{transform:scale(1.02)}
.ev-row__r b{font-size:var(--fs-lead);font-weight:400;letter-spacing:-.02em;line-height:1.2;
  word-break:normal;overflow-wrap:normal;text-wrap:balance}
.ev-row__r em{font-style:normal;font-size:var(--fs-body);color:var(--stone)}
.ev-row__r .mono{color:var(--stone)}
@media (max-width:767px){
  .ev-row{grid-template-columns:1fr;gap:1rem}
  .ev-row__r{text-align:left}
}

/* ═══ ATLAS — 지구본을 화면 가득. 잘려도 크게 ═══ */
/* 지구본이 주인공 — 화면 정중앙. 흐름에서 빠져 다른 요소를 밀지 않는다 */
.atl .globe{
  position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1;
  width:min(72vw,92svh);height:min(72vw,92svh);margin:0;
}
/* 겹치더라도 글자가 묻히지 않게 패널 뒤를 살짝 덮는다 */
.atl__panel{position:relative;z-index:3}
.atl__panel::before{
  content:"";position:absolute;inset:-1.5rem -2rem;z-index:-1;
  background:linear-gradient(90deg,rgba(242,239,231,0) 0%,var(--ivory) 12%);
}

@media (max-width:991px){ .atl .globe{width:min(88vw,46svh);height:min(88vw,46svh)} }

/* ═══ PASSAGES — 위로 쏠리지 않게 세로 가운데, 푸터는 한 화면 아래 ═══ */
body.is-fixed .section-lb{flex:1;display:grid;place-items:center;padding:0;position:relative}
body.is-fixed .lb-slider{width:100%}
body.is-fixed .lb-list{align-items:center}
/* prev/next는 흐름에서 빼서 아래 여백이 생기지 않게 한다 */
body.is-fixed .lb-nav{position:absolute;right:6vw;bottom:2.5rem;padding:0}


/* ═══ CROSSING — 활성만 컬러 ═══ */
.ev-row__c img{filter:grayscale(1);opacity:.55;transition:filter .5s var(--ease),opacity .5s var(--ease),transform .6s var(--ease)}
.ev-item.is-on .ev-row__c img{filter:none;opacity:1}
.ev-item{opacity:1}                     /* 흐리기는 이미지에서만 — 글자는 읽혀야 한다 */
.ev-row__l,.ev-row__r{opacity:.4;transition:opacity .5s var(--ease)}
.ev-item.is-on .ev-row__l,.ev-item.is-on .ev-row__r{opacity:1}
.section-ev{padding-top:12rem}


/* ═══ about — 가운데로 모은 마지막 장 ═══ */
.ab-three--center{display:flex;justify-content:center;text-align:center}
.ab-three--center .ab-step{max-width:44rem;border-bottom:0;display:flex;flex-direction:column;align-items:center}
.ab-three--center .ab-kit{margin:2rem 0}
.ab-three--center .ab-kit img{max-width:28rem;margin:0 auto}
.ab-three--center .ab-step__lead{max-width:28em}
.ab-three--center .ab-step__body{max-width:30em}
