/* ==========================================================================
   DIRECTIONS (오시는길) - 애니메이션 도보 경로 (elements/swm-directions.php)
   ========================================================================== */
.swm-dir{font-family:var(--swm-font);color:var(--swm-ink)}
.swm-dir__route{background:var(--swm-sand-light);padding:clamp(80px,9vw,128px) 0 clamp(72px,8vw,112px)}
.swm-dir__head{max-width:62ch;margin-bottom:clamp(32px,4vw,52px)}
.swm-dir__kicker{margin:0 0 16px;font-size:14px;font-weight:600;letter-spacing:.02em;color:rgba(21,23,29,.6);display:flex;align-items:center;gap:12px}
.swm-dir__kicker::before{content:"";width:34px;height:2px;background:var(--swm-red)}
.swm-dir__title{margin:0;font-size:clamp(34px,4.4vw,60px);line-height:1.06;letter-spacing:-.035em;font-weight:800;color:var(--swm-ink);text-wrap:balance}
.swm-dir__title span{color:var(--swm-red)}
.swm-dir__lead{margin:20px 0 0;font-size:clamp(16px,1.2vw,18px);line-height:1.7;color:rgba(21,23,29,.74);word-break:keep-all}
.swm-dir__grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(24px,3.5vw,56px);align-items:start}

