:root{
  --main:#8f75ef;
  --main-dark:#6e54d6;
  --deep:#20184f;
  --ink:#25233f;
  --benefit:#343146;
  --muted:#747086;
  --bg:#fbfaff;
  --surface:#ffffff;
  --soft:#f6f4ff;
  --soft2:#f8f7fc;
  --line:#e8e4f2;
  --new:#ff4d5e;
  --danger:#ff5d6c;
  --rose:#c2437f;
  --shadow:0 10px 26px rgba(32,24,79,.085);
}
*{box-sizing:border-box}
body{
  margin:0;
  font-family:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Pretendard","Noto Sans KR",Arial,sans-serif;
  background:var(--bg);
  color:var(--ink);
}
button,input,select,textarea{font:inherit}
button{border:0;cursor:pointer}
a{color:inherit;text-decoration:none}
.hidden{display:none!important}
.wrap{
  max-width:480px;
  min-height:100vh;
  min-height:100dvh;
  margin:0 auto;
  padding:12px 14px 86px;
  background:linear-gradient(180deg,#fff 0,#fbfaff 260px);
}
.topRegionWrap{
  position:relative;
  margin:0 0 5px;
}
.topRegionBtn{
  display:inline-flex;
  align-items:center;
  gap:4px;
  height:24px;
  padding:0 9px 0 8px;
  border-radius:999px;
  background:var(--soft);
  border:1px solid var(--line);
  color:var(--main-dark);
  font-size:11px;
  font-weight:1000;
}
.topRegionBtn .filterChevron{transition:transform .15s ease}
.topRegionBtn.open .filterChevron{transform:rotate(180deg)}
.topRegionMenu{
  position:absolute;
  top:calc(100% + 6px);
  left:0;
  min-width:150px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:14px;
  box-shadow:0 10px 24px rgba(32,24,79,.14);
  padding:6px;
  z-index:40;
}
.topRegionMenu button{
  display:block;
  width:100%;
  text-align:left;
  padding:9px 10px;
  border-radius:9px;
  font-size:13px;
  font-weight:800;
  color:var(--deep);
}
.topRegionMenu button.on{
  background:var(--soft);
  color:var(--main-dark);
}
.topRegionMenu button:not(.on):hover{background:var(--soft2)}
.headerRow{
  display:flex;
  align-items:center;
  gap:12px;
  margin:0 0 6px;
}
.brandLogo{
  width:96px;
  min-height:78px;
  margin:0;
  flex:0 0 auto;
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
}
.headerMeta{
  flex:1;
  min-width:0;
}
.brandLogo img{
  display:block;
  width:100%;
  height:auto;
  object-fit:contain;
}
.logoFallback{
  display:none;
  width:120px;
  height:64px;
  border-radius:18px;
  background:#fff;
  border:1px solid var(--line);
  box-shadow:var(--shadow);
  color:var(--deep);
  font-size:24px;
  font-weight:1000;
  letter-spacing:-1.5px;
  align-items:center;
  justify-content:center;
  text-align:center;
  line-height:1.05;
}
.logoFallback small{
  display:block;
  margin-top:2px;
  color:var(--main);
  font-size:9px;
  letter-spacing:3px;
}
.homeTagline{
  text-align:center;
  font-size:13.5px;
  font-weight:900;
  color:var(--deep);
  margin:0 0 8px;
  line-height:1.4;
}
.regionsCaption{
  text-align:center;
  font-size:11.5px;
  font-weight:800;
  color:var(--muted);
  margin:2px 0 6px;
}
.topMeta{
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-start;
  align-items:center;
  gap:5px 6px;
  text-align:left;
  font-size:11.5px;
  font-weight:600;
  color:var(--deep);
  margin:0 0 3px;
}
.topMeta b{
  color:var(--main);
  font-weight:1000;
}
.topMeta .dot{
  color:var(--line);
  font-weight:900;
}
.today{
  text-align:left;
  font-size:10.5px;
  color:var(--muted);
  font-weight:600;
  margin:0;
  line-height:1.4;
}
.searchRow{
  display:grid;
  grid-template-columns:1fr 52px;
  gap:8px;
  margin:4px 0 8px;
}
.searchRow input{
  -webkit-appearance:none;
  appearance:none;
  width:100%;
  height:44px;
  border:1px solid var(--line);
  border-radius:16px;
  padding:0 15px;
  background:#fff;
  box-shadow:var(--shadow);
  font-size:15px;
}
.searchRow button{
  -webkit-appearance:none;
  appearance:none;
  width:100%;
  height:44px;
  border-radius:16px;
  background:var(--main);
  color:#fff;
  font-weight:1000;
  font-size:18px;
}
.searchRow button:hover{background:var(--main-dark)}
.quick{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:8px;
  margin:6px 0;
}
.usageNotice{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  text-align:center;
  background:linear-gradient(135deg,var(--soft),#fff);
  border:1px solid var(--line);
  border-radius:13px;
  padding:10px 13px;
  margin:6px 0 8px;
  color:#111;
  font-size:12px;
  font-weight:800;
  box-shadow:0 2px 6px rgba(143,117,239,.10);
}
.usageNotice svg{flex:0 0 auto;color:var(--main)}
.tools{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:7px;
  margin:8px 0 10px;
}
.tools .primary{
  width:100%;
  height:50px;
  border-radius:15px;
  background:var(--main);
  color:#fff;
  border:1px solid var(--main);
  font-weight:1000;
  font-size:14.5px;
  box-shadow:0 10px 20px -8px rgba(143,117,239,.55);
}
.tools .primary:hover{background:var(--main-dark)}
.tools .ghost{
  height:auto;
  background:none;
  border:none;
  box-shadow:none;
  padding:2px 0 0;
  color:var(--muted);
  font-weight:700;
  font-size:12px;
  text-decoration:underline;
  text-underline-offset:3px;
}
.tabs{
  display:flex;
  gap:7px;
  overflow-x:auto;
  padding:3px 0 7px;
  margin:6px -2px;
}
.tabs button{
  flex:0 0 auto;
  padding:9px 13px;
  border-radius:999px;
  background:#fff;
  border:1px solid var(--line);
  color:var(--deep);
  font-size:13px;
  font-weight:1000;
}
.tabs button.on{
  background:var(--main);
  border-color:var(--main);
  color:#fff;
}
.subTabs{
  display:flex;
  gap:7px;
  overflow-x:auto;
  padding:0 0 10px;
}
.subTabs button{
  flex:0 0 auto;
  padding:8px 11px;
  border-radius:999px;
  background:#fff;
  border:1px solid var(--line);
  color:var(--deep);
  font-size:12px;
  font-weight:900;
}
.subTabs button.on{
  background:var(--deep);
  border-color:var(--deep);
  color:#fff;
}
.filterBar{
  display:flex;
  align-items:center;
  gap:7px;
  margin:4px 0 8px;
}
.filterToggleBtn{
  flex:1;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:6px;
  height:44px;
  border-radius:16px;
  padding:0 13px;
  background:#f1f2f7;
  border:1px solid var(--line);
  color:var(--deep);
  font-weight:1000;
  font-size:12px;
  text-align:left;
}
.filterToggleBtn span{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.filterToggleBtn .filterChevron{
  flex:0 0 auto;
  transition:transform .15s ease;
}
.filterToggleBtn.open .filterChevron{
  transform:rotate(180deg);
}
/* 검색창(searchRow)과 높이·둥근모서리를 맞춰서 두 줄이 나란히 정렬돼 보이게 한다.
   기존엔 위치아이콘 버튼(36px)과 "N곳" 텍스트가 따로 떨어져 있어 오른쪽 끝 폭이 줄마다 들쭉날쭉했는데,
   아이콘+숫자를 한 버튼 안에 묶어서 검색버튼처럼 하나의 고정폭 요소로 만든다. */
.nearIconBtn{
  flex:0 0 auto;
  display:flex;
  align-items:center;
  gap:4px;
  height:44px;
  padding:0 12px;
  border-radius:16px;
  background:#f1f2f7;
  border:1px solid var(--line);
  color:#111;
  font-size:11.5px;
  font-weight:800;
  white-space:nowrap;
}
.miniCount{
  flex:0 0 auto;
  font-size:11.5px;
  color:#111;
  font-weight:800;
  white-space:nowrap;
}
.nearStatus{
  font-size:11px;
  color:var(--muted);
  font-weight:600;
  margin:-3px 0 8px 2px;
}
.filterPanel{
  margin:0 0 4px;
  padding:8px 8px 2px;
  background:#f8f8fc;
  border:1px solid var(--line);
  border-radius:14px;
}
.sectionTitle{
  display:flex;
  justify-content:space-between;
  align-items:center;
  margin:14px 2px 9px;
}
.sectionTitle h2{
  margin:0;
  font-size:17px;
  color:var(--deep);
}
.sectionTitle span{
  font-size:12px;
  color:var(--muted);
  font-weight:700;
}
.grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:8px;
}
.card{
  background:#fff;
  border:1px solid var(--line);
  border-radius:14px;
  padding:8px 6px;
  /* 실제 매장명/혜택 데이터 기준 최대 길이(9자/10자)가 2줄씩이면 다 들어가길래
     162px는 과했다. 2줄+2줄에 맞춘 값으로 줄여서 세로로 쓸데없이 길어 보이지 않게 함. */
  height:134px;
  box-shadow:var(--shadow);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  text-align:center;
  position:relative;
  overflow:hidden;
}
.logoImg{
  width:42px;
  height:42px;
  border-radius:12px;
  background:#f7f5ff;
  border:1px solid var(--line);
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  font-size:20px;
  color:var(--main);
  margin-bottom:5px;
}
.logoImg img{
  width:100%;
  height:100%;
  object-fit:cover;
}
.card h3{
  margin:0;
  width:100%;
  color:var(--deep);
  font-size:12px;
  line-height:1.2;
  font-weight:1000;
  height:30px;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
  word-break:keep-all;
  overflow-wrap:break-word;
  white-space:normal;
}
.card p{
  margin:5px 0 0;
  width:100%;
  font-size:10.5px;
  color:var(--main-dark);
  background:var(--soft);
  border-radius:8px;
  padding:3px 6px;
  font-weight:900;
  line-height:1.25;
  height:35px;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
  word-break:keep-all;
  overflow-wrap:break-word;
  white-space:normal;
}
.card small{
  margin-top:auto;
  font-size:10px;
  color:var(--muted);
  font-weight:600;
}
.badge{
  position:absolute;
  top:6px;
  right:6px;
  background:var(--new);
  color:#fff;
  border-radius:999px;
  font-size:9px;
  font-weight:1000;
  padding:2px 5px;
  box-shadow:0 4px 10px rgba(255,77,94,.22);
}
.cardDist{
  position:absolute;
  top:6px;
  left:6px;
  background:var(--soft);
  color:var(--main-dark);
  border-radius:999px;
  font-size:9px;
  font-weight:900;
  padding:2px 6px;
}
.empty{
  grid-column:1/-1;
  min-height:120px;
  border:1px dashed var(--line);
  border-radius:16px;
  color:var(--muted);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:10px;
  text-align:center;
  font-weight:900;
  line-height:1.5;
  background:#fff;
  padding:18px;
}
.emptyResetBtn{
  font-weight:800;
  font-size:13px;
  color:#fff;
  background:var(--main-dark);
  padding:9px 16px;
  border-radius:999px;
}
.status{margin-top:16px}
.statusHero{
  display:flex;
  align-items:center;
  gap:13px;
  background:linear-gradient(135deg,var(--soft2),#fff);
  border:1px solid var(--line);
  border-radius:16px;
  padding:14px 16px;
  box-shadow:var(--shadow);
}
.statusHeroIcon{
  width:44px;
  height:44px;
  flex:0 0 auto;
  border-radius:13px;
  background:var(--main);
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
}
.statusHeroNum{
  font-size:22px;
  font-weight:1000;
  color:var(--deep);
  letter-spacing:-.2px;
}
.statusHeroNum b{
  color:var(--main-dark);
  font-size:24px;
  margin-right:2px;
}
.statusHeroLabel{
  font-size:12px;
  font-weight:600;
  color:var(--muted);
  margin-top:2px;
}
.footer{
  margin:18px 0 0;
  color:var(--muted);
  font-size:11px;
  text-align:center;
  line-height:1.5;
  font-weight:500;
}
.bottomNav{
  position:fixed;
  left:50%;
  bottom:0;
  transform:translateX(-50%);
  width:min(480px,100%);
  height:64px;
  background:#fff;
  border-top:1px solid var(--line);
  display:grid;
  grid-template-columns:repeat(4,1fr);
  z-index:20;
}
.bottomNav button{
  background:#fff;
  color:var(--deep);
  font-size:11px;
  font-weight:1000;
}
.bottomNav b{
  display:flex;
  align-items:center;
  justify-content:center;
  margin-bottom:3px;
}
.bottomNav svg{
  width:21px;
  height:21px;
  stroke:var(--deep);
}
.mapView{
  position:fixed;
  inset:0;
  z-index:70;
  background:#fff;
  display:flex;
  flex-direction:column;
}
.mapTopBar{
  display:flex;
  align-items:center;
  gap:10px;
  padding:12px 14px;
  border-bottom:1px solid var(--line);
}
.mapTopBar h2{
  margin:0;
  font-size:16px;
  color:var(--deep);
  flex:1;
}
.mapCatRow{
  display:flex;
  gap:6px;
  overflow-x:auto;
  padding:10px 14px;
  border-bottom:1px solid var(--line);
}
.mapCatRow button{
  flex:0 0 auto;
  padding:7px 13px;
  border-radius:999px;
  background:var(--soft);
  color:var(--deep);
  font-size:12px;
  font-weight:900;
  border:1px solid transparent;
}
.mapCatRow button.active{
  background:var(--main);
  color:#fff;
}
#kakaoMapContainer{
  flex:1;
  min-height:0;
  position:relative;
  background:var(--soft2);
}
#kakaoMapContainer .mapLoading{
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--muted);
  font-size:13px;
  font-weight:800;
}
.mapSheet{
  flex:0 0 auto;
  max-height:42vh;
  display:flex;
  flex-direction:column;
  border-top:1px solid var(--line);
  border-radius:18px 18px 0 0;
  box-shadow:0 -8px 20px rgba(32,24,79,.08);
  background:#fff;
  transition:max-height .22s ease;
  overflow:hidden;
}
.mapSheet.collapsed{
  max-height:60px;
}
.mapSheet.collapsed .mapListWrap{
  display:none;
}
.mapSheetHandle{
  width:36px;
  height:4px;
  border-radius:2px;
  background:var(--line);
  margin:8px auto 4px;
  touch-action:none;
  cursor:grab;
  position:relative;
}
.mapSheetHandle::before{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  width:64px;
  height:28px;
}
.mapSheetTabs{
  display:flex;
  gap:18px;
  padding:6px 16px 10px;
  border-bottom:1px solid var(--line);
}
.mapSheetTabs button{
  background:none;
  font-size:13px;
  font-weight:900;
  color:var(--muted);
  padding:4px 0;
}
.mapSheetTabs button.active{
  color:var(--deep);
  border-bottom:2px solid var(--main);
}
.mapListWrap{
  overflow-y:auto;
  padding:6px 14px 14px;
}
.mapListItem{
  display:flex;
  align-items:center;
  gap:8px;
  width:100%;
  padding:10px 4px;
  border-bottom:1px solid var(--soft2);
}
.mapListInfo{
  display:flex;
  align-items:center;
  gap:10px;
  flex:1;
  min-width:0;
  text-align:left;
  cursor:pointer;
}
.mapListNav{
  flex:0 0 auto;
  padding:7px 11px;
  border-radius:10px;
  background:var(--soft);
  color:var(--main-dark);
  font-size:11px;
  font-weight:900;
  white-space:nowrap;
}
.mapListItem .mapListLogo{
  width:42px;
  height:42px;
  border-radius:12px;
  background:var(--soft);
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:18px;
  color:var(--main);
  flex:0 0 auto;
  overflow:hidden;
}
.mapListItem .mapListLogo img{width:100%;height:100%;object-fit:cover}
.mapListItem .mapListText{flex:1;min-width:0}
.mapListItem .mapListText h4{
  margin:0 0 2px;
  font-size:13px;
  color:var(--deep);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.mapListItem .mapListText p{
  margin:0;
  font-size:12px;
  color:var(--muted);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.entryOverlay{
  position:fixed;
  inset:0;
  background:linear-gradient(160deg,#28b78d 0%,#1a8f6d 100%);
  z-index:90;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
}
.entryOverlay.already{
  background:linear-gradient(160deg,#8a8598 0%,#5f5a70 100%);
}
.entryCard{
  width:min(360px,100%);
  text-align:center;
  color:#fff;
}
.entryEmoji{
  font-size:56px;
  margin-bottom:8px;
}
.entryCard h2{
  margin:0 0 8px;
  font-size:24px;
  color:#fff;
}
.entryMsg{
  margin:0 0 22px;
  font-size:14px;
  font-weight:800;
  color:#e9e4ff;
  line-height:1.5;
}
.entryCodeLabel{
  font-size:12px;
  font-weight:900;
  color:#d9d0ff;
  letter-spacing:2px;
  margin-bottom:8px;
}
.entryCode{
  background:#fff;
  color:var(--deep);
  font-size:44px;
  font-weight:1000;
  letter-spacing:8px;
  border-radius:20px;
  padding:20px 10px;
  margin-bottom:28px;
  box-shadow:0 14px 34px rgba(0,0,0,.18);
}
.entryCloseBtn{
  width:100%;
  height:50px;
  border-radius:16px;
  background:#fff;
  color:#1a8f6d;
  font-weight:1000;
  font-size:15px;
}
.entryOverlay.already .entryCloseBtn{
  color:#5f5a70;
}
.entryCountNote{
  color:#d9d0ff;
  font-size:12px;
  font-weight:800;
  margin:0 0 14px;
}
.toast{
  position:fixed;
  left:50%;
  bottom:90px;
  transform:translateX(-50%) translateY(20px);
  max-width:min(420px,92vw);
  background:var(--deep);
  color:#fff;
  padding:14px 20px;
  border-radius:16px;
  font-size:14px;
  font-weight:900;
  text-align:center;
  box-shadow:0 14px 30px rgba(32,24,79,.28);
  z-index:95;
  opacity:0;
  pointer-events:none;
  transition:opacity .25s ease, transform .25s ease;
}
.toast.show{
  opacity:1;
  transform:translateX(-50%) translateY(0);
}
.toast.error{
  background:var(--danger);
}
.modal{
  position:fixed;
  inset:0;
  background:rgba(31,24,70,.42);
  z-index:85;
  display:flex;
  align-items:flex-end;
  justify-content:center;
}
.sheet{
  width:min(480px,100%);
  max-height:88vh;
  overflow:auto;
  background:#fff;
  border-radius:24px 24px 0 0;
  padding:18px;
}
.sheetHead{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:12px;
  margin-bottom:12px;
}
.sheetHead h2{
  margin:0;
  color:var(--deep);
  font-size:19px;
}
.privacyDoc{
  font-size:13.5px;
  line-height:1.8;
  color:#3a3550;
  font-weight:500;
}
.privacyDoc p{
  margin:0 0 14px;
}
.privacyDoc h3{
  margin:22px 0 8px;
  font-size:14.5px;
  font-weight:800;
  color:var(--deep);
  line-height:1.4;
}
.privacyDoc h3:first-child{
  margin-top:0;
}
.privacyDoc ul{
  margin:0 0 14px;
  padding-left:18px;
}
.privacyDoc li{
  margin-bottom:7px;
}

.close{
  width:36px;
  height:36px;
  border-radius:50%;
  background:#f1f2f7;
  color:var(--deep);
  font-size:20px;
  font-weight:1000;
}
.detailLogo{
  width:54px;
  height:54px;
  border-radius:14px;
  background:#f7f5ff;
  border:1px solid var(--line);
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  font-size:24px;
  color:var(--main);
  margin-bottom:8px;
}
.detailLogo img{
  width:100%;
  height:100%;
  object-fit:cover;
}
.detailCategoryTag{
  margin-top:4px;
  color:var(--main-dark);
  font-size:12px;
  font-weight:800;
}
.detailInfoCard{
  display:grid;
  gap:8px;
  margin:12px 0 0;
  padding:12px 14px;
  background:var(--soft);
  border-radius:14px;
  color:#4a4460;
  font-size:12.5px;
  font-weight:800;
}
.detailInfoCard div{
  display:flex;
  align-items:center;
  gap:8px;
}
.detailInfoCard .metaIcon{
  flex:0 0 auto;
  width:22px;
  height:22px;
  border-radius:50%;
  background:#fff;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color:var(--main-dark);
}
.photoGallery{
  display:flex;
  gap:8px;
  overflow-x:auto;
  margin:12px 0 0;
  padding-bottom:2px;
}
.photoGalleryItem{
  flex:0 0 auto;
  width:108px;
  height:108px;
  border-radius:14px;
  overflow:hidden;
  border:1px solid var(--line);
  background:#f7f5ff;
  cursor:pointer;
}
.photoLightbox{
  position:fixed;
  inset:0;
  background:rgba(10,8,25,.92);
  z-index:130;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
}
.photoLightbox.hidden{
  display:none;
}
.photoLightbox img{
  max-width:100%;
  max-height:100%;
  border-radius:12px;
  object-fit:contain;
}
.photoLightbox .close{
  position:absolute;
  top:16px;
  right:16px;
  background:rgba(255,255,255,.92);
}
.photoGalleryItem img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.usageCaption{
  text-align:center;
  font-size:11px;
  font-weight:700;
  color:var(--main-dark);
  margin:5px 0 0;
}
.couponBox{
  background:#fff;
  border:1px solid var(--line);
  border-radius:16px;
  margin:14px 0;
  box-shadow:0 1px 2px rgba(32,24,79,.04),0 10px 24px -8px rgba(32,24,79,.12);
}
.couponBox-label{
  display:flex;
  align-items:center;
  gap:6px;
  background:linear-gradient(135deg,var(--main),var(--main-dark));
  border-radius:16px 16px 0 0;
  padding:10px 14px;
}
.couponBox-labelIcon{
  display:inline-flex;
  align-items:center;
  color:#fff;
  opacity:.9;
}
.couponBox-label b{
  font-size:11.5px;
  font-weight:800;
  color:#fff;
  letter-spacing:.4px;
}
.couponBox-usage{
  margin-left:auto;
  font-size:10.5px;
  font-weight:800;
  color:#fff;
  opacity:.85;
}
.couponBox-notch{
  position:relative;
  height:0;
  border-top:1.5px dashed #cfc2f2;
}
.couponBox-notch::before,.couponBox-notch::after{
  content:"";
  position:absolute;
  top:-12px;
  width:24px;
  height:24px;
  border-radius:50%;
  background:#fff;
}
.couponBox-notch::before{left:-12px}
.couponBox-notch::after{right:-12px}
.couponBox-body{
  border-radius:0 0 16px 16px;
  padding:13px 14px 15px;
}
.couponBox-body strong{
  display:block;
  color:var(--deep);
  font-size:19px;
  font-weight:800;
  letter-spacing:-.3px;
  margin-bottom:5px;
}
.couponBox-body span{
  font-size:12.5px;
  font-weight:600;
  color:#8a84a3;
}
.actionGrid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:8px;
  margin-top:12px;
}
.actionGrid button,.actionGrid a{
  height:42px;
  border-radius:14px;
  background:#f1f2f7;
  color:var(--deep);
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight:1000;
  font-size:13px;
}
.actionGrid .use{
  background:var(--main);
  color:#fff;
}
.primaryActionRow{margin-top:10px}
.primaryActionRow .use{
  width:100%;
  height:46px;
  border-radius:15px;
  background:var(--main);
  color:#fff;
  font-weight:1000;
  font-size:15px;
}
.primaryActionRow .use:hover{background:var(--main-dark)}
.quickActionRow{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(130px,1fr));
  gap:8px;
  margin-top:8px;
}
.quickActionRow a{
  height:44px;
  border-radius:14px;
  background:#f1f2f7;
  color:var(--deep);
  display:flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  font-weight:1000;
  font-size:14px;
}
.quickActionRow .callBtn{
  background:#e6f8ee;
  color:#0b8c53;
}
.quickActionRow .mapBtn{
  background:#f1f2f7;
  color:var(--deep);
}
.snsRow{
  display:flex;
  flex-wrap:wrap;
  gap:9px;
  margin-top:10px;
}
.detailDescription{
  margin:12px 0 0;
  padding-top:12px;
  border-top:1px solid var(--line);
  line-height:1.55;
  color:#57506f;
  font-weight:600;
  font-size:13px;
}
.snsIcon{
  width:42px;
  height:42px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  background:var(--soft);
  color:var(--deep);
  flex:0 0 auto;
}
.snsIcon svg{display:block}
.sns-instagram{background:linear-gradient(135deg,#f9ce34,#ee2a7b 55%,#6228d7);color:#fff}
.sns-tiktok{background:#111;color:#fff}
.sns-youtube{background:#ff2d2d;color:#fff}
.sns-blog{background:#03c75a;color:#fff}
.sns-smartstore{background:#2db400;color:#fff}
.sns-reservation{background:var(--main);color:#fff}
.freeSlotBanner{
  background:var(--soft);
  border:1px solid var(--line);
  border-radius:14px;
  padding:11px 14px;
  margin-bottom:12px;
  font-size:13px;
  font-weight:900;
  color:var(--deep);
  text-align:center;
}
.freeSlotBanner b{color:var(--main)}
.freeSlotBanner-sub{
  display:block;
  margin-top:4px;
  font-size:11.5px;
  font-weight:700;
  color:var(--muted);
}
.freeSlotBanner.full{
  background:#fff0f1;
  border-color:#ffd7da;
  color:#c22f3d;
}
.freeSlotBanner.full .freeSlotBanner-sub{
  color:#c22f3d;
  opacity:.72;
}
.valueBubbleWrap{
  margin-bottom:14px;
}
.valueBubble{
  position:relative;
  background:var(--soft);
  border:1px solid var(--line);
  border-radius:16px;
  border-bottom-left-radius:4px;
  padding:12px 14px;
  text-align:left;
}
.valueBubbleTitle{
  font-size:12px;
  font-weight:1000;
  color:var(--main-dark);
  margin-bottom:6px;
}
.valueBubbleBody{
  font-size:12px;
  font-weight:800;
  color:var(--ink);
  line-height:1.6;
}
.valueBubbleBody b{color:var(--main-dark)}
.valueBubbleNote{
  margin-top:8px;
  font-size:10.5px;
  font-weight:700;
  color:var(--muted);
}
.valueBubbleNote-sub{
  display:block;
  margin-top:2px;
}
.valueBubbleList{
  margin:10px 0 0;
  padding:8px 0 0;
  border-top:1px dashed var(--line);
  list-style:none;
  display:flex;
  flex-direction:column;
  gap:7px;
}
.valueBubbleList li{
  display:flex;
  align-items:flex-start;
  gap:6px;
  font-size:11px;
  font-weight:800;
  color:var(--deep);
  line-height:1.45;
}
.valueBubbleList b{color:var(--main-dark)}
.valueBubbleIcon{flex:0 0 auto;display:inline-flex;align-items:center;color:var(--main-dark);margin-top:1px}
.valueBubbleTitleIcon{display:inline-flex;align-items:center;color:var(--main-dark);margin-right:5px;vertical-align:-3px}
.valueBubbleText{flex:1;min-width:0}
.valueBubbleTail{
  position:absolute;
  left:14px;
  bottom:-7px;
  width:14px;
  height:14px;
  background:var(--soft);
  border-right:1px solid var(--line);
  border-bottom:1px solid var(--line);
  transform:rotate(45deg);
  border-bottom-right-radius:3px;
}
.formGrid{
  display:grid;
  gap:8px;
}
.formGrid input,.formGrid textarea,.formGrid select{
  width:100%;
  border:1px solid var(--line);
  border-radius:14px;
  padding:12px;
  font:inherit;
  color:var(--ink);
  background:#fff;
}
.formGrid select{
  -webkit-appearance:none;
  -moz-appearance:none;
  appearance:none;
  padding-right:34px;
  background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="12" height="8" viewBox="0 0 12 8"><path d="M1 1L6 6L11 1" stroke="%23747086" stroke-width="1.6" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>');
  background-repeat:no-repeat;
  background-position:right 14px center;
}
.formGrid textarea{
  min-height:90px;
  resize:vertical;
}
.formGrid button{
  height:46px;
  border-radius:14px;
  background:var(--main);
  color:#fff;
  font-weight:1000;
}
@media(max-width:390px){
  .wrap{padding-left:10px;padding-right:10px}
  .grid{gap:6px}
  .card{height:130px;padding:7px 4px}
  .logoImg{width:38px;height:38px}
  .card h3{font-size:11px;height:28px}
  .card p{font-size:10px;height:33px}
}
.printQrPage{
  min-height:100vh;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:14px;
  padding:30px 20px;
  text-align:center;
}
.printQrPage .printQrLogo{
  font-size:14px;
  font-weight:1000;
  color:var(--muted);
  letter-spacing:1px;
}
.printQrPage h1{
  margin:0;
  font-size:24px;
  color:var(--deep);
}
.printQrPage .printQrCanvas{
  padding:16px;
  background:#fff;
  border:2px solid var(--deep);
  border-radius:16px;
}
.printQrPage .printQrCaption{
  font-size:15px;
  font-weight:900;
  color:var(--ink);
}
.printQrPage .printQrCode{
  font-size:13px;
  font-weight:900;
  color:var(--muted);
  letter-spacing:2px;
}
.printQrPage .printBtn{
  margin-top:10px;
  height:46px;
  padding:0 24px;
  border-radius:14px;
  background:var(--main);
  color:#fff;
  font-weight:1000;
  border:0;
}
@media print{
  .printQrPage .printBtn,.printQrPage .printQrLogo{display:none}
  .printQrPage{padding:0}
}

/* ===== 홈(배너+카테고리 그리드) / 리스트(검색+매장목록) 화면 분리 ===== */
.bannerCarousel{
  display:flex;
  align-items:flex-start; /* 슬라이드마다 높이가 달라도 서로 늘려 잡아 잘리는 일이 없도록 */
  gap:12px;
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  padding-bottom:4px;
  margin:14px 0 4px;
  -webkit-overflow-scrolling:touch;
}
.bannerCarousel::-webkit-scrollbar{display:none}
.bannerSlide{
  position:relative;
  flex:0 0 100%;
  scroll-snap-align:start;
  background:
    radial-gradient(120% 140% at 100% -20%, rgba(255,255,255,.22), rgba(255,255,255,0) 55%),
    radial-gradient(90% 110% at -10% 120%, rgba(255,255,255,.14), rgba(255,255,255,0) 55%),
    linear-gradient(135deg,var(--main) 0%,var(--main-dark) 100%);
  border-radius:22px;
  padding:22px 24px;
  color:#fff;
  cursor:pointer;
  /* 그림자를 넣으면 카드 밖 흰 배경에 보라색이 번지는 글로우 느낌이 나서(다른 여백과 톤이
     달라 보임) 아예 제거. 카드는 배경과 완전히 분리된 평평한 카드로만 보이게 한다. */
  display:flex;
  flex-direction:column;
  justify-content:center;
  min-height:132px;
  box-sizing:border-box;
}
.bannerSlideImg{aspect-ratio:2.8/1;overflow:hidden}
.bannerSlideStat{aspect-ratio:2.8/1;min-height:0;padding:16px 18px}
/* 장식용 원은 모서리 반경(22px)보다 충분히 안쪽에 위치시켜, overflow:hidden 없이도
   둥근 모서리 밖으로 삐져나오지 않도록 함(갤럭시 등 일부 기기의 overflow:hidden 텍스트 잘림 문제 회피). */
.bannerSlide::after{
  content:"";
  position:absolute;
  right:26px;
  bottom:26px;
  width:64px;
  height:64px;
  border-radius:50%;
  background:rgba(255,255,255,.08);
  pointer-events:none;
  z-index:0;
}
.bannerStatCol,.bannerStatNumWrap,.bannerTitle,.bannerSub,.bannerCta{position:relative;z-index:1}
.bannerSlideImg{
  background-size:cover;
  background-position:center;
  background-repeat:no-repeat;
  padding:0;
  position:relative;
}
.bannerLiveCount{
  position:absolute;
  left:82.4%;
  top:46.7%;
  transform:translate(-50%,-50%);
  font-weight:900;
  color:var(--main-dark);
  font-size:24px; /* syncBannerLiveCountSize()가 실제 렌더링 폭 기준으로 즉시 덮어씀 */
  line-height:1;
  pointer-events:none;
  white-space:nowrap;
}
/* 선착순 잔여 자리를 큰 숫자로 강조하는 텍스트 배너 전용 레이아웃 */
.bannerSlideStat{
  flex-direction:row !important;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.bannerStatCol{min-width:0;flex:1 1 auto}
.bannerUrgencyTag{
  display:inline-flex;
  align-items:center;
  gap:4px;
  font-size:9.5px;
  font-weight:900;
  color:#7a3d00;
  background:#ffd35c;
  padding:3px 8px;
  border-radius:999px;
  margin-bottom:5px;
}
.bannerUrgencyTag::before{
  content:"";
  width:6px;
  height:6px;
  border-radius:50%;
  background:#e2472e;
}
.bannerSlideStat .bannerTitle{font-size:16.5px;margin-bottom:3px}
.bannerSlideStat .bannerSub{opacity:.9;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bannerSlideStat .bannerCta{margin-top:7px;padding:5px 11px;font-size:10.5px}
.bannerStatNumWrap{
  flex:0 0 auto;
  text-align:center;
  background:rgba(255,255,255,.14);
  border:1px solid rgba(255,255,255,.28);
  border-radius:14px;
  padding:7px 11px;
  backdrop-filter:blur(2px);
}
.bannerStatNum{
  font-size:24px;
  font-weight:900;
  color:#fff;
  line-height:1;
  white-space:nowrap;
}
.bannerStatCap{font-size:10px;font-weight:700;color:rgba(255,255,255,.75);margin-left:1px}
.bannerStatLabel{font-size:9.5px;font-weight:800;color:rgba(255,255,255,.85);margin-top:2px;white-space:nowrap}
.bannerDots{
  display:flex;
  justify-content:center;
  gap:6px;
  margin:2px 0 4px;
}
.bannerDot{
  width:6px;
  height:6px;
  border-radius:50%;
  background:#d3caea;
  transition:background .2s,width .2s;
}
.bannerDot.on{
  background:var(--main-dark);
  width:16px;
  border-radius:4px;
}
.bannerTitle{font-size:19px;font-weight:900;line-height:1.35;margin-bottom:7px;letter-spacing:-.2px;position:relative}
.bannerSub{font-size:12.5px;font-weight:700;color:rgba(255,255,255,.88);line-height:1.55;position:relative}
.bannerCta{
  margin-top:14px;
  display:inline-flex;
  align-items:center;
  gap:5px;
  width:fit-content;
  font-size:12.5px;
  font-weight:900;
  color:var(--main-dark);
  background:#fff;
  padding:8px 14px;
  border-radius:999px;
  box-shadow:0 4px 10px rgba(36,26,77,.18);
  position:relative;
}
.homeCatToggleBtn{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:6px;
  width:100%;
  height:38px;
  border-radius:13px;
  padding:0 13px;
  background:linear-gradient(135deg,var(--soft),#fff);
  border:1px solid var(--line);
  color:var(--main-dark);
  font-weight:1000;
  font-size:12.5px;
  margin:18px 0 0;
  box-shadow:0 2px 6px rgba(143,117,239,.10);
}
.homeCatToggleLeft{
  display:flex;
  align-items:center;
  gap:7px;
  color:var(--main);
}
.homeCatToggleLeft #homeCatToggleLabel{
  color:var(--main-dark);
}
.homeCatToggleBtn .filterChevron{
  flex:0 0 auto;
  transition:transform .15s ease;
}
.homeCatToggleBtn.open .filterChevron{
  transform:rotate(180deg);
}
.homeChipsRow{
  display:flex;
  gap:7px;
  overflow-x:auto;
  padding:2px 2px 4px;
  margin:8px -2px 4px;
  scrollbar-width:none;
}
.homeChipsRow::-webkit-scrollbar{display:none}
.homeChip{
  flex:0 0 auto;
  display:flex;
  align-items:center;
  gap:5px;
  padding:8px 14px;
  border-radius:999px;
  background:#fff;
  border:1px solid var(--line);
  color:var(--deep);
  font-size:12.5px;
  font-weight:900;
  white-space:nowrap;
}
.homeChip svg{width:14px;height:14px;flex:0 0 auto}
.homeChip.on{
  background:linear-gradient(135deg,var(--main),var(--main-dark));
  border-color:transparent;
  color:#fff;
  box-shadow:0 6px 14px rgba(110,84,214,.28);
}
.homeFeedHead{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  margin:14px 2px 8px;
}
.homeFeedHead h2{
  margin:0;
  font-size:15.5px;
  font-weight:1000;
  color:var(--deep);
}
.homeFeedCount{font-size:11.5px;color:var(--muted);font-weight:700}
.homeFeed{
  display:flex;
  flex-direction:column;
  gap:8px;
  /* 매장이 늘어나도 홈 화면 전체가 끝없이 길어지지 않도록, 모바일 기준 약 5칸 높이로 제한하고
     그 안에서만 세로 스크롤(드래그)되게 한다. 전체 목록은 아래 "더보기"에서 별도 리스트뷰로 볼 수 있다.
     touch-action:pan-y는 일부 모바일 브라우저(특히 PWA/standalone 모드)에서 중첩 스크롤 영역의
     터치 제스처가 상위 페이지로 새 버리고 내부는 안 긁히던 문제의 표준적인 해결책이라 명시적으로 지정. */
  max-height:410px;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
  touch-action:pan-y;
  scrollbar-width:thin;
  padding-right:2px;
}
.feedRow{
  display:flex;
  align-items:center;
  gap:11px;
  width:100%;
  background:#fff;
  border:1px solid var(--line);
  border-radius:16px;
  padding:10px 12px;
  box-shadow:var(--shadow);
  text-align:left;
}
.feedThumb{
  flex:0 0 auto;
  width:54px;
  height:54px;
  border-radius:14px;
  background:#f7f5ff;
  border:1px solid var(--line);
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  font-size:22px;
  color:var(--main);
}
.feedThumb img{width:100%;height:100%;object-fit:cover}
.feedBody{flex:1;min-width:0}
.feedTopLine{display:flex;align-items:center;gap:6px;margin-bottom:3px}
.feedName{
  flex:0 1 auto;
  min-width:0;
  font-size:13.5px;
  font-weight:1000;
  color:var(--deep);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.feedNewTag{
  flex:0 0 auto;
  background:var(--new);
  color:#fff;
  font-size:9px;
  font-weight:1000;
  padding:2px 6px;
  border-radius:999px;
}
.feedBenefitRow{
  display:flex;
  align-items:center;
  gap:7px;
  margin-top:4px;
  min-width:0;
}
.feedBenefit{
  flex:1 1 0%;
  min-width:0;
  font-size:13.5px;
  font-weight:900;
  color:var(--main-dark);
  background:var(--soft);
  border-radius:8px;
  padding:5px 10px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.feedCategoryLine{
  flex:0 0 58px;
  min-width:0;
  font-size:10.5px;
  color:var(--muted);
  font-weight:600;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  text-align:right;
}
.feedCta{
  flex:0 0 auto;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:4px;
}
.feedCtaIcon{
  width:32px;
  height:32px;
  border-radius:50%;
  background:linear-gradient(135deg,var(--main),var(--main-dark));
  display:flex;
  align-items:center;
  justify-content:center;
  box-shadow:0 3px 8px rgba(143,117,239,.35);
}
.feedCtaLabel{
  font-size:9.5px;
  font-weight:900;
  color:var(--main-dark);
  white-space:nowrap;
}
.homeFeedEmpty{
  background:#fff;
  border:1px dashed var(--line);
  border-radius:16px;
  padding:24px 14px;
  text-align:center;
  color:var(--muted);
  font-size:12.5px;
  font-weight:700;
  line-height:1.6;
}
.homeFeedMore{
  display:block;
  width:100%;
  margin-top:10px;
  padding:12px;
  border-radius:14px;
  background:var(--soft);
  color:var(--main-dark);
  font-size:12.5px;
  font-weight:900;
  text-align:center;
}
.appLoadingOverlay{
  position:fixed;
  inset:0;
  background:var(--bg);
  z-index:80;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:opacity .25s ease;
}
.appLoadingOverlay.hide{
  opacity:0;
  pointer-events:none;
}
.appLoadingLogo{
  width:64px;
  height:64px;
  object-fit:contain;
  animation:appLoadingPulse 1.1s ease-in-out infinite;
}
@keyframes appLoadingPulse{
  0%,100%{opacity:1;transform:scale(1)}
  50%{opacity:.5;transform:scale(.9)}
}
.toolsCaption{
  margin:0;
  font-size:11px;
  color:var(--muted);
  text-align:center;
}
.guideSheet{
  padding-bottom:22px;
}
.guideIntro{
  margin:0 0 18px;
  font-size:13.5px;
  color:var(--muted);
  font-weight:700;
}
.guideSteps{
  display:flex;
  flex-direction:column;
  gap:16px;
  margin-bottom:22px;
}
.guideStep{
  position:relative;
  display:flex;
  gap:14px;
  align-items:flex-start;
}
.guideStep:not(:last-child)::before{
  content:"";
  position:absolute;
  left:21px;
  top:44px;
  width:2px;
  height:16px;
  background:var(--line);
}
.guideStepIcon{
  flex:0 0 auto;
  width:44px;
  height:44px;
  border-radius:14px;
  background:linear-gradient(135deg,var(--main),var(--main-dark));
  display:flex;
  align-items:center;
  justify-content:center;
  box-shadow:0 4px 12px rgba(143,117,239,.32);
}
.guideStepBody{
  flex:1;
  min-width:0;
  padding-top:2px;
}
.guideStepNum{
  font-size:10.5px;
  font-weight:900;
  color:var(--main-dark);
  letter-spacing:1.2px;
  margin-bottom:3px;
}
.guideStepBody h3{
  margin:0 0 4px;
  font-size:15px;
  color:var(--deep);
}
.guideStepBody p{
  margin:0;
  font-size:12.5px;
  line-height:1.55;
  color:#57506f;
  font-weight:600;
}
.guideStartBtn{
  width:100%;
  height:50px;
  border-radius:16px;
  background:linear-gradient(135deg,var(--main),var(--main-dark));
  color:#fff;
  font-weight:900;
  font-size:15px;
  box-shadow:0 10px 24px rgba(143,117,239,.35);
}

/* ===== 카카오 간편로그인 (선택적 혜택) — 2026-08 추가 ===== */
.authArea{display:flex;justify-content:flex-end;align-items:center;margin-bottom:6px}
.kakaoLoginBtn{display:inline-flex;align-items:center;gap:6px;background:#FEE500;color:#191600;border:none;border-radius:999px;padding:6px 12px;font-size:12.5px;font-weight:800;cursor:pointer;line-height:1;box-shadow:0 1px 3px rgba(0,0,0,.12)}
.kakaoLoginBtn svg{width:15px;height:15px}
.kakaoLoginBtn:active{transform:translateY(1px)}
.userChip{display:inline-flex;align-items:center;gap:8px}
.userChip .uName{font-size:12.5px;font-weight:800;color:#3a3357;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.userChip .uLogout{background:#efeaf9;color:#6b5fb0;border:none;border-radius:999px;padding:5px 10px;font-size:11.5px;font-weight:800;cursor:pointer}
.userChip .uLogout:active{transform:translateY(1px)}

/* ============ 5-탭 하단 네비 + 마이홈/찜/제안 대개편 (2026-08) ============ */
.bottomNav.nav5{grid-template-columns:repeat(5,1fr);height:62px}
.bottomNav .navItem{background:#fff;border:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:10.5px;font-weight:900;color:#9a93b5;cursor:pointer;padding:0;position:relative}
.bottomNav .navItem svg{width:22px;height:22px;stroke:#9a93b5;fill:none}
.bottomNav .navItem.active{color:var(--brand,#8f75ef)}
.bottomNav .navItem.active svg{stroke:var(--brand,#8f75ef)}
.bottomNav .navCenter{justify-content:flex-end;padding-bottom:7px}
.bottomNav .navCenterBtn{position:absolute;top:-20px;left:50%;transform:translateX(-50%);width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#a58bff,#8f75ef);box-shadow:0 8px 18px rgba(143,117,239,.42);display:flex;align-items:center;justify-content:center;border:4px solid #fff}
.bottomNav .navCenterBtn svg{width:25px;height:25px;stroke:#fff}
.bottomNav .navCenter.active .navCenterBtn{background:linear-gradient(135deg,#8f75ef,#7457e0)}

/* 전체화면 오버레이(찜/마이홈/제안) — 하단바는 위에 그대로 보임 */
.sheetView{position:fixed;left:50%;transform:translateX(-50%);top:0;bottom:62px;width:min(480px,100%);background:var(--bg,#f6f4fc);z-index:15;overflow-y:auto;-webkit-overflow-scrolling:touch}
.sheetView.hidden{display:none}
.sheetViewHead{position:sticky;top:0;background:var(--bg,#f6f4fc);padding:18px 18px 10px;z-index:2;border-bottom:1px solid rgba(0,0,0,.03)}
.sheetViewHead h2{font-size:20px;font-weight:1000;margin:0;color:var(--deep,#2b2545)}
.sheetViewHead .svSub{font-size:12px;color:var(--muted,#6b6483);font-weight:700;margin-top:3px}
.sheetViewBody{padding:14px 16px 26px}

/* 매장 상세 찜 하트 */
.favHeartBtn{background:#f3eefe;border:none;width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;margin-right:8px;color:#b9aee8}
.favHeartBtn svg{width:20px;height:20px;stroke:currentColor}
.favHeartBtn.on{color:#8f75ef;background:#efe8ff}
.favHeartBtn.on svg{fill:#8f75ef;stroke:#8f75ef}

/* 마이홈 */
.mhProfile{display:flex;align-items:center;gap:14px;background:linear-gradient(135deg,#8f75ef,#7457e0);color:#fff;border-radius:20px;padding:20px 18px;margin-bottom:14px;box-shadow:0 8px 22px rgba(143,117,239,.28)}
.mhAvatar{width:58px;height:58px;border-radius:50%;background:rgba(255,255,255,.22);display:flex;align-items:center;justify-content:center;overflow:hidden;flex:0 0 auto;font-size:24px;font-weight:900}
.mhAvatar img{width:100%;height:100%;object-fit:cover}
.mhName{font-size:18px;font-weight:1000;line-height:1.2}
.mhEmail{font-size:12px;opacity:.85;font-weight:700;margin-top:3px;max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mhStats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}
.mhTile{background:#fff;border:1px solid var(--line,#e8e3f5);border-radius:16px;padding:15px;text-align:center}
.mhTile b{display:block;font-size:22px;font-weight:1000;color:var(--brand,#8f75ef)}
.mhTile span{font-size:12px;color:var(--muted,#6b6483);font-weight:800}
.mhSection{margin-bottom:18px}
.mhSectionHead{display:flex;align-items:center;justify-content:space-between;margin:0 2px 9px}
.mhSectionHead h3{font-size:14.5px;font-weight:1000;margin:0;color:var(--deep,#2b2545)}
.mhSectionHead a{font-size:12px;color:var(--brand,#8f75ef);font-weight:900;text-decoration:none;cursor:pointer}
.mhList{background:#fff;border:1px solid var(--line,#e8e3f5);border-radius:16px;overflow:hidden}
.mhRow{display:flex;align-items:center;gap:11px;padding:13px 14px;border-bottom:1px solid #f1edfa;cursor:pointer}
.mhRow:last-child{border-bottom:none}
.mhRowThumb{width:42px;height:42px;border-radius:11px;background:#f3eefe;display:flex;align-items:center;justify-content:center;overflow:hidden;flex:0 0 auto;font-size:18px}
.mhRowThumb img{width:100%;height:100%;object-fit:cover}
.mhRowBody{flex:1;min-width:0}
.mhRowBody b{display:block;font-size:14px;font-weight:900;color:var(--deep,#2b2545);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mhRowBody span{font-size:12px;color:var(--muted,#6b6483);font-weight:700}
.mhRowMeta{font-size:11.5px;color:#a49ec0;font-weight:800;flex:0 0 auto}
.mhEmpty{background:#fff;border:1px dashed var(--line,#e8e3f5);border-radius:16px;padding:26px 16px;text-align:center;color:var(--muted,#6b6483);font-weight:800;font-size:13px;line-height:1.6}
.mhShortcuts{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:18px}
.mhShortcut{background:#fff;border:1px solid var(--line,#e8e3f5);border-radius:16px;padding:16px 12px;text-align:center;cursor:pointer;font-weight:900;font-size:13px;color:var(--deep,#2b2545)}
.mhShortcut .ic{font-size:22px;display:block;margin-bottom:6px}
.mhSettings{background:#fff;border:1px solid var(--line,#e8e3f5);border-radius:16px;overflow:hidden;margin-bottom:16px}
.mhSettings button{width:100%;text-align:left;background:#fff;border:none;border-bottom:1px solid #f1edfa;padding:14px 15px;font-size:13.5px;font-weight:800;color:var(--deep,#2b2545);cursor:pointer}
.mhSettings button:last-child{border-bottom:none}
.mhSettings button.danger{color:#c0392b}

/* 로그인 유도 카드(마이홈/찜 비로그인) */
.mhLoginCard{background:#fff;border:1px solid var(--line,#e8e3f5);border-radius:20px;padding:26px 20px;text-align:center;margin-bottom:16px}
.mhLoginCard h3{font-size:17px;font-weight:1000;margin:0 0 6px;color:var(--deep,#2b2545)}
.mhLoginCard p{font-size:13px;color:var(--muted,#6b6483);font-weight:700;line-height:1.6;margin:0 0 16px}

/* 찜 목록 카드 */
.favGrid{display:flex;flex-direction:column;gap:10px}
.favCard{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line,#e8e3f5);border-radius:16px;padding:12px 14px}
.favCard .favThumb{width:48px;height:48px;border-radius:12px;background:#f3eefe;display:flex;align-items:center;justify-content:center;overflow:hidden;flex:0 0 auto;font-size:20px}
.favCard .favThumb img{width:100%;height:100%;object-fit:cover}
.favCard .favBody{flex:1;min-width:0;cursor:pointer}
.favCard .favBody b{display:block;font-size:14.5px;font-weight:900;color:var(--deep,#2b2545);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.favCard .favBody span{font-size:12.5px;color:var(--brand,#8f75ef);font-weight:800}
.favCard .favRemove{background:#efe8ff;border:none;width:36px;height:36px;border-radius:50%;color:#8f75ef;cursor:pointer;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.favCard .favRemove svg{width:19px;height:19px;fill:#8f75ef;stroke:#8f75ef}

/* 제안/입점 페이지 */
.proposeCard{background:#fff;border:1px solid var(--line,#e8e3f5);border-radius:20px;padding:22px 20px;margin-bottom:14px;box-shadow:0 4px 16px rgba(90,70,180,.05)}
.proposeCard .pIcon{font-size:30px;margin-bottom:10px}
.proposeCard h3{font-size:17px;font-weight:1000;margin:0 0 6px;color:var(--deep,#2b2545)}
.proposeCard p{font-size:13px;color:var(--muted,#6b6483);font-weight:700;line-height:1.65;margin:0 0 16px}
.proposeCard button{width:100%;border:none;border-radius:14px;padding:14px;font-size:14.5px;font-weight:900;cursor:pointer}
.proposeCard .pPrimary{background:linear-gradient(135deg,#8f75ef,#7457e0);color:#fff}
.proposeCard .pGhost{background:#f3eefe;color:#7457e0}


/* 하단 5메뉴: 한눈에 보이는 고정 내비게이션 */
.bottomNav.nav5,
.bottomNav{
  height:76px;
  padding:7px 6px calc(7px + env(safe-area-inset-bottom));
  grid-template-columns:repeat(5,minmax(0,1fr));
  border-top:1px solid #ddd9e8;
  background:rgba(255,255,255,.97);
  box-shadow:0 -8px 24px rgba(32,24,79,.11);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  z-index:60;
}
.bottomNav button{
  position:relative;
  min-width:0;
  padding:2px 0 0;
  border-radius:12px;
  background:transparent;
  color:#747086;
  font-size:10.5px;
  font-weight:850;
  line-height:1.15;
  transition:color .16s ease,background .16s ease,transform .16s ease;
}
.bottomNav button b{height:27px;margin:0 0 2px}
.bottomNav button span{display:block;white-space:nowrap}
.bottomNav svg{width:22px;height:22px;stroke:currentColor}
.bottomNav button.active{
  color:var(--main-dark);
  background:var(--soft);
}
.bottomNav button.active::after{
  content:"";
  position:absolute;
  left:50%;
  bottom:1px;
  width:14px;
  height:2px;
  border-radius:2px;
  background:var(--main);
  transform:translateX(-50%);
}
.bottomNav .mapNavBtn{
  color:#fff;
  background:var(--deep);
  box-shadow:0 7px 16px rgba(32,24,79,.24);
  transform:translateY(-8px);
}
.bottomNav .mapNavBtn b{height:30px}
.bottomNav .mapNavBtn svg{width:24px;height:24px}
.bottomNav .mapNavBtn.active{
  color:#fff;
  background:var(--main-dark);
}
.bottomNav .mapNavBtn.active::after{background:#fff}
.wrap{padding-bottom:100px}
.toast{bottom:104px}
@media(max-width:360px){
  .bottomNav button{font-size:9.5px}
  .bottomNav svg{width:20px;height:20px}
}

.bottomNav.nav5{height:76px}
.bottomNav.nav5 .navItem{
  background:transparent;
  border-radius:12px;
  color:#746e87;
  font-size:11px;
}
.bottomNav.nav5 .navItem svg{stroke:currentColor}
.bottomNav.nav5 .navItem.active{
  color:var(--main-dark);
  background:var(--soft);
}
.bottomNav.nav5 .navCenter{padding-bottom:8px;background:transparent}
.bottomNav.nav5 .navCenterBtn{
  top:-17px;
  width:58px;
  height:58px;
  background:var(--deep);
  box-shadow:0 9px 20px rgba(32,24,79,.3);
}
.bottomNav.nav5 .navCenter.active{color:var(--deep)}
.bottomNav.nav5 .navCenter.active .navCenterBtn{background:var(--main-dark)}
.sheetView{bottom:76px}


/* 상용 마이홈: 프로필·서비스 메뉴·활동 내역 */
#myHomeView{background:#f5f5f7}
#myHomeView .sheetViewHead{
  padding:20px 18px 13px;
  background:rgba(245,245,247,.96);
  backdrop-filter:blur(12px);
}
#myHomeView .sheetViewHead h2{font-size:24px;letter-spacing:-.04em}
#myHomeViewBody{padding:14px 14px 30px}
.mhCommercialProfile{
  display:flex;
  align-items:center;
  gap:13px;
  padding:18px 16px;
  margin-bottom:12px;
  border:1px solid #ebe9f0;
  border-radius:18px;
  background:#fff;
  box-shadow:0 5px 18px rgba(31,28,44,.055);
}
.mhCommercialProfile .mhAvatar{
  width:56px;height:56px;
  background:linear-gradient(135deg,#eee9ff,#ddd4ff);
  color:var(--main-dark);
}
.mhProfileText{flex:1;min-width:0}
.mhCommercialProfile .mhName{font-size:18px;color:var(--deep);letter-spacing:-.02em}
.mhProfileDesc{
  margin-top:3px;
  color:var(--muted);
  font-size:11.5px;
  font-weight:650;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.mhEditBtn{
  flex:0 0 auto;
  height:36px;
  padding:0 13px;
  border:1px solid #dcd9e3;
  border-radius:10px;
  background:#fff;
  color:var(--deep);
  font-size:12px;
  font-weight:850;
}
.mhStats{gap:8px;margin-bottom:12px}
.mhStats .mhTile{
  border-radius:14px;
  padding:12px;
  min-height:66px;
  box-shadow:none;
}
button.mhTile{cursor:pointer}
.mhStats .mhTile b{font-size:20px}
.mhMenuGroup{
  overflow:hidden;
  margin-bottom:12px;
  border:1px solid #e8e6ed;
  border-radius:18px;
  background:#fff;
}
.mhMenuRow{
  display:flex;
  align-items:center;
  width:100%;
  min-height:72px;
  padding:12px 14px;
  border-bottom:1px solid #efedf2;
  background:#fff;
  text-align:left;
}
.mhMenuRow:last-child{border-bottom:0}
.mhMenuRow:active{background:#f8f7fb}
.mhMenuIcon{
  display:flex;
  align-items:center;
  justify-content:center;
  width:38px;height:38px;
  margin-right:12px;
  border-radius:12px;
  background:#f2effc;
  color:var(--main-dark);
}
.mhMenuIcon svg{
  width:21px;height:21px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.9;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.mhMenuText{flex:1;min-width:0}
.mhMenuText b{
  display:block;
  color:#262238;
  font-size:14px;
  font-weight:900;
  letter-spacing:-.02em;
}
.mhMenuText small{
  display:block;
  margin-top:3px;
  color:#898496;
  font-size:11.5px;
  font-weight:650;
}
.mhChevron{
  margin-left:10px;
  color:#aaa6b2;
  font-size:25px;
  font-weight:400;
}
.mhHistorySection{
  padding:14px;
  margin-bottom:12px;
  border:1px solid #e8e6ed;
  border-radius:18px;
  background:#fff;
}
.mhHistorySection .mhList{border:0;border-radius:0}
.mhHistorySection .mhRow{padding:11px 2px}
.mhGuestHero{
  padding:26px 20px;
  margin-bottom:12px;
  border-radius:20px;
  background:#fff;
  border:1px solid #e8e6ed;
  text-align:center;
}
.mhGuestMark{
  display:flex;
  align-items:center;
  justify-content:center;
  width:54px;height:54px;
  margin:0 auto 12px;
  border-radius:17px;
  background:var(--deep);
  color:#fff;
  font-size:24px;
  font-weight:1000;
}
.mhGuestHero h3{margin:0 0 7px;font-size:18px;color:var(--deep)}
.mhGuestHero p{margin:0 0 16px;color:var(--muted);font-size:12.5px;line-height:1.6}
.mhGuestHero .kakaoLoginBtn{width:100%;justify-content:center;padding:12px}
.mhLegalSettings{border-radius:16px}
.mhLegalSettings button{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:13px 15px;
  font-size:12.5px;
}
.mhLegalSettings button span{color:#aaa6b2;font-size:19px}
.nicknameSheet{padding-bottom:22px}
.nicknameGuide{margin:2px 0 14px;color:var(--muted);font-size:12.5px;line-height:1.6}
.nicknameSheet input{
  width:100%;
  height:48px;
  padding:0 42px 0 14px;
  border:1px solid var(--line);
  border-radius:13px;
  outline:none;
  font-size:15px;
  font-weight:750;
}
.nicknameSheet input:focus{border-color:var(--main)}
.nicknameCount{
  margin:-34px 12px 18px 0;
  position:relative;
  text-align:right;
  color:#aaa5b6;
  font-size:11px;
  pointer-events:none;
}
.nicknameSaveBtn{
  width:100%;
  height:48px;
  border-radius:13px;
  background:var(--main);
  color:#fff;
  font-weight:900;
}
.nicknameSaveBtn:disabled{opacity:.45;cursor:not-allowed}


/* 2026-08 세부 상용 UX: 찜·검색·지도·상세·중앙 팝업 */
.centerModal{align-items:center;padding:20px}
.centerModal .sheet{
  width:min(420px,100%);
  max-height:min(680px,88vh);
  border-radius:22px;
  animation:centerSheetIn .18s ease-out;
}
@keyframes centerSheetIn{from{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:none}}
.mhMenuIcon.heart{background:#fff0f5;color:#f04f86}
.mhMenuIcon.heart svg{fill:#ffd5e4;stroke:#f04f86}
.mhGuideLogo{display:block;width:31px;height:31px;object-fit:contain}
.mhMenuBadge{
  display:inline-flex;
  align-items:center;
  margin-left:6px;
  padding:3px 6px;
  border-radius:999px;
  background:#fff1d8;
  color:#c96a00;
  font-size:9px;
  font-style:normal;
  font-weight:900;
  vertical-align:2px;
}
.bottomNav.nav5 .navItem[data-nav="fav"].active{color:#ee4d86}
.bottomNav.nav5 .navItem[data-nav="fav"].active svg{stroke:#ee4d86;fill:#ffd7e5}
.bottomNav.nav5 .navItem[data-nav="search"] svg{stroke-width:2.6}
.searchRow button{display:flex;align-items:center;justify-content:center}
.searchRow button svg{stroke-width:2.6}
.mapSearchBar{
  display:flex;
  align-items:center;
  gap:9px;
  margin:9px 14px 2px;
  padding:0 13px;
  height:43px;
  border:1px solid var(--line);
  border-radius:14px;
  background:#fff;
  box-shadow:0 3px 12px rgba(32,24,79,.06);
}
.mapSearchBar span{display:flex;color:var(--deep)}
.mapSearchBar svg{width:20px;height:20px;stroke-width:2.6}
.mapSearchBar input{
  width:100%;
  height:100%;
  padding:0;
  border:0;
  outline:0;
  background:transparent;
  color:var(--deep);
  font-size:13px;
  font-weight:700;
}
.mapSearchBar input::placeholder{color:#9a95a8}
.mhHistorySection{
  padding:0;
  overflow:hidden;
}
.mhHistorySection .mhSectionHead{
  min-height:54px;
  margin:0;
  padding:0 14px;
  border-bottom:1px solid #efedf2;
}
.mhHistorySection .mhSectionHead h3{font-size:14px}
.mhHistorySection #mhCouponList{padding:0 14px}
.mhHistorySection .mhEmpty{
  margin:12px 0;
  padding:20px 12px;
  border:0;
  border-radius:12px;
  background:#f8f7fb;
}
/* ===================== 매장 상세 리디자인 (Phase 6 · 2026-08) ===================== */
#storeSheet{
  display:flex;
  flex-direction:column;
  gap:0;
  padding:6px 0 30px;
  background:#fff;
}
#storeSheet>.sd2Head{order:1}
#storeSheet>.sd2Sub{order:2}
#storeSheet>.sd2Gallery{order:3}
#storeSheet>.sd2Coupon{order:4}
#storeSheet>.sd2Actions{order:5}
#storeSheet>.sd2Info{order:6}
#storeSheet>.sd2Map{order:7}
#storeSheet>.sd2About{order:8}
#storeSheet>.snsRow{order:9}

/* header */
#storeSheet .sd2Head{display:flex;align-items:flex-start;gap:12px;padding:8px 20px 6px;border-bottom:0}
#storeSheet .sd2Main{display:flex;align-items:flex-start;gap:13px;flex:1;min-width:0}
#storeSheet .sd2Logo{width:52px;height:52px;border-radius:15px;flex:none;overflow:hidden;background:#f0ecfb;box-shadow:0 3px 12px rgba(90,63,214,.07)}
#storeSheet .sd2Logo img{width:100%;height:100%;object-fit:cover}
#storeSheet .sd2HeadText{flex:1;min-width:0;padding-top:1px}
#storeSheet .sd2NameRow{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
#storeSheet .sd2NameRow h2{margin:0;font-size:21px;font-weight:800;letter-spacing:-.03em;line-height:1.15;color:#1e1b2e}
#storeSheet .sd2CouponTag{display:inline-flex;align-items:center;gap:3px;background:#ede8ff;color:#5a3fd6;font-size:11px;font-weight:800;padding:3px 8px 3px 6px;border-radius:7px;white-space:nowrap;flex:none}
#storeSheet .sd2CouponTag svg{width:12px;height:12px;flex:none}
#storeSheet .sd2Cat{margin:3px 0 0;font-size:12.5px;font-weight:600;color:#9a93b4}
#storeSheet .sd2Head .close{position:static;width:36px;height:36px;border-radius:11px;border:1px solid #eeeaf7;background:#fff;color:#8a83a6;font-size:20px;line-height:1;flex:none}
#storeSheet .sd2Head .favHeartBtn{width:36px;height:36px;border-radius:11px;border:1px solid #eeeaf7;background:#fff;color:#b6aed2;margin-right:6px}
#storeSheet .sd2Head .favHeartBtn.on{color:#7c5cf0;background:#f4f0ff;border-color:#e2d9fb}

/* address + status */
#storeSheet .sd2Sub{padding:10px 20px 0;display:flex;flex-direction:column;gap:5px}
#storeSheet .sd2MetaLine{display:flex;align-items:center;gap:6px;font-size:13px;color:#615a80;font-weight:600;line-height:1.4}
#storeSheet .sd2Ico{color:#9a93b4;flex:none;display:inline-flex}
#storeSheet .sd2Ico svg{width:15px;height:15px}
#storeSheet .sd2Status{gap:5px}
#storeSheet .sd2Dot{width:6px;height:6px;border-radius:50%;flex:none}
#storeSheet .sd2Dot.on{background:#12a575}
#storeSheet .sd2Dot.off{background:#c3bcd8}
#storeSheet .sd2Open{color:#12a575;font-weight:800}
#storeSheet .sd2Closed{color:#9a93b4;font-weight:800}
#storeSheet .sd2StatusSub{color:#615a80;font-weight:600}

/* photo gallery */
#storeSheet .sd2Gallery{display:flex;gap:8px;padding:16px 20px 2px}
#storeSheet .sd2Ph{flex:1;aspect-ratio:1/1;border-radius:14px;overflow:hidden;background:#f0ecf8;position:relative;cursor:pointer}
#storeSheet .sd2Ph img{width:100%;height:100%;object-fit:cover;display:block}
#storeSheet .sd2g1 .sd2Ph{aspect-ratio:16/10}
#storeSheet .sd2More{position:absolute;inset:0;background:rgba(30,27,46,.5);color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:800}

/* coupon card */
#storeSheet .sd2Coupon{margin:16px 20px 0;background:linear-gradient(180deg,#fbfaff,#f6f3ff);border:1px solid #e7e0fb;border-radius:18px;padding:15px 16px 16px;position:relative;overflow:hidden}
#storeSheet .sd2Coupon::before,#storeSheet .sd2Coupon::after{content:"";position:absolute;width:18px;height:18px;border-radius:50%;background:#fff;top:50%;transform:translateY(-50%)}
#storeSheet .sd2Coupon::before{left:-9px;box-shadow:inset -1px 0 0 #e7e0fb}
#storeSheet .sd2Coupon::after{right:-9px;box-shadow:inset 1px 0 0 #e7e0fb}
#storeSheet .sd2CLabel{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:800;color:#5a3fd6}
#storeSheet .sd2CLabelIco{display:inline-flex}
#storeSheet .sd2CLabelIco svg{width:15px;height:15px}
#storeSheet .sd2CBenefit{display:flex;align-items:center;gap:7px;margin-top:9px;flex-wrap:wrap}
#storeSheet .sd2Badge{font-size:11px;font-weight:800;padding:3px 7px;border-radius:6px}
#storeSheet .sd2Badge.free{background:#e7f6f0;color:#12a575}
#storeSheet .sd2Badge.sale{background:#efe9ff;color:#6a4de0}
#storeSheet .sd2CBenefit b{font-size:17.5px;font-weight:800;letter-spacing:-.02em;color:#1e1b2e}
#storeSheet .sd2CCond{font-size:12.5px;color:#615a80;margin-top:5px;font-weight:500;line-height:1.5}

/* actions */
#storeSheet .sd2Actions{padding:14px 20px 0;display:flex;flex-direction:column;gap:9px}
#storeSheet .sd2Actions .sd2Primary.use{width:100%;height:auto;border:0;border-radius:14px;background:#7c5cf0;color:#fff;font-size:16px;font-weight:800;padding:15px;box-shadow:0 8px 20px rgba(124,92,240,.30);display:flex;align-items:center;justify-content:center;gap:7px;letter-spacing:-.01em}
#storeSheet .sd2Actions .sd2Primary.use svg{width:18px;height:18px}
#storeSheet .sd2Actions .sd2Primary.use:hover{background:#6b4de6}
#storeSheet .sd2Quick{display:flex;gap:9px}
#storeSheet .sd2QBtn{flex:1;border:1px solid #eeeaf7;background:#fff;border-radius:13px;padding:12px;cursor:pointer;font-size:13.5px;font-weight:700;color:#1e1b2e;display:flex;align-items:center;justify-content:center;gap:6px;text-decoration:none}
#storeSheet .sd2QBtn .qi{color:#7c5cf0;display:inline-flex}
#storeSheet .sd2QBtn .qi svg{width:16px;height:16px}
#storeSheet .sd2QBtn.call .qi{color:#12a575}

/* info rows */
#storeSheet .sd2Info{margin:20px 20px 0;border:1px solid #eeeaf7;border-radius:16px;overflow:hidden}
#storeSheet .sd2IRow{display:flex;align-items:center;gap:12px;padding:13px 15px;border-top:1px solid #f4f1fb}
#storeSheet .sd2IRow:first-child{border-top:0}
#storeSheet .sd2IIco{width:20px;color:#7c5cf0;flex:none;display:grid;place-items:center}
#storeSheet .sd2IIco svg{width:18px;height:18px}
#storeSheet .sd2ILab{font-size:12px;color:#9a93b4;font-weight:700;width:52px;flex:none}
#storeSheet .sd2IVal{font-size:13.5px;color:#1e1b2e;font-weight:600;flex:1;font-variant-numeric:tabular-nums;min-width:0}
#storeSheet .sd2Copy{border:1px solid #eeeaf7;background:#fff;border-radius:9px;padding:6px 10px;font-size:11.5px;font-weight:700;color:#615a80;display:inline-flex;align-items:center;gap:4px;cursor:pointer;flex:none}
#storeSheet .sd2Copy svg{width:13px;height:13px}

/* map preview */
#storeSheet .sd2Map{margin:16px 20px 0;border-radius:16px;overflow:hidden;border:1px solid #eeeaf7;position:relative;cursor:pointer}
#storeSheet .sd2MapBg{display:block;width:100%;height:148px}
#storeSheet .sd2MapPin{position:absolute;left:50%;top:46%;transform:translate(-50%,-100%)}
#storeSheet .sd2MapPin svg{width:34px;height:34px;filter:drop-shadow(0 4px 6px rgba(90,63,214,.35))}
#storeSheet .sd2MapBar{position:absolute;left:0;right:0;bottom:0;background:rgba(255,255,255,.94);padding:9px 13px;display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12.5px;font-weight:700;color:#1e1b2e}
#storeSheet .sd2MapBar>span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#storeSheet .sd2MapGo{color:#7c5cf0;font-weight:800;display:inline-flex;align-items:center;gap:3px;flex:none}
#storeSheet .sd2MapGo svg{width:13px;height:13px}

/* description */
#storeSheet .sd2About{margin:22px 20px 0}
#storeSheet .sd2ALabel{font-size:11.5px;font-weight:800;color:#9a93b4;letter-spacing:.03em;margin-bottom:9px}
#storeSheet .sd2AText{font-size:14px;color:#615a80;line-height:1.72;font-weight:500;white-space:pre-line;margin:0}

/* sns */
#storeSheet>.snsRow{margin:18px 20px 0}


/* 하단 5개 아이콘 선 굵기 통일 — 중앙 홈 돌출 구조 유지 */
.bottomNav.nav5 .navItem svg{stroke-width:2.6}


/* 쿠폰 사용내역 */
#couponHistoryView{background:#f5f5f7}
#couponHistoryViewBody{padding:14px 14px calc(110px + env(safe-area-inset-bottom))}
.couponHistoryList{display:grid;gap:10px}
.couponHistoryRow{display:grid;grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:12px;padding:13px;background:#fff;border:1px solid #ece9f5;border-radius:16px;box-shadow:0 5px 18px rgba(30,20,70,.045)}
.couponHistoryThumb{width:52px;height:52px;object-fit:cover;border-radius:13px;background:#f1eff8}
.couponHistoryRow b{display:block;color:#20184f;font-size:14px;line-height:1.35}
.couponHistoryRow small{display:block;margin-top:4px;color:#8a8499;font-size:11px}
.couponHistoryRow time{color:#746c88;font-size:11px;white-space:nowrap}
.couponHistoryEmpty{padding:44px 18px;text-align:center;background:#fff;border:1px dashed #ddd6ee;border-radius:18px;color:#827b92;font-size:13px;line-height:1.6}


/* ===================== 사장님 셀프 관리 (Phase 2 · 2026-08) ===================== */
.mhOwnerSection{margin:6px 0 14px}
.mhSectionLabel{font-size:12.5px;font-weight:800;color:#8b7fb0;letter-spacing:.02em;margin:0 2px 8px}
.ownerStoreList{display:flex;flex-direction:column;gap:10px}
.ownerStoreCard{display:flex;align-items:center;gap:12px;background:linear-gradient(180deg,#f3efff,#fff);
  border:1.5px solid #e2d9fb;border-radius:16px;padding:12px 13px;box-shadow:0 4px 14px rgba(120,92,240,.08)}
.ownerStoreThumb{width:46px;height:46px;border-radius:12px;overflow:hidden;flex:none;background:#efeaff;display:grid;place-items:center}
.ownerStoreThumb img{width:100%;height:100%;object-fit:cover}
.ownerStoreInfo{flex:1;min-width:0}
.ownerStoreInfo b{display:block;font-size:15px;font-weight:800;color:#2b2545;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ownerStoreInfo small{display:block;font-size:12.5px;color:#7b73a0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ownerEditBtn{flex:none;background:#8f75ef;color:#fff;border:0;border-radius:10px;padding:9px 13px;font-size:13px;font-weight:800;cursor:pointer}
.ownerEditBtn:active{transform:scale(.97)}

.ownerLinkPrompt{display:flex;align-items:center;gap:12px;width:100%;text-align:left;
  background:#fff;border:1.5px dashed #cdbef7;border-radius:16px;padding:14px 14px;cursor:pointer}
.ownerLinkPrompt .olpIcon{font-size:24px;flex:none}
.ownerLinkPrompt .olpText{flex:1}
.ownerLinkPrompt .olpText b{display:block;font-size:14.5px;font-weight:800;color:#3a3060}
.ownerLinkPrompt .olpText small{display:block;font-size:12.5px;color:#8078a0;margin-top:1px}
.ownerLinkPrompt .olpChev{color:#b3a6e0;font-size:20px;font-weight:700}
.ownerLinkPrompt:active{background:#faf8ff}

/* 편집/신청 시트 */
.ownerSheetHead{display:flex;align-items:center;gap:8px;position:relative}
.ownerSheetHead h2{margin:0;font-size:17px}
.ownerBack{background:none;border:0;color:#8f75ef;font-size:14px;font-weight:800;cursor:pointer;padding:4px 2px}
.ownerEditIntro{font-size:12.5px;color:#7d76a0;background:#f4f1fc;border-radius:12px;padding:11px 13px;line-height:1.6;margin-bottom:14px}
.ownerForm{display:flex;flex-direction:column;gap:14px}
.ownerField{display:flex;flex-direction:column;gap:6px}
.ownerField>span{font-size:12.5px;font-weight:800;color:#5b5480}
.ownerField input,.ownerField textarea{width:100%;box-sizing:border-box;border:1.5px solid #e5def6;border-radius:12px;
  padding:12px 13px;font-size:14.5px;color:#2b2545;background:#fff;font-family:inherit;line-height:1.5}
.ownerField input:focus,.ownerField textarea:focus{outline:none;border-color:#8f75ef;box-shadow:0 0 0 3px rgba(143,117,239,.14)}
.ownerField textarea{resize:vertical;min-height:74px}
.ownerLockNote{font-size:12px;color:#948ba8;background:#f6f4fb;border-radius:10px;padding:10px 12px;margin:16px 0 0;line-height:1.6}
.ownerSaveBtn{width:100%;margin-top:16px;background:#8f75ef;color:#fff;border:0;border-radius:14px;padding:15px;
  font-size:15.5px;font-weight:800;cursor:pointer;box-shadow:0 6px 18px rgba(120,92,240,.28)}
.ownerSaveBtn:active{transform:scale(.99)}
.ownerSaveBtn:disabled{opacity:.6}

/* ===== 로그인 진입: 손님/점주 선택 (2026-08) ===== */
.loginMicro{font-size:12px;color:#8b83a8;font-weight:600;margin:10px 0 2px;text-align:center}
.ownerStartLink{display:inline-block;margin-top:12px;background:none;border:0;color:#7c5cf0;font-size:13px;font-weight:800;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.ownerStartLink:active{opacity:.7}
.loginChooser .lcDivider{display:flex;align-items:center;gap:10px;margin:20px 0 14px;color:#9a92b5;font-size:12px;font-weight:800}
.loginChooser .lcDivider:before,.loginChooser .lcDivider:after{content:"";flex:1;height:1px;background:#eae5f6}
.ownerStartBtn{width:100%;padding:13px 14px;border-radius:12px;border:1.5px solid #cdbef7;background:#f6f2ff;color:#5a3fd6;font-size:14px;font-weight:800;cursor:pointer}
.ownerStartBtn em{font-style:normal;font-weight:700;color:#8a7bd0;font-size:12px}
.ownerStartBtn:active{transform:scale(.99)}
.lcOwnerNote{font-size:11.5px;color:#948ba8;line-height:1.6;margin:10px 4px 0;text-align:center}


/* ===== 사장님: 사진 편집 + 매장 현황 (Phase 4 · 2026-08) ===== */
.ownerStatsBtn{display:flex;align-items:center;gap:4px;width:100%;background:linear-gradient(135deg,#7c5cf0,#9b7cf6);color:#fff;border:0;border-radius:14px;padding:14px 16px;margin-bottom:14px;cursor:pointer;text-align:left;box-shadow:0 6px 16px rgba(120,92,240,.25)}
.ownerStatsBtn>span{font-size:15px;font-weight:800}
.ownerStatsBtn>small{flex:1;font-size:11.5px;font-weight:700;opacity:.85;margin-left:8px}
.ownerStatsBtn>i{font-size:20px;font-weight:700;opacity:.9}
.ownerPhotoBox{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.ownerPhotoEmpty{font-size:12px;color:#a49dbe;padding:10px 2px;font-weight:600}
.ownerPhoto{position:relative;width:76px;height:76px;border-radius:10px;overflow:hidden;border:1px solid #e5def6}
.ownerPhoto img{width:100%;height:100%;object-fit:cover}
.ownerPhotoRemove{position:absolute;top:2px;right:2px;width:22px;height:22px;border-radius:50%;border:0;background:rgba(20,10,40,.66);color:#fff;font-size:15px;line-height:1;cursor:pointer;display:grid;place-items:center}
.ownerPhotoMain{position:absolute;left:0;bottom:0;background:#7c5cf0;color:#fff;font-size:10px;font-weight:800;padding:2px 6px;border-top-right-radius:8px}
.ownerPhotoAdd{background:#f3f0fc;border:1.5px dashed #c8bbf3;color:#6a58c0;border-radius:12px;padding:11px 14px;font-size:13.5px;font-weight:800;cursor:pointer;width:100%}
.ownerPhotoAdd:disabled{opacity:.6}

.oStatSection{font-size:12.5px;font-weight:800;color:#8b7fb0;margin:18px 2px 10px}
.oStatSection:first-child{margin-top:2px}
.oStatGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.oStatTile{background:#fff;border:1px solid #eee6fb;border-radius:13px;padding:13px 6px;text-align:center;box-shadow:0 3px 10px rgba(120,92,240,.06)}
.oStatTile b{display:block;font-size:21px;font-weight:800;color:#2b2545;line-height:1.1}
.oStatTile span{display:block;font-size:11px;font-weight:700;color:#7b73a0;margin-top:4px}
.oStatMeta{font-size:12px;color:#6f6790;background:#f4f1fc;border-radius:11px;padding:11px 13px;margin-top:14px;line-height:1.6}
.oStatMeta b{color:#5a3fd6}
.oCouponList{display:flex;flex-direction:column;gap:0;border:1px solid #eee6fb;border-radius:13px;overflow:hidden;background:#fff}
.oCouponRow{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #f2edfb;font-size:13px}
.oCouponRow:last-child{border-bottom:0}
.oCd{font-weight:800;color:#3a3260}
.oCd em{font-weight:600;color:#8078a0;font-style:normal}
.oCg{font-size:11.5px;color:#948ba8;font-weight:700}
.oGeo{display:inline-block;padding:2px 7px;border-radius:6px;background:#eee;color:#888;font-size:10.5px;font-weight:800}
.oGeo.ok{background:#e2f6f1;color:#0a7d68}
@media (max-width:400px){.oStatGrid{grid-template-columns:repeat(2,1fr)}}

/* ── 사장님 현황 차트 (Phase 5 · 2026-08) ── */
.oChartCard{background:#fff;border:1px solid #eee6fb;border-radius:16px;padding:15px 15px 10px;margin-bottom:12px;box-shadow:0 4px 14px rgba(120,92,240,.07)}
.oChartHead{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:2px}
.oChartLbl{font-size:13px;font-weight:800;color:#4a4370}
.oChartSub{font-size:11px;font-weight:700;color:#a99fc6}
.oHeroRow{display:flex;align-items:baseline;gap:5px;margin:2px 0 8px}
.oHeroNum{font-size:30px;font-weight:800;color:#7c5cf0;line-height:1}
.oHeroNum.teal{color:#0e9e83}
.oHeroUnit{font-size:13px;font-weight:800;color:#8078a0}
.oHeroToday{margin-left:auto;font-size:11.5px;font-weight:700;color:#948ba8;align-self:flex-end}
.oChartSvg{display:block;width:100%;height:auto}
.oChartEmpty{font-size:12px;color:#a99fc6;text-align:center;padding:26px 0;background:#faf8ff;border-radius:11px}
.oMeterRow{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:2px}
.oMeterCard{background:#fff;border:1px solid #eee6fb;border-radius:14px;padding:13px 14px;box-shadow:0 3px 10px rgba(120,92,240,.06)}
.oMeterCap{display:block;font-size:11.5px;font-weight:700;color:#8078a0;margin-bottom:5px}
.oMeterVal{font-size:23px;font-weight:800;color:#2b2545;line-height:1}
.oMeterVal em{font-size:12px;font-weight:800;color:#948ba8;font-style:normal;margin-left:2px}
.oMeterBar{margin-top:9px;height:6px;border-radius:99px;background:#eee6fb;overflow:hidden}
.oMeterBar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#9a83f5,#7c5cf0)}
.oMeterNote{font-size:11.5px;color:#8078a0;margin:9px 2px 2px;line-height:1.5}
