
    /* 공통 토큰·reset·body·a·img → /assets/common.css 로 추출 (SSOT) */

    .kcb .wrap {
      max-width: 1400px;
      margin: 0 auto;
      padding: 0 24px
    }

    .kcb .topbar {
      border-bottom: 1px solid var(--ln);
      background: #fff;
      position: sticky;
      top: 0;
      z-index: 50
    }

    .kcb .topbar .wrap {
      display: flex;
      align-items: center;
      height: 64px;
      gap: 28px
    }

    .kcb .logo {
      font-weight: 700;
      font-size: 19px
    }

    .kcb .logo b {
      color: var(--or)
    }

    .kcb .nav {
      display: flex;
      gap: 26px;
      font-size: 15px;
      color: #444;
      font-weight: 600
    }

    .kcb .nav span:nth-child(2) {
      color: var(--or)
    }

    .kcb .pv {
      margin-left: auto;
      background: #222;
      color: #fff;
      font-size: 11px;
      font-weight: 700;
      padding: 4px 10px;
      border-radius: 20px;
      letter-spacing: .5px
    }

    .kcb .hero {
      text-align: center;
      padding: 46px 0 30px
    }

    .kcb .hero .tag {
      font-size: 15px;
      color: #555;
      font-weight: 600
    }

    .kcb .hero h1 {
      font-size: 44px;
      font-weight: 700;
      margin: 6px 0 22px
    }

    .kcb .hero .copy {
      font-size: 24px;
      font-weight: 700
    }

    .kcb .hero .copy em {
      color: var(--or);
      font-style: normal
    }

    .kcb .hero .sub {
      font-size: 14px;
      color: var(--gy);
      margin-top: 10px
    }

    .kcb .mapband {
      background: #C9F5FF;
      margin-top: 34px
    }

    .kcb .mapgrid {
      display: grid;
      grid-template-columns: 1fr 520px;
      gap: 0px;
      padding: 0;
      align-items: start;
    }

    .kcb .mapwrap {
      position: relative;
      max-width: 867px;
      margin: 0 auto
    }

    .kcb .mapimg {
      width: 100%;
      border-radius: 8px;
      display: block;
      transition: opacity .25s ease, filter .25s ease;
    }
    .kcb .mapwrap.map-hover .mapimg {
      opacity: 0.7;
      filter: brightness(0.9);
    }

    .kcb .mhs {
      position: absolute;
      transform: translate(-50%, -50%);
      cursor: pointer;
      z-index: 4
    }

    .kcb .mhs i {
      display: block;
      width: 60px;
      height: 60px;
      border-radius: 50%;
      background: transparent;
      transition: .15s
    }

    .kcb .mhs:hover i {
      background: transparent
    }

    .kcb .mhs .lbl {
      position: absolute;
      left: 50%;
      top: -24px;
      transform: translateX(-50%);
      background: #fff;
      color: #E53935;
      font-size: 12px;
      font-weight: 700;
      letter-spacing: -0.02em;
      padding: 5px 11px;
      border-radius: 14px;
      border: 1.5px solid #E53935;
      white-space: nowrap;
      opacity: 0;
      pointer-events: none;
      transition: opacity .18s, transform .18s;
      box-shadow: 0 3px 8px rgba(0,0,0,0.18);
    }

    /* 말풍선 꼬리 — 빨간 테두리 + 흰 내부 (2겹) */
    .kcb .mhs .lbl::before {
      content: '';
      position: absolute;
      left: 50%;
      bottom: -7px;
      transform: translateX(-50%);
      width: 0;
      height: 0;
      border-left: 6px solid transparent;
      border-right: 6px solid transparent;
      border-top: 7px solid #E53935;
    }
    .kcb .mhs .lbl::after {
      content: '';
      position: absolute;
      left: 50%;
      bottom: -4px;
      transform: translateX(-50%);
      width: 0;
      height: 0;
      border-left: 4.5px solid transparent;
      border-right: 4.5px solid transparent;
      border-top: 5.5px solid #fff;
    }

    .kcb .mhs:hover .lbl {
      opacity: 1
    }

    .kcb .mhs.dbg i {
      background: rgba(243, 111, 33, .35);
      outline: 1px dashed #c00
    }

    /* debug 모드 — 핀 식별 위해 시군명 라벨 항상 표시 */
    .kcb .mhs.dbg .lbl {
      opacity: 1 !important;
      background: #fff !important;
      color: #000 !important;
      border: 1.5px solid #c00 !important;
      font-size: 12px !important;
      padding: 3px 8px !important;
      font-weight: 700 !important;
      box-shadow: 0 2px 6px rgba(0,0,0,0.3) !important;
    }

    .kcb .mhs {
      transition: opacity .15s
    }

    .kcb .mhs.hl i,
    .kcb .mhs:hover i {
      transform: none;
      background: transparent;
      box-shadow: none;
    }

    .kcb .mhs.hl .lbl {
      opacity: 0
    }

    .kcb .mhs.hl {
      z-index: 6
    }

    /* food 이미지 팝업 */
    .kcb .mhs-food {
      position: absolute;
      left: 50%;
      top: 50%;
      bottom: auto;
      transform: translateX(-50%) translateY(calc(-100% + 70px)) scale(0);
      transform-origin: 50% 100%;
      width: 150px;
      pointer-events: none;
      transition: transform .42s cubic-bezier(.34,1.56,.64,1), opacity .26s ease;
      opacity: 0;
      z-index: 10;
      display: flex;
      flex-direction: column;
      align-items: center;
    }
    .kcb .mhs-food img {
      width: 150px;
      height: auto;
      object-fit: contain;
      display: block;
      filter: drop-shadow(0 6px 16px rgba(0,0,0,.32));
    }
    .kcb .mhs.hl .mhs-food,
    .kcb .mhs:hover .mhs-food {
      transform: translateX(-50%) translateY(calc(-100% + 70px)) scale(1);
      opacity: 1;
      animation: foodPop .55s cubic-bezier(.34,1.7,.5,1) both;
    }
    /* 캡션: 말풍선 스타일 (흰 배경 + 빨간 테두리 + 꼬리) */
    .kcb .mhs-cap {
      position: relative;
      margin-top: 5px;
      background: #fff;
      border: 1.5px solid #E53935;
      border-radius: 14px;
      padding: 5px 13px;
      white-space: nowrap;
      max-width: 200px;
      text-align: center;
      font-size: 14px;
      font-weight: 700;
      color: #E53935;
      letter-spacing: -0.02em;
      box-shadow: 0 2px 8px rgba(0,0,0,.15);
    }
    .kcb .mhs-cap::before {
      content: '';
      position: absolute;
      left: 50%;
      top: -7px;
      transform: translateX(-50%);
      width: 0; height: 0;
      border-left: 6px solid transparent;
      border-right: 6px solid transparent;
      border-bottom: 7px solid #E53935;
    }
    .kcb .mhs-cap::after {
      content: '';
      position: absolute;
      left: 50%;
      top: -4px;
      transform: translateX(-50%);
      width: 0; height: 0;
      border-left: 4.5px solid transparent;
      border-right: 4.5px solid transparent;
      border-bottom: 5.5px solid #fff;
    }

    .kcb .mhs.dim {
      opacity: .28
    }
    .kcb .mhs i, .kcb .mhs .lbl {
      transition: transform .22s cubic-bezier(.34,1.56,.64,1), background .2s ease, box-shadow .2s ease
    }
    .kcb .mhs {
      transition: opacity .22s ease
    }

    .kcb .panel {
      background: #fff;
      padding: 65px 24px 26px;
      height: 100%;
      display: flex;
      flex-direction: column;
      justify-content: flex-start;
    }

    .kcb .cnt {
      display: flex;
      gap: 22px;
      justify-content: space-between;
      padding-bottom: 18px;
      border-bottom: 2px solid #222
    }

    .kcb .cnt div {
      font-size: 16px;
      color: #666;
      font-weight: 600
    }

    .kcb .cnt b {
      font-size: 50px;
      color: var(--or);
      font-weight: 700;
      margin-right: 3px
    }

    .kcb .cnt div:first-child b {
      color: var(--or)
    }

    .kcb .cnt div:not(:first-child) b {
      color: #222
    }

    .kcb .reg {
      border-bottom: 1px solid var(--ln);
      padding-top: 30px;
    }

    .kcb .reg-all {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 15px 2px;
      cursor: pointer;
      font-weight: 700;
      font-size: 28px;
      border-bottom: 2px solid #222
    }

    .kcb .reg-all small {
      font-weight: 400;
      color: var(--gy);
      font-size: 14px;
      margin-left: 8px
    }

    .kcb .reg-all .ar {
      color: var(--or);
      font-weight: 700
    }

    .kcb .reg-all:hover {
      color: var(--or)
    }

    .kcb .reg-h {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 15px 2px;
      cursor: pointer;
      font-weight: 700;
      font-size: 28px;
      width: 100%;
    }

    .kcb .reg-h small {
      font-weight: 400;
      color: var(--gy);
      font-size: 14px;
      margin-left: 8px
    }

    .kcb .reg-h .ar {
      transition: .2s;
      color: #999
    }

    .kcb .reg.open .ar {
      transform: rotate(180deg)
    }

    .kcb .reg-b {
      display: none;
      padding: 2px 0 14px;
      grid-template-columns: 1fr 1fr;
      gap: 8px
    }

    .kcb .reg.open .reg-b {
      display: grid
    }

    .kcb .sg {
      border: 1px solid var(--ln);
      border-radius: 10px;
      padding: 9px 12px;
      font-size: 22px;
      color: #B1B1B1;
      display: flex;
      align-items: baseline;
      gap: 6px;
      cursor: pointer;
      background: #fff
    }

    .kcb .sg:hover {
      border-color: var(--or);
      color: var(--or)
    }

    .kcb .sg b {
      font-weight: 600;
    }

    .kcb .sg .n {
      color: var(--gy);
      font-size: 11.5px
    }

    .kcb .sg .m {
      margin-left: auto;
      color: #aaa;
      font-size: 11px;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      max-width: 84px
    }

    .kcb .sec {
      padding: 64px 0 10px;
      text-align: center
    }

    .kcb .sec h2 {
      font-size: 26px;
      font-weight: 700
    }

    .kcb .cards4 {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      gap: 22px;
      padding: 30px 0 8px
    }

    .kcb .kc {
      border: 1px solid var(--ln);
      border-radius: 14px;
      overflow: hidden;
      text-align: left;
      background: #fff;
      cursor: pointer;
      transition: .15s
    }

    .kcb .kc:hover {
      border-color: var(--or);
      box-shadow: 0 8px 22px rgba(243, 111, 33, .14);
      transform: translateY(-2px)
    }

    .kcb .kc .hd {
      display: flex;
      align-items: baseline;
      gap: 8px;
      padding: 24px 24px 14px
    }

    .kcb .kc .hd b {
      font-size: 17px;
      font-weight: 700
    }

    .kcb .kc .hd .mn {
      font-size: 11.5px;
      color: var(--gy)
    }

    .kcb .kc .hd .sp {
      margin-left: auto;
      font-size: 12.5px;
      font-weight: 700;
      color: var(--or)
    }

    .kcb .kc img {
      width: 100%;
      display: block;
      object-fit: contain;
      padding: 0 24px 24px;
    }

    .kcb .chips {
      display: flex;
      flex-wrap: wrap;
      gap: 9px;
      justify-content: center;
      padding: 26px 0 6px
    }

    .kcb .chip {
      border: 1px solid #ddd;
      border-radius: 30px;
      padding: 8px 16px;
      font-size: 13.5px;
      font-weight: 600;
      color: #555;
      cursor: pointer;
      background: #fff
    }

    .kcb .chip small {
      color: #aaa;
      margin-left: 3px
    }

    .kcb .chip.on {
      background: var(--or);
      border-color: var(--or);
      color: #fff
    }

    .kcb .chip.on small {
      color: #ffd9bd
    }

    .kcb .pgrid {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 20px;
      padding: 22px 0 6px;
      text-align: left
    }

    .kcb .pc {
      border: 1px solid var(--ln);
      border-radius: 12px;
      padding: 18px 18px 14px;
      background: #fff;
      cursor: pointer;
      transition: .15s;
      text-align: left;
    }

    .kcb .pc:hover {
      border-color: var(--or);
      box-shadow: 0 8px 22px rgba(243, 111, 33, .14);
      transform: translateY(-2px)
    }

    .kcb .pc .meta {
      font-size: 12px;
      color: var(--gy);
      margin-bottom: 7px
    }

    .kcb .pc .meta b {
      color: var(--or);
      font-weight: 700
    }

    .kcb .pc h4 {
      font-size: 24px;
      font-weight: 700;
      margin-bottom: 7px
    }

    .kcb .pc p {
      font-size: 13px;
      color: #666;
      line-height: var(--lh-body);
      height: 60px;
      overflow: hidden
    }

    .kcb .pc .ad {
      font-size: 11.5px;
      color: #aaa;
      margin-top: 9px;
      border-top: 1px solid #f2f2f2;
      padding-top: 8px
    }

    .kcb .dots {
      display: flex;
      gap: 6px;
      justify-content: center;
      align-items: center;
      padding: 20px 0 60px;
      flex-wrap: wrap
    }

    .kcb .dot {
      min-width: 32px;
      height: 32px;
      padding: 0 9px;
      border-radius: 8px;
      background: #fff;
      border: 1px solid #e5e5e5;
      color: #666;
      font-size: 13px;
      font-weight: 700;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      transition: .15s
    }

    .kcb .dot:hover {
      border-color: var(--or);
      color: var(--or)
    }

    .kcb .dot.on {
      background: var(--or);
      border-color: var(--or);
      color: #fff
    }

    .kcb .dot.ar {
      font-weight: 700;
      color: #999
    }

    .kcb .dot.el {
      border: none;
      cursor: default;
      min-width: 16px;
      color: #aaa
    }

    .kcb .ft {
      border-top: 1px solid var(--ln);
      padding: 26px 0 40px;
      color: #999;
      font-size: 12.5px;
      text-align: center
    }

    .kcb .toast {
      position: fixed;
      left: 50%;
      bottom: 36px;
      transform: translateX(-50%);
      background: #222;
      color: #fff;
      padding: 11px 20px;
      border-radius: 30px;
      font-size: 13.5px;
      opacity: 0;
      transition: .25s;
      pointer-events: none;
      z-index: 99
    }

    .kcb .toast.on {
      opacity: 1
    }

    .kcb .mdl.wrap {
      padding: 0
    }

    .kcb .mdl.wrap .gban {
      margin: 46px auto 0;
      padding: 20px 0;
    }

    .kcb .mdl.wrap .gban img {
      width: 100%;
    }

    @media(max-width:980px) {
      .kcb .mhs .lbl {
        display: none
      }
      .kcb .mapgrid {
        grid-template-columns: 1fr
      }

      .kcb .cards4 {
        grid-template-columns: repeat(2, 1fr)
      }

      .kcb .pgrid {
        grid-template-columns: 1fr 1fr
      }

      .kcb .mapband {
        margin: 34px 0 0; /* 34px 16px 0; */
        border-radius: 18px
      }

      .kcb .mapband .wrap {
        padding-left: 14px;
        padding-right: 14px
      }
    }

    @media(max-width:560px) {
      .kcb .topbar .wrap {
        height: 54px;
        gap: 8px;
        padding: 0 14px
      }

      .kcb .logo {
        font-size: 15px;
        white-space: nowrap
      }

      .kcb .nav {
        display: none
      }

      .kcb .pv {
        font-size: 9px;
        padding: 3px 7px;
        margin-left: auto
      }

      .kcb .wrap {
        padding: 0 14px
      }

      .kcb .mapband {
        margin: 28px 12px 0;
        border-radius: 14px
      }

      .kcb .mapband .wrap {
        padding-left: 12px;
        padding-right: 12px
      }

      .kcb .hero {
        padding: 24px 0 16px
      }

      .kcb .hero h1 {
        font-size: 32px
      }

      .kcb .hero .copy {
        font-size: 17px
      }

      .kcb .hero .sub {
        font-size: 12.5px
      }

      .kcb .mapgrid {
        padding: 22px 0
      }

      .kcb .panel {
        padding: 18px 16px
      }

      .kcb .cnt b {
        font-size: 24px
      }

      .kcb .cnt div {
        font-size: 11px
      }

      .kcb .cards4 {
        grid-template-columns: 1fr 1fr;
        gap: 12px
      }

      .kcb .kc .hd b {
        font-size: 15px
      }

      .kcb .pgrid {
        grid-template-columns: 1fr
      }

      .kcb .gban {
        font-size: 14px;
        padding: 16px
      }

      .kcb .mhs i {
        width: 14px;
        height: 14px
      }

      .kcb .mhs .lbl {
        font-size: 10px
      }

      .kcb .sec {
        padding: 40px 0 8px
      }

      .kcb .sec h2 {
        font-size: 20px
      }

      .kcb .mdl.wrap .gban {
        margin: 10px auto 0;
        padding: 10px 0;
      }
    }

    /* ===== 작업3: 메인 한식진흥원 GNB+배너+footer 이식 (.kfx 스코프) ===== */
    .kfx {
      --kor: #F87C00;
      --kgy: #636466;
      --kik: #222;
      --kln: #e5e5e5
    }

    .kcb .kfx img {
      opacity: 1
    }

    .kcb .kfx .util {
      display: flex;
      justify-content: flex-end;
      align-items: center;
      gap: 18px;
      font-size: 12px;
      color: var(--kgy);
      padding: 9px 0
    }

    .kcb .kfx .util b {
      color: var(--kik);
      font-weight: 600
    }

    .kcb .kfx .util span {
      cursor: default
    }

    .kcb .kfx .ico {
      cursor: pointer
    }

    .kcb .kfx .gnb {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 14px 0
    }

    .kcb .kfx .gnb .logo {
      display: flex;
      align-items: center;
      gap: 10px
    }

    .kcb .kfx .gnb .logo img {
      display: block;
      height: 46px
    }

    .kcb .kfx .menu {
      display: flex;
      gap: 34px;
      font-weight: 600;
      font-size: 16px;
      color: var(--kik)
    }

    .kcb .kfx .menu a {
      cursor: pointer
    }

    .kcb .kfx .menu a.active {
      color: var(--kor)
    }

    .kcb .kfx .menu .ham {
      font-size: 18px;
      color: var(--kgy)
    }

    .kcb .kfx .subnav {
      background: #F4F1EB;
      border-bottom: 1px solid var(--kln)
    }

    .kcb .kfx .subnav .wrap {
      display: flex;
      gap: 8px;
      padding: 0
    }

    .kcb .kfx .subnav a {
      padding: 11px 22px;
      font-size: 14px;
      color: var(--kgy);
      cursor: pointer
    }

    .kcb .kfx .subnav a.on {
      background: #fff;
      color: var(--kik);
      font-weight: 700;
      border-left: 1px solid var(--kln);
      border-right: 1px solid var(--kln)
    }

    .kcb .kfx .banner {
      background: #fff;
      padding: 20px 0 14px
    }
    .kcb .kfx .banner picture {
      display: block;
      width: 100%
    }
    .kcb .kfx .banner picture img {
      width: 100%;
      height: auto;
      display: block
    }

    .kcb .kfx .banner .row {
      max-width: 1385px;
      width: 100%;
      margin: 0 auto;
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 36px;
      flex-wrap: nowrap;
      padding: 0;
    }

    .kcb .kfx .banner .row img {
      width: 100%;
    }

    .kcb .kfx .banner .row img.bart {
      width: 100%;
    }

    .kcb .kfx .banner .ctr {
      text-align: center;
      flex: 0 0 auto
    }

    .kcb .kfx .banner .ctr .kgt {
      font-size: 15px;
      color: var(--kgy);
      font-weight: 600
    }

    .kcb .kfx .banner .ctr h1 {
      font-size: 46px;
      font-weight: 700;
      letter-spacing: -1.5px;
      margin-top: 2px
    }

    .kcb .kfx .banner .ctr h1 .k,
    .kcb .kfx .banner .sub .k {
      color: var(--kor)
    }

    .kcb .kfx .banner .subwrap {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 18px;
      margin-top: 22px
    }

    .kcb .kfx .banner .sub {
      text-align: center;
      font-size: 21px;
      font-weight: 700;
      color: var(--kik)
    }

    .kcb .kfx .banner .sub2 {
      text-align: center;
      font-size: 13px;
      color: var(--kgy);
      margin-top: 5px
    }

    .kcb .kfx .banner .chick {
      height: 64px
    }

    .kcb .kfx footer {
      margin-top: 40px;
      background: #fff;
      border-top: 1px solid var(--kln)
    }

    .kcb .kfx .foot-care {
      max-width: 1400px;
      margin: 0 auto;
      padding: 26px 24px 22px
    }

    .kcb .kfx .foot-care .fc1 {
      display: flex;
      gap: 10px;
      align-items: flex-start;
      font-size: 13.5px;
      padding-bottom: 14px;
      border-bottom: 1px solid var(--kln)
    }

    .kcb .kfx .foot-care .fc1 .qi {
      width: 24px;
      height: 24px;
      border-radius: 50%;
      background: var(--kik);
      color: #fff;
      display: grid;
      place-items: center;
      font-size: 13px;
      font-weight: 700;
      flex-shrink: 0
    }

    .kcb .kfx .foot-care .stars {
      display: flex;
      gap: 20px;
      flex-wrap: wrap;
      padding: 15px 0;
      font-size: 13px;
      font-weight: 600;
      color: var(--kik)
    }

    .kcb .kfx .foot-care .stars label {
      display: flex;
      gap: 5px;
      align-items: center;
      cursor: pointer
    }

    .kcb .kfx .foot-care .opinion {
      display: flex;
      gap: 0
    }

    .kcb .kfx .foot-care .opinion input {
      flex: 1;
      min-width: 0;
      border: 1px solid var(--kln);
      padding: 11px 14px;
      font-size: 13.5px;
      font-family: inherit
    }

    .kcb .kfx .foot-care .opinion button {
      background: #3a3937;
      color: #fff;
      border: none;
      padding: 0 24px;
      font-weight: 700;
      font-size: 13.5px;
      cursor: pointer
    }

    .kcb .kfx .foot-links {
      max-width: 1400px;
      margin: 0 auto;
      display: flex;
      gap: 26px;
      justify-content: center;
      padding: 15px 24px;
      font-size: 13px;
      color: var(--kgy);
      font-weight: 600;
      flex-wrap: wrap;
      border-top: 1px solid var(--kln)
    }

    .kcb .kfx .foot-links a {
      cursor: pointer
    }

    .kcb .kfx .foot-links a.em {
      color: var(--kor)
    }

    .kcb .kfx .foot-links .fam {
      border: 1px solid var(--kik);
      border-radius: 18px;
      padding: 6px 16px;
      font-size: 12px;
      font-weight: 700
    }

    .kcb .kfx .foot-info {
      max-width: 1400px;
      margin: 0 auto;
      border-top: 1px solid var(--kln);
      padding: 24px 24px 30px;
      display: flex;
      align-items: center;
      gap: 30px;
      font-size: 12.5px;
      color: var(--kgy);
      flex-wrap: wrap
    }

    .kcb .kfx .foot-info .fcol {
      font-size: 12.5px;
      line-height: 1.85;
      color: var(--kik);
      flex: 1;
      min-width: 240px
    }

    .kcb .kfx .foot-info .fcol .jb {
      background: #E03131;
      color: #fff;
      font-size: 10.5px;
      font-weight: 700;
      border-radius: 4px;
      padding: 1px 6px;
      margin: 0 3px
    }

    .kcb .kfx .bgwhite {
      background: #fff
    }

    .kcb .kfx .bggray {
      background: #EFEFEF
    }

    @media(max-width:760px) {

      .kcb .kfx .menu,
      .kcb .kfx .util {
        display: none
      }

      .kcb .kfx .banner {
        padding: 12px 0 10px
      }

      .kcb .kfx .banner .row {
        flex-wrap: wrap;
        gap: 14px
      }

      /* .kfx .banner .row img.bart{height:78px} */
      .kcb .kfx .banner .ctr h1 {
        font-size: 30px
      }

      .kcb .kfx .banner .subwrap {
        flex-direction: column;
        gap: 8px
      }

      .kcb .kfx .foot-care .stars {
        gap: 10px
      }

      .kcb .kfx .foot-info {
        gap: 16px
      }
    }
    .kcb .modal {
      position: fixed;
      inset: 0;
      background: rgba(0, 0, 0, .5);
      z-index: 200;
      display: none;
      align-items: center;
      justify-content: center;
      padding: 20px
    }

    .kcb .modal.open {
      display: flex
    }

    .kcb .mcard {
      background: #fff;
      border-radius: 20px;
      max-width: 430px;
      width: 100%;
      max-height: 88vh;
      overflow: auto;
      box-shadow: 0 20px 60px rgba(0, 0, 0, .3);
      animation: mpop .2s ease;
      position: relative
    }

    /* #3 음식 등장 — 통통 튀는 재미있는 모션 */
    @keyframes foodPop {
      0%   { transform: translateX(-50%) translateY(calc(-100% + 70px)) scale(0) rotate(-8deg); }
      45%  { transform: translateX(-50%) translateY(calc(-100% + 56px)) scale(1.12) rotate(4deg); }
      70%  { transform: translateX(-50%) translateY(calc(-100% + 70px)) scale(.96) rotate(-2deg); }
      100% { transform: translateX(-50%) translateY(calc(-100% + 70px)) scale(1) rotate(0deg); }
    }
    /* mhs-below(상단 핀): 아래로 등장하는 버전 */
    @keyframes foodPopBelow {
      0%   { transform: translateX(-50%) translateY(var(--fdy, 10px)) scale(0) rotate(-8deg); }
      45%  { transform: translateX(-50%) translateY(calc(var(--fdy, 10px) + 12px)) scale(1.12) rotate(4deg); }
      70%  { transform: translateX(-50%) translateY(var(--fdy, 10px)) scale(.96) rotate(-2deg); }
      100% { transform: translateX(-50%) translateY(var(--fdy, 10px)) scale(1) rotate(0deg); }
    }

    @keyframes mpop {
      from {
        opacity: 0;
        transform: scale(.94)
      }

      to {
        opacity: 1;
        transform: scale(1)
      }
    }

    .kcb .mcard .mx {
      position: absolute;
      top: 16px;
      right: 18px;
      font-size: 24px;
      color: #999;
      cursor: pointer;
      line-height: 1;
      z-index: 2
    }

    .kcb .mcard .mhd {
      display: flex;
      align-items: center;
      gap: 14px;
      padding: 22px 24px 16px;
      border-bottom: 1px solid #eee
    }

    .kcb .mcard .mthumb {
      width: 62px;
      height: 62px;
      border-radius: 50%;
      flex-shrink: 0;
      background: #fff center/82% no-repeat;
      border: 1px solid #eee
    }

    .kcb .mcard .mtt {
      display: flex;
      align-items: center;
      gap: 8px;
      flex-wrap: wrap
    }

    .kcb .mcard .mtt h3 {
      font-size: 22px;
      font-weight: 700
    }

    .kcb .mcard .mtt .mno {
      width: 26px;
      height: 26px;
      border-radius: 50%;
      background: var(--or);
      color: #fff;
      font-weight: 700;
      font-size: 12px;
      display: flex;
      align-items: center;
      justify-content: center
    }

    .kcb .mcard .mbody {
      padding: 16px 24px 6px
    }

    .kcb .mcard .mchips {
      display: flex;
      gap: 7px;
      margin-bottom: 14px
    }

    .kcb .mcard .mchip {
      font-size: 12px;
      font-weight: 700;
      border: 1px solid #ddd;
      border-radius: 20px;
      padding: 4px 12px;
      color: #555
    }

    .kcb .mcard .mdesc {
      font-size: 14.5px;
      line-height: var(--lh-body);
      color: #333
    }

    .kcb .mcard .maddr {
      background: #f7f7f7;
      border-radius: 12px;
      padding: 14px 16px;
      margin: 18px 0 6px;
      position: relative
    }

    .kcb .mcard .maddr .lab {
      font-size: 11px;
      font-weight: 700;
      color: #999;
      letter-spacing: .5px;
      margin-bottom: 6px
    }

    .kcb .mcard .maddr .val {
      font-size: 14.5px;
      font-weight: 600;
      color: #222;
      padding-right: 54px
    }

    .kcb .mcard .copybtn {
      position: absolute;
      top: 14px;
      right: 14px;
      font-size: 12px;
      border: 1px solid #ddd;
      background: #fff;
      border-radius: 7px;
      padding: 5px 9px;
      cursor: pointer;
      color: #555;
      font-weight: 600
    }

    .kcb .mcard .copybtn:hover {
      border-color: var(--or);
      color: var(--or)
    }

    .kcb .mcard .mmap {
      margin: 16px 0 4px;
      border: 1px solid #eee;
      border-radius: 14px;
      overflow: hidden
    }

    .kcb .mcard .mmaph {
      background: #43b649;
      color: #fff;
      font-size: 14px;
      font-weight: 700;
      padding: 12px 16px
    }

    .kcb .mcard .mmapb {
      display: flex;
      gap: 16px;
      padding: 18px 16px;
      align-items: center
    }

    .kcb .mcard .qrbox {
      width: 120px;
      height: 120px;
      flex-shrink: 0;
      background: #fff;
      border: 1px solid #eee;
      border-radius: 8px;
      padding: 6px;
      display: flex;
      align-items: center;
      justify-content: center
    }

    .kcb .mcard .qrbox svg {
      width: 100%;
      height: 100%;
      display: block
    }

    .kcb .mcard .qrtxt {
      flex: 1
    }

    .kcb .mcard .qrtxt .st {
      font-size: 13px;
      font-weight: 700;
      color: #333;
      margin-bottom: 6px;
      letter-spacing: .5px
    }

    .kcb .mcard .qrtxt p {
      font-size: 13px;
      color: #666;
      line-height: 1.5;
      margin-bottom: 12px
    }

    .kcb .mcard .qrbtns {
      display: flex;
      gap: 8px;
      flex-wrap: wrap
    }

    .kcb .mcard .qrbtns a {
      font-size: 12.5px;
      font-weight: 700;
      border-radius: 8px;
      padding: 7px 12px;
      cursor: pointer;
      border: 1px solid #f3c3a0;
      color: var(--or)
    }

    .kcb .mcard .qrbtns a.line {
      border-color: #ddd;
      color: #666
    }

    .kcb .mcard .qrbtns a:hover {
      background: #fff6f0
    }

    .kcb .mcard .mfoot {
      padding: 8px 24px 22px
    }

    .kcb .mcard .courseadd {
      width: 100%;
      border: none;
      border-radius: 12px;
      padding: 13px 0;
      font-weight: 700;
      font-size: 14px;
      cursor: pointer;
      background: var(--or);
      color: #fff
    }

    .kcb .mcard .courseadd.on {
      background: #fdeee4;
      color: #c8540f
    }

    /* ── 상단 핀 팝업 반전: y<14% (속초·연천) — 팝업이 핀 아래로 (2026-06-24) ── */
    .kcb .mhs-below .mhs-food {
      top: 50%;
      bottom: auto;
      transform: translateX(-50%) translateY(var(--fdy, 10px)) scale(0);
      transform-origin: 50% 0%;   /* 위쪽 중심 기준으로 팝업 */
    }
    .kcb .mhs-below.hl .mhs-food,
    .kcb .mhs-below:hover .mhs-food {
      transform: translateX(-50%) translateY(var(--fdy, 10px)) scale(1);
      opacity: 1;
      animation: foodPopBelow .55s cubic-bezier(.34,1.7,.5,1) both;
    }
    /* 캡션 꼬리: 아래 핀에선 이미지 위에 캡션 표시 (column-reverse) */
    .kcb .mhs-below .mhs-food {
      flex-direction: column-reverse;
    }
    .kcb .mhs-below .mhs-cap::before {
      top: auto;
      bottom: -7px;
      border-bottom: none;
      border-top: 7px solid #E53935;
    }
    .kcb .mhs-below .mhs-cap::after {
      top: auto;
      bottom: -4px;
      border-bottom: none;
      border-top: 5.5px solid #fff;
    }