/* map + route */
.swm-dir__map{position:relative;margin:0;border-radius:10px;overflow:hidden;background:#e9e6e0;box-shadow:0 30px 60px -30px rgba(21,23,29,.35);aspect-ratio:1640/1040}
.swm-dir__map img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.swm-dir__svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.swm-dir__casing,.swm-dir__glow,.swm-dir__line,.swm-dir__dash{fill:none;stroke-linecap:round;stroke-linejoin:round}
.swm-dir__casing{stroke:#fff;stroke-width:22;opacity:.9}
.swm-dir__glow{stroke:var(--swm-red);stroke-width:18;opacity:.35}
.swm-dir__line{stroke:var(--swm-red);stroke-width:9}
.swm-dir__casing,.swm-dir__glow,.swm-dir__line{stroke-dasharray:1000;stroke-dashoffset:1000}
.swm-dir__dash{stroke:#fff;stroke-width:3.5;opacity:.95;stroke-dasharray:10 26;stroke-dashoffset:0;visibility:hidden}
.swm-dir__map.is-in .swm-dir__casing,.swm-dir__map.is-in .swm-dir__glow,.swm-dir__map.is-in .swm-dir__line{animation:swm-draw 2.6s .3s var(--swm-ease) forwards}
.swm-dir__map.is-in .swm-dir__dash{visibility:visible;animation:swm-march 1.1s linear infinite;animation-delay:2.9s}
.swm-dir__walker{fill:#fff;stroke:var(--swm-red);stroke-width:6;opacity:0;offset-rotate:0deg;filter:drop-shadow(0 2px 4px rgba(0,0,0,.35))}
.swm-dir__map.is-in .swm-dir__walker{animation:swm-walk 7s 3s linear infinite}
@keyframes swm-draw{to{stroke-dashoffset:0}}
@keyframes swm-march{to{stroke-dashoffset:-36}}
@keyframes swm-walk{0%{offset-distance:0%;opacity:0}4%{opacity:1}92%{opacity:1}100%{offset-distance:100%;opacity:0}}

/* pins */
.swm-dir__pin{opacity:0;transition:opacity .6s ease}
.swm-dir__map.is-in .swm-dir__pin--start{opacity:1;transition-delay:.2s}
.swm-dir__map.is-in .swm-dir__pin--end{opacity:1;transition-delay:2.6s}
.swm-dir__pin-ring{fill:#fff;stroke:var(--swm-navy);stroke-width:5}
.swm-dir__pin-dot{fill:var(--swm-navy)}
.swm-dir__pin-dot--end{fill:var(--swm-red)}
.swm-dir__pin--end .swm-dir__pin-ring{stroke:var(--swm-red)}
.swm-dir__pulse{fill:var(--swm-red);opacity:0;transform-origin:center;transform-box:fill-box}
.swm-dir__map.is-in .swm-dir__pulse{animation:swm-pulse 2.4s 2.8s ease-out infinite}
.swm-dir__map.is-in .swm-dir__pulse--2{animation-delay:4s}
@keyframes swm-pulse{0%{transform:scale(1);opacity:.55}100%{transform:scale(4.2);opacity:0}}
.swm-dir__label rect{fill:var(--swm-navy);opacity:.96}
.swm-dir__label text{fill:#fff;font-family:var(--swm-font);font-size:30px;font-weight:700;text-anchor:middle;letter-spacing:-.01em}
.swm-dir__label--end rect{fill:var(--swm-red)}
.swm-dir__label-tail{stroke:var(--swm-red);stroke-width:4;fill:none}
.swm-dir__bldg{fill:var(--swm-navy);font-family:var(--swm-font);font-size:30px;font-weight:800;text-anchor:middle;letter-spacing:-.02em;paint-order:stroke;stroke:#fff;stroke-width:8;stroke-linejoin:round}
@media (max-width:767px){.swm-dir__bldg{font-size:44px}}
.swm-dir__credit{position:absolute;right:10px;bottom:8px;margin:0;font-size:10px;color:rgba(21,23,29,.55);background:rgba(255,255,255,.7);padding:2px 6px;border-radius:3px}

/* steps + actions */
.swm-dir__side{display:grid;gap:24px}
.swm-dir__steps{list-style:none;margin:0;padding:0;display:grid;gap:0;background:#fff;border-radius:10px;border:1px solid rgba(21,23,29,.08)}
.swm-dir__steps li{display:grid;grid-template-columns:44px 1fr;gap:16px;padding:22px 22px;align-items:start}
.swm-dir__steps li+li{border-top:1px solid rgba(21,23,29,.08)}
.swm-dir__steps b{width:40px;height:40px;border-radius:50%;background:var(--swm-navy);color:#fff;display:grid;place-items:center;font-size:16px;font-weight:800}
.swm-dir__steps li:last-child b{background:var(--swm-red)}
.swm-dir__steps strong{display:block;font-size:17px;font-weight:700;letter-spacing:-.02em;line-height:1.35;word-break:keep-all;color:var(--swm-ink)}
.swm-dir__steps span{display:block;margin-top:6px;font-size:14.5px;line-height:1.6;color:rgba(21,23,29,.68);word-break:keep-all}
.swm-dir__actions{display:flex;flex-wrap:wrap;gap:10px}
.swm-dir__actions .swm-btn{min-height:50px;padding:0 22px;font-size:15px}
.swm-dir__actions .swm-btn.is-copied{background:var(--swm-ink);color:#fff;border-color:var(--swm-ink)}

/* info cells */
.swm-dir__info{background:#fff;padding:clamp(56px,6vw,88px) 0}
.swm-dir__cells{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:0;border-top:1px solid rgba(21,23,29,.12);border-left:1px solid rgba(21,23,29,.12)}
.swm-dir__cell{padding:28px 26px 30px;border-right:1px solid rgba(21,23,29,.12);border-bottom:1px solid rgba(21,23,29,.12);margin:0}
.swm-dir__cell dt{display:flex;align-items:center;gap:10px;font-size:13px;font-weight:700;letter-spacing:.02em;color:rgba(21,23,29,.6);margin-bottom:12px}
.swm-dir__cell dt svg{color:var(--swm-red);flex:0 0 auto}
.swm-dir__cell dd{margin:0;font-size:clamp(15px,1.15vw,17px);line-height:1.6;font-weight:500;letter-spacing:-.015em;word-break:keep-all;color:var(--swm-ink)}
.swm-dir__cell dd a{color:var(--swm-ink);text-decoration:none;font-weight:800;font-size:1.25em}
.swm-dir__cell dd small{display:block;margin-top:6px;font-size:13px;font-weight:400;color:rgba(21,23,29,.58)}

/* kakao */
.swm-dir__kakao{background:var(--swm-paper);padding:clamp(56px,6vw,88px) 0 clamp(72px,8vw,110px)}
.swm-dir__kakao-head{margin-bottom:22px}
.swm-dir__kakao-head h3{margin:0;font-size:clamp(22px,2.2vw,30px);font-weight:800;letter-spacing:-.03em;color:var(--swm-ink)}
.swm-dir__kakao-head p{margin:8px 0 0;font-size:15px;color:rgba(21,23,29,.62)}
.swm-dir__kakao-box{border-radius:10px;overflow:hidden;border:1px solid rgba(21,23,29,.1);background:#fff}
.swm-dir__kakao-box .root_daum_roughmap{width:100%!important;max-width:none!important}
.swm-dir__kakao-box .root_daum_roughmap .wrap_map{height:420px!important}

@media (max-width:1023px){.swm-dir__grid{grid-template-columns:1fr}.swm-dir__cells{grid-template-columns:1fr 1fr}}
@media (max-width:767px){
  .swm-dir__cells{grid-template-columns:1fr}
  .swm-dir__label text{font-size:46px}
  .swm-dir__casing{stroke-width:30}.swm-dir__line{stroke-width:13}.swm-dir__dash{stroke-width:5}.swm-dir__walker{r:18}
  .swm-dir__pin-ring{r:36;stroke-width:7}.swm-dir__pin-dot{r:17}
  .swm-dir__kakao-box .root_daum_roughmap .wrap_map{height:320px!important}
  .swm-dir__actions .swm-btn{flex:1 1 45%}
}
@media (prefers-reduced-motion:reduce){
  .swm-dir__casing,.swm-dir__glow,.swm-dir__line{stroke-dashoffset:0!important;animation:none!important}
  .swm-dir__dash,.swm-dir__walker,.swm-dir__pulse{animation:none!important;visibility:hidden}
  .swm-dir__pin{opacity:1!important}
}

/* mobile: taller map crop so the route and labels read larger */
@media (max-width:640px){.swm-dir__map{aspect-ratio:4/3}.swm-dir__credit{font-size:9px}}

/* ---------- compact (homepage) ---------- */
.swm-dir--compact .swm-dir__route{background:var(--swm-navy);color:#fff;padding:clamp(80px,9vw,128px) 0 clamp(28px,3vw,40px)}
.swm-dir--compact .swm-dir__kicker{color:rgba(255,255,255,.66)}
.swm-dir--compact .swm-dir__title{color:#fff}
.swm-dir--compact .swm-dir__title span{color:var(--swm-sand)}
.swm-dir--compact .swm-dir__lead{color:rgba(255,255,255,.74)}
.swm-dir--compact .swm-dir__steps{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.1)}
.swm-dir--compact .swm-dir__steps li+li{border-color:rgba(255,255,255,.1)}
.swm-dir--compact .swm-dir__steps strong{color:#fff}
.swm-dir--compact .swm-dir__steps span{color:rgba(255,255,255,.66)}
.swm-dir--compact .swm-dir__steps b{background:rgba(255,255,255,.12)}
.swm-dir--compact .swm-dir__steps li:last-child b{background:var(--swm-red)}
.swm-dir--compact .swm-dir__actions .swm-btn--dark{background:#fff;color:var(--swm-navy);border-color:#fff}
.swm-dir--compact .swm-dir__actions .swm-btn--line{color:#fff;border-color:rgba(255,255,255,.4)}
.swm-dir--compact .swm-dir__actions .swm-btn--line:hover{border-color:#fff}
.swm-dir--compact .swm-dir__map{box-shadow:0 40px 80px -40px rgba(0,0,0,.9),0 0 0 1px rgba(255,255,255,.08)}
.swm-dir__quick{background:var(--swm-navy);padding:0 0 clamp(72px,8vw,112px)}
.swm-dir__qgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.1);border-radius:12px;overflow:hidden}
.swm-dir__qcell{display:flex;flex-direction:column;gap:6px;padding:22px 22px 24px;background:var(--swm-navy);color:#fff;text-decoration:none;transition:background .3s}
a.swm-dir__qcell:hover{background:#0b1232}
.swm-dir__qcell small{font-size:12px;font-weight:700;letter-spacing:.08em;color:rgba(255,255,255,.55)}
.swm-dir__qcell strong{font-size:clamp(16px,1.3vw,19px);font-weight:800;letter-spacing:-.025em;line-height:1.35;word-break:keep-all}
.swm-dir__qcell span{font-size:13px;line-height:1.5;color:rgba(255,255,255,.62);word-break:keep-all}
.swm-dir__qcell--tel{background:var(--swm-red)}
.swm-dir__qcell--tel:hover{background:var(--swm-red-deep)}
.swm-dir__qcell--tel small,.swm-dir__qcell--tel span{color:rgba(255,255,255,.85)}
.swm-dir__qcell--tel strong{font-size:clamp(22px,2vw,30px)}
.swm-dir__qcell--more{background:#0b1232}
@media (max-width:1023px){.swm-dir__qgrid{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.swm-dir__qgrid{grid-template-columns:1fr}.swm-dir__qcell{padding:16px 18px}}