

:root {
  
  --navy:    #0e1535;
  --navy2:   #1f2a44;
  --navy3:   #243070;
  --gold:    #d4aa6a;
  --gold2:   #b8965a;
  --cream:   #f5f0e8;
  --ink:     #1f2937;
  --border:  #dde3f2;

  
  --tab-h:          80px;
  --oai-map-safe-top: env(safe-area-inset-top, 0px);
  --oai-map-top-h: calc(var(--tab-h) + var(--oai-map-safe-top));
  --mod-header-h:   70px;
  --sb:             0px;
  --st:             env(safe-area-inset-top, 0);
  --header-h:       calc(52px + env(safe-area-inset-top, 0));
  --module-tab-h:   48px;
  --mod-tabbar-h:   55px;
  --tab-btn-h:      40px;
  --map-tab-btn-h:  66px;
  --map-tab-fs:     15px;
  --map-tab-gap:    6px;
  --map-tab-icon-fs: 20px;
  --map-tab-icon-active-fs: 22px;
  --oai-search-input-h: 44px;
  --oai-search-input-fs: 15px;
  --oai-search-input-color: #111827;
  --oai-search-placeholder-color: #8a7d6d;
  --oai-search-icon-color: #6f675d;

  
  --oai-std-header-h:  70px;
  --oai-std-tab-h:     40px;
  --oai-std-tabbar-h:  55px;
  --oai-std-btn-h:     36px;
  --oai-std-title-fs:  20px;
  --oai-std-sub-fs:    11px;
  --oai-std-btn-fs:    14px;
  --oai-std-radius:    14px;
  --oai-std-gap:       8px;
  --oai-std-icon-sz:   28px;
  --oai-std-close-sz:  40px;
  --oai-category-enter-ms: 360ms;
  --oai-popup-enter-ms: 320ms;
  --oai-std-hdr-pad:   calc(10px + env(safe-area-inset-top, 0px));
  --oai-stampbook-top-safe: max(12px, env(safe-area-inset-top, 0px));
  --oai-stampbook-bottom-clearance: 12px;

  
  --fs-header:   22px;
  --fs-tab:      15px;
  --cover-emoji-size: 40px;
  --app-user-font-scale: 1;
  --app-screen-font-scale: 1;
  --app-ui-scale: 1;
  --app-font-scale: calc(var(--app-user-font-scale) * var(--app-screen-font-scale));
  --ios-inner-font-scale: 1;
  --app-inner-font-scale: calc(var(--app-font-scale) * var(--ios-inner-font-scale));
  --pr-item-fs:  15px;
  --pr-body-fs:  16px;
  --pr-detail-fs: 17px;
  --pr-icon-fs:  17px;
  --pr-icon-sz:  36px;
  --app-fs-title: calc(16px * var(--app-inner-font-scale));
  --app-fs-sub:   calc(12px * var(--app-inner-font-scale));
  --app-fs-body:  calc(16px * var(--app-inner-font-scale));

  
  --oai-shrine-header:  #1f2a44;
  --oai-parish-header:  #3F4752;
  --oai-retreat-header: #3F6F5A;
  --oai-gold:           #d4aa6a;
  --oai-gold-border:    #c49a57;
  --oai-btn:            #eef1f4;
  --oai-btn-border:     #cfd6dd;
  --oai-btn-text:       #334155;
  --oai-ivory:          #e9deca;
  --oai-ivory-border:   #d6c6a8;
  --oai-pilgrimage-header-solid: #1f2a44;

  
  --mode-header-bg:    linear-gradient(135deg, #1f2a44, #2d3a5f);
  --mode-header-solid: #1f2a44;
  --mode-active-bg:    linear-gradient(135deg, #243a83, #1f2f6b);
  --mode-active-color: #fff;
  --mode-filter-bg:    rgba(255,255,255,.12);
  --mode-filter-color: rgba(255,255,255,.92);
  --mode-filter-border: rgba(255,255,255,.28);
  --mode-filter-active-bg:    #fff4de;
  --mode-filter-active-color: #7a5a23;
  --mode-filter-active-border: #fff4de;
  --mode-tab-active-bg:  linear-gradient(135deg, #243a83, #1f2f6b);
  --mode-tab-active-border: transparent;
  --mode-badge-bg:   #f4ead6;
  --mode-badge-color: #a25f32;
  --mode-dist-color: #b07a3d;
  --mode-name-color: var(--ink);
  --mode-num-bg:     #1f2a44;
  --mode-num-color:  #fff;
  --mode-sm-tab-inactive-bg:  #f0f2f8;
  --mode-sm-tab-inactive-color: #526274;
  --mode-sm-tab-inactive-border: rgba(31,47,107,.22);
  --mode-srch-modal-bg: #1f2a44;

  
  --shrine-main:    #1f2a44;
  --shrine-main-2:  #2d3a5f;
  --shrine-soft:    #f4ead6;
  --shrine-soft-2:  #e8dcc8;

  
  --parish-bg:      #4B5563;
  --parish-active:  #4B5563;
  --parish-accent:  #F1F3F5;
  --church-main:    #4B5563;
  --church-main-2:  #374151;
  --church-soft:    #ECEFF3;
  --church-soft-2:  #F8FAFC;

  
  --retreat-bg:      #3F6F5A;
  --retreat-main:    #3F6F5A;
  --retreat-main-2:  #345C4B;
  --retreat-soft:    #DDECE5;
  --retreat-active:  #3F6F5A;
  --retreat-accent:  #DDECE5;
  --retreat-soft-2:  #F6FBF8;
  --dist-retreat:    #3F6F5A;

  
  --addr-color:   #6b7280;
  --dist-parish:  #4B5563;

  
  --color-1: #8b2020;
  --color-2: #1f2a44;
  --color-3: #b8965a;
  --color-4: #374151;
  --color-5: #4F846C;
  --color-6: #5c4a37;
  --color-7: #1a3560;
  --color-8: #374151;

  
  --bg-color:   #f7f0e5;
  
  /* V8-1-14-563: 커버 레이아웃 소유권 선언.
     커버 비율은 #cover / #cover-main-block / .cover-grid / #cover-action-row / #cover-bottom-note와
     아래 cover 전용 변수에서만 관리한다.
     하단 안내문구와 3버튼 사이 간격은 margin 덧씌움이 아니라 --cover-note-reserve/--cover-bottom-reserve로 조정한다. */
  --cover-top-safe: calc(env(safe-area-inset-top, 0px) + clamp(60px, calc(var(--cover-vh, 1vh) * 9.2), 82px));
  --cover-bottom-safe: calc(env(safe-area-inset-bottom, 0px) + clamp(7px, calc(var(--cover-vh, 1vh) * 1.1), 10px));
  --cover-h:    calc(var(--cover-vh, 1dvh) * 100);
  --cover-main-gap: clamp(5px, calc(var(--cover-vh, 1vh) * 0.82), 8px);
  --cover-note-reserve: clamp(44px, calc(var(--cover-vh, 1vh) * 5.1), 56px);
  --cover-bottom-reserve: var(--cover-note-reserve);
  --cover-note-bottom: calc(env(safe-area-inset-bottom, 0px) + clamp(18px, calc(var(--cover-vh, 1vh) * 2.4), 24px));
  --cover-action-h: 54px;
  --cover-action-h-compact: 52px;
  --cover-action-gap: clamp(5px, 1.4vw, 9px);
  --cover-action-radius: 16px;
  --cover-action-font: calc(14px * var(--app-font-scale, 1));
  --cover-action-font-compact: calc(12.8px * var(--app-font-scale, 1));
  --cover-faith-cross-font: calc(18px * var(--app-font-scale, 1));
  --cover-faith-cross-font-compact: calc(14.5px * var(--app-font-scale, 1));
  --text-main:  #3e362e;
  --text-sub:   #7a7065;
  --card-bg:    #ffffff;

  
  --bg-unified:  #f5f0e8;
  --stone:       #f3eee5;
  --stone-2:     #ebe3d7;
  --paper:       #fffdf9;
  --panel:       #fffaf2;
  --line-soft:   #e7ddcf;

  
  --shadow-soft: 0 12px 30px rgba(14,21,53,.10);
  --shadow-card: 0 16px 34px rgba(17,24,39,.11);

  
  --v4-bg-ivory: #F5F1E8;
  --v4-bg-cream: #f5f0e8;
  --v4-surface-white: #fff;
  --v4-surface-paper: #ffffff;
  --v4-header-navy: #1f2a44;
  --v4-parish-gray: #4B5563;
  --v4-retreat-green: #3F6F5A;
  --v4-gold: #d4aa6a;
  --v4-brown: #B7791F;
  --v4-text-strong: #111827;
  --v4-text-main: #1f2937;
  --v4-text-muted: #6B7280;
  --v4-line-soft: #e5e7eb;

  
  --v4-close-size: 40px;
  --v4-close-size-sm: 30px;
  --v4-close-border: 1.5px solid currentColor;
  --v4-close-bg: transparent;
  --v4-radius-pill: 999px;
  --v4-radius-card: 13px;
  --v4-radius-panel: 16px;
  --v4-card-gap: 12px;
  --v4-list-pad-x: 14px;
  --v4-list-pad-bottom: calc(86px + env(safe-area-inset-bottom, 0));
  --v4-card-bg-warm: #fffbf2;
  --v4-card-border-warm: #c8b79f;
  --v4-card-shadow-soft: 0 1px 8px rgba(0,0,0,.06);

  
  --ui-ink:         #141b2d;
  --ui-ink-soft:    #4d5a75;
  --ui-line:        #e6dfd3;
  --ui-line-strong: #d9cfbf;
  --ui-panel:       #ffffff;
  --ui-bg:          #f7f4ee;
  --ui-surface:     #fbfaf7;
  --ui-card:        #ffffff;
  --ui-text:        #1f2937;
  --ui-sub:         #7b8794;
  --ui-blue:        #3563ff;
  --ui-rose:        #d94f70;
  --ui-teal:        #118a7e;
  --ui-amber:       #f59e0b;
  --pilgrim:        #1565c0;
  --shrine:        #c0392b;
  --martyr:        #1b7a3e;
}

html:not(.ios-device).oai-screen-compact-short {
  
  --app-ui-scale: .90;
  --tab-h: 68px;
  --mod-header-h: 58px;
  --oai-std-header-h: 58px;
  --oai-std-tab-h: 33px;
  --oai-std-tabbar-h: 46px;
  --oai-std-btn-h: 31px;
  --oai-std-title-fs: 20px;
  --oai-std-sub-fs: 11px;
  
  
  
  --oai-std-gap: 5px;
  --oai-std-close-sz: 34px;
  --v4-close-size: 34px;
  --v4-close-size-sm: 26px;
  --map-tab-btn-h: 56px;
  
  --map-tab-gap: 4px;
  
  
  --cover-action-h: 42px;
}
html:not(.ios-device).oai-screen-tall-phone {
  --app-screen-font-scale: 1;
  --tab-h: 80px;
  --mod-header-h: 68px;
  --oai-std-header-h: 68px;
  --oai-std-tab-h: 39px;
  --oai-std-tabbar-h: 54px;
  --oai-std-btn-h: 36px;
  --oai-std-title-fs: 20px;
  --oai-std-sub-fs: 11px;
  --oai-std-gap: 8px;
  --cover-action-h: 54px;
}
html:not(.ios-device).oai-screen-fold-wide {
  --app-screen-font-scale: 1;
  /* Fold wide keeps the same vertical rhythm as tall-phone; use width/layout only for fold-wide differences. */
  --tab-h: 80px;
  --mod-header-h: 68px;
  --oai-std-header-h: 68px;
  --oai-std-tab-h: 39px;
  --oai-std-tabbar-h: 54px;
  --oai-std-btn-h: 36px;
  --oai-std-title-fs: 20px;
  --oai-std-sub-fs: 11px;
  --oai-std-gap: 8px;
  --cover-action-h: 54px;
}

html.parish-mode {
  --parish-bg: var(--cathedral-category-final, #3F4752);
  --parish-active: var(--cathedral-category-dark, #2F3742);
  --mode-header-bg: linear-gradient(135deg, var(--cathedral-category-dark, #2F3742), var(--cathedral-category-final, #3F4752));
  --mode-header-solid: var(--cathedral-category-final, #3F4752);
  --mode-active-bg: linear-gradient(135deg, var(--cathedral-category-dark, #2F3742), var(--cathedral-category-final, #3F4752));
  /* V8-1-14-647: 성지 순례 필터의 높은 대비를 성당 교구 활성 탭 기준으로 사용한다. */
  --mode-filter-active-bg: #111;
  --mode-filter-active-color: #f6d58a;
  --mode-filter-active-border: #d4aa6a;
  --mode-tab-active-bg: linear-gradient(135deg, var(--cathedral-category-dark, #2F3742), var(--cathedral-category-final, #3F4752));
  --mode-tab-active-shadow: 0 4px 12px rgba(71,85,105,.18);
  --mode-badge-bg: var(--cathedral-category-soft-final, #ECEFF3);
  --mode-badge-color: var(--cathedral-category-final, #3F4752);
  --mode-dist-color: var(--cathedral-category-final, #3F4752);
  --mode-name-color: var(--v4-text-strong);
  --mode-num-bg: var(--cathedral-category-final, #3F4752);
  --mode-sm-tab-inactive-bg: #F1F5F9;
  --mode-sm-tab-inactive-color: var(--cathedral-category-final, #3F4752);
  --mode-sm-tab-inactive-border: rgba(75,85,99,.28);
  --mode-srch-modal-bg: var(--cathedral-category-final, #3F4752);
}

html.retreat-mode {
  --retreat-bg: var(--retreat-category-final, #3F6F5A);
  --retreat-primary: var(--retreat-category-final, #3F6F5A);
  --retreat-main: var(--retreat-category-final, #3F6F5A);
  --retreat-main-2: var(--retreat-category-dark, #345C4B);
  --retreat-dark: var(--retreat-category-dark, #345C4B);
  --retreat-active: var(--retreat-category-final, #3F6F5A);
  --mode-header-bg: linear-gradient(135deg, var(--retreat-category-dark, #345C4B), var(--retreat-category-final, #3F6F5A));
  --mode-header-solid: var(--retreat-category-final, #3F6F5A);
  --mode-active-bg: linear-gradient(135deg, var(--retreat-category-dark, #345C4B), var(--retreat-category-final, #3F6F5A));
  --mode-filter-bg: rgba(255,255,255,.14);
  --mode-filter-color: rgba(255,255,255,.92);
  --mode-filter-border: rgba(255,255,255,.30);
  /* V8-1-14-647: 성지 순례 필터의 높은 대비를 피정의집 교구 활성 탭 기준으로 사용한다. */
  --mode-filter-active-bg: #111;
  --mode-filter-active-color: #f6d58a;
  --mode-filter-active-border: #d4aa6a;
  --mode-tab-active-bg: linear-gradient(135deg, var(--retreat-category-dark, #345C4B), var(--retreat-category-final, #3F6F5A));
  --mode-tab-active-shadow: 0 4px 12px rgba(107,143,113,.16);
  --mode-tab-active-border: transparent;
  --mode-badge-bg: var(--retreat-category-soft-final, #DDECE5);
  --mode-badge-color: var(--retreat-category-final, #3F6F5A);
  --mode-dist-color: var(--retreat-category-final, #3F6F5A);
  --mode-name-color: var(--v4-text-strong);
  --mode-num-bg: var(--retreat-category-final, #3F6F5A);
  --mode-sm-tab-inactive-bg: #EEF6F1;
  --mode-sm-tab-inactive-color: var(--retreat-category-final, #3F6F5A);
  --mode-sm-tab-inactive-border: rgba(79,132,108,.30);
  --mode-srch-modal-bg: var(--retreat-category-final, #3F6F5A);
}

html.ios-device {
  --ios-inner-font-scale: .91;
  --tab-h:           80px;
  --mod-header-h:    60px;
  --oai-std-header-h: 58px;
  --oai-std-tab-h:   30px;
  --oai-std-btn-h:   30px;
  --oai-std-gap:     6px;
  --oai-ios-std-tabbar-h: 55px;
  --oai-ios-std-tab-btn-h: 40px;
}

*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  -webkit-tap-highlight-color: transparent;
}
html, body {
  width: 100%;
  height: 100%;
  background: var(--bg-color);
  font-family: 'Noto Sans KR', sans-serif;
  overscroll-behavior: none;
  overflow: hidden;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  color-scheme: light;
  max-width: 100vw;
  overflow-x: hidden;
}
::-webkit-scrollbar { width: 4px; }
::-webkit-scrollbar-thumb { background: rgba(26,36,86,.15); border-radius: 2px; }

#cover {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 9999;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  overflow: hidden;
  background-color: var(--bg-color);
  color: var(--text-main);
  font-family: 'Apple SD Gothic Neo', 'Malgun Gothic', sans-serif;
  padding-top: var(--cover-top-safe);
  padding-bottom: calc(var(--cover-bottom-safe) + var(--cover-bottom-reserve));
  box-sizing: border-box;
  height: var(--cover-h);
  min-height: var(--cover-h);
  max-height: var(--cover-h);
}

html.app-active #cover { display: none; }

#app {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 1;
  background: var(--bg-unified,var(--v4-bg-cream));
}
html.app-active #app { display: block; }

#tabbar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 950;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  height: var(--oai-map-top-h);
  min-height: var(--oai-map-top-h);
  padding: calc(var(--oai-map-safe-top) + 5px) 7px 6px;
  gap: 5px;
  align-items: stretch;
  overflow: hidden;
  background: rgba(255,255,255,.97);
  border-bottom: 1.5px solid var(--gold);
  box-shadow: none;
}
.tab-btn {
  width: 100%;
  height: var(--map-tab-btn-h);
  min-height: var(--map-tab-btn-h);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--map-tab-gap);
  padding: 6px 2px 5px;
  border-radius: 13px;
  border: 1.5px solid var(--oai-btn-border);
  background: var(--oai-btn);
  color: var(--oai-btn-text);
  font-size: var(--map-tab-fs);
  font-weight: 800;
  font-family: inherit;
  cursor: pointer;
  white-space: nowrap;
  overflow: hidden;
  line-height: 1.05;
  letter-spacing: -.055em;
  box-shadow: none;
  transition: background .18s, color .18s, border-color .18s;
  margin: 0;
  box-sizing: border-box;
}
.tab-btn.active {
  background: var(--gold);
  color: var(--v4-surface-white);
  border-color: var(--gold2);
  box-shadow: none;
}

html.retreat-mode #tabbar .tab-btn {
  background: var(--v4-surface-paper);
  color: var(--v4-retreat-green);
  border: 1.5px solid #cfe8d8;
  box-shadow: none;
}
html.retreat-mode #tab-list-lbl {
  font-size: 14px;
  letter-spacing: -0.065em;
}
.tab-icon {
  font-size: var(--map-tab-icon-fs);
  line-height: 1;
  display: block;
  flex: 0 0 auto;
}
.tab-btn.active .tab-icon { font-size: var(--map-tab-icon-active-fs); }
.tab-btn span:not(.tab-icon) {
  display: block;
  font-size: var(--map-tab-fs);
  white-space: nowrap;
  overflow: hidden;
  line-height: 1.05;
  max-width: 100%;
  word-break: keep-all;
}

#map-wrap {
  position: fixed;
  top: var(--oai-map-top-h);
  left: 0;
  right: 0;
  bottom: 0;
  background: var(--bg-unified,var(--v4-bg-cream));
  overflow: hidden;
  contain: layout paint;
  isolation: isolate;
  transform: translateZ(0);
  -webkit-transform: translateZ(0);
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}
#map {
  width: 100%;
  height: 100%;
  background: var(--bg-unified,var(--v4-bg-cream));
  overflow: hidden;
  transform: translateZ(0);
  -webkit-transform: translateZ(0);
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  contain: layout paint;
}
.map-loading-layer {
  position: absolute;
  inset: 0;
  z-index: 180;
  display: none;
  align-items: center;
  justify-content: center;
  background: var(--bg-unified,var(--v4-bg-cream));
  pointer-events: none;
  contain: layout paint;
  transform: translateZ(0);
  -webkit-transform: translateZ(0);
}
.map-loading-layer.open { display: flex; }
.map-loading-layer .map-loading { width:100%; height:100%; min-height:100%; }
#map-wrap.oai-map-preparing,
#map-wrap.oai-map-preparing #map,
#map-wrap.oai-map-preparing .map-loading-layer,
#map-wrap.oai-map-preparing .map-loading {
  background: var(--bg-unified,var(--v4-bg-cream)) !important;
}
#legend {
  position: absolute;
  left: 12px;
  bottom: calc(var(--oai-android-bottom-gap, env(safe-area-inset-bottom, 0px)) + 88px);
  background: rgba(255,255,255,.95);
  border-radius: 10px;
  padding: 8px 12px;
  z-index: 400;
  font-size: 11px;
  border: 1px solid #e8e8e8;
}
.leg-row { display: flex; align-items: center; gap: 6px; margin-bottom: 3px; }
.leg-row:last-child { margin-bottom: 0; }
.leg-dot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; }

/* V8-1-14-621 allcheck step4: non-cover inline visual styles moved to CSS owners. */
#loc-btn .loc-btn-text{font-size:12px;}
.leg-dot-shrine{background:var(--shrine);}
.leg-dot-pilgrim{background:var(--pilgrim);}
.leg-dot-martyr{background:var(--martyr);}
.srch-leading-icon{font-size:14px;opacity:.5;margin-right:8px;color:#fff;}
.region-leading-icon{font-size:14px;opacity:.4;margin-right:8px;color:#fff;}
.region-srch-inner{flex:1;}
.web-empty-icon{font-size:40px;}

#route-guide {
  display: none;
  position: absolute;
  top: 12px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--navy);
  color: var(--v4-surface-white);
  padding: 8px 18px;
  border-radius: 22px;
  font-size: 13px;
  font-weight: 700;
  z-index: 500;
  white-space: nowrap;
  border: 1px solid rgba(212,170,106,.4);
  pointer-events: none;
}
#route-guide.on { display: block; }

.map-category-close {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 650;
  width: var(--v4-close-size);
  height: var(--v4-close-size);
  border-radius: var(--v4-radius-pill);
  border: var(--v4-close-border);
  background: var(--v4-close-bg);
  color: var(--v4-text-strong);
  font-size: 28px;
  font-weight: 900;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: none;
  cursor: pointer;
  font-family: inherit;
}
.map-category-close:active { transform: scale(.96); }

#map-wrap.oai-shrine-filter-open .map-category-close{
  top:54px!important;
  z-index:651!important;
}
html:not(.ios-device).oai-screen-compact-short #map-wrap.oai-shrine-filter-open .map-category-close{
  top:50px!important;
}


.sheet {
  position: fixed;
  top: var(--oai-map-top-h);
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(180deg, #fbf7f1, #f4efe6);
  z-index: 800;
  display: flex;
  flex-direction: column;
  transform: translateY(100%);
  transition: transform .25s cubic-bezier(.4,0,.2,1);
  overflow: hidden;
  will-change: transform;
}
.sheet.open { transform: none; }
.sheet.from-right { transform: translateX(100%); transition: none !important; }
.sheet.from-left  { transform: translateX(-100%) !important; transition: none !important; }
.sheet.from-right.open,
.sheet.from-left.open  { transform: translate(0,0) !important; transition: transform .14s cubic-bezier(.22,.61,.36,1); }
.sheet.exit-left  { transform: translateX(-100%); }
.sheet.exit-right { transform: translateX(100%); }

.sheet-hd {
  background: var(--mode-header-solid);
  padding: 8px 14px;
  min-height: 48px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-shrink: 0;
  border-bottom: 2px solid var(--gold);
}
.sheet-title {
  font-size: 15px;
  font-weight: 800;
  color: #c49b56;
  line-height: 1.2;
  letter-spacing: .04em;
}
.sheet-x {
  background: transparent;
  border: none;
  border-radius: 0;
  color: #c49b56;
  font-size: 28px;
  font-weight: 900;
  line-height: 1;
  width: var(--v4-close-size);
  height: var(--v4-close-size);
  min-width: var(--v4-close-size);
  flex: 0 0 var(--v4-close-size);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: none;
}
.sheet-body {
  flex: 1;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  background: var(--ui-bg);
}
.sheet > .srch-bar {
  position: sticky;
  top: 0;
  z-index: 11;
  flex-shrink: 0;
}

#sheet-route {
  top: auto !important;
  bottom: 0 !important;
  left: 0 !important;
  right: 0 !important;
  max-height: min(50vh, 408px) !important;
  border-radius: 16px 16px 0 0;
  border-top: 2px solid var(--gold2);
  box-shadow: 0 -3px 16px rgba(0,0,0,.25);
  padding-bottom: 4px;
  overflow: visible;
  position: fixed !important;
  transform: translateY(100%) !important;
  z-index: 900 !important;
}
#sheet-route.route-waypoint-scroll {
  max-height: min(46vh, 360px);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}
#sheet-route.route-waypoint-scroll #rs-top,
#sheet-route.route-waypoint-scroll #rs-bottom {
  flex-shrink: 0;
}
#sheet-route.route-waypoint-scroll .rs-route-stack {
  min-height: max-content;
}
html.ios-device #app #sheet-route.route-waypoint-scroll {
  max-height: min(40vh, 310px);
}
.route-sheet-x {
  position: absolute;
  top: 10px;
  right: 12px;
  z-index: 50;
  pointer-events: auto;
  touch-action: manipulation;
  width: var(--v4-close-size-sm);
  height: var(--v4-close-size-sm);
  border-radius: 0;
  border: none;
  background: var(--v4-close-bg);
  color: var(--v4-text-strong);
  font-size: 20px;
  font-weight: 900;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: none;
  cursor: pointer;
  font-family: inherit;
}
.route-sheet-x:active { transform: scale(.96); }

.srch-bar {
  padding: 8px 12px 6px;
  background: var(--mode-header-solid);
  flex-shrink: 0;
  border-bottom: 2px solid var(--gold);
}
.filter-bar {
  display: flex;
  overflow-x: auto;
  gap: 6px;
  min-height: 48px;
  padding: 6px 10px;
  align-items: center;
  background: var(--mode-header-solid);
  flex-shrink: 0;
  border-bottom: 2px solid var(--gold);
  scrollbar-width: none;
  position: sticky;
  top: 0;
  z-index: 10;
}
.filter-bar::-webkit-scrollbar { display: none; }

.srch-inner, #srch-modal .sm-si {
  display: flex;
  align-items: center;
  background: #efe7d7;
  border: 1.5px solid #d4c7ad;
  border-radius: 10px;
  padding: 0 14px;
  height: var(--oai-search-input-h);
  min-height: var(--oai-search-input-h);
  box-shadow: none;
  box-sizing: border-box;
}
.srch-inner input, #srch-modal .sm-si input {
  flex: 1;
  min-width: 0;
  height: 100%;
  min-height: var(--oai-search-input-h);
  background: none;
  border: none;
  outline: none;
  font-size: calc(var(--oai-search-input-fs) * var(--app-inner-font-scale,1));
  font-weight: 600;
  color: var(--oai-search-input-color);
  -webkit-text-fill-color: var(--oai-search-input-color);
  line-height: 1.2;
  font-family: inherit;
  box-sizing: border-box;
  width: 100%;
}
.srch-inner input::placeholder, #srch-modal .sm-si input::placeholder {
  font-size: calc(var(--oai-search-input-fs) * var(--app-inner-font-scale,1));
  font-weight: 500;
  color: var(--oai-search-placeholder-color);
}
.srch-x { background: none; border: none; color: rgba(255,255,255,.58); font-size: 24px; font-weight: 900; line-height: 1; width: 30px; height: 30px; min-width: 30px; cursor: pointer; padding: 0; display: none; align-items: center; justify-content: center; }

.filter-btn, .region-search-btn {
  flex-shrink: 0;
  height: 34px;
  min-height: 34px;
  padding: 0 12px;
  border-radius: 12px;
  border: 1.5px solid var(--mode-filter-border);
  background: var(--mode-filter-bg);
  color: var(--mode-filter-color);
  font-size: 14px;
  line-height: 1.15;
  font-weight: 600;
  font-family: inherit;
  cursor: pointer;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  box-shadow: none;
}
.filter-btn.active {
  background: var(--mode-filter-active-bg);
  color: var(--mode-filter-active-color);
  border-color: var(--mode-filter-active-border);
  font-weight: 800;
}

.region-wrap {
  padding: 7px 10px 6px;
  background: var(--mode-header-solid);
  flex-shrink: 0;
  border-bottom: 2px solid var(--gold);
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  overflow: hidden;
}
.region-row {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  align-items: center;
  gap: 8px;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}
.region-row .srch-inner {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
}
.region-row .srch-inner input {
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}

#region-inp {
  flex: 1;
  background: none;
  border: none;
  outline: none;
  font-family: inherit;
  font-size: calc(var(--oai-search-input-fs) * var(--app-inner-font-scale,1)) !important;
  font-weight: 600 !important;
  line-height: 1.2 !important;
  color: var(--oai-search-input-color) !important;
  -webkit-text-fill-color: var(--oai-search-input-color) !important;
}
#region-inp::placeholder {
  font-size: calc(var(--oai-search-input-fs) * var(--app-inner-font-scale,1)) !important;
  font-weight: 500 !important;
  color: var(--oai-search-placeholder-color) !important;
  -webkit-text-fill-color: var(--oai-search-placeholder-color) !important;
}
.region-search-btn {
  padding: 0 16px;
  height: 44px;
  min-height: 46px;
  border-radius: 16px;
  border: 1px solid rgba(255,255,255,.24);
  background: rgba(31,42,68,.92);
  color: var(--v4-surface-white);
  font-size: 16px;
  line-height: 1.2;
  font-weight: 800;
  font-family: inherit;
  cursor: pointer;
  flex-shrink: 0;
}
html.retreat-mode .region-search-btn {
  width: 74px;
  min-width: 74px;
  max-width: 74px;
  letter-spacing: -.04em;
  text-align: center;
}

.dio-hd {
  padding: 8px 16px 6px;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .08em;
  background: #f8f5ef;
  border-top: 1px solid var(--ui-line);
  border-bottom: 1px solid var(--ui-line);
  position: sticky;
  top: 0;
  z-index: 64;
  color: #b65a59;
}

#list-body, #nearby-body, #region-body {
  padding: 8px 0 calc(24px + env(safe-area-inset-bottom, 0));
  background: var(--bg-unified, var(--ui-bg));
}
.list-item, .nearby-item, .region-item {
  margin: 0 10px 6px;
  padding: 12px 14px;
  border: 1px solid #e8edf5;
  border-radius: 13px;
  background: rgba(255,255,255,.9);
  border-bottom: 1px solid var(--ui-line);
  box-shadow: 0 2px 8px rgba(14,21,53,.06);
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 72px;
  box-sizing: border-box;
  cursor: pointer;
  transition: transform .12s, box-shadow .12s;
}
.list-item.app-pressing,
.nearby-item.app-pressing,
.region-item.app-pressing {
  transform: translateY(6px) scale(.985);
  background: #fcfaf6;
  box-shadow: 0 1px 4px rgba(14,21,53,.04);
  filter: brightness(.96);
}
.li-dot { flex-shrink: 0; width: 10px; height: 10px; border-radius: 50%; }
.li-info, .nearby-info {
  flex: 1;
  min-width: 0;
  overflow: visible;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.li-name, .nearby-name, .sm-name, .sm-place-name {
  font-size: 16px;
  font-weight: 800;
  color: var(--mode-name-color, var(--ui-text));
  line-height: 1.35;
  letter-spacing: -.03em;
  white-space: normal;
  overflow: visible;
  word-break: keep-all;
  display: block;
}
.li-sub, .nearby-addr, .sm-sub, .sm-place-addr {
  font-size: 13px;
  font-weight: 500;
  color: var(--ui-sub);
  line-height: 1.45;
  letter-spacing: -.02em;
  white-space: normal;
  overflow: visible;
  word-break: keep-all;
  display: block;
  margin-top: 3px;
}
.li-badge, .nearby-type {
  font-size: 12px;
  font-weight: 800;
  padding: 5px 12px;
  border-radius: 999px;
  white-space: nowrap;
  flex-shrink: 0;
  border: none;
  background: var(--mode-badge-bg);
  color: var(--mode-badge-color);
}

.nearby-num {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 15px;
  font-weight: 800;
  color: var(--mode-num-color, var(--v4-surface-white));
  background: var(--mode-num-bg, var(--v4-header-navy));
  flex-shrink: 0;
}
.nearby-meta {
  text-align: right;
  flex-shrink: 0;
  line-height: 1.6;
  min-width: 68px;
  margin-left: auto;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: center;
}
.nearby-dist { font-size: 16px; color: var(--mode-dist-color, #b07a3d); font-weight: 900; margin-top: 4px; line-height: 1.2; }

html.retreat-mode #nearby-body .nearby-meta {
  width: auto;
  max-width: none;
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: center;
  margin-top: 0;
}
html.retreat-mode #nearby-body .nearby-type {
  display: inline-block;
  width: auto;
  min-width: 0;
  max-width: none;
  line-height: 1;
  box-sizing: border-box;
}
html.retreat-mode #nearby-body .nearby-dist {
  display: block;
  width: auto;
  max-width: none;
  white-space: nowrap;
  text-align: right;
  padding: 0;
}
html.retreat-mode #nearby-body .nearby-dist span {
  white-space: nowrap;
  display: inline;
  margin-left: 0;
}
html.retreat-mode #nearby-body .nearby-item,
html.retreat-mode #nearby-body .list-item {
  width: auto;
  max-width: none;
  min-width: 0;
  margin-left: 10px;
  margin-right: 10px;
  box-sizing: border-box;
}
html.retreat-mode #nearby-body { overflow-x: hidden; }

#region-body .nearby-num,
#region-body .region-item .nearby-num { background: #2563eb; color: var(--v4-surface-white); }
#region-body .nearby-type,
#region-body .region-item .nearby-type { background: #eff6ff; color: #2563eb; }
#region-body .nearby-dist { color: #2563eb; }
.region-list-hd, .ric-lbl { color: #2563eb; }
.region-list-hd {
  padding: 13px 16px;
  font-size: 18px;
  font-weight: 900;
  background: #f8f5ef;
  border-top: 1px solid var(--ui-line);
  border-bottom: 1px solid var(--ui-line);
  letter-spacing: .02em;
}

#srch-modal {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 950;
  background: rgba(14,21,53,.75);
  backdrop-filter: blur(4px);
  align-items: stretch;
  justify-content: stretch;
  overscroll-behavior: none;
}
#srch-modal.open { display: flex; }
.sm-inner { background: var(--v4-surface-white); width: 100%; flex: 1; display: flex; flex-direction: column; overflow: hidden; }
.sm-hd {
  background: var(--mode-header-solid);
  padding: 14px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-shrink: 0;
}
.sm-title { font-size: 16px; font-weight: 800; color: #c49b56; }
.sm-x {
  background: transparent;
  border: none;
  border-radius: 0;
  color: #c49b56;
  font-size: 28px;
  font-weight: 900;
  line-height: 1;
  width: 40px;
  height: 40px;
  min-width: 40px;
  flex: 0 0 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: none;
}
.sm-filter {
  display: flex;
  overflow-x: auto;
  gap: 6px;
  min-height: 48px;
  padding: 6px 10px;
  align-items: center;
  background: var(--mode-header-solid);
  flex-shrink: 0;
  border-bottom: 2px solid var(--gold);
  border-top: 1px solid rgba(255,255,255,.08);
  scrollbar-width: none;
}
.sm-filter::-webkit-scrollbar { display: none; }
.sm-fb {
  flex-shrink: 0;
  padding: 0 12px;
  border-radius: 12px;
  border: 1.5px solid var(--mode-filter-border);
  background: var(--mode-filter-bg);
  color: var(--mode-filter-color);
  font-size: 14px;
  line-height: 1.15;
  font-weight: 600;
  font-family: inherit;
  cursor: pointer;
  white-space: nowrap;
  height: 34px;
  min-height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
}
.sm-fb.on {
  background: var(--mode-filter-active-bg);
  color: var(--mode-filter-active-color);
  border-color: var(--mode-filter-active-border);
  font-weight: 800;
}
.sm-srch {
  padding: 7px 11px;
  flex-shrink: 0;
  background: var(--mode-srch-modal-bg);
  border-top: 1px solid rgba(255,255,255,.10);
  border-bottom: 2px solid var(--gold);
  display: flex;
  align-items: center;
  gap: 8px;
}
#srch-modal .sm-si { flex: 1 1 auto; min-width: 0; max-width: 100%; box-sizing: border-box; }
#srch-modal .sm-si span { flex: 0 0 auto; color: var(--oai-search-icon-color); }
#srch-modal .sm-si input { min-width: 0; max-width: 100%; }
.sm-map-select-btn{
  flex:0 0 auto;
  height:38px;
  min-height:38px;
  padding:0 11px;
  border-radius:18px;
  border:1.5px solid rgba(212,167,92,.65);
  background:#fff8e6;
  color:#7a4f00;
  font-size:12px;
  font-weight:900;
  font-family:inherit;
  letter-spacing:-.04em;
  white-space:nowrap;
  box-shadow:none;
}
.sm-map-select-btn:active{transform:scale(.985);}
.sm-body { flex: 1; overflow-y: auto; -webkit-overflow-scrolling: touch; border-top: 2px solid rgba(255,255,255,.30); }
#sm-body-all, #sm-body-place { border-top: 2px solid rgba(255,255,255,.30); }
.sm-grp {
  padding: 6px 14px 3px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .1em;
  background: #f8f5ef;
  border-top: 1px solid var(--ui-line);
  border-bottom: 1px solid var(--ui-line);
  position: sticky;
  top: 0;
  color: #b65a59;
}
.sm-item {
  padding: 11px 9px 11px 14px;
  border-bottom: 1px solid var(--ui-line);
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 8px;
  background: rgba(255,255,255,.9);
  box-sizing:border-box;
}
.sm-item.app-pressing { background: #fcfaf6; }
.sm-role { width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--v4-surface-white); font-size: 10px; font-weight: 700; flex-shrink: 0; background: var(--mode-num-bg, var(--v4-header-navy)); }
.sm-info {
  flex: 1 1 0;
  min-width: 0;
  padding-right:2px;
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.sm-badge { font-size: 10px; font-weight: 700; padding: 2px 7px; border-radius: 10px; white-space: nowrap; margin-left: auto; flex: 0 0 auto; align-self: center; }
.sm-place-item {
  padding: 11px 14px;
  border-bottom: 1px solid var(--ui-line);
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 10px;
  background: rgba(255,255,255,.9);
  min-height: 62px;
  box-sizing: border-box;
}
.sm-place-item.app-pressing { background: #fcfaf6; }
.sm-place-icon { width: 32px; height: 32px; border-radius: 8px; background: #f0f5ff; display: flex; align-items: center; justify-content: center; font-size: 16px; flex-shrink: 0; }
.sm-place-info {
  flex: 1;
  min-width: 0;
  overflow: visible;
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.sm-place-name {
  font-size: 16px;
  font-weight: 800;
  color: var(--ui-text);
  line-height: 1.35;
  letter-spacing: -.03em;
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
  word-break: keep-all;
  display: block;
  overflow-wrap: anywhere;
}
.sm-place-addr {
  font-size: 13px;
  font-weight: 500;
  color: var(--ui-sub);
  line-height: 1.45;
  letter-spacing: -.02em;
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
  word-break: keep-all;
  display: block;
  margin-top: 2px;
  overflow-wrap: anywhere;
}
.sm-place-loading { padding: 20px; text-align: center; color: #aaa; font-size: 13px; }

#sm-tab-bar {
  display: flex;
  gap: 6px;
  padding: 6px 8px;
  height: 50px;
  min-height: 50px;
  max-height: 50px;
  align-items: center;
  background: var(--v4-surface-white);
  border-bottom: 1.5px solid var(--v4-line-soft);
  box-sizing: border-box;
  flex-shrink: 0;
  overflow: visible;
}
#sm-tab-bar .sm-tab {
  flex: 1 1 0;
  min-width: 0;
  height: 38px;
  min-height: 38px;
  max-height: 38px;
  padding: 0 7px;
  border-radius: 13px;
  font-size: 13px;
  font-weight: 800;
  font-family: inherit;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
  box-sizing: border-box;
  line-height: 1;
  transition: background .14s, color .14s, border-color .14s;
  background: var(--v4-surface-white);
  color: #374151;
  border: 1.5px solid #CBD5E1;
  box-shadow: none;
}
#sm-tab-bar .sm-tab.active {
  background: var(--mode-tab-active-bg);
  color: var(--v4-surface-white);
  border-color: transparent;
  box-shadow: none;
  font-weight: 950;
}
.sm-general-place-badge{
  color:#475569!important;
  background:#eef2f7!important;
  border:1px solid #d6dde7;
}

html:not(.parish-mode):not(.retreat-mode) #srch-modal #sm-tab-bar,
html.parish-mode #srch-modal #sm-tab-bar,
html.retreat-mode #srch-modal #sm-tab-bar {
  background: var(--v4-surface-white) !important;
  border-bottom: 1.5px solid var(--v4-line-soft) !important;
  border-top: 0 !important;
  box-shadow: 0 1px 0 rgba(17,24,39,.04) !important;
}

html:not(.parish-mode):not(.retreat-mode) #srch-modal #sm-tab-bar .sm-tab {
  background: var(--v4-surface-white) !important;
  color: #1f2f6b !important;
  border-color: #CBD5E1 !important;
  box-shadow: none !important;
}
html:not(.parish-mode):not(.retreat-mode) #srch-modal #sm-tab-bar .sm-tab.active {
  background: var(--mode-tab-active-bg) !important;
  color: var(--v4-surface-white) !important;
  border-color: transparent !important;
  box-shadow: none !important;
  font-weight: 950;
}
html.parish-mode #srch-modal #sm-tab-bar .sm-tab.active,
html.retreat-mode #srch-modal #sm-tab-bar .sm-tab.active {
  background: var(--mode-tab-active-bg) !important;
  color: var(--v4-surface-white) !important;
  border-color: transparent !important;
  box-shadow: none;
  font-weight: 900;
}

#info-card {
  display: none;
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  background: linear-gradient(180deg, #fffdf9, #f6efe6);
  z-index: 860;
  border-top: 1px solid #e4d7c5;
  border-radius: 24px 24px 0 0;
  height: auto;
  min-height: 0;
  max-height: 52vh;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  box-shadow: 0 -12px 36px rgba(0,0,0,.16);
  padding-bottom: env(safe-area-inset-bottom, 0);
  will-change: transform;
}
#info-card.open { display: block; backface-visibility: visible !important; will-change: auto !important; }
#info-card.no-anim { transition: none; }

.ic-header { display: grid; grid-template-columns: minmax(0,1fr) auto auto; align-items: start; gap: 4px 8px; padding: 16px 16px 8px; }
.ic-name { font-size: 18px; font-weight: 900; line-height: 1.24; color: var(--ink); min-width: 0; white-space: normal; overflow: visible; text-overflow: clip; word-break: keep-all; overflow-wrap: anywhere; }
.ic-close-btn {
  position: relative;
  z-index: 60;
  pointer-events: auto;
  touch-action: manipulation;
  background: transparent;
  border: var(--v4-close-border);
  border-radius: var(--v4-radius-pill);
  width: 30px;
  height: 30px;
  font-size: 20px;
  line-height: 1;
  font-weight: 900;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-left: 0;
  color: var(--v4-text-strong);
  box-shadow: none;
}
.ic-meta { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 0 14px 6px; }
.ic-sub { min-width: 0; flex: 1 1 auto; font-size: 13px; color: #9ca3af; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ic-type-badge { font-size: 13px; font-weight: 700; padding: 3px 9px; border-radius: 10px; background: #f0f0f0; color: #555; white-space: nowrap; flex-shrink: 0; max-width: 94px; overflow: hidden; text-overflow: ellipsis; text-align: center; margin-left: 0; align-self: start; }
.ic-addr-row { display: flex; align-items: flex-start; gap: 10px; padding: 2px 14px 10px; border-bottom: 1px solid #f0f0f0; }
.ic-addr-left { flex: 1; min-width: 0; }
.ic-addr-lbl { display: none; font-size: 13px; color: #aaa; font-weight: 600; margin-bottom: 2px; }
.ic-addr-val { font-size: 16.5px; color: var(--ink); word-break: keep-all; line-height: 1.5; }
.ic-dist-col { visibility: hidden; display: flex; flex-direction: row; align-items: center; gap: 6px; flex-shrink: 0; min-width: 0; transform: none; margin: 0; }
.ic-dist-col.ready { visibility: visible; }
.ic-dist-lbl { font-size: 10px; line-height: 1; color: #aaa; font-weight: 600; margin: 0; white-space: nowrap; }
.ic-dist-box { font-size: 13px; font-weight: 800; color: #7a4f00; background: #fff3d0; padding: 4px 8px; border-radius: 8px; border: 1.5px solid rgba(180,110,0,.35); white-space: nowrap; text-align: center; }
.ic-body { padding: 0 0 8px; }

#app #info-card .ic-note{
  margin:6px 14px 0;
  padding:8px 10px;
  background:#fff8e1;
  border-left:3px solid #f39c12;
  border-radius:6px;
  font-size:12px;
  color:#7a4f00;
  line-height:1.55;
  display:none;
}

.ic-tel-btn {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  text-decoration: none;
  background: #f0f7ff;
  border: 1.5px solid #c5d9f5;
  border-radius: 10px;
  padding: 0 8px;
  font-size: 16px;
  font-weight: 800;
  color: #1565c0;
  height: 46px;
  white-space: nowrap;
  overflow: hidden;
}
.ic-tel-icon { font-size: 18px; }
.ic-route-btn {
  flex: 1;
  background: var(--pilgrim, var(--v4-header-navy));
  color: var(--v4-surface-white);
  border: none;
  border-radius: 10px;
  padding: 0 8px;
  font-size: 16px;
  font-weight: 800;
  cursor: pointer;
  font-family: inherit;
  height: 46px;
  display: flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
  overflow: hidden;
  box-shadow: none;
}
.ic-link-btn {
  flex: 1;
  height: 46px;
  padding: 0 4px;
  border-radius: 10px;
  font-size: 16px;
  font-weight: 800;
  text-align: center;
  cursor: pointer;
  font-family: inherit;
  white-space: nowrap;
  text-decoration: none;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  overflow: hidden;
  box-shadow: none;
}
.ic-hp-btn { background: #1b7a3e; color: var(--v4-surface-white); border: none; }
.ic-guide-btn { background: #fff3c4; color: #6c4a00; border: 1px solid #e1bd59; }
.ic-goodnews-btn { background: #e8f7ff; color: #075985; border: 1px solid #66bdf2; }
/* V8-1-14-621: info-card row/child layout is owned by the scoped #app #info-card block below. */
.btn-kakao-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 46px;
  border-radius: 10px;
  border: none;
  cursor: pointer;
  font-size: 16px;
  font-weight: 800;
  font-family: inherit;
  background: #fee500;
  color: #3a1d1d;
  width: 100%;
  box-sizing: border-box;
  white-space: nowrap;
  overflow: hidden;
}
.btn-kakao-nav:active { opacity: .85; }


/* V8-1-14-621: info-card layout/button owner block.
   성지·성당·피정 공통 인포카드의 버튼 행, 버튼 크기, 색상은 여기에서만 관리한다. */
#app #info-card .ic-btn-row,
#app #info-card .ic-links,
#app #info-card .ic-kakao-row{
  display:flex!important;
  align-items:stretch!important;
  gap:7px!important;
  padding:7px 14px 0!important;
}
#app #info-card .ic-btn-row[style*="display:none"],
#app #info-card .ic-btn-row[style*="display: none"],
#app #info-card .ic-links[style*="display:none"],
#app #info-card .ic-links[style*="display: none"],
#app #info-card .ic-kakao-row[style*="display:none"],
#app #info-card .ic-kakao-row[style*="display: none"]{
  display:none!important;
}
#app #info-card .ic-btn-row > *,
#app #info-card .ic-links > *,
#app #info-card .ic-kakao-row > *{
  flex:1 1 0!important;
  width:0!important;
  min-width:0!important;
  max-width:100%!important;
  box-sizing:border-box!important;
}
#app #info-card #ic-tel-link,
#app #info-card #ic-route-btn,
#app #info-card #ic-hp,
#app #info-card #ic-guide,
#app #info-card #ic-goodnews,
#app #info-card #ic-kakao-nav,
#app #info-card .ic-tel-btn,
#app #info-card .ic-route-btn,
#app #info-card .ic-link-btn,
#app #info-card .btn-kakao-nav{
  height:46px!important;
  min-height:46px!important;
  border-radius:10px!important;
  padding:0 8px!important;
  font-size:calc(14px * var(--app-inner-font-scale,1))!important;
  font-weight:900!important;
  letter-spacing:-.035em!important;
}
#app #info-card #ic-tel-link,
#app #info-card .ic-tel-btn{
  background:#ffffff!important;
  background-color:#ffffff!important;
  background-image:none!important;
  color:#1f2a44!important;
  border:2.2px solid #1e73be!important;
  box-shadow:0 2px 7px rgba(94,150,198,.16)!important;
}
#app #info-card #ic-route-btn,
#app #info-card .ic-route-btn{
  background:#1565c0!important;
  background-color:#1565c0!important;
  background-image:none!important;
  color:#ffffff!important;
  border:2.2px solid #0d47a1!important;
  box-shadow:0 3px 9px rgba(21,101,192,.26)!important;
}
#app #info-card #ic-hp,
#app #info-card .ic-hp-btn,
#app #info-card #ic-guide,
#app #info-card .ic-guide-btn,
#app #info-card #ic-goodnews,
#app #info-card .ic-goodnews-btn{
  background:#1f2a44!important;
  background-color:#1f2a44!important;
  background-image:none!important;
  color:#ffffff!important;
  border:2.2px solid #132039!important;
  box-shadow:0 3px 9px rgba(31,42,68,.22)!important;
}
#app #info-card #ic-kakao-nav,
#app #info-card .btn-kakao-nav{
  background:#FFE500!important;
  background-color:#FFE500!important;
  background-image:none!important;
  color:#2f1b00!important;
  border:2.2px solid #c9a800!important;
  box-shadow:0 3px 9px rgba(170,140,0,.16)!important;
}
#app #info-card #ic-tel-link::before,
#app #info-card .ic-tel-btn::before,
#app #info-card #ic-route-btn::before,
#app #info-card .ic-route-btn::before,
#app #info-card #ic-hp::before,
#app #info-card .ic-hp-btn::before,
#app #info-card #ic-guide::before,
#app #info-card .ic-guide-btn::before,
#app #info-card #ic-goodnews::before,
#app #info-card .ic-goodnews-btn::before,
#app #info-card #ic-kakao-nav::before,
#app #info-card .btn-kakao-nav::before{
  background:transparent!important;
  background-image:none!important;
  box-shadow:none!important;
}
#app #info-card #ic-tel-link .ic-tel-icon{
  color:#1f2a44!important;
}
#app #info-card #ic-tel-link:active,
#app #info-card #ic-route-btn:active,
#app #info-card #ic-hp:active,
#app #info-card #ic-guide:active,
#app #info-card #ic-goodnews:active,
#app #info-card #ic-kakao-nav:active{
  filter:none!important;
  transform:translateY(1px)!important;
}
html:not(.ios-device) #app #info-card{
  padding-bottom:0!important;
}
html:not(.ios-device) #app #info-card.open{
  height:auto!important;
  min-height:0!important;
  max-height:min(52dvh, 430px)!important;
  overflow-y:auto!important;
}
html.parish-mode:not(.ios-device) #app #info-card.open,
html.retreat-mode:not(.ios-device) #app #info-card.open{
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow-y:visible!important;
}
html:not(.ios-device) #app #info-card .ic-body{
  height:auto!important;
  min-height:0!important;
  padding-bottom:10px!important;
  box-sizing:border-box!important;
}
html.parish-mode:not(.ios-device) #app #info-card,
html.retreat-mode:not(.ios-device) #app #info-card{
  padding-bottom:0!important;
}
html.parish-mode:not(.ios-device) #app #info-card .ic-body,
html.retreat-mode:not(.ios-device) #app #info-card .ic-body{
  /* V8-1-14-621: 성당·피정 정보카드는 카카오내비 아래와 화면 끝 사이에 12px 숨구멍을 둔다. */
  padding-bottom:12px!important;
}
html.parish-mode:not(.ios-device) #app #info-card .ic-kakao-row,
html.retreat-mode:not(.ios-device) #app #info-card .ic-kakao-row,
html:not(.ios-device) #app #info-card .ic-kakao-row{
  padding-bottom:0!important;
  margin-bottom:0!important;
}
html:not(.ios-device).oai-screen-tall-phone #app #info-card #ic-tel-link,
html:not(.ios-device).oai-screen-tall-phone #app #info-card #ic-route-btn,
html:not(.ios-device).oai-screen-tall-phone #app #info-card #ic-hp,
html:not(.ios-device).oai-screen-tall-phone #app #info-card #ic-guide,
html:not(.ios-device).oai-screen-tall-phone #app #info-card #ic-goodnews,
html:not(.ios-device).oai-screen-tall-phone #app #info-card #ic-kakao-nav,
html:not(.ios-device).oai-screen-fold-wide #app #info-card #ic-tel-link,
html:not(.ios-device).oai-screen-fold-wide #app #info-card #ic-route-btn,
html:not(.ios-device).oai-screen-fold-wide #app #info-card #ic-hp,
html:not(.ios-device).oai-screen-fold-wide #app #info-card #ic-guide,
html:not(.ios-device).oai-screen-fold-wide #app #info-card #ic-goodnews,
html:not(.ios-device).oai-screen-fold-wide #app #info-card #ic-kakao-nav{
  height:45px!important;
  min-height:45px!important;
}
html:not(.ios-device).oai-screen-compact-short #app #info-card #ic-tel-link,
html:not(.ios-device).oai-screen-compact-short #app #info-card #ic-route-btn,
html:not(.ios-device).oai-screen-compact-short #app #info-card #ic-hp,
html:not(.ios-device).oai-screen-compact-short #app #info-card #ic-guide,
html:not(.ios-device).oai-screen-compact-short #app #info-card #ic-goodnews,
html:not(.ios-device).oai-screen-compact-short #app #info-card #ic-kakao-nav{
  height:48px!important;
  min-height:48px!important;
  border-radius:9px!important;
}

/* V8-1-14-621: route sheet top/bottom spacing owner. */
#sheet-route #rs-top { padding:10px 10px 0 12px!important; flex-shrink:0; }
#app #sheet-route #rs-bottom { padding:0 12px 10px!important; }
#sheet-route #rs-top .rs-action-row{
  display:grid;
  grid-template-columns:minmax(0, 1fr) 72px;
  align-items:stretch;
  column-gap:10px;
  width:100%;
  margin-top:9px;
  box-sizing:border-box;
}

.rs-route-stack {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 72px;
  grid-template-rows: 44px 5px 44px;
  column-gap: 10px;
  row-gap: 0;
  width: 100%;
  align-items: stretch;
}
.rs-route-stack.has-waypoint {
  grid-template-rows: 44px 5px 44px 5px 44px;
}
.rs-route-stack.has-waypoint2 {
  grid-template-rows: 44px 5px 44px 5px 44px 5px 44px;
}
.rs-route-stack.has-waypoint3 {
  grid-template-rows: 44px 5px 44px 5px 44px 5px 44px 5px 44px;
}
.rs-route-stack.has-waypoint4 {
  grid-template-rows: 44px 5px 44px 5px 44px 5px 44px 5px 44px 5px 44px;
}
.rs-route-stack.has-waypoint5 {
  grid-template-rows: 44px 5px 44px 5px 44px 5px 44px 5px 44px 5px 44px 5px 44px;
}
.rs-start-box, .rs-waypoint-box, .rs-waypoints-summary-box, .rs-end-box {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 0 10px;
  border: 1.5px solid var(--border);
  cursor: pointer;
  background: var(--v4-surface-white);
  border-radius: 10px;
  height: 44px;
  min-width: 0;
}
.rs-start-box { grid-column: 1; grid-row: 1; background: #f0f5ff; border-color: #1565c0; }
.rs-waypoint-box { grid-column: 1; grid-row: 3; background: #fff8e9; border-color: #f39c12; }
.rs-waypoint2-box { grid-column: 1; grid-row: 5; background: #fff4df; border-color: #d97706; }
.rs-waypoint3-box { grid-column: 1; grid-row: 7; background: #fff1dc; border-color: #b45309; }
.rs-waypoint4-box { grid-column: 1; grid-row: 9; background: #ffede2; border-color: #92400e; }
.rs-waypoint5-box { grid-column: 1; grid-row: 11; background: #fde8dc; border-color: #78350f; }
.rs-waypoints-summary-box { grid-column: 1; grid-row: 3; background: #fff7ea; border-color: #d97706; cursor: pointer; }
.rs-waypoints-summary-dot { background: #d97706; }
#rs-waypoints-summary-box,
#rs-waypoint-box,
#rs-waypoint2-box,
#rs-waypoint3-box,
#rs-waypoint4-box,
#rs-waypoint5-box,
#rs-waypoint-end-tools,
#rs-waypoint2-end-tools,
#rs-waypoint3-end-tools,
#rs-waypoint4-end-tools,
#rs-waypoint5-end-tools { display:none; }
.rs-route-stack.has-waypoint-summary { grid-template-rows: 44px 5px 44px 5px 44px; }
.rs-route-stack.has-waypoint-summary .rs-end-box { grid-row: 5 !important; }
.rs-route-stack.has-waypoint-summary #rs-start-waypoint-tools,
.rs-route-stack.has-waypoint-summary .rs-waypoint-end-tools,
.rs-route-stack.has-waypoint-summary .rs-waypoint2-end-tools,
.rs-route-stack.has-waypoint-summary .rs-waypoint3-end-tools,
.rs-route-stack.has-waypoint-summary .rs-waypoint4-end-tools,
.rs-route-stack.has-waypoint-summary .rs-waypoint5-end-tools { display: none !important; }
.rs-end-box   { grid-column: 1; grid-row: 3; background: #fff5f5; border-color: #c0392b; }
.rs-route-stack.has-waypoint .rs-end-box { grid-row: 5; }
.rs-route-stack.has-waypoint2 .rs-end-box { grid-row: 7; }
.rs-route-stack.has-waypoint3 .rs-end-box { grid-row: 9; }
.rs-route-stack.has-waypoint4 .rs-end-box { grid-row: 11; }
.rs-route-stack.has-waypoint5 .rs-end-box { grid-row: 13; }
.rs-dot { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
.rs-dot-start { background:#1565c0; }
.rs-dot-waypoint1 { background:#f39c12; }
.rs-dot-waypoint2 { background:#d97706; }
.rs-dot-waypoint3 { background:#b45309; }
.rs-dot-waypoint4 { background:#92400e; }
.rs-dot-waypoint5 { background:#78350f; }
.rs-dot-end { background:#e53935; }
.rs-lbl { flex: 1; font-size: 15px; color: #555; font-weight: 500; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rs-lbl.filled { color: var(--ink); font-weight: 700; }
.rs-lbl.empty  { color: #6f7782; font-weight: 800; }
.rs-myloc { background: none; border: 1px solid var(--border); border-radius: 13px; padding: 5px 10px; font-size: 11.5px; color: var(--pilgrim); cursor: pointer; font-family: inherit; white-space: nowrap; flex-shrink: 0; }
.rs-x { width:28px; height:30px; flex:0 0 28px; border-radius:999px!important; background:transparent!important; border:1.5px solid currentColor!important; box-shadow:none!important; color:#999; font-size:24px; font-weight:900; line-height:1!important; cursor:pointer; padding:0; display:inline-flex!important; align-items:center!important; justify-content:center!important; position:relative; z-index:12; pointer-events:auto; touch-action:manipulation; }
html:not(.ios-device).oai-screen-compact-short #sheet-route .rs-x {
  width:34px!important;
  height:34px!important;
  min-width:34px!important;
  flex-basis:34px!important;
  line-height:1!important;
}
#rs-start-x,
#rs-end-x { display:none; }
.rs-between-tools {
  --rs-control-shift-x: 0px;
  --rs-add-width: 70px;
  --rs-swap-size: 36px;
  --rs-swap-left-align: calc((var(--rs-add-width) - var(--rs-swap-size)) / -2);
  display: block;
  width: 72px;
  min-height: 0;
  height: 100%;
  padding: 0;
  margin: 0;
  position: relative;
  z-index: 20;
  overflow: visible;
  pointer-events: none;
}
.rs-between-tools > button { pointer-events:auto; touch-action:manipulation; }
#rs-start-waypoint-tools { grid-column: 2; grid-row: 1 / 4; align-self: stretch; }
.rs-route-stack.has-waypoint #rs-start-waypoint-tools { grid-row: 1 / 4; }
.rs-waypoint-end-tools { grid-column: 2; grid-row: 3 / 6; align-self: stretch; }
.rs-waypoint2-end-tools { grid-column: 2; grid-row: 5 / 8; align-self: stretch; }
.rs-waypoint3-end-tools { grid-column: 2; grid-row: 7 / 10; align-self: stretch; }
.rs-waypoint4-end-tools { grid-column: 2; grid-row: 9 / 12; align-self: stretch; }
.rs-waypoint5-end-tools { grid-column: 2; grid-row: 11 / 14; align-self: stretch; }
/* +경유지는 경로검색 줄 오른쪽의 단일 버튼만 사용하며 최대 5곳까지 순서대로 연다. */
.rs-swap-btn {
  width: var(--rs-swap-size);
  height: var(--rs-swap-size);
  border-radius: 50%;
  border: 1.5px solid var(--border);
  background: var(--v4-surface-white);
  font-size: 0;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 1px 4px rgba(0,0,0,.1);
  color: var(--ink);
  line-height: 1;
  position: absolute;
  left: calc(50% + var(--rs-control-shift-x) + var(--rs-swap-left-align));
  top: 50%;
  transform: translate(-50%, -50%);
  z-index: 40;
  pointer-events: auto;
  touch-action: manipulation;
}
.rs-swap-btn::before {
  content: "⇅";
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 17px;
  font-weight: 900;
  line-height: 1;
  transform: translateY(-0.5px);
}
.rs-swap-btn:active { opacity:.82; transform: translate(-50%, -50%) translateY(1px); }
.rs-add-waypoint-btn {
  width: var(--rs-add-width);
  min-width: var(--rs-add-width);
  height: 30px;
  border-radius: 8px;
  border: 1.5px solid #b45309;
  background: linear-gradient(180deg, #fff2b3 0%, #ffc94d 100%);
  color: #4a2600;
  font-size: 11.5px;
  font-weight: 900;
  font-family: inherit;
  letter-spacing: -0.045em;
  cursor: pointer;
  padding: 0;
  white-space: nowrap;
  box-shadow: 0 2px 7px rgba(180,83,9,.22);
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  position: absolute;
  left: calc(50% + var(--rs-control-shift-x));
  top: calc(50% + 25px);
  transform: translateX(-50%);
  z-index: 35;
  pointer-events: auto;
  touch-action: manipulation;
}
.rs-add-waypoint-btn:active { opacity:.78; transform: translateX(-50%) translateY(1px); }
#rs-result { display:none; }
.rs-result-tip {
  display: none;
  margin: 0 0 8px;
  padding: 7px 10px 8px;
  border-radius: 10px;
  background: rgba(255,255,255,.92);
  border: 1px solid rgba(21,101,192,.22);
  color: #14213d;
  font-size: 13.5px;
  font-weight: 900;
  line-height: 1.35;
  text-align: center;
  letter-spacing: -0.045em;
}
.rs-result { display:block; background: var(--v4-surface-white); border-radius: 12px; padding: 10px 10px 4px; border: 1.5px solid var(--border); box-shadow: 0 2px 10px rgba(14,21,53,.08); }
.rs-stats { display: flex; gap: 8px; margin-bottom: 8px; }
.rs-stat { flex: 1; background: var(--navy); border-radius: 10px; padding: 11px 8px; text-align: center; }
.rs-stat-lbl { font-size: 11px; color: var(--gold); font-weight: 700; margin-bottom: 6px; letter-spacing: .03em; }
.rs-stat-val { font-size: 22px; font-weight: 900; color: var(--v4-surface-white); line-height: 1; }
.rs-stat-unit { font-size: 14px; color: rgba(255,255,255,.75); font-weight: 600; }
.rs-note { font-size: 12px; color: #7a4f00; margin-bottom: 6px; display: none; background: #fff8e1; border-left: 3px solid #f39c12; border-radius: 6px; padding: 7px 10px; line-height: 1.6; }
.rs-hint { display:none!important; height:0!important; min-height:0!important; margin:0!important; padding:0!important; overflow:hidden!important; font-size:0!important; line-height:0!important; }
.route-btns { display: flex; gap: 8px; margin-top: 8px; }
.btn-kakao-route { flex: 1; min-height: 40px; padding: 12px 6px; border-radius: 10px; border: none; background: #fee500; color: #111; font-size: 14px; font-weight: 700; cursor: pointer; font-family: inherit; }
.btn-route-reset { flex: 1; min-height: 40px; padding: 12px 6px; border-radius: 10px; border: 1.5px solid var(--border); background: var(--v4-surface-white); font-size: 14px; color: var(--ink); cursor: pointer; font-family: inherit; font-weight: 600; }
#rs-search-btn { display:flex; grid-column:1; width:100%; min-width:0; height:48px; min-height:48px; margin-top:0; padding: 0 13px; background: #1565c0; color: var(--v4-surface-white); border: none; border-radius: 12px; font-size: 16px; font-weight: 900; cursor: pointer; font-family: inherit; align-items: center; justify-content: center; gap: 8px; box-sizing:border-box; box-shadow:0 4px 12px rgba(21,101,192,.24); }
#sheet-route #rs-top .rs-action-row > #rs-add-waypoint-btn{
  grid-column:2;
  justify-self:stretch;
  position:static!important;
  left:auto!important;
  top:auto!important;
  transform:none!important;
  width:72px;
  min-width:72px;
  height:48px;
  min-height:48px;
  border-radius:12px;
  font-size:11px;
  letter-spacing:-0.06em;
}
#sheet-route #rs-top .rs-action-row > #rs-add-waypoint-btn:active{transform:translateY(1px)!important;}
#rs-search-btn.disabled,#rs-search-btn:disabled{background:#9fb5d2!important;color:rgba(255,255,255,.86)!important;box-shadow:none!important;cursor:default!important;}
#rs-search-btn.ready{background:#1565c0!important;color:#fff!important;box-shadow:0 4px 12px rgba(21,101,192,.24)!important;}
#sheet-route.route-result-showing {
  max-height: min(54vh, 430px) !important;
  overflow: visible !important;
}
#sheet-route:not(.route-waypoint-scroll) {
  overflow: visible !important;
}

.region-info-card { margin: 7px 12px 8px; background: var(--v4-surface-white); border-radius: 10px; overflow: hidden; box-shadow: 0 1px 7px rgba(14,21,53,.08); border: 1px solid rgba(21,101,192,.15); }
.ric-hd { background: linear-gradient(135deg, #0e1535, #1a2456); padding: 14px 16px; display: flex; align-items: center; gap: 12px; }
html.parish-mode .ric-hd { background: linear-gradient(135deg, #374151, var(--v4-parish-gray)); }
html.retreat-mode .ric-hd { background: linear-gradient(135deg, var(--v4-retreat-green), #4F846C); }
.ric-icon { width: 38px; height: 38px; border-radius: 50%; background: rgba(212,170,106,.15); border: 1px solid rgba(212,170,106,.4); display: flex; align-items: center; justify-content: center; font-size: 20px; flex-shrink: 0; }
.ric-name-wrap { flex: 1; min-width: 0; }
.ric-name { font-size: 20px; font-weight: 900; color: var(--gold); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.25; }
.ric-addr { font-size: 13px; color: rgba(255,255,255,.88); margin-top: 4px; font-weight: 600; line-height: 1.35; white-space: normal; word-break: keep-all; overflow-wrap: anywhere; }
.ric-cat { font-size: 12px; color: rgba(212,170,106,.72); margin-top: 3px; font-weight: 700; }
.ric-map-link { flex-shrink: 0; padding: 6px 10px; background: rgba(212,170,106,.15); border: 1px solid rgba(212,170,106,.4); border-radius: 8px; font-size: 12px; font-weight: 800; color: var(--gold); text-decoration: none; }
.ric-body { padding: 8px 16px 10px; background: #f5f7fc; display: flex; flex-direction: column; gap: 3px; }
.ric-row { display: flex; align-items: flex-start; gap: 7px; font-size: 13px; color: #555; line-height: 1.45; }
.ric-lbl { color: var(--pilgrim); font-weight: 700; flex-shrink: 0; }

#exit-dlg { display: none; position: fixed; inset: 0; z-index: 99999; background: rgba(14,21,53,.82); backdrop-filter: blur(4px); align-items: center; justify-content: center; }
#exit-dlg.open { display: flex; }
.exit-box { background: var(--v4-surface-white); border-radius: 16px; padding: 28px 24px 20px; width: min(320px,88vw); text-align: center; box-shadow: 0 12px 40px rgba(0,0,0,.3); }
.exit-box h3 { font-size: 16px; font-weight: 700; color: var(--ink); margin-bottom: 8px; }
.exit-box p { font-size: 13px; color: #666; line-height: 1.6; margin-bottom: 22px; }
.exit-btns { display: flex; gap: 10px; }
.exit-cancel { flex: 1; padding: 12px; border-radius: 10px; border: 1.5px solid var(--border); background: var(--v4-surface-white); font-size: 15px; font-weight: 600; color: var(--ink); cursor: pointer; font-family: inherit; }
.exit-ok { flex: 1; padding: 12px; border-radius: 10px; border: none; background: var(--ink); color: var(--v4-surface-white); font-size: 15px; font-weight: 700; cursor: pointer; font-family: inherit; }

/* V8-1-14-563: 지도 로딩 화면의 배경/글자색 기준은 이 원래 위치에서만 관리한다. */
.map-loading { display: flex; flex-direction: column; align-items: center; justify-content: center; gap:8px; background: var(--bg-unified,var(--v4-bg-cream))!important; height: 100%; min-height:100%; }
.map-loading-icon { margin-bottom: 14px; }
.map-loading-txt { font-size: 13px; color: var(--v4-text-muted)!important; font-weight: 600; }

.empty-msg { padding: 40px 20px; text-align: center; color: #aaa; font-size: 13px; line-height: 1.8; }
#nearby-body .nearby-distance-loading {
  min-height: clamp(260px, calc(var(--cover-vh, 1vh) * 50), 430px);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  color: var(--v4-text-strong);
  font-size: calc(16px * var(--app-inner-font-scale));
  font-weight: 800;
  line-height: 1.6;
}
#nearby-body .nearby-distance-spinner { margin-bottom: 2px; }
#nearby-body .nearby-distance-title {
  display: block;
  color: var(--v4-text-strong);
  font-size: calc(16px * var(--app-inner-font-scale));
  font-weight: 900;
}
#nearby-body .nearby-distance-sub {
  display: block;
  color: var(--v4-text-muted);
  font-size: calc(13px * var(--app-inner-font-scale));
  font-weight: 700;
}
#region-body .empty-msg.region-guide-empty {
  color: var(--v4-text-strong);
  font-size: calc(15px * var(--app-inner-font-scale));
  font-weight: 800;
  line-height: 1.5;
  word-break: keep-all;
}

.trail-tabs { background: rgba(255,255,255,.88); border-bottom: 1px solid #e8ecf3; min-height: 64px !important; padding-top: 10px !important; padding-bottom: 10px !important; align-items: center !important; }

#missa-view {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 2000;
  background: var(--v4-surface-white);
  flex-direction: column;
  will-change: auto;
}
#missa-view.open { display: flex; transform: none; transition: none; animation: none; contain: layout paint size; }
#missa-bar {
  background: #fffaf1;
  padding: env(safe-area-inset-top, 0) 14px 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  min-height: calc(52px + env(safe-area-inset-top, 0));
  flex-shrink: 0;
  border-bottom: 1.5px solid #e4d6bf;
  position: relative;
}
#missa-bar-title {
  flex: 1 1 auto;
  text-align: left;
  font-size: 18px;
  font-weight: 900;
  color: #6f4f23;
  letter-spacing: .02em;
}
#missa-close {
  margin-left: auto;
  margin-right: 0;
  background: #fffaf1;
  border: 2px solid #8a6a38;
  border-radius: 999px;
  color: #1f2a44;
  font-size: 34px;
  font-weight: 800;
  line-height: 1;
  width: 44px;
  height: 44px;
  min-width: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  flex: 0 0 auto;
  box-shadow: 0 2px 7px rgba(31,42,68,.08);
}
#missa-external-panel { flex: 1; display: flex; align-items: flex-start; justify-content: center; background: #f8f6f2; padding: 42px 18px 18px; overflow-y: auto; }
.missa-external-card { width: min(420px,100%); background: var(--v4-surface-white); border: 1px solid #e5ded3; border-radius: 18px; padding: 28px 20px; text-align: center; box-shadow: 0 8px 26px rgba(14,21,53,.08); }
.missa-external-icon { width: 54px; height: 54px; margin: 0 auto 14px; border-radius: 16px; background: #f5efe4; color: var(--v4-brown); display: flex; align-items: center; justify-content: center; font-size: 26px; font-weight: 900; }
.missa-external-title { font-size: 18px; font-weight: 800; color: var(--v4-text-main); line-height: 1.35; margin-bottom: 10px; }
.missa-external-desc { font-size: 14px; font-weight: 500; color: var(--v4-text-muted); line-height: 1.7; margin-bottom: 20px; word-break: keep-all; }
.missa-open-link { display: flex; align-items: center; justify-content: center; width: 100%; height: 48px; border-radius: 12px; background: #0e1535; color: var(--v4-gold); text-decoration: none; font-size: 16px; font-weight: 800; }

#missa-frame { flex: 1 1 auto; min-height: 0; width: 100%; border: 0; background: #fffaf2; }

/* V8-1-14-621: 매일미사 iframe 전용 진입/복귀 보호창.
   진입·복귀 보호는 유지하되 오래 붙잡지 않고, 종료 순간은 짧은 fade로 번쩍임을 줄인다. */
#oai-missa-portal-guard{
  position:fixed!important;
  inset:0!important;
  z-index:2147483642!important;
  display:none!important;
  align-items:center!important;
  justify-content:center!important;
  background:var(--oai-guard-bg,#f5f0e8)!important;
  opacity:0!important;
  visibility:hidden!important;
  pointer-events:auto!important;
  transition:opacity .12s ease-out!important;
  transform:translateZ(0)!important;
  backface-visibility:hidden!important;
  contain:layout paint style!important;
}
#oai-missa-portal-guard.show{
  display:flex!important;
  opacity:1!important;
  visibility:visible!important;
}
#oai-missa-portal-guard.hide{
  display:flex!important;
  opacity:0!important;
  visibility:visible!important;
}
/* 매일미사 보호창의 로딩 표시는 아래 공통 로딩 소유 블록에서 관리한다. */

/* V8-1-14-563: 매일미사/주요기도문 하단 빠른 버튼은 이 블록을 단일 기준으로 관리한다.
   Android/compact 차이는 뒤쪽에서 같은 속성을 다시 쓰지 않고 변수만 바꾼다. */
.faith-bottom-nav {
  --faith-bottom-gap: 8px;
  --faith-bottom-pad-top: 8px;
  --faith-bottom-pad-x: 12px;
  --faith-bottom-pad-bottom: calc(env(safe-area-inset-bottom, 0px) + 8px);
  --faith-bottom-btn-offset-y: 5px;
  flex: 0 0 auto;
  display: flex;
  gap: var(--faith-bottom-gap);
  width: 100%;
  padding: var(--faith-bottom-pad-top) var(--faith-bottom-pad-x) var(--faith-bottom-pad-bottom);
  box-sizing: border-box;
  background: rgba(255,250,242,.96);
  border-top: 1px solid rgba(214,176,108,.62);
  box-shadow: 0 -8px 24px rgba(31,42,68,.10);
}
#prayer-view {
  --faith-prayer-list-bottom-pad: calc(86px + env(safe-area-inset-bottom, 0px));
  --faith-prayer-detail-bottom-pad: calc(96px + env(safe-area-inset-bottom, 0px));
}
#prayer-view .faith-bottom-nav {
  position: fixed;
  left: 0; right: 0; bottom: 0;
  z-index: 20120;
}
#prayer-view:not(.open) .faith-bottom-nav, #missa-view:not(.open) .faith-bottom-nav { display: none; }
#prayer-list-view { padding-bottom: var(--faith-prayer-list-bottom-pad) !important; }
#prayer-detail-body { padding-bottom: var(--faith-prayer-detail-bottom-pad) !important; }
.faith-bottom-btn {
  --faith-bottom-btn-height: 52px;
  --faith-bottom-btn-radius: 15px;
  --faith-bottom-btn-gap: 5px;
  flex: 1 1 0;
  min-width: 0;
  position: relative;
  top: var(--faith-bottom-btn-offset-y, 0px);
  height: var(--faith-bottom-btn-height);
  min-height: var(--faith-bottom-btn-height);
  border: 1.6px solid var(--faith-bottom-btn-border, transparent);
  border-radius: var(--faith-bottom-btn-radius);
  background: var(--faith-bottom-btn-bg, #fffaf2);
  font-family: inherit;
  font-weight: 950;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--faith-bottom-btn-gap);
  color: #172033;
  box-shadow: 0 2px 8px rgba(31,42,68,.08);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}
.faith-bottom-btn strong {
  font-size: calc(16px * var(--app-font-scale, 1));
  line-height: 1;
  letter-spacing: -.04em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  color: #172033;
  font-weight: 950;
}
.faith-bottom-btn.faith-bible { --faith-bottom-btn-bg: #dcebff; --faith-bottom-btn-border: #6f9fca; }
.faith-bottom-btn.faith-hymn { --faith-bottom-btn-bg: #ffd7eb; --faith-bottom-btn-border: #d06d9c; }
.faith-bottom-btn.faith-prayer { --faith-bottom-btn-bg: #cfeedd; --faith-bottom-btn-border: #45a97f; }
.faith-bottom-btn.faith-missa { --faith-bottom-btn-bg: #ffeca8; --faith-bottom-btn-border: #d8ae23; }
.faith-bottom-btn:active { transform: translateY(1px); filter: brightness(.97); }

#diocese-view {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 10000;
  background: #f8f6f2;
  flex-direction: column;
}
#diocese-view.open {
  display: flex;
  left: 0; right: 0; top: 0; bottom: 0;
  width: 100vw;
  height: auto;
  min-height: 0;
  overflow: hidden;
  transform: none;
  transition: none;
  animation: none;
  contain: layout paint size;
}
#diocese-bar {
  padding: env(safe-area-inset-top, 0) 14px 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: calc(52px + env(safe-area-inset-top, 0));
}
#diocese-bar-title { font-size: 16px; font-weight: 700; color: var(--gold); letter-spacing: .05em; }
#diocese-close {
  position: fixed;
  top: calc(env(safe-area-inset-top, 0px) + 10px);
  right: 14px;
  background: var(--v4-close-bg);
  border: var(--v4-close-border);
  border-radius: var(--v4-radius-pill);
  color: rgba(212,170,106,.9);
  font-size: 28px;
  font-weight: 900;
  width: var(--v4-close-size);
  height: var(--v4-close-size);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 2100;
  flex-shrink: 0;
  box-shadow: none;
}
#diocese-loading {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  top: calc(var(--oai-std-header-h, 70px) + env(safe-area-inset-top, 0px));
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  padding: 60px 20px 0;
  background: var(--v4-bg-ivory);
  z-index: 1;
  pointer-events: none;
  box-sizing: border-box;
}
#diocese-loading .diocese-loading-txt {
  font-size: 13px;
  color: var(--v4-text-muted);
  font-weight: 600;
}
#diocese-frame { flex: 1 1 auto; min-height: 0; width: 100%; max-width: 100%; border: 0; background: var(--v4-bg-ivory); overflow: hidden; box-sizing: border-box; }

/* V8-1-14-563: 문의·건의는 iframe 기반 qna-view만 사용한다. legacy qna card/tab and qna-cover floating button CSS removed. */

#cover { overscroll-behavior-y: contain; }
/* V8-1-14-563: 인트로 사진/보호막 pseudo-element 디자인은 아래 단일 사진 블록에서만 관리한다.
   이 앞쪽 블록은 커버 본문 표시/숨김만 담당해 중복 CSS 충돌을 막는다. */
html.oai-cover-booting body { background: var(--cream, var(--v4-bg-cream)) !important; }
html.oai-cover-booting #cover {
  background-color: var(--cream, var(--v4-bg-cream)) !important;
}
#cover > * {
  opacity: 1;
  transition: opacity .30s ease-out;
}
html.oai-cover-booting #cover,
html.oai-cover-booting #cover * {
  animation: none;
  scroll-behavior: auto;
}
html.oai-cover-booting #cover > * {
  opacity: 0;
  visibility: visible;
  transition: none;
}
html.oai-cover-revealing #cover > * {
  opacity: 1;
  transition: opacity .30s ease-out;
}

.cover-header {
  flex: 0 0 auto;
  width: 100%;
  padding: 0 18px clamp(5px, calc(var(--cover-vh, 1vh) * .72), 9px);
  margin: 0;
  text-align: center;
  box-sizing: border-box;
  position: relative;
  overflow: visible;
  border-radius: 0;
  background: transparent;
  border: 0;
  box-shadow: none;
}
.cover-title {
  display: inline-block;
  font-size: clamp(32px, 8.9vw, 43px);
  font-family: "Noto Sans KR", "Apple SD Gothic Neo", sans-serif;
  font-weight: 800;
  letter-spacing: -.03em;
  color: #2f3742;
  margin: 0;
  line-height: 1.14;
  text-shadow: none;
}
.cover-title::after {
  content: "";
  display: block;
  width: 100%;
  height: 2px;
  margin: clamp(5px, calc(var(--cover-vh, 1vh) * .62), 8px) 0 0;
  border-radius: 999px;
  background: var(--v4-gold);
  opacity: .82;
  box-shadow: none;
}
.cover-subtitle {
  font-size: 15px;
  font-weight: 650;
  color: var(--v4-text-muted);
  margin: 0 0 5px;
  line-height: 1.38;
}

#cover-main-block {
  flex: 1 1 0;
  height: auto;
  max-height: 100%;
  min-height: 0;
  width: 100%;
  contain: layout paint;
  max-width: min(500px, calc(100vw - 20px));
  margin: 0 auto;
  padding: 0 10px 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
  overflow: hidden;
  gap: var(--cover-main-gap);
  box-sizing: border-box;
}

.cover-grid {
  position: relative;
  flex: 1 1 auto;
  min-height: 0;
  width: 100%;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  grid-template-rows: repeat(4, 1fr);
  row-gap: clamp(5px, calc(var(--cover-vh, 1vh) * 0.82), 8px);
  column-gap: clamp(5px, 1.4vw, 9px);
  align-content: stretch;
  box-sizing: border-box;
  isolation: isolate;
}

.cover-grid::after {
  content: none;
  display: none;
}
.cover-card {
  --cover-card-point: var(--v4-gold);
  position: relative;
  overflow: hidden;
  width: 100%;
  height: 100%;
  min-height: 0;
  padding: clamp(7px, calc(var(--cover-vh, 1vh) * 1.1), 11px) 8px clamp(6px, calc(var(--cover-vh, 1vh) * .95), 10px);
  border-radius: 17px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  text-align: center;
  cursor: pointer;
  background: linear-gradient(180deg, #fffdf8 0%, #f1e5d3 100%);
  border: 1.8px solid rgba(126,104,74,.42);
  box-shadow:
    0 1px 2px rgba(31,42,68,.045),
    inset 0 1px 0 rgba(255,255,255,.96),
    inset 0 -7px 13px rgba(136,112,78,.13),
    inset 0 0 0 1px rgba(255,255,255,.34);
  outline: none;
  box-sizing: border-box;
}
.cover-card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 4px;
  background: var(--cover-card-point);
  opacity: .82;
  border-radius: 0;
}
#cc-1 { --cover-card-point: #F5A6B8; } /* 연분홍 */
#cc-2 { --cover-card-point: #9CC9F5; } /* 연파랑 */
#cc-3 { --cover-card-point: #B7D7FF; } /* 옅은 하늘색 */
#cc-4 { --cover-card-point: #A9DDB7; } /* 연초록 */
#cc-5 { --cover-card-point: #D7C4F2; } /* 연보라 */
#cc-6 { --cover-card-point: #D3D7DE; } /* 연회색 */
#cc-7 { --cover-card-point: #F1C2A6; } /* 연살구 */
.cover-card .cover-icon-wrap,
.cover-card .cover-name {
  position: relative;
  z-index: 1;
}

.cover-card.app-pressing {
  transform: translateY(7px) scale(.978);
  box-shadow:
    0 1px 2px rgba(31,42,68,.035),
    inset 0 1px 0 rgba(255,255,255,.96),
    inset 0 -7px 13px rgba(136,112,78,.16),
    inset 0 0 0 1px rgba(255,255,255,.36);
  filter: brightness(.97);
  transition: transform .16s, filter .16s, box-shadow .16s;
}

.cover-icon-wrap {
  width: clamp(44px, 12.6vw, 58px);
  min-width: clamp(44px, 12.6vw, 58px);
  height: clamp(44px, 12.6vw, 58px);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 6px;
  background: transparent;
  box-shadow: none;
  border: none;
  overflow: visible;
  line-height: 1.16;
}
.cover-icon-wrap svg { width: 65%; height: 65%; fill: var(--v4-surface-white); display: none; }
.cover-emoji {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1em;
  min-width: 1em;
  text-align: center;
  font-size: var(--cover-emoji-size, 34px);
  line-height: 1.16;
  vertical-align: middle;
  transform: none;
  text-rendering: geometricPrecision;
}
#cc-1 .cover-emoji {
  font-family: 'Times New Roman', 'Noto Sans Symbols 2', 'Segoe UI Symbol', 'Apple Symbols', serif;
}
.cover-name {
  display: block;
  width: 100%;
  min-width: 0;
  margin: 0;
  font-size: calc(16px * var(--app-font-scale));
  line-height: 1.22;
  font-weight: 850;
  letter-spacing: -.02em;
  text-align: center;
  word-break: keep-all;
  color: var(--text-main);
}
#cc-5 .cover-name { letter-spacing: -.04em; }

#cover-action-row {
  width: 100%;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: stretch;
  justify-content: stretch;
  gap: var(--cover-action-gap);
  z-index: 10;
  flex: 0 0 var(--cover-action-h);
  height: var(--cover-action-h);
  min-height: var(--cover-action-h);
  max-height: var(--cover-action-h);
  padding: 0;
  box-sizing: border-box;
}
html.app-active #cover-action-row { display: none; }
#cover-action-row.cover-action-triple {
  --cover-action-gap: clamp(4px, 1vw, 7px);
  --cover-action-font: calc(12.6px * var(--app-font-scale, 1));
}
#cover-share-box {
  display: flex;
  align-items: stretch;
  justify-content: stretch;
  width: 100%;
  min-width: 0;
  height: var(--cover-action-h);
  min-height: var(--cover-action-h);
  max-height: var(--cover-action-h);
  margin: 0;
  box-sizing: border-box;
}


#cover-diocese-box,
#cover-share-box,
#cover-update-box {
  display: flex;
  align-items: stretch;
  justify-content: stretch;
  width: 100%;
  min-width: 0;
  max-width: none;
  height: var(--cover-action-h);
  min-height: var(--cover-action-h);
  max-height: var(--cover-action-h);
  margin: 0;
  flex: 1 1 auto;
  box-sizing: border-box;
}
#cover-diocese-box { grid-column: 1; }
#cover-share-box { grid-column: 2; }
#cover-update-box { grid-column: 3; }

#cover-update-btn,
#cover-share-btn,
#cover .cover-diocese-btn,
#cover .cover-share-main-btn,
#cover .cover-refresh-main-btn {
  position: relative;
  width: 100%;
  height: var(--cover-action-h);
  min-height: var(--cover-action-h);
  max-height: var(--cover-action-h);
  border: 1.4px solid rgba(31,42,68,.18);
  border-radius: var(--cover-action-radius);
  background: linear-gradient(180deg, #fffdf8 0%, #f1e5d3 100%);
  color: var(--v4-header-navy);
  font-family: inherit;
  font-size: var(--cover-action-font);
  font-weight: 900;
  line-height: 1.12;
  letter-spacing: -.03em;
  text-align: center;
  cursor: pointer;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
  box-sizing: border-box;
  white-space: nowrap;
  overflow: hidden;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 0 7px;
  box-shadow: 0 1px 2px rgba(31,42,68,.045), inset 0 1px 0 rgba(255,255,255,.96), inset 0 -7px 13px rgba(136,112,78,.13), inset 0 0 0 1px rgba(255,255,255,.34);
  user-select: none;
  -webkit-user-select: none;
  -webkit-touch-callout: none;
}
#cover-update-box.update-needed #cover-update-btn { background: #dc2626; color: var(--v4-surface-white); box-shadow: 0 10px 24px rgba(220,38,38,.22); }
#cover-update-btn:active,
#cover-share-btn:active,
#cover .cover-diocese-btn:active,
#cover .cover-share-main-btn:active,
#cover .cover-refresh-main-btn:active { transform: translateY(2px) scale(.985); }
#cover-update-btn:disabled { opacity: .62; }
#cover .cover-diocese-btn::before,
#cover .cover-share-main-btn::before,
#cover .cover-refresh-main-btn::before {
  content: "";
  position: absolute;
  left: 8px;
  right: 8px;
  top: 0;
  height: 2px;
  border-radius: 999px;
  opacity: .46;
}
#cover .cover-diocese-btn::before { background: #C94343; }
#cover .cover-share-main-btn::before { background: #C9A24D; }
#cover .cover-refresh-main-btn::before { background: #8D98A8; }
#cover .cover-diocese-btn,
#cover .cover-share-main-btn { color: var(--v4-header-navy); }
/* V8-1-14-563: 하단 3개 버튼 글자 크기를 ‘나의 신앙생활’ 기준으로 통일 */
#cover .cover-share-main-btn,
#cover .cover-refresh-main-btn{
  font-size:var(--cover-action-font);
  letter-spacing:-.03em;
  padding-left:7px;
  padding-right:7px;
}

#cover .cover-faith-cross {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  font-size: var(--cover-faith-cross-font);
  line-height: 1;
  color: #B91C1C;
}
#cover .cover-diocese-btn .diocese-btn-label {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
html.app-active #cover-diocese-box,
html.app-active #cover-share-box { display: none; }

html:not(.ios-device).oai-screen-compact-short #cover {
  --cover-action-h: var(--cover-action-h-compact);
}

#cover-update-btn .oai-cover-version-sub {
  font-size: 0.68em;
  vertical-align: baseline;
  letter-spacing: -0.02em;
}

#cover-update-hint { display: none; margin-top: 4px; padding-left: 2px; color: #dc2626; font-size: 9.5px; font-weight: 800; line-height: 1.15; white-space: normal; max-width: 100%; word-break: keep-all; }
#cover-update-box.update-needed #cover-update-hint { display: block; }
/* V8-1-14-563: update-needed text is a small status badge, not a main category title.
   Keep it independent from the user's enlarged app font scale so it does not overflow on Fold/phone covers. */
#cover-update-box.update-needed #cover-update-btn {
  font-size: 12.8px !important;
  line-height: 1.04 !important;
  letter-spacing: -0.055em !important;
  padding: 0 6px !important;
  white-space: normal !important;
  word-break: keep-all !important;
  overflow-wrap: normal !important;
  text-align: center !important;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
#cover-update-box.update-needed #cover-update-hint {
  margin-top: 3px;
  font-size: 8.4px;
  line-height: 1.16;
  letter-spacing: -0.045em;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
html:not(.ios-device).oai-screen-compact-short #cover-update-box.update-needed #cover-update-btn {
  font-size: 11.7px !important;
  padding: 0 5px !important;
}
html:not(.ios-device).oai-screen-compact-short #cover-update-box.update-needed #cover-update-hint {
  font-size: 7.8px;
}


#cover-bottom-note {
  position: absolute;
  left: 0;
  right: 0;
  bottom: var(--cover-note-bottom);
  transform: none;
  flex: 0 0 auto;
  width: 100%;
  max-width: none;
  margin: 0 auto;
  padding: 0 max(18px, env(safe-area-inset-left, 0px)) 0 max(18px, env(safe-area-inset-right, 0px));
  text-align: center;
  font-size: clamp(7.8px, calc(var(--cover-vh, 1vh) * 1.05), 9px);
  font-weight: 500;
  line-height: 1.28;
  letter-spacing: -.02em;
  color: rgba(96,86,76,.72);
  pointer-events: none;
  z-index: 1;
  box-sizing: border-box;
}
#cover #oai-build-marker {
  position: fixed;
  left: 8px;
  bottom: calc(env(safe-area-inset-bottom, 0px) + 8px);
  z-index: 120;
}

#cover-font-controls {
  position: absolute;
  right: 12px;
  top: calc(env(safe-area-inset-top, 0px) + 12px);
  z-index: 80;
  display: flex;
  align-items: center;
  gap: 0;
  background: #fffbf2;
  border: 1.5px solid #ddd5c8;
  border-radius: 9px;
  padding: 2px 3px;
  height: 36px;
  box-shadow: 0 6px 14px rgba(31,42,68,.10);
}
#cover-font-controls .pr-font-btn,
#cover-font-controls button {
  background: none;
  border: none;
  width: 34px;
  height: 28px;
  border-radius: 7px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #5b4636;
  font-family: inherit;
  font-weight: 900;
  line-height: 1;
  cursor: pointer;
}
#cover-font-controls #cover-sm-btn { font-size: 11px; }
#cover-font-controls #cover-lg-btn { font-size: 22px; }
#cover-font-controls .pr-font-divider { width: 1px; height: 20px; background: #ddd5c8; flex: 0 0 1px; margin: 0 2px; }

/* V8-1-14-563: removed legacy direct guide-button styles; real menu entries are managed in cover-modals.css. */

#cover #cover-menu-btn.cover-menu-btn {
  position: absolute;
  left: 12px;
  top: calc(env(safe-area-inset-top, 0px) + 12px);
  z-index: 82;
  height: 40px;
  min-height: 40px;
  max-width: min(150px, calc(54vw - 18px));
  padding: 0 14px;
  border: 2px solid rgba(31,42,68,.28);
  border-radius: 999px;
  background: #ffffff;
  color: var(--v4-header-navy);
  font-family: inherit;
  font-size: calc(16px * var(--app-font-scale));
  font-weight: 900;
  line-height: 1;
  box-shadow: 0 6px 14px rgba(31,42,68,.10);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  touch-action: manipulation;
}
#cover #cover-menu-btn.cover-menu-btn:active { transform: scale(.985); }
html.app-active #cover-menu-btn { display: none !important; }
#cover #cover-menu-btn .cover-menu-label {
  display: inline-block;
  white-space: nowrap;
  letter-spacing: -.03em;
}
#cover #cover-menu-btn .cover-menu-hamburger {
  width: 15px;
  height: 12px;
  display: inline-flex;
  flex-direction: column;
  justify-content: space-between;
  flex: 0 0 auto;
}
#cover #cover-menu-btn .cover-menu-hamburger span {
  display: block;
  height: 2px;
  border-radius: 999px;
  background: currentColor;
}

/* V8-1-14-563: cover menu modal shell is owned by css/cover-modals.css. */


#oai-cover-exit-toast {
  position: fixed;
  top: 50%;
  left: 50%;
  bottom: auto;
  transform: translate(-50%, -50%) scale(.98);
  z-index: 10080;
  min-height: 48px;
  padding: 0 22px;
  border-radius: 999px;
  background: rgba(31,42,68,.96);
  color: var(--v4-surface-white);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  font-weight: 900;
  line-height: 1;
  white-space: nowrap;
  box-shadow: 0 16px 36px rgba(14,21,53,.34);
  opacity: 0;
  pointer-events: none;
  transition: opacity .16s, transform .16s;
}
#oai-cover-exit-toast.show { opacity: 1; transform: translate(-50%, -50%) scale(1); }

#pwa-install-btn {
  display: none;
  width: calc(100vw - 32px);
  max-width: 380px;
  margin: 0;
  padding: 0 20px;
  height: 72px;
  background: linear-gradient(135deg, #ff6b35 0%, #f7931e 40%, #ffcc02 100%);
  color: #1a0a00;
  border: 1px solid rgba(255,255,255,.66);
  border-radius: 22px;
  font-size: 18px;
  font-weight: 900;
  font-family: inherit;
  letter-spacing: -.3px;
  cursor: pointer;
  box-shadow: 0 0 0 100vmax rgba(244,239,228,.34), 0 6px 0 rgba(180,80,0,.35), 0 12px 32px rgba(255,107,53,.55), 0 4px 12px rgba(255,107,53,.30);
  text-align: center;
  position: fixed;
  left: 50%;
  top: 50%;
  z-index: 10020;
  transform: translate(-50%, -50%);
  overflow: hidden;
  align-items: center;
  justify-content: center;
  gap: 10px;
  -webkit-tap-highlight-color: transparent;
  animation: pwa-install-bounce 2s ease-in-out infinite;
}
@media (display-mode: standalone) { #pwa-install-btn { display: none; } }
html.app-active #pwa-install-btn { display: none; }

/* V8-1-14-563: guide/privacy modal-specific styles are owned here; duplicated panel/hero rules are merged below. */

.guide-modal { position: fixed; inset: 0; z-index: 10050; display: none; align-items: center; justify-content: center; padding: calc(env(safe-area-inset-top, 0px) + 14px) 18px calc(env(safe-area-inset-bottom, 0px) + 18px); box-sizing: border-box; font-family: 'Apple SD Gothic Neo','Noto Sans KR',sans-serif; }
.guide-modal.show { display: flex; }
.guide-backdrop { position: absolute; inset: 0; background: rgba(31,42,68,.34); -webkit-backdrop-filter: none; backdrop-filter: none; }
.guide-panel { position: relative; width: min(94vw, 920px); max-height: calc(100dvh - 34px); overflow: hidden; border-radius: 20px; background: #fffdf8; border: 1px solid #e4d8c7; box-shadow: 0 18px 44px rgba(31,42,68,.20); color: var(--v4-header-navy); padding: 20px 18px 18px; box-sizing: border-box; }
.guide-manual-panel,
.privacy-policy-panel { display: flex; flex-direction: column; height: min(86vh, 780px); overflow: hidden; }
.guide-manual-panel { padding: 20px 18px 18px; }
.guide-x { position: absolute; right: 10px; top: 10px; width: 40px; height: 40px; min-width: 40px; border: 1.5px solid currentColor; border-radius: 999px; background: transparent; box-shadow: none; color: var(--v4-header-navy); font-size: 28px; font-weight: 900; line-height: 1; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.guide-badge { display: inline-flex; align-items: center; justify-content: center; min-height: 24px; padding: 0 10px; border-radius: 999px; background: #efe4d2; color: #7a5a2b; font-size: calc(11px * var(--app-font-scale)); font-weight: 900; margin-bottom: 10px; box-sizing: border-box; }
.guide-panel h2 { margin: 0 46px 10px 0; min-height: 30px; color: var(--v4-header-navy); font-size: calc(20px * var(--app-font-scale)); line-height: 1.35; font-weight: 900; letter-spacing: -.03em; }
.guide-lead { margin: 0 0 8px; color: var(--v4-parish-gray); font-size: calc(13.5px * var(--app-font-scale)); line-height: 1.55; font-weight: 650; word-break: keep-all; }
.guide-actions { display: flex; gap: 8px; margin-top: 16px; }
.guide-primary, .guide-secondary { height: 40px; border: 0; border-radius: 12px; font-family: inherit; font-size: calc(13px * var(--app-font-scale)); font-weight: 900; cursor: pointer; flex: 1; }
.guide-primary { background: var(--v4-header-navy); color: var(--v4-surface-white); box-shadow: 0 10px 22px rgba(31,42,68,.22); }
.guide-secondary { background: #f1eadf; color: #5b4636; box-shadow: inset 0 0 0 1px #e0d3c2; }
.guide-card-list { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; padding: 2px 2px 4px; margin-top: 4px; display: flex; flex-direction: column; gap: 10px; }
.guide-card { display: block; padding: 16px 14px; border-radius: 16px; background: #fbf6ed; border: 1.5px solid #e2d6c5; box-shadow: none; }
.guide-card-main { background: #f8f1e5; border-color: #decbb0; }
.guide-card-head { display: flex; align-items: center; gap: 11px; min-width: 0; margin: 0 0 8px; }
.guide-icon { flex: 0 0 34px; width: 34px; height: 34px; border-radius: 12px; display: flex; align-items: center; justify-content: center; background: #fffdf8; box-shadow: inset 0 0 0 1.5px #eadfce; font-size: 18px; line-height: 1; }
.guide-card h3 { margin: 0; min-width: 0; font-size: calc(17px * var(--app-font-scale)); line-height: 1.3; color: var(--v4-header-navy); font-weight: 900; letter-spacing: -.03em; }
.guide-card p { margin: 0; font-size: calc(15px * var(--app-font-scale)); line-height: 1.62; color: #4b5563; font-weight: 650; word-break: keep-all; }
.guide-mini-list { margin: 0; display: grid; grid-template-columns: 72px 1fr; row-gap: 4px; column-gap: 8px; font-size: calc(12.2px * var(--app-font-scale)); line-height: 1.45; }
.guide-mini-list dt { color: #7a5a2b; font-weight: 900; }
.guide-mini-list dd { margin: 0; color: #5f6675; font-weight: 600; word-break: keep-all; }
.guide-ok { flex: 0 0 auto; width: 100%; margin-top: 12px; min-height: 48px; font-size: calc(16px * var(--app-font-scale)); }

.guide-manual-panel .guide-manual-hero,
.privacy-policy-panel .privacy-policy-hero {
  flex: 0 0 auto;
  margin: 0 0 10px;
  padding: 0;
  border-radius: 0;
  background: transparent;
  color: var(--v4-header-navy);
  box-shadow: none;
}
.guide-manual-panel .guide-manual-hero .guide-badge,
.privacy-policy-panel .privacy-policy-hero .guide-badge {
  display: inline-flex;
  min-height: 24px;
  padding: 0 10px;
  margin: 0 0 10px;
  border-radius: 999px;
  background: #efe4d2;
  color: #7a5a2b;
  font-size: calc(11px * var(--app-font-scale));
  line-height: 1.25;
  font-weight: 900;
  letter-spacing: -.02em;
  text-align: center;
}
.guide-manual-panel .guide-manual-hero h2,
.privacy-policy-panel .privacy-policy-hero h2 {
  margin: 0 46px 0 0;
  min-height: 30px;
  color: var(--v4-header-navy);
  font-size: calc(20px * var(--app-font-scale));
  line-height: 1.35;
  font-weight: 900;
  letter-spacing: -.03em;
}
.guide-manual-panel .guide-lead {
  display: none;
}
@media (max-width: 380px) {
  .guide-manual-panel .guide-manual-hero,
  .privacy-policy-panel .privacy-policy-hero { margin-bottom: 10px; }
  .guide-manual-panel .guide-manual-hero h2,
  .privacy-policy-panel .privacy-policy-hero h2 { font-size: calc(20px * var(--app-font-scale)); }
}

#cover .ios-safari-banner { display: none; }
html.ios-kakao-inapp #cover .ios-safari-banner {
  position: fixed;
  left: max(18px, calc(env(safe-area-inset-left, 0px) + 18px));
  right: max(18px, calc(env(safe-area-inset-right, 0px) + 18px));
  top: 50%;
  transform: translateY(-38%);
  z-index: 520;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
  gap: 12px;
  width: auto;
  max-width: 520px;
  margin: 0 auto;
  padding: 24px 18px 20px;
  border: 3px solid rgba(212,170,106,.96);
  border-radius: 28px;
  background: linear-gradient(180deg, var(--v4-surface-paper), #fffaf1);
  color: var(--v4-header-navy);
  box-shadow: 0 30px 70px rgba(14,21,53,.34), 0 0 0 1px rgba(31,42,68,.08);
  box-sizing: border-box;
  pointer-events: auto;
}
#cover .ios-safari-banner[hidden],
html.ios-kakao-inapp #cover .ios-safari-banner[hidden] { display: none; }
#cover .ios-safari-banner-x {
  position: absolute;
  top: 10px; right: 10px;
  width: 40px; height: 40px;
  border: 0; border-radius: 0;
  background: transparent;
  color: var(--v4-header-navy);
  font-family: inherit;
  font-size: 28px; font-weight: 900; line-height: 1;
  display: flex; align-items: center; justify-content: center;
  box-shadow: none;
}
#cover .ios-safari-banner-text {
  min-width: 0; display: flex; flex-direction: column; align-items: center;
  gap: 8px; text-align: center; line-height: 1.28; padding: 8px 36px 0;
}
#cover .ios-safari-banner-text strong { font-size: calc(24px * var(--app-font-scale)); font-weight: 900; letter-spacing: -.04em; word-break: keep-all; }
#cover .ios-safari-banner-text span { font-size: calc(16px * var(--app-font-scale)); font-weight: 850; color: rgba(31,42,68,.72); word-break: keep-all; }
#cover #ios-kakao-safari-help {
  display: flex; align-items: center; justify-content: center;
  width: 100%; min-height: 62px; padding: 0 18px;
  border: 0; border-radius: 20px;
  background: linear-gradient(135deg, var(--v4-header-navy), #31446c);
  border: 1.5px solid rgba(212,170,106,.82);
  color: var(--v4-surface-white); font-family: inherit;
  font-size: calc(21px * var(--app-font-scale)); font-weight: 900;
  line-height: 1.18; white-space: normal;
  box-shadow: 0 12px 24px rgba(31,42,68,.26);
}
#cover #ios-kakao-safari-help:active, #cover .ios-safari-banner-x:active { transform: scale(.985); }
html:not(.ios-device) #ios-kakao-safari-banner,
html:not(.ios-device) #ios-safari-guide-modal { display: none; }

.ios-safari-guide-panel {
  display: flex;
  flex-direction: column;
  width: min(94vw, 520px);
  max-height: min(88dvh, 820px);
  background: linear-gradient(180deg, #172347, #0e1535);
  border: 3px solid var(--v4-gold);
  box-shadow: 0 34px 90px rgba(0,0,0,.50), 0 0 0 1px rgba(255,255,255,.10) inset;
  color: #fffaf1;
  padding: 20px 16px 16px;
}
.ios-safari-guide-panel .guide-badge { background: #fffaf1; color: var(--v4-header-navy); border: 1.5px solid var(--v4-gold); flex: 0 0 auto; }
.ios-safari-guide-panel h2 { color: #fffaf1; margin-bottom: 6px; padding-right: 24px; flex: 0 0 auto; }
.ios-safari-guide-panel .guide-lead {
  display: block; position: relative; z-index: 2;
  margin: 0 0 12px; padding: 8px 10px;
  border-radius: 12px; background: rgba(255,250,241,.10);
  color: #fff4de; font-weight: 850; line-height: 1.45;
  font-size: 13px; box-sizing: border-box; flex: 0 0 auto;
}
.ios-safari-guide-panel .guide-actions { flex: 0 0 auto; margin-top: 12px; padding-top: 8px; border-top: 1px solid rgba(212,170,106,.45); }
.ios-safari-guide-panel .guide-primary { background: #fffaf1; color: var(--v4-header-navy); border: 2px solid var(--v4-gold); box-shadow: 0 10px 22px rgba(0,0,0,.26); }
#ios-safari-guide-modal .guide-backdrop { background: rgba(14,21,53,.76); backdrop-filter: blur(4px); }
#ios-safari-guide-modal .guide-x { background: transparent; color: #111; border: none; box-shadow: none; border-radius:0; display: flex; align-items: center; justify-content: center; }
.ios-safari-scroll { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; padding: 0 2px 8px; margin-top: 2px; box-sizing: border-box; }
.ios-safari-scroll .guide-lead { margin: 0 0 12px; }
.ios-safari-scroll .ios-safari-steps { overflow: visible; flex: 0 0 auto; min-height: auto; padding: 0 0 2px; }
.ios-safari-steps { flex: 1 1 auto; min-height: 0; margin-top: 0; padding: 2px 2px 8px; gap: 10px; overflow: auto; -webkit-overflow-scrolling: touch; display: flex; flex-direction: column; }
.ios-safari-step {
  display: grid;
  grid-template-columns: 26px 1fr;
  grid-template-rows: auto auto;
  align-items: start;
  gap: 7px 9px;
  padding: 10px 11px;
  border-radius: 16px;
  background: #fffaf1;
  border: 2px solid rgba(212,170,106,.70);
  box-shadow: 0 8px 20px rgba(0,0,0,.13);
}
.ios-safari-step b { display: flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 50%; background: var(--v4-header-navy); color: var(--v4-surface-white); font-size: 13px; line-height: 1; }
.ios-safari-step span { min-width: 0; font-size: 13px; font-weight: 800; line-height: 1.36; color: #3e362e; word-break: keep-all; }
.ios-safari-step img { grid-column: 1 / 3; justify-self: center; display: block; max-width: 100%; max-height: 180px; object-fit: contain; border-radius: 14px; background: #fffaf1; box-shadow: 0 6px 18px rgba(31,42,68,.10); }
.ios-safari-shot { grid-column: 1 / 3; justify-self: center; position: relative; display: block; max-width: 100%; border-radius: 14px; background: #fffaf1; box-shadow: 0 6px 18px rgba(31,42,68,.10); overflow: hidden; }
.ios-safari-shot img { grid-column: auto; width: 100%; height: auto; max-width: 100%; border-radius: 14px; box-shadow: none; background: transparent; }
.ios-gold-highlight { position: absolute; right: 2.6%; top: 8%; width: 24.5%; height: 84%; border: 4px solid var(--v4-gold); border-radius: 28px; box-shadow: 0 0 0 1px rgba(255,255,255,.75) inset, 0 2px 8px rgba(31,42,68,.16); pointer-events: none; box-sizing: border-box; }
.ios-safari-step:nth-child(1) img { max-height: 150px; }
.ios-safari-step:nth-child(2) img { max-height: 210px; }
.ios-safari-step:nth-child(3) img { max-height: 260px; }
.ios-safari-step:nth-child(4) img { max-height: 225px; }
.ios-safari-step:nth-child(5) img { max-height: 245px; }
.ios-safari-step b { width: 26px; height: 26px; font-size: 13px; }
.ios-safari-step { grid-template-columns: 26px 1fr; }

.sheet, .trail-sheet, #prayer-detail, #info-card { will-change: transform; }
.module-view:not(.open), #missa-view:not(.open), #diocese-view:not(.open), #prayer-view:not(.open) { contain: strict; }

/* V8-1-14-563: 성지/성당/피정 진입 첫 화면은 #sheet-nearby의 nearby-distance-loading이 기준이다.
   이전 #oai-category-entry-veil은 stale class cleanup용 호환 요소로만 남긴다. */
#oai-category-entry-veil {
  display: none !important;
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
  animation: none !important;
  transition: none !important;
}
#oai-category-entry-veil::before,
#oai-category-entry-veil::after {
  content: "" !important;
  display: none !important;
  opacity: 0 !important;
  visibility: hidden !important;
  animation: none !important;
}

html.oai-hide-main-map-layer #map-wrap,
html.oai-hide-main-map-layer #loc-btn,
html.oai-hide-main-map-layer #legend,
html.oai-hide-main-map-layer #route-guide,
html.oai-hide-main-map-layer .sheet,
html.oai-hide-main-map-layer #info-card,
html.oai-hide-main-map-layer #srch-modal { visibility: hidden; pointer-events: none; }
html.oai-hide-main-map-layer #app { background: #ede8e0; }

html.oai-stability-veil { background: var(--v4-bg-cream) !important; }
html.oai-stability-veil *, html.oai-external-return-freeze *, html.oai-resume-freeze * { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
@keyframes oaiStabilityVeilIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes oaiStabilityVeilOut { from { opacity: 1; } to { opacity: 0; } }

html.oai-returning * { transition: none; animation: none; scroll-behavior: auto; }
html.oai-cover-resizing #cover, html.oai-cover-resizing #cover * { transition: none; animation: none; }

#app.oai-enter-ready,
#prayer-view.oai-enter-ready,
#diocese-view.oai-enter-ready,
.module-view.oai-enter-ready,
.oai-enter-ready {
  opacity: .01 !important;
  transform: none !important;
  transition: none !important;
  will-change: opacity;
}
#app.oai-enter-ready.oai-enter-show,
#prayer-view.oai-enter-ready.oai-enter-show,
#diocese-view.oai-enter-ready.oai-enter-show,
.module-view.oai-enter-ready.oai-enter-show,
.oai-enter-ready.oai-enter-show {
  opacity: 1 !important;
  transform: none !important;
  transition: opacity var(--oai-category-enter-ms) ease-out !important;
}
.oai-popup-ready {
  opacity: .01 !important;
  transform: none !important;
  transition: none !important;
  will-change: opacity;
}
.oai-popup-ready.oai-popup-show {
  opacity: 1 !important;
  transform: none !important;
  transition: opacity var(--oai-popup-enter-ms) ease-out !important;
}
html.oai-returning .oai-enter-ready,
html.oai-returning .oai-popup-ready {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
}
@media (prefers-reduced-motion: reduce) {
  .oai-enter-ready,
  .oai-enter-ready.oai-enter-show,
  .oai-popup-ready,
  .oai-popup-ready.oai-popup-show { opacity: 1 !important; transition: none !important; }
}

.sheet.oai-preopen-nearby { transform: none; transition: none; animation: none; will-change: auto; }
#sheet-nearby.oai-preopen-nearby .sheet-body { background: var(--ui-bg); }

#oai-swipe-overlay {
  position: fixed; top: 50%; z-index: 9500;
  transform: translateY(-50%); pointer-events: none;
  width: 48px; height: 48px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: rgba(14,21,53,.82); color: var(--v4-gold);
  font-size: 24px; font-weight: 700;
  box-shadow: 0 4px 18px rgba(0,0,0,.35);
  opacity: 0; transition: none;
}
@keyframes oaiSwipeShow { 0%{opacity:0;transform:translateY(-50%) scale(.75);}35%{opacity:1;transform:translateY(-50%) scale(1.08);}100%{opacity:0;transform:translateY(-50%) scale(1);} }
#oai-swipe-overlay.active { animation: oaiSwipeShow .38s ease forwards; }

#cv-pull-modern {
  position: fixed;
  top: calc(50px + env(safe-area-inset-top, 0px));
  left: 50%;
  width: 44px; height: 44px;
  display: flex; align-items: center; justify-content: center;
  padding: 0; border-radius: 999px;
  background: var(--v4-surface-white); border: 1px solid #d0d7de;
  box-shadow: 0 8px 18px rgba(27,31,36,.14);
  color: #57606a; z-index: 10060;
  opacity: 0; pointer-events: none;
  transform: translate(-50%, 0) scale(1);
  transform-origin: center;
  transition: opacity .10s, transform .08s;
  will-change: opacity, transform;
}
#cv-pull-modern.show, #cv-pull-modern.ready, #cv-pull-modern.refreshing { opacity: 1; }
#cv-pull-modern .cv-pull-ring { width: 44px; height: 44px; display: flex; align-items: center; justify-content: center; background: transparent; }
#cv-pull-modern .cv-pull-icon { width: 25px; height: 25px; display: block; color: #57606a; stroke: currentColor; transition: transform .16s, color .16s; }
#cv-pull-modern.ready .cv-pull-icon { color: #0969da; transform: rotate(180deg); }
#cv-pull-modern.refreshing .cv-pull-icon { color: #0969da; animation: cv-pull-spin .72s linear infinite; }
#cv-pull-modern.ready { box-shadow: 0 10px 24px rgba(9,105,218,.20); }
html.app-active #cv-pull-modern { opacity: 0; display: none; }
@keyframes cv-pull-spin { from{transform:rotate(0)}to{transform:rotate(360deg)} }

.app-pressing { transition: transform .16s, filter .16s; will-change: transform; }
.cover-card.app-pressing, .cv-btn.app-pressing, .cv-extra-btn.app-pressing { transform: translateY(8px) scale(.974); filter: brightness(.94); transition: transform .16s, filter .16s; }

html.ios-device #app .module-bar,
html.ios-device #prayer-view .module-bar,
html.ios-device #web-view .module-bar,
html.ios-device #trail-view .module-bar,
html.ios-device #diocese-view .module-bar,
html.ios-device #qna-view .module-bar {
  padding: calc(env(safe-area-inset-top, 0px) + 8px) 12px 8px;
  gap: 9px;
}
html.ios-device #app .module-bar-main,
html.ios-device #prayer-view .module-bar-main,
html.ios-device #web-view .module-bar-main,
html.ios-device #trail-view .module-bar-main,
html.ios-device #diocese-view .module-bar-main,
html.ios-device #qna-view .module-bar-main { gap: 9px; }
html.ios-device #app .module-bar-ico,
html.ios-device #prayer-view .module-bar-ico,
html.ios-device #web-view .module-bar-ico,
html.ios-device #trail-view .module-bar-ico,
html.ios-device #diocese-view .module-bar-ico,
html.ios-device #qna-view .module-bar-ico { width: 34px; height: 34px; }
html.ios-device .module-close,
html.ios-device #prayer-close { width: 40px; height: 40px; min-width: 40px; font-size: 28px; }

html.ios-device #prayer-tabs,
html.ios-device #web-view .web-cats,
html.ios-device #trail-view .trail-tabs {
  height: var(--oai-ios-std-tabbar-h);
  min-height: var(--oai-ios-std-tabbar-h);
  max-height: var(--oai-ios-std-tabbar-h);
  padding: 7px 10px;
  gap: 6px;
  align-items: center;
  overflow-x: auto;
  overflow-y: hidden;
}
html.ios-device #prayer-tabs .pr-tab,
html.ios-device #web-view .web-cat-btn,
html.ios-device #trail-view .trail-tab {
  height: var(--oai-ios-std-tab-btn-h);
  min-height: var(--oai-ios-std-tab-btn-h);
  padding: 0 11px;
  border-radius: 10px;
  font-size: calc(14px * var(--app-inner-font-scale));
  line-height: 1;
  gap: 5px;
  box-sizing: border-box;
  white-space: nowrap;
}
html.ios-device #trail-view .trail-tab { flex: 1 1 0; }
html.ios-device #app .sm-tab,
html.ios-device .trail-tab { min-height: 30px; padding: 3px 9px; border-radius: 12px; }
html.ios-device #app .sheet-hd { padding: 10px 12px; }
html.ios-device #app .sheet-x { width: 40px; height: 40px; min-width:40px; font-size: 28px; line-height:1; }
html.ios-device #app .route-sheet-x { width: 30px; height: 30px; min-width:30px; font-size: 20px; line-height:1; }
html.ios-device #app #info-card { border-radius: 20px 20px 0 0; max-height: 48vh; }
html.ios-device #app .ic-header { padding: 11px 12px 5px; }
html.ios-device #app .ic-close-btn { width: 30px; height: 30px; font-size: 20px; line-height:1; }
html.ios-device #app .ic-meta { padding: 0 12px 6px; }
html.ios-device #app .ic-addr-row { gap: 8px; padding: 0 12px 8px; }
html.ios-device #app .ic-btn-row { gap: 6px; padding: 8px 12px 0; }
html.ios-device #app .ic-kakao-row { gap: 6px; padding: 7px 12px 0; }
html.ios-device #app .ic-tel-btn,
html.ios-device #app .ic-route-btn,
html.ios-device #app .ic-link-btn,
html.ios-device #app .btn-kakao-nav { height: 40px; min-height: 40px; border-radius: 9px; }
html.ios-device #app .btn-kakao-route,
html.ios-device #app .btn-route-reset { min-height: 40px; border-radius: 9px; }
html.ios-device #app .region-item,
html.ios-device #app .nearby-item,
html.ios-device #app .list-item { padding: 7px 11px; gap: 8px; min-height: 62px; align-items: center; }
html.ios-device #app .nearby-info,
html.ios-device #app .li-info { display: flex; flex-direction: column; justify-content: center; gap: 2px; min-height: 0; }
html.ios-device #app .nearby-name,
html.ios-device #app .li-name { line-height: 1.24; }
html.ios-device #app .nearby-addr,
html.ios-device #app .li-sub { line-height: 1.26; }
html.ios-device #app .nearby-meta, html.ios-device #app .li-badge { margin-top: 0; align-self: center; }
html.ios-device #app .region-info-card { margin: 5px 10px 6px; border-radius: 9px; }
html.ios-device #app .ric-hd { padding: 12px 14px; gap: 9px; }
html.ios-device #app .ric-icon { width: 33px; height: 33px; font-size: 16px; }
html.ios-device #app .ric-body { padding: 6px 12px 8px; }

html.ios-device .trail-card { border-radius: 18px; }
html.ios-device #app #nearby-sheet-title,
html.ios-device #app #list-sheet-title,
html.ios-device #app #region-sheet-title { font-size: 13.6px; line-height: 1.16; letter-spacing: -.015em; }
html.ios-device #prayer-view.open #prayer-tabs {
  height: var(--oai-ios-std-tabbar-h);
  min-height: var(--oai-ios-std-tabbar-h);
  max-height: var(--oai-ios-std-tabbar-h);
  align-items: center;
  overflow-x: auto;
  overflow-y: hidden;
  display: flex;
}
html.ios-device #prayer-bar-ttl,
html.ios-device #prayer-bar .module-bar-title,
html.ios-device #web-view .module-bar-title,
html.ios-device #trail-view .module-bar-title,
html.ios-device #qna-view .module-bar-title,
html.ios-device #diocese-view .module-bar-title,
html.ios-device #diocese-bar-title { font-size: calc(18px * var(--app-font-scale)); line-height: 1.18; letter-spacing: -.025em; }
html.ios-device #prayer-bar-sub,
html.ios-device #prayer-bar .module-bar-sub,
html.ios-device #web-view .module-bar-sub,
html.ios-device #trail-view .module-bar-sub,
html.ios-device #qna-view .module-bar-sub,
html.ios-device #diocese-view .module-bar-sub { font-size: calc(10.2px * var(--app-font-scale)); line-height: 1.18; }

html.oai-font-global .pr-title { font-size: var(--app-fs-title); line-height: 1.34; }

html.oai-font-global .pr-content-card { font-size: var(--app-fs-body); line-height: 2.05; }

html.oai-font-global .trail-tab { font-size: calc(15px * var(--app-inner-font-scale)); }
/* V8-1-14-621 step6: trail route button font sizes are owned by the final non-cover font-global block below. */
html.oai-font-global .pr-icon-dot { width: calc(36px * var(--app-inner-font-scale)); height: calc(36px * var(--app-inner-font-scale)); flex-basis: calc(36px * var(--app-inner-font-scale)); font-size: calc(17px * var(--app-inner-font-scale)); }
html.oai-font-global .sheet-title { font-size: calc(18px * var(--app-inner-font-scale)); }
/* V8-1-14-621 step22: module bar sub/icon final values are owned by the non-cover font-global block below. */
html.oai-font-global .lv-rg, html.oai-font-global .lv-det, html.oai-font-global .lv-op,
html.oai-font-global .c-gw, html.oai-font-global .c-rg, html.oai-font-global .c-lbl,
html.oai-font-global .dd, html.oai-font-global .sg { font-size: calc(12px * var(--app-inner-font-scale)); line-height: 1.45; }

html.oai-font-global #cover .cover-subtitle { font-size: 16px; }
html.oai-font-global #cover .cover-name { font-size: calc(16px * var(--app-font-scale)); }
html.oai-font-global #cover .cover-emoji { font-size: var(--cover-emoji-size, 40px); background: transparent; box-shadow: none; }
/* V8-1-14-621 step22: module bar title final values are owned by the non-cover font-global block below. */

html.oai-font-global #region-body .nearby-item,
html.oai-font-global #region-body .region-place-cand { font-size: calc(16px * var(--app-inner-font-scale)); }
/* V8-1-14-621 step6: region item name/address/type/distance font sizes are owned by the final non-cover font-global block below. */
html.oai-font-global #region-body .nearby-num { font-size: calc(13px * var(--app-inner-font-scale)); }
html.oai-font-global #region-body .region-list-hd,
html.oai-font-global #region-body .dio-hd { font-size: calc(17px * var(--app-inner-font-scale)); line-height: 1.35; font-weight: 900; }

@media (max-width: 380px) {
  #cover-main-block { max-width: calc(100vw - 20px); }
}
@media (min-width: 720px) {
  #cover-main-block {
    max-width: min(560px, calc(100vw - 80px));
    max-height: 100%;
  }
  #cover-bottom-note { padding-left: 110px; padding-right: 110px; }
  #prayer-bar, #diocese-bar, .module-bar { width: 100vw; max-width: 100vw; }
}
@media (max-height: 720px) {
  #cover .cover-header { padding-bottom: clamp(4px, calc(var(--cover-vh, 1vh) * .58), 7px); }
  #cover-main-block {
    max-height: 100%;
    gap: clamp(4px, calc(var(--cover-vh, 1vh) * .55), 7px);
  }
  #cover #cover-action-row { margin-top: 0; }
}
/* V8-1-14-563: obsolete mass-quick short-height media override removed; css/cover-modals.css owns mass quick sizing. */
@media (max-height: 650px) {
  #cover { --cover-top-safe: calc(env(safe-area-inset-top, 0px) + clamp(58px, calc(var(--cover-vh, 1vh) * 9.4), 74px)); --cover-bottom-safe: calc(env(safe-area-inset-bottom, 0px) + clamp(6px, calc(var(--cover-vh, 1vh) * 1.0), 10px)); --cover-note-reserve: clamp(38px, calc(var(--cover-vh, 1vh) * 4.8), 50px); --cover-bottom-reserve: var(--cover-note-reserve); --cover-note-bottom: calc(env(safe-area-inset-bottom, 0px) + clamp(12px, calc(var(--cover-vh, 1vh) * 2.0), 18px)); padding-top: var(--cover-top-safe); padding-bottom: calc(var(--cover-bottom-safe) + var(--cover-bottom-reserve)); }
  #cover-bottom-note { bottom: var(--cover-note-bottom); }
  #cover .cover-header { padding-bottom: 6px; }
  #cover .cover-grid { row-gap: clamp(2px, calc(var(--cover-vh, 1vh) * 0.5), 4px); }
  #cover .cover-card { padding: clamp(4px, calc(var(--cover-vh, 1vh) * 0.8), 8px) 6px; }
  #cover .cover-emoji { font-size: 22px; }
  #cover #cover-update-btn { min-height: 32px; height: 32px; padding: 0 10px; }
  #cover #cover-update-hint { font-size: 8.5px; }
  #cover #cover-menu-btn.cover-menu-btn { height: 36px; min-height: 36px; padding: 0 12px; }
  .guide-panel { max-height: 90dvh; padding: 16px 14px 14px; }
  html.ios-kakao-inapp #cover .ios-safari-banner { top: 49%; transform: translateY(-36%); padding: 20px 16px 16px; gap: 10px; border-radius: 24px; }
}
@media (max-height: 700px) {
  #cover .ios-safari-banner-text strong { font-size: calc(22px * var(--app-font-scale)); }
  #cover .ios-safari-banner-text span { font-size: calc(14px * var(--app-font-scale)); }
  #cover #ios-kakao-safari-help { min-height: 56px; font-size: calc(19px * var(--app-font-scale)); }
  .ios-safari-step img { max-height: 120px; }
}
@media (min-width: 600px) {
  #sm-tab-bar { height: 60px; min-height: 60px; max-height: 60px; }
  #sm-tab-bar .sm-tab { font-size: 16px; }
}

.sr-only { position: absolute; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap; border: 0 !important; }
.lv-parish-count, .oai-parish-count { font-size: calc(8px * var(--app-inner-font-scale)); font-weight: 400; letter-spacing: 0; white-space: nowrap; gap: 0; }
.oai-parish-count-line { font-weight: 500; letter-spacing: 0; }

#prayer-tabs .pr-tab,
.trail-tabs .trail-tab,
#srch-modal #sm-tab-bar .sm-tab,
#tabbar .tab-btn { scroll-margin-inline: 18px; }

html:not(.app-active), html:not(.app-active) body { scroll-behavior: auto; }

.cv-title em{color:#e1ba7a;text-shadow:0 8px 24px rgba(212,170,106,.22)}
.cv-sub{margin:6px 0 0;max-width:420px;font-size:13px;line-height:1.4;color:#667085;letter-spacing:.02em}
.cv-chip-row{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:14px 0 0}
.cv-chip{padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.08);border:1px solid rgba(212,170,106,.22);color:#f5edd8;font-size:11px;font-weight:700;box-shadow:inset 0 1px 0 rgba(255,255,255,.06)}
.cv-hero-note{font-size:12px;line-height:1.7;color:rgba(245,237,216,.72);max-width:420px;margin:0 auto}
.cv-section-hd{width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:0 4px 10px}
.cv-section-kicker{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:rgba(212,170,106,.72);font-weight:800}
.cv-section-title{font-size:17px;color:#fff7eb;line-height:1.35}
.cv-grid{max-width:100%;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid;margin-top:4px}
.cv-btn{min-height:108px;padding:14px 10px 12px;border-radius:22px;align-items:flex-start;justify-content:space-between;text-align:left;box-shadow:0 14px 32px rgba(31,36,49,.08);border:1px solid rgba(228,232,241,.96);position:relative;display:flex;flex-direction:column;background:rgba(255,255,255,.88);color:var(--ui-ink);backdrop-filter:blur(12px)}
.cv-btn::before{content:'';position:absolute;right:-12px;bottom:-20px;width:118px;height:118px;border-radius:50%;background:rgba(255,255,255,.08)}
.cv-btn::after{background:linear-gradient(140deg,rgba(255,255,255,.20) 0%,rgba(255,255,255,.03) 48%,transparent 72%)}
.srch-bar,.filter-bar,.region-wrap{backdrop-filter:blur(8px)}

.cv-bg,.cv-stars,.cv-wave,.cv-arches,.cv-chip-row,.cv-section-hd,.cv-hero-note,.cv-orn,.cv-div{display:none}
.cv-orbit{position:absolute;border-radius:999px;filter:blur(2px);opacity:.55;pointer-events:none}
.cv-orbit-a{width:280px;height:280px;top:-120px;right:-80px;background:radial-gradient(circle,rgba(53,99,255,.18) 0%,rgba(53,99,255,0) 68%)}
.cv-orbit-b{width:220px;height:220px;bottom:-60px;left:-60px;background:radial-gradient(circle,rgba(217,79,112,.16) 0%,rgba(217,79,112,0) 70%)}
.cv-shell{position:relative;z-index:2;display:flex;flex-direction:column;justify-content:space-between;gap:16px;width:min(100%,540px);min-height:100%;padding:calc(env(safe-area-inset-top,0) + 18px) 16px calc(16px + env(safe-area-inset-bottom,0));margin:0 auto}
.cv-head{display:flex;align-items:center;gap:14px;padding:4px 2px 0}
.cv-mark{width:50px;height:50px;border-radius:18px;background:linear-gradient(135deg,var(--v4-header-navy),#384b74);color:var(--v4-surface-white);display:flex;align-items:center;justify-content:center;font-size:22px;box-shadow:0 18px 40px rgba(31,42,68,.22)}
.cv-head-copy{min-width:0}
.cv-btn.app-pressing{transform:translateY(8px) scale(.974);filter:brightness(.94);transition:transform .16s ease,filter .16s ease}
.cv-btn-icon,.cv-btn-badge{width:40px;height:40px;border-radius:14px;display:flex;align-items:center;justify-content:center;color:var(--v4-surface-white);background:transparent;background-color:transparent;box-shadow:none;border:none}
.cv-btn-desc,.cv-btn-top{display:none}
.cv-stats{padding:12px 16px;border-radius:18px;background:rgba(255,255,255,.76);border:1px solid rgba(228,232,241,.96);box-shadow:0 14px 28px rgba(31,36,49,.07);font-size:12px;font-weight:800;color:#5c6578;letter-spacing:.01em;text-align:center}
#cv-pull{color:#7a87a4}
@media (max-width:420px){.cv-shell{padding-left:14px;padding-right:14px;gap:14px}.cv-grid{gap:8px}.cv-btn{min-height:98px;padding:12px 9px 11px;border-radius:20px}.cv-btn-icon,.cv-btn-badge{width:40px;height:40px;border-radius:14px;display:flex;align-items:center;justify-content:center;color:var(--v4-surface-white);background:transparent!important;background-color:transparent!important;box-shadow:none!important;border:none!important}}
.trail-tab{border-radius:14px;border:1px solid #e2e7f1;background:#f7f9fd;color:#657086;box-shadow:inset 0 1px 0 rgba(255,255,255,.7);font-weight:800}

#cover::before,#cover::after,.cv-orbit,.cv-orbit-a,.cv-orbit-b{display:none;content:none}

.cv-shell-stage{position:relative;z-index:2;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;gap:10px;width:min(100%,560px);height:var(--cover-h);min-height:var(--cover-h);padding:calc(env(safe-area-inset-top,0) + 9vh) 0 calc(9vh + env(safe-area-inset-bottom,0));margin:0 auto;box-sizing:border-box}
.cv-stage{position:relative;align-self:center;width:min(100%,calc((var(--cover-h) - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 124px) * .5625));aspect-ratio:9 / 16;min-height:0}
.cv-stage-art{display:block;width:100%;height:100%;object-fit:contain;border-radius:22px;box-shadow:0 12px 30px rgba(140,112,71,.16);user-select:none;-webkit-user-drag:none;pointer-events:none}
.cv-hotspot{position:absolute;border:none;background:transparent;border-radius:22px;cursor:pointer;z-index:2;outline:none}
.cv-hotspot.app-pressing{background:rgba(255,255,255,.16);box-shadow:inset 0 3px 12px rgba(31,42,68,.18),inset 0 0 0 2px rgba(255,255,255,.34);transform:translateY(8px) scale(.98);transition:transform .16s ease,background .16s ease,box-shadow .16s ease,filter .16s ease;filter:brightness(.94)}
.cv-hotspot.hs-missa{left:7.5%;top:18.2%;width:40%;height:17.6%}
.cv-hotspot.hs-prayer{right:7.5%;top:18.2%;width:40%;height:17.6%}
.cv-hotspot.hs-shrine{left:7.5%;top:39.8%;width:85%;height:17.7%}
.cv-hotspot.hs-parish{left:7.5%;top:59.0%;width:40%;height:17.2%}
.cv-hotspot.hs-retreat{right:7.5%;top:59.0%;width:40%;height:17.2%}
.cv-hotspot.hs-trail{left:7.5%;top:78.3%;width:85%;height:17.0%}

.cv-extra-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:min(100%,calc((var(--cover-h) - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 124px) * .5625))}
.cv-extra-btn{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;min-height:88px;padding:10px 8px;border:1px solid rgba(190,160,118,.42);border-radius:20px;cursor:pointer;font-family:inherit;text-align:center;box-shadow:0 10px 24px rgba(118,92,57,.14);overflow:hidden}
.cv-extra-btn::before{content:'';position:absolute;inset:4px;border-radius:16px;border:1px solid rgba(255,246,229,.72);pointer-events:none}
.cv-extra-btn::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.28),rgba(255,255,255,0) 55%);pointer-events:none}
.cv-extra-btn .cv-btn-icon{width:36px;height:36px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;box-shadow:inset 0 1px 0 rgba(255,255,255,.28)}
.cv-extra-btn .cv-btn-label{font-size:11.4px;line-height:1.12;word-break:keep-all;font-weight:900;letter-spacing:-.04em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cv-extra-btn.cv-btn-web{background:linear-gradient(135deg,#efe1c7,#ddc6a2);color:#4b3420}
.cv-extra-btn.cv-btn-diocese{background:linear-gradient(135deg,#dce7f1,#c5d6e6);color:#26384d}
.cv-extra-btn.cv-btn-web .cv-btn-icon{background:rgba(255,255,255,.34);color:#5a4026}
.cv-extra-btn.cv-btn-diocese .cv-btn-icon{background:rgba(255,255,255,.34);color:#334c6a}
@media (max-width:420px){.cv-stage,.cv-extra-row{width:min(100%,calc((var(--cover-h) - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 112px) * .5625))}.cv-extra-row{gap:8px}.cv-extra-btn{min-height:78px;border-radius:18px;padding:8px 7px;gap:5px}.cv-extra-btn::before{inset:3px;border-radius:14px}.cv-extra-btn .cv-btn-icon{width:32px;height:32px;border-radius:11px}}
@media (max-height:760px){.cv-stage,.cv-extra-row{width:min(100%,calc((var(--cover-h) - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 98px) * .5625))}.cv-extra-row{gap:7px}.cv-extra-btn{min-height:70px;border-radius:16px;padding:7px 6px;gap:4px}.cv-extra-btn::before{inset:3px;border-radius:13px}.cv-extra-btn .cv-btn-icon{width:28px;height:28px;border-radius:10px}.cv-extra-btn .cv-btn-label{line-height:1.06}}
.cv-title-only{font-size:clamp(34px,8vw,56px)!important;letter-spacing:.02em;line-height:1.18!important;margin-bottom:18px!important}
.cv-shell-min{padding-top:calc(env(safe-area-inset-top,0) + 24px)!important;padding-bottom:40px!important}
.cv-grid-big{gap:12px!important;max-width:440px!important}
.cv-grid-big .cv-btn{min-height:138px!important;padding:18px 10px 14px!important;border-radius:20px!important}
.cv-grid-big .cv-btn-icon{font-size:38px!important}
.cv-grid-big .cv-btn-label{font-size:15px!important;line-height:1.28!important}
#web-view.module-view.open,#trail-view.module-view.open,#qna-view.module-view.open{position:fixed;inset:0;width:100vw!important;height:auto!important;min-height:0!important;max-width:none!important;max-height:none!important;display:flex!important;align-items:stretch!important;justify-content:flex-start;overflow:hidden!important;z-index:1800;flex-direction:column}
#web-view .module-bar,#trail-view .module-bar,#qna-view .module-bar,#web-view .web-body,#trail-view .trail-body{width:100%;max-width:none!important}
#web-view .web-body,#trail-view .trail-body{flex:1 1 auto!important;min-height:0!important;height:auto!important;overflow:hidden!important}
#web-view .web-list,#trail-view #trail-list{flex:1 1 auto!important;min-height:0!important;overflow-y:auto!important}
#trail-view .trail-panel{flex:1 1 auto!important;min-height:0!important}
html.oai-font-global .cv-btn-label{font-size:calc(17px * var(--app-font-scale,1))!important;line-height:1.25!important;font-weight:850!important}
html.oai-font-global .cv-btn-meta{font-size:calc(12px * var(--app-font-scale,1))!important;line-height:1.25!important}
html.oai-font-global .cv-title{font-size:calc(32px * var(--app-inner-font-scale,1))!important}
html.oai-font-global .cv-sub{font-size:calc(15px * var(--app-inner-font-scale,1))!important}
html.oai-font-global .nearby-name,html.oai-font-global #region-body .nearby-name,html.oai-font-global #region-body .li-name,html.oai-font-global .region-item .nearby-name,html.oai-font-global .li-name,html.oai-font-global .sm-name,html.oai-font-global .sm-place-name{font-size:calc(16px * var(--app-inner-font-scale,1))!important;line-height:1.3!important}
html.oai-font-global .nearby-addr,html.oai-font-global #region-body .nearby-addr,html.oai-font-global #region-body .li-sub,html.oai-font-global .region-item .nearby-addr,html.oai-font-global .li-sub,html.oai-font-global .sm-sub,html.oai-font-global .sm-place-addr{font-size:calc(12px * var(--app-inner-font-scale,1))!important;line-height:1.35!important}
html.oai-font-global .nearby-type,html.oai-font-global .li-badge{font-size:calc(11px * var(--app-inner-font-scale,1))!important}
html.oai-font-global .ic-type-badge{font-size:calc(13px * var(--app-inner-font-scale,1))!important}
html.oai-font-global .nearby-dist{font-size:calc(13px * var(--app-inner-font-scale,1))!important}
html.oai-font-global .ic-name{font-size:calc(18px * var(--app-inner-font-scale,1))!important}
html.oai-font-global .ic-addr-val{font-size:calc(16.5px * var(--app-inner-font-scale,1))!important}
html.oai-font-global #app #info-card .ic-link-btn,html.oai-font-global #app #info-card .ic-route-btn,html.oai-font-global #app #info-card .ic-tel-btn,html.oai-font-global #app #info-card .btn-kakao-nav{font-size:calc(14px * var(--app-inner-font-scale,1))!important}
html.oai-font-global .btn-kakao-route,html.oai-font-global .btn-route-reset{font-size:calc(14px * var(--app-inner-font-scale,1))!important}

html.oai-font-global .trail-nm,html.oai-font-global .trail-sh-name{font-size:calc(16px * var(--app-inner-font-scale,1))!important}
html.oai-font-global .trail-reg,html.oai-font-global .trail-url,html.oai-font-global .trail-sh-sub,html.oai-font-global .trail-sh-url{font-size:calc(12px * var(--app-inner-font-scale,1))!important}
.lv-parish-count,.oai-parish-count{font-size:calc(8px * var(--app-inner-font-scale,1))!important;font-weight:400!important;letter-spacing:0;white-space:nowrap;gap:0!important}
.lv-parish-count b,.oai-parish-count b{font-weight:400!important;margin:0!important}

@keyframes pwa-install-bounce {
  0%,100% { transform: translate(-50%,-50%); box-shadow: 0 0 0 100vmax rgba(244,239,228,.34), 0 6px 0 rgba(180,80,0,.35), 0 12px 32px rgba(255,107,53,.55), 0 4px 12px rgba(255,107,53,.30); }
  45%      { transform: translate(-50%,calc(-50% - 5px)); box-shadow: 0 0 0 100vmax rgba(244,239,228,.34), 0 11px 0 rgba(180,80,0,.20), 0 20px 44px rgba(255,107,53,.65), 0 8px 18px rgba(255,107,53,.34); }
  55%      { transform: translate(-50%,calc(-50% - 5px)); box-shadow: 0 0 0 100vmax rgba(244,239,228,.34), 0 11px 0 rgba(180,80,0,.20), 0 20px 44px rgba(255,107,53,.65), 0 8px 18px rgba(255,107,53,.34); }
}
.cover-card-wide{grid-column:1/-1}
@keyframes oaiSwipeSoftFlash{0%{opacity:1}100%{opacity:1}}
.route-restore-marker{background:var(--gold, var(--v4-gold));border-color:var(--gold2, #b8965a)!important}
@keyframes oaiFinalSwipeFlash{0%{opacity:1}100%{opacity:1}}
@keyframes oaiSwipeArrowPop20260502{
  0%{opacity:0;transform:translateY(-50%) scale(.86);}
  30%{opacity:1;transform:translateY(-50%) scale(1.04);}
  100%{opacity:0;transform:translateY(-50%) scale(1);}
}
.oai-swipe-left::before,.oai-swipe-right::before{content:none;display:none!important}
.oai-swipe-left::after{content:'›';right:16px}
#pr-list-ul.oai-swipe-left,#pr-list-ul.oai-swipe-right,
#trail-list.oai-swipe-left,#trail-list.oai-swipe-right,
.oai-swipe-left::after,.oai-swipe-right::after,
.oai-prepaint-view{visibility:hidden!important;opacity:1!important;transform:none!important;transition:none!important}
html.ios-device #app #sheet-list .sheet-hd { bottom: 0; }

html.kb-open .sheet.open { bottom: 0; }

:root{
  --cathedral-category-final:#3F4752;
  --cathedral-category-dark:#2F3742;
  --cathedral-category-soft-final:#ECEFF3;
  --retreat-category-final:#3F6F5A;
  --retreat-category-dark:#345C4B;
  --retreat-category-secondary:#6B8063;
  --retreat-category-soft-final:#DDECE5;
  --retreat-list-dot-final:#c0392b;
}

/* V8-1-14-563: 지도 로딩 화면은 위 .map-loading 원래 위치에서 관리한다. */
#app{
  background:var(--bg-unified,var(--v4-bg-cream))!important;
}
html:not(.parish-mode):not(.retreat-mode) #tabbar,
html.parish-mode #tabbar,
html.retreat-mode #tabbar{
  background:rgba(255,255,255,.96)!important;
  border-bottom:1px solid #d8dee6!important;
}
.tab-btn .tab-icon{color:inherit!important;}
html.parish-mode .sheet-body,
html.parish-mode #list-body,
html.parish-mode #nearby-body,
html.parish-mode #region-body,
html.retreat-mode .sheet-body,
html.retreat-mode #list-body,
html.retreat-mode #nearby-body,
html.retreat-mode #region-body{
  background:var(--bg-unified)!important;
}
.web-body,.trail-body{background:var(--v4-bg-ivory)!important;}

html:not(.parish-mode):not(.retreat-mode) #tabbar .tab-btn.active{
  background:linear-gradient(135deg,var(--shrine-main,var(--v4-header-navy)),var(--shrine-main-2,#2d3a5f))!important;
  color:var(--v4-surface-white)!important;
  border-color:transparent!important;
  box-shadow:0 4px 12px rgba(31,47,107,.18)!important;
}

html:is(.parish-mode,.retreat-mode) #tabbar .tab-btn.active,
html:is(.parish-mode,.retreat-mode) .srch-bar,
html:is(.parish-mode,.retreat-mode) .filter-bar,
html:is(.parish-mode,.retreat-mode) .sheet-hd,
html:is(.parish-mode,.retreat-mode) .region-wrap,
html:is(.parish-mode,.retreat-mode) .sm-hd,
html:is(.parish-mode,.retreat-mode) .ric-hd{
  background:var(--mode-header-bg)!important;
  color:var(--v4-surface-white)!important;
  border-color:transparent!important;
}
html:is(.parish-mode,.retreat-mode) #tabbar .tab-btn.active{
  box-shadow:var(--mode-tab-active-shadow, none)!important;
}
html:is(.parish-mode,.retreat-mode) #nearby-body .nearby-num,
html:is(.parish-mode,.retreat-mode) .nearby-num,
html:is(.parish-mode,.retreat-mode) #region-body .nearby-num,
html:is(.parish-mode,.retreat-mode) #region-body .region-item .nearby-num{
  background:var(--mode-num-bg)!important;
  color:var(--v4-surface-white)!important;
}
html:is(.parish-mode,.retreat-mode) .nearby-dist,
html:is(.parish-mode,.retreat-mode) #region-body .nearby-dist,
html:is(.parish-mode,.retreat-mode) .region-list-hd,
html:is(.parish-mode,.retreat-mode) .ric-lbl,
html:is(.parish-mode,.retreat-mode) .dio-hd{
  color:var(--mode-dist-color)!important;
}
html:is(.parish-mode,.retreat-mode) .li-badge,
html:is(.parish-mode,.retreat-mode) .nearby-type,
html:is(.parish-mode,.retreat-mode) #region-body .nearby-type,
html:is(.parish-mode,.retreat-mode) #region-body .region-item .nearby-type,
html:is(.parish-mode,.retreat-mode) .ic-type-badge{
  background:var(--mode-badge-bg)!important;
  color:var(--mode-badge-color)!important;
}
html.retreat-mode #list-body .li-dot{
  background:var(--retreat-list-dot-final)!important;
}

#app .sheet-hd .sheet-title,
#app #sheet-nearby .sheet-title,
#app #sheet-list .sheet-title,
#app #sheet-region .sheet-title,
#app #sheet-route .sheet-title,
#srch-modal .sm-hd .sm-title{
  color:var(--v4-surface-white)!important;
}

.filter-btn.active,
.sm-fb.on{
  background:var(--mode-filter-active-bg, var(--gold,var(--v4-gold)))!important;
  color:var(--mode-filter-active-color, var(--v4-text-main))!important;
  border-color:var(--mode-filter-active-border, var(--gold2,#b8965a))!important;
  font-weight:900!important;
  box-shadow:0 2px 9px rgba(14,21,53,.18)!important;
}

#app .li-name,
#app .nearby-name,
#app #region-body .li-name,
#app #region-body .nearby-name,
#app #region-body .region-item .nearby-name,
#app .sm-name,
#app .sm-place-name,
#app .ic-name{
  color:var(--v4-text-strong)!important;
}
#app .li-sub,
#app .nearby-addr,
#app #region-body .li-sub,
#app #region-body .nearby-addr,
#app .sm-sub,
#app .sm-place-addr{
  color:var(--v4-text-muted)!important;
}

/* V8-1-14-621: info-card typography moved to the owner block above. */

#cover #oai-build-marker {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

html.ios-device,
html.ios-device body {
  min-height: var(--oai-app-h, 100dvh);
}
html.ios-device #app,
html.ios-device .module-view.open {
  height: var(--oai-app-h, 100dvh) !important;
  min-height: var(--oai-app-h, 100dvh) !important;
  max-height: var(--oai-app-h, 100dvh) !important;
}

html.ios-device #diocese-view.open #diocese-frame {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  height: auto !important;
}
html.ios-device #prayer-view.open,
html.ios-device #web-view.open,
html.ios-device #trail-view.open,
html.ios-device #diocese-view.open,
html.ios-device #qna-view.open {
  overflow: hidden !important;
}

/* V8-1-14-563: 지도/교구/내주변 로딩 십자가는 아래 oai-loading-cross 변수 블록 한 곳에서 관리한다.
   이 위치의 과거 십자가/원형 스피너 중복 override는 제거했다. */

#cover .my-diocese-setup-banner {
  display: none !important;
  position: absolute !important;
  left: 18px !important;
  right: 18px !important;
  top: calc(var(--cover-vh, 1vh) * 50) !important;
  bottom: auto !important;
  transform: translateY(-50%) !important;
  z-index: 34 !important;
  width: auto !important;
  height: clamp(250px, calc(var(--cover-vh, 1vh) * 32), 300px) !important;
  min-height: 0 !important;
  padding: 22px 24px !important;
  border-radius: 26px !important;
  border: 2px solid rgba(183,121,31,.50) !important;
  background: linear-gradient(180deg, #FFF8EA 0%, #FFF0D7 100%) !important;
  color: #3B2C1A !important;
  font-family: inherit !important;
  text-align: left !important;
  box-sizing: border-box !important;
  cursor: pointer !important;
  touch-action: manipulation !important;
  -webkit-tap-highlight-color: transparent !important;
  pointer-events: auto !important;
  box-shadow: 0 22px 38px rgba(31,42,68,.22), 0 8px 16px rgba(183,121,31,.18), inset 0 1px 0 rgba(255,255,255,.88) !important;
}
#cover .my-diocese-setup-banner.show {
  display: flex !important;
  flex-direction: column !important;
  justify-content: center !important;
  gap: 15px !important;
}
#cover .my-diocese-setup-banner strong {
  display: block !important;
  font-size: calc(21.6px * var(--app-font-scale, 1)) !important;
  line-height: 1.32 !important;
  font-weight: 950 !important;
  letter-spacing: -.055em !important;
  color: #2F2518 !important;
  word-break: keep-all !important;
}
#cover .my-diocese-setup-banner span {
  display: block !important;
  font-size: calc(16.4px * var(--app-font-scale, 1)) !important;
  line-height: 1.54 !important;
  font-weight: 820 !important;
  letter-spacing: -.045em !important;
  color: #624016 !important;
  word-break: keep-all !important;
}
#cover .my-diocese-setup-banner:active {
  transform: translateY(calc(-50% + 2px)) scale(.99) !important;
  filter: brightness(.98) !important;
  box-shadow: 0 8px 18px rgba(31,42,68,.18), inset 0 3px 8px rgba(31,42,68,.08) !important;
}
#cover.my-diocese-setup-active .cover-header,
#cover.my-diocese-setup-active .cover-grid,
#cover.my-diocese-setup-active #cover-update-box,
#cover.my-diocese-setup-active #cover-menu-btn,
#cover.my-diocese-setup-active #cover-font-controls {
  filter: blur(4px) !important;
  opacity: .42 !important;
  transition: filter .18s ease, opacity .18s ease !important;
}
#cover.my-diocese-setup-active #cover-diocese-box {
  position: relative !important;
  z-index: 38 !important;
  filter: none !important;
  opacity: 1 !important;
}
#cover.my-diocese-setup-active .cover-diocese-btn {
  border-color: rgba(183,121,31,.62) !important;
  background: linear-gradient(180deg, #fffaf2 0%, #f3e6d0 100%) !important;
  box-shadow: 0 14px 24px rgba(31,42,68,.20), 0 0 0 2px rgba(255,231,186,.58), inset 0 1px 0 rgba(255,255,255,.96), inset 0 -5px 10px rgba(136,112,78,.10) !important;
}
#cover.my-diocese-setup-active #cover-update-box {
  pointer-events: none !important;
}
@media (max-width: 420px) {
  #cover .my-diocese-setup-banner {
    left: 14px !important;
    right: 14px !important;
    top: calc(var(--cover-vh, 1vh) * 50) !important;
    height: clamp(240px, calc(var(--cover-vh, 1vh) * 32), 285px) !important;
    padding: 20px 18px !important;
  }
  #cover .my-diocese-setup-banner strong { font-size: calc(20px * var(--app-font-scale, 1)) !important; }
  #cover .my-diocese-setup-banner span { font-size: calc(15.2px * var(--app-font-scale, 1)) !important; }
}

.filter-my-dio-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: 5px;
  padding: 2px 6px;
  border-radius: 999px;
  background: rgba(255,255,255,.82);
  color: #7A4F10;
  font-size: 10px;
  font-weight: 900;
  line-height: 1.1;
  letter-spacing: -.04em;
}
.filter-btn.my-diocese-filter.active .filter-my-dio-badge,
.sm-fb.my-diocese-filter.on .filter-my-dio-badge {
  background: rgba(255,255,255,.95);
  color: #7A4F10;
}
.dio-hd.my-diocese-hd {
  color: #7A4F10 !important;
  background: #FFF7E4 !important;
  border-top-color: rgba(183,121,31,.35) !important;
  border-bottom-color: rgba(183,121,31,.35) !important;
}
.list-my-dio-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: 8px;
  padding: 3px 9px;
  border-radius: 999px;
  background: var(--v4-brown);
  color: var(--v4-surface-white);
  font-size: 10.5px;
  font-weight: 900;
  line-height: 1.1;
  letter-spacing: -.04em;
  vertical-align: 1px;
}

.sm-grp.my-diocese-sm-grp {
  background: #FFF7E4 !important;
  border-color: rgba(183,121,31,.32) !important;
  color: #7A4F10 !important;
}
.sm-my-dio-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: 7px;
  padding: 3px 8px;
  border-radius: 999px;
  background: var(--v4-brown);
  color: var(--v4-surface-white);
  font-size: 10.5px;
  font-weight: 900;
  line-height: 1.1;
  letter-spacing: -.04em;
  vertical-align: 1px;
}

#search-view .si-r-top,
#list-view .lv-top{
  align-items:flex-start !important;
}
#search-view .si-r-op,
#list-view .lv-op{
  white-space:normal !important;
  overflow:visible !important;
  text-overflow:clip !important;
  line-height:1.35 !important;
  word-break:keep-all !important;
  text-align:right !important;
  max-width:48% !important;
}
#search-view .srow,
#list-view .lv-body{
  align-items:flex-start !important;
}
#search-view .si-r-foot,
#list-view .lv-foot{
  min-height:42px !important;
}

#list-body{
  padding-top:0 !important;
}
#list-body .dio-hd:first-child{
  margin-top:0 !important;
}
#list-body .list-item:first-of-type,
#list-body .nearby-item:first-of-type{
  margin-top:8px !important;
}

html.oai-font-global #app .sheet-hd .sheet-title,
html.oai-font-global #sheet-nearby .sheet-title,
html.oai-font-global #sheet-list .sheet-title,
html.oai-font-global #sheet-region .sheet-title,
html.oai-font-global #sheet-route .sheet-title,
html.oai-font-global #srch-modal .sm-hd .sm-title{
  font-size:18px!important;
  line-height:1.22!important;
}
html.oai-font-global #missa-bar-title,
html.oai-font-global #diocese-bar-title{
  font-size:16px!important;
  line-height:1.2!important;
}
html.oai-font-global #prayer-bar-ttl,
html.oai-font-global #prayer-bar .module-bar-title,
html.oai-font-global #web-view .module-bar-title,
html.oai-font-global #trail-view .module-bar-title,
html.oai-font-global #qna-view .module-bar-title,
html.oai-font-global #diocese-view .module-bar-title,
html.oai-font-global .module-bar-title{
  font-size:20px!important;
  line-height:1.24!important;
}
html.oai-font-global #prayer-bar-sub,
html.oai-font-global #prayer-bar .module-bar-sub,
html.oai-font-global #web-view .module-bar-sub,
html.oai-font-global #trail-view .module-bar-sub,
html.oai-font-global #qna-view .module-bar-sub,
html.oai-font-global #diocese-view .module-bar-sub,
html.oai-font-global .module-bar-sub{
  font-size:11px!important;
  line-height:1.25!important;
}
html.oai-font-global .module-bar-ico,
html.oai-font-global #prayer-bar-ico{
  font-size:22px!important;
  width:42px!important;
  height:42px!important;
  min-width:42px!important;
}

html.oai-font-global #web-view .module-bar-ico,
html.oai-font-global #trail-view .module-bar-ico,
html.oai-font-global #qna-view .module-bar-ico,
html.oai-font-global #diocese-view .module-bar-ico{
  font-size:0!important;
  line-height:0!important;
  color:transparent!important;
  overflow:hidden!important;
}
html.oai-font-global #web-view .module-bar-ico::before,
html.oai-font-global #trail-view .module-bar-ico::before,
html.oai-font-global #qna-view .module-bar-ico::before,
html.oai-font-global #diocese-view .module-bar-ico::before{
  width:3px!important;
  height:24px!important;
}
html.oai-font-global #web-view .module-bar-ico::after,
html.oai-font-global #trail-view .module-bar-ico::after,
html.oai-font-global #qna-view .module-bar-ico::after,
html.oai-font-global #diocese-view .module-bar-ico::after{
  width:14px!important;
  height:3px!important;
}

html.oai-font-global #app .sheet-hd .sheet-title,
html.oai-font-global #srch-modal .sm-hd .sm-title,
html.oai-font-global #missa-bar-title,
html.oai-font-global #diocese-bar-title,
html.oai-font-global #prayer-bar-ttl,
html.oai-font-global #prayer-bar .module-bar-title,
html.oai-font-global #web-view .module-bar-title,
html.oai-font-global #trail-view .module-bar-title,
html.oai-font-global #qna-view .module-bar-title,
html.oai-font-global #diocese-view .module-bar-title{
  font-size:20px!important;
  line-height:1.24!important;
}
html.oai-font-global #app .sheet-hd .sheet-title,
html.oai-font-global #srch-modal .sm-hd .sm-title{
  font-size:18px!important;
}

.shrine-visited-chip{display:inline-flex;align-items:center;width:max-content;margin-top:5px;padding:3px 7px;border-radius:999px;background:#111;color:#f6d58a;border:1px solid rgba(212,170,106,.78);font-size:11px;font-weight:900;line-height:1.1;box-shadow:0 1px 4px rgba(0,0,0,.14)}
.shrine-new-chip{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:16px;min-width:27px;margin-left:5px;padding:0 5px;border-radius:999px;background:#f1e8ff;color:#6d45a8;border:1px solid rgba(109,69,168,.38);font-size:9px;font-weight:900;line-height:1;vertical-align:middle;white-space:nowrap;box-shadow:none}
.ic-name .shrine-new-chip{margin-top:0}
.nearby-name .shrine-new-chip,.li-name .shrine-new-chip{margin-left:5px;vertical-align:middle}
.list-item.shrine-visited-card,.nearby-item.shrine-visited-card,.region-item.shrine-visited-card{background:#fffdf7!important;border-color:rgba(17,17,17,.22)!important;box-shadow:0 2px 10px rgba(0,0,0,.08)!important}
.ic-shrine-visit{margin:8px 14px 0;padding:10px 11px;border-radius:12px;border:1px solid rgba(17,17,17,.16);background:#fffdf7;display:flex!important;align-items:center;justify-content:space-between;gap:10px;box-shadow:0 1px 6px rgba(14,21,53,.05)}
.ic-shrine-visit.visited{background:#111;color:#fff;border-color:#d4aa6a}.ic-shrine-visit.not-visited{background:#fffdf7;color:#2f2517;border-color:rgba(212,170,106,.45)}
.ic-shrine-visit[style*="display: none"]{display:none!important}
.ic-shrine-visit-text{min-width:0;display:flex;flex-direction:column;gap:2px}.ic-shrine-visit-text strong{font-size:13px;font-weight:900}.ic-shrine-visit-text span{font-size:12px;font-weight:700;opacity:.82;line-height:1.35}
#ic-shrine-visit-btn{flex-shrink:0;border:none;border-radius:999px;padding:8px 10px;font-size:12px;font-weight:900;background:#f6d58a;color:#111;border:1px solid rgba(212,170,106,.9);box-shadow:0 1px 4px rgba(0,0,0,.12)}
.shrine-visit-modal{position:fixed;inset:0;z-index:10050;display:none;align-items:flex-end;justify-content:center}.shrine-visit-modal.show{display:flex;z-index:10090!important}.shrine-visit-backdrop{position:absolute;inset:0;background:rgba(0,0,0,0)!important}
.shrine-visit-panel{position:relative;width:min(520px,100%);background:linear-gradient(180deg,#fffdf9,#f6efe6)!important;border-radius:22px 22px 0 0;padding:16px 16px max(18px,env(safe-area-inset-bottom));box-shadow:0 -12px 36px rgba(0,0,0,.16)!important;border:1px solid #e4d7c5!important}
.shrine-visit-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.shrine-visit-kicker{font-size:12px;font-weight:900;color:#8b6914}.shrine-visit-title{font-size:18px;font-weight:900;color:#111;line-height:1.25}.shrine-visit-x{width:36px;height:36px;border-radius:50%;border:2px solid #8b6914;background:#fffdf7;color:#5b3c00;font-size:23px;font-weight:900;box-shadow:0 2px 8px rgba(91,60,0,.12)}
.shrine-visit-label{display:flex;flex-direction:column;gap:7px;font-size:14px;font-weight:900;color:#2f2517}.shrine-visit-label input{height:48px;border:2px solid #d4aa6a;border-radius:13px;padding:0 13px;font-size:18px;font-weight:900;color:#111;background:#fff;box-shadow:0 2px 8px rgba(91,60,0,.08)}
.shrine-visit-actions{display:flex;gap:9px;margin-top:12px}.shrine-visit-actions button{flex:1;height:48px;border-radius:13px;font-size:15px;font-weight:900;font-family:inherit}.shrine-visit-save{border:2px solid #000;background:#111;color:#f6d58a;box-shadow:0 2px 8px rgba(17,17,17,.16)}.shrine-visit-cancel{border:2px solid #8b6914;background:#fffaf0;color:#5b3c00;box-shadow:0 2px 8px rgba(91,60,0,.08)}
.shrine-visit-list{margin-top:14px;border-top:1.5px solid #ead7b6;padding-top:11px;max-height:28vh;overflow:auto}.shrine-visit-list-title{font-size:14px;font-weight:900;color:#111;margin-bottom:8px}.shrine-visit-empty{font-size:13.5px;font-weight:800;color:#7b5714;background:#fff8e8;border-radius:10px;padding:10px;border:1px solid rgba(212,170,106,.18)}.shrine-visit-date-row{display:flex;align-items:center;justify-content:space-between;gap:9px;padding:10px 0;border-bottom:1px solid #ead7b6;font-size:15px;font-weight:900;color:#111}.shrine-visit-date-row button{border:2px solid rgba(139,0,0,.78);background:#fffdf7;color:#8b0000;border-radius:10px;padding:6px 10px;font-size:12.5px;font-weight:900;box-shadow:0 1px 5px rgba(139,0,0,.08)}
html.oai-font-global .shrine-visited-chip{font-size:calc(11px * var(--app-inner-font-scale,1))!important}html.oai-font-global .ic-shrine-visit-text strong{font-size:calc(13px * var(--app-inner-font-scale,1))!important}html.oai-font-global .ic-shrine-visit-text span,html.oai-font-global #ic-shrine-visit-btn{font-size:calc(12px * var(--app-inner-font-scale,1))!important}

.shrine-visit-map-filter{position:absolute;left:0;right:0;top:0;z-index:36;display:none;grid-template-columns:.72fr 1.14fr 1.14fr;align-items:center;gap:5px;padding:5px 8px;border-radius:0;background:rgba(255,255,255,.94);border:0;border-bottom:1px solid rgba(17,17,17,.12);box-shadow:0 2px 8px rgba(0,0,0,.12);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-sizing:border-box;overflow:hidden;scrollbar-width:none}
.shrine-visit-map-filter.show{display:grid}
.shrine-visit-map-filter button{width:100%;height:40px;min-height:40px;min-width:0;padding:0 8px!important;border-radius:8px;border:1.5px solid #d8ccb8;background:#fffdf7;color:#3b2e18;font-size:15px;font-weight:900;white-space:nowrap;box-shadow:0 1px 3px rgba(0,0,0,.06);box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;text-align:center}
.shrine-visit-map-filter button[data-shrine-visit-filter="visited"]{border-color:#111;color:#111}
.shrine-visit-map-filter button[data-shrine-visit-filter="unvisited"]{border-color:#b9c6d8;color:#26415f}
.shrine-visit-map-filter button.active{background:#111;color:#f6d58a;border-color:#d4aa6a;box-shadow:0 2px 8px rgba(0,0,0,.18)}
.shrine-visit-map-filter button[data-shrine-visit-filter="unvisited"].active{background:#111;color:#f6d58a;border-color:#d4aa6a}
html.oai-font-global .shrine-visit-map-filter button{font-size:calc(15px * var(--app-inner-font-scale,1))!important}

.li-side{display:flex;flex-shrink:0;flex-direction:column;align-items:flex-end;justify-content:center;gap:6px;max-width:96px;margin-left:auto;pointer-events:auto!important}
.li-pilgrim-register{min-width:72px;height:28px;padding:0 9px;border-radius:999px;border:2px solid #0284c7;background:#dff3ff!important;color:#075985!important;border-color:#0284c7!important;font-size:12px;font-weight:900;letter-spacing:-.03em;white-space:nowrap;box-shadow:0 1px 5px rgba(2,132,199,.18)!important;font-family:inherit;position:relative!important;z-index:2!important;pointer-events:auto!important;touch-action:pan-y!important}
.li-pilgrim-register:active{transform:translateY(1px);filter:brightness(.95);background:#c7e9ff!important}
html.oai-font-global .li-pilgrim-register{font-size:calc(12px * var(--app-inner-font-scale,1))!important}

#info-card .ic-shrine-visit{display:none!important}
.shrine-visit-map-filter button[data-shrine-visit-filter="all"],
.shrine-visit-map-filter button[data-shrine-visit-filter="visited"],
.shrine-visit-map-filter button[data-shrine-visit-filter="unvisited"]{min-width:0}


/* V8-1-14-621: info-card meta/distance layout moved to the owner block above. */
#info-card .ic-header .ic-type-badge.shrine-pilgrim-register-badge{max-width:none!important;min-width:72px!important;height:30px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;padding:0 10px!important;border-radius:999px!important;background:#dff3ff!important;color:#075985!important;border:2px solid #0284c7!important;font-size:12px!important;font-weight:900!important;box-shadow:0 1px 5px rgba(2,132,199,.18)!important;cursor:pointer!important;touch-action:manipulation!important}
#info-card .ic-header .ic-type-badge.shrine-pilgrim-register-badge:active{background:#c7e9ff!important;transform:translateY(1px)}

#info-card .ic-header .ic-type-badge.shrine-pilgrim-visited{max-width:none!important;min-width:86px!important;height:30px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;padding:0 10px!important;border-radius:999px!important;background:#111!important;color:#f6d58a!important;border:1px solid #d4aa6a!important;font-weight:900!important;box-shadow:0 1px 5px rgba(0,0,0,.16)!important;cursor:pointer!important;touch-action:manipulation!important}

html.oai-font-global .shrine-visit-cards-btn{font-size:calc(12px * var(--app-inner-font-scale,1))!important}

.shrine-visit-cards-btn{position:absolute;right:12px;top:12px;z-index:37;display:none;height:34px;padding:0 12px;border-radius:999px;border:1px solid #d4aa6a;background:#fff3c4;color:#6c4a00;font-size:12px;font-weight:900;box-shadow:0 3px 12px rgba(0,0,0,.16);font-family:inherit;touch-action:manipulation}
.shrine-visit-cards-btn.show{display:inline-flex;align-items:center;justify-content:center}
.shrine-visit-cards-btn:active{transform:translateY(1px);filter:brightness(.96)}
/* V8-1-14-621: shrine-visit stampbook modal/card body ownership moved to the full-screen owner blocks below. */

#info-card .ic-header .ic-type-badge.shrine-pilgrim-visited:active{transform:translateY(1px);filter:brightness(.94)}



/* V8-1-14-563: 스탬프북 카드는 성지목록 고유색(성지/순례지/순교 사적지)을 유지하되,
   오른쪽 종류 라벨은 고정하고 교구명은 한 글자씩 세로로 떨어지지 않게 가로 고정한다. */
.shrine-visit-card-grid{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:11px!important;
  padding:0 2px 0!important;
  box-sizing:border-box!important;
  overflow-x:hidden!important;
}
.shrine-visit-card-badge,
.shrine-visit-card-badge.shrine-visit-card-unified,
.shrine-visit-card-badge.visited,
.shrine-visit-card-badge.unvisited,
.shrine-visit-card-badge.new{
  --visit-card-accent:var(--shrine,#c0392b);
  position:relative!important;
  width:100%!important;
  min-height:148px!important;
  padding:13px 12px 12px 12px!important;
  border:2.5px solid var(--visit-card-accent)!important;
  border-radius:20px!important;
  background:#ffffff!important;
  box-shadow:0 5px 14px rgba(37,48,58,.10)!important;
  overflow:hidden!important;
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  grid-template-rows:auto minmax(48px,1fr) auto!important;
  align-content:stretch!important;
  align-items:start!important;
  column-gap:7px!important;
  row-gap:7px!important;
  text-align:left!important;
  font-family:inherit!important;
  filter:none!important;
  opacity:1!important;
  touch-action:manipulation!important;
}
.shrine-visit-card-badge::before{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  z-index:0!important;
  background:linear-gradient(135deg,rgba(255,255,255,.99),rgba(247,250,253,.66))!important;
  pointer-events:none!important;
}
.shrine-visit-card-badge::after{
  content:""!important;
  position:absolute!important;
  right:0!important;
  top:0!important;
  bottom:0!important;
  width:7px!important;
  border-radius:0 17px 17px 0!important;
  background:var(--visit-card-accent)!important;
  z-index:1!important;
  pointer-events:none!important;
}
.shrine-visit-card-badge>*{position:relative!important;z-index:2!important;}
.shrine-visit-card-badge:active{transform:translateY(1px)!important;filter:brightness(.98)!important;}
.shrine-visit-card-badge.type-shrine{--visit-card-accent:var(--shrine,#c0392b);}
.shrine-visit-card-badge.type-pilgrim{--visit-card-accent:var(--pilgrim,#1565c0);}
.shrine-visit-card-badge.type-martyr{--visit-card-accent:var(--martyr,#1b7a3e);}
.shrine-visit-card-badge.type-martyr .shrine-visit-card-stamp{max-width:98px!important;letter-spacing:-.065em!important;}
.shrine-visit-card-stamp,
.shrine-visit-card-badge .shrine-visit-card-stamp{
  position:absolute!important;
  top:7px!important;
  right:7px!important;
  grid-column:auto!important;
  grid-row:auto!important;
  justify-self:auto!important;
  align-self:auto!important;
  z-index:4!important;
  min-width:42px!important;
  max-width:86px!important;
  min-height:25px!important;
  height:auto!important;
  padding:4px 7px!important;
  border-radius:9px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  text-align:center!important;
  color:var(--visit-card-accent)!important;
  background:rgba(255,255,255,.94)!important;
  border:2px solid currentColor!important;
  box-shadow:0 1px 5px rgba(37,48,58,.08)!important;
  font-size:10px!important;
  line-height:1.02!important;
  font-weight:950!important;
  letter-spacing:-.06em!important;
  transform:none!important;
  white-space:nowrap!important;
  opacity:1!important;
  filter:none!important;
  overflow:hidden!important;
}
.shrine-visit-card-dio,
.shrine-visit-card-badge .shrine-visit-card-dio{
  grid-column:1 / -1!important;
  grid-row:1!important;
  align-self:center!important;
  min-width:0!important;
  width:auto!important;
  max-width:none!important;
  padding-right:102px!important;
  box-sizing:border-box!important;
  overflow:visible!important;
  text-overflow:clip!important;
  white-space:nowrap!important;
  word-break:keep-all!important;
  overflow-wrap:normal!important;
  color:#5e6a73!important;
  font-size:12px!important;
  line-height:1.22!important;
  font-weight:900!important;
  letter-spacing:-.04em!important;
}
.shrine-visit-card-badge strong{
  grid-column:1 / -1!important;
  grid-row:2!important;
  align-self:stretch!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  box-sizing:border-box!important;
  color:#111820!important;
  font-size:14.2px!important;
  line-height:1.15!important;
  font-weight:950!important;
  letter-spacing:-.055em!important;
  word-break:keep-all!important;
  overflow:visible!important;
  overflow-wrap:anywhere!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  text-align:left!important;
  -webkit-line-clamp:unset!important;
  -webkit-box-orient:initial!important;
}
.shrine-visit-card-count,
.shrine-visit-card-badge .shrine-visit-card-count,
.shrine-visit-card-badge.visited .shrine-visit-card-count,
.shrine-visit-card-badge.unvisited .shrine-visit-card-count{
  grid-column:1!important;
  grid-row:3!important;
  align-self:end!important;
  justify-self:start!important;
  display:inline-flex!important;
  width:max-content!important;
  max-width:100%!important;
  align-items:center!important;
  justify-content:center!important;
  min-height:27px!important;
  padding:5px 10px!important;
  border-radius:999px!important;
  background:#ffffff!important;
  border:1px solid rgba(37,48,58,.14)!important;
  color:#111827!important;
  box-shadow:0 1px 4px rgba(37,48,58,.06)!important;
  font-size:13.5px!important;
  line-height:1.05!important;
  font-weight:950!important;
  letter-spacing:-.05em!important;
  white-space:nowrap!important;
}
.shrine-visit-card-badge.new:not(.visited) .shrine-visit-card-count{color:#7c3aed!important;border-color:rgba(124,58,237,.24)!important;background:#ffffff!important;}
.shrine-visit-card-newmark{
  position:absolute!important;
  left:12px!important;
  bottom:9px!important;
  z-index:3!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  height:21px!important;
  padding:0 8px!important;
  border-radius:999px!important;
  background:rgba(245,235,255,.94)!important;
  color:#7c3aed!important;
  border:1px solid rgba(124,58,237,.22)!important;
  box-shadow:0 1px 3px rgba(124,58,237,.07)!important;
  font-size:11px!important;
  font-weight:950!important;
  line-height:1!important;
  white-space:nowrap!important;
}
.shrine-visit-card-badge.visited .shrine-visit-card-newmark{bottom:45px!important;}
.shrine-visit-card-seal,
.shrine-visit-card-badge .shrine-visit-card-seal,
.shrine-visit-card-badge.visited .shrine-visit-card-seal{
  position:absolute!important;
  right:12px!important;
  bottom:11px!important;
  width:43px!important;
  height:43px!important;
  border-radius:50%!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  color:var(--visit-card-accent)!important;
  background:rgba(255,255,255,.72)!important;
  border:2px solid currentColor!important;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.55),0 2px 7px rgba(37,48,58,.10)!important;
  font-size:0!important;
  line-height:1!important;
  font-weight:1000!important;
  letter-spacing:-.08em!important;
  transform:rotate(-7deg)!important;
  pointer-events:none!important;
  z-index:3!important;
  opacity:.94!important;
}
.shrine-visit-card-seal::before{
  content:""!important;
  position:absolute!important;
  inset:5px!important;
  border-radius:50%!important;
  border:1.3px dashed currentColor!important;
  opacity:.70!important;
}
.shrine-visit-card-seal::after{
  content:"순례"!important;
  position:relative!important;
  z-index:1!important;
  transform:rotate(-14deg)!important;
  transform-origin:center!important;
  font-size:13px!important;
}
html.oai-font-global .shrine-visit-card-stamp{font-size:clamp(9px,calc(10px * var(--app-inner-font-scale,1)),10.8px)!important;}
html.oai-font-global .shrine-visit-card-badge .shrine-visit-card-dio{font-size:clamp(11px,calc(12px * var(--app-inner-font-scale,1)),12.5px)!important;}
html.oai-font-global .shrine-visit-card-badge strong{font-size:clamp(13.4px,calc(14.2px * var(--app-inner-font-scale,1)),15px)!important;line-height:1.15!important;}
html.oai-font-global .shrine-visit-card-badge .shrine-visit-card-count{font-size:clamp(12.5px,calc(13.5px * var(--app-inner-font-scale,1)),14.2px)!important;}
html.oai-font-global .shrine-visit-card-seal::after{font-size:clamp(12px,calc(13px * var(--app-inner-font-scale,1)),13.6px)!important;}
html:not(.ios-device).oai-screen-compact-short .shrine-visit-card-badge{min-height:140px!important;padding:12px 12px 11px 11px!important;border-radius:17px!important;row-gap:6px!important;}
html:not(.ios-device).oai-screen-compact-short .shrine-visit-card-badge::after{border-radius:0 14px 14px 0!important;width:6px!important;}
html:not(.ios-device).oai-screen-compact-short .shrine-visit-card-stamp{top:6px!important;right:6px!important;height:23px!important;min-height:23px!important;min-width:38px!important;max-width:82px!important;padding:0 5px!important;font-size:9.3px!important;line-height:1.02!important;}
html:not(.ios-device).oai-screen-compact-short .shrine-visit-card-badge .shrine-visit-card-dio{padding-right:92px!important;white-space:nowrap!important;overflow:visible!important;text-overflow:clip!important;word-break:keep-all!important;overflow-wrap:normal!important;line-height:1.2!important;}
html:not(.ios-device).oai-screen-compact-short .shrine-visit-card-badge strong{font-size:13.6px!important;line-height:1.15!important;padding:0!important;}
html:not(.ios-device).oai-screen-compact-short .shrine-visit-card-count{min-height:25px!important;font-size:12px!important;padding:4px 9px!important;}
html:not(.ios-device).oai-screen-compact-short .shrine-visit-card-seal{right:10px!important;bottom:9px!important;width:38px!important;height:38px!important;}
html:not(.ios-device).oai-screen-fold-wide .shrine-visit-card-badge{min-height:154px!important;}

.shrine-visit-detail-hero,
.shrine-visit-detail-info{
  background:#ffffff!important;
  border:3px solid #0b84ff!important;
  border-radius:22px!important;
  box-shadow:0 8px 22px rgba(11,132,255,.10)!important;
  padding:18px 16px!important;
}
.shrine-visit-detail-hero{margin-bottom:13px!important;}
.shrine-visit-detail-register,
.shrine-visit-detail-map-btn,
.shrine-visit-detail-action{
  min-height:42px!important;
  border-radius:14px!important;
  font-family:inherit!important;
  font-size:14px!important;
  font-weight:950!important;
  letter-spacing:-.04em!important;
  line-height:1.1!important;
  text-decoration:none!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:5px!important;
  text-align:center!important;
  box-shadow:0 3px 9px rgba(17,35,60,.12),inset 0 1px 0 rgba(255,255,255,.45)!important;
  text-shadow:none!important;
  touch-action:manipulation!important;
}
.shrine-visit-detail-map-btn,
.shrine-visit-detail-action.detail-tel{
  background:#ffffff!important;
  color:#12324d!important;
  border:2.5px solid #0b84ff!important;
}
.shrine-visit-detail-register{
  background:#dff3ff!important;
  color:#075985!important;
  border:2.5px solid #0284c7!important;
}
.shrine-visit-detail-action.detail-route{
  background:#1f73d2!important;
  color:#ffffff!important;
  border:2.5px solid #1559a8!important;
}
.shrine-visit-detail-action.detail-home,
.shrine-visit-detail-action.detail-guide,
.shrine-visit-detail-action.detail-goodnews{
  background:#1f2f4d!important;
  color:#ffffff!important;
  border:2.5px solid #14213a!important;
}
.shrine-visit-detail-action.detail-kakao{
  background:#ffdf00!important;
  color:#3a2a00!important;
  border:2.5px solid #c9a800!important;
}
.shrine-visit-detail-action:active,
.shrine-visit-detail-register:active,
.shrine-visit-detail-map-btn:active{transform:translateY(1px)!important;filter:brightness(.96)!important;}
.shrine-visit-detail-actions{display:flex!important;flex-direction:column!important;gap:8px!important;margin-top:12px!important;width:100%!important;}
.shrine-visit-detail-action-row{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(132px,1fr))!important;gap:8px!important;width:100%!important;}
.shrine-visit-detail-action-row>.shrine-visit-detail-action{width:100%!important;min-width:0!important;}
.shrine-visit-detail-info-head{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:10px!important;}
.shrine-visit-detail-info-head .shrine-visit-detail-map-btn{height:40px!important;min-height:40px!important;padding:0 14px!important;font-size:14px!important;white-space:nowrap!important;}
.shrine-visit-detail-hero .shrine-visit-detail-register{height:40px!important;min-height:40px!important;padding:0 14px!important;font-size:14px!important;white-space:nowrap!important;}
html.oai-font-global .shrine-visit-detail-action{font-size:calc(14px * var(--app-inner-font-scale,1))!important;}
html.oai-font-global .shrine-visit-detail-register,
html.oai-font-global .shrine-visit-detail-map-btn{font-size:calc(12.5px * var(--app-inner-font-scale,1))!important;}
html:not(.ios-device).oai-screen-compact-short .shrine-visit-detail-action-row{gap:6px!important;}
html:not(.ios-device).oai-screen-compact-short .shrine-visit-detail-action{min-height:48px!important;padding:0 6px!important;font-size:13px!important;}

.shrine-auto-visit-modal{position:fixed;inset:0;z-index:10070;display:none;align-items:flex-end;justify-content:center}.shrine-auto-visit-modal.show{display:flex}.shrine-auto-visit-backdrop{position:absolute;inset:0;background:rgba(0,0,0,0)!important}
.shrine-auto-visit-panel{position:relative;width:min(520px,100%);background:#fff;border-radius:22px 22px 0 0;padding:18px 16px max(18px,env(safe-area-inset-bottom));box-shadow:0 -10px 28px rgba(0,0,0,.24);border:1px solid rgba(212,170,106,.35)}
.shrine-auto-visit-kicker{font-size:12px;font-weight:900;color:#8b6914;margin-bottom:5px}.shrine-auto-visit-title{font-size:16px;font-weight:900;color:#111;line-height:1.35}.shrine-auto-visit-name{margin-top:8px;font-size:20px;font-weight:900;color:#111;line-height:1.28;word-break:keep-all}.shrine-auto-visit-dist{margin-top:5px;font-size:13px;font-weight:850;color:#4b5563}.shrine-auto-visit-actions{display:flex;gap:9px;margin-top:14px}.shrine-auto-visit-actions button{flex:1;height:48px;border-radius:13px;font-size:15px;font-weight:900;font-family:inherit}.shrine-auto-visit-save{border:2px solid #000;background:#111;color:#f6d58a;box-shadow:0 2px 8px rgba(17,17,17,.16)}.shrine-auto-visit-later{border:2px solid #8b6914;background:#fffaf0;color:#5b3c00;box-shadow:0 2px 8px rgba(91,60,0,.08)}
html.oai-font-global .shrine-auto-visit-title{font-size:calc(16px * var(--app-inner-font-scale,1))!important}html.oai-font-global .shrine-auto-visit-name{font-size:calc(20px * var(--app-inner-font-scale,1))!important}html.oai-font-global .shrine-auto-visit-dist{font-size:calc(13px * var(--app-inner-font-scale,1))!important}

.shrine-visit-detail-view{position:fixed;inset:0;z-index:10045;display:none;flex-direction:column;background:#f1f3ee!important;color:#17201b!important;padding-top:var(--oai-stampbook-top-safe);padding-bottom:max(14px, env(safe-area-inset-bottom, 0px))}
.shrine-visit-detail-view.show{display:flex}
.shrine-visit-detail-head{height:56px;min-height:56px;display:flex;align-items:center;gap:10px;padding:0 12px;background:#ffffff!important;border-bottom:1px solid rgba(31,41,51,.10)!important;box-shadow:0 2px 16px rgba(31,41,51,.06)!important}
.shrine-visit-detail-back,.shrine-visit-detail-x{width:38px;height:38px;border-radius:50%;border:1px solid #d8dcd1!important;background:#f6f7f3!important;color:#324137!important;font-size:27px;font-weight:900;display:inline-flex;align-items:center;justify-content:center;font-family:inherit;line-height:1;touch-action:manipulation;box-shadow:0 1px 7px rgba(31,41,51,.06)!important}
.shrine-visit-detail-x{font-size:23px}.shrine-visit-detail-back:active,.shrine-visit-detail-x:active{transform:translateY(1px);background:#fff0c9}
#shrine-visit-detail-back,.shrine-visit-detail-back{display:none!important;visibility:hidden!important;pointer-events:none!important}
.shrine-visit-detail-head-title{flex:1;min-width:0;text-align:center;font-size:18px;font-weight:900;color:#17201b!important;letter-spacing:-.03em}

.shrine-visit-detail-hero-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.shrine-visit-detail-body{flex:1;overflow:auto;-webkit-overflow-scrolling:touch;padding:14px 14px max(24px,env(safe-area-inset-bottom))}
.shrine-visit-detail-kicker{font-size:12px;font-weight:900;color:#75643c!important;margin-bottom:5px}.shrine-visit-detail-count{font-size:32px;font-weight:900;line-height:1.08;color:#17201b!important;letter-spacing:-.04em}.shrine-visit-detail-recent{margin-top:5px;font-size:14px;font-weight:900;color:#405247!important}
.shrine-visit-detail-date-title{margin-top:16px;margin-bottom:7px;font-size:13px;font-weight:900;color:#75643c!important}
.shrine-visit-detail-section-title{font-size:12px;font-weight:900;color:#75643c!important;margin-bottom:5px}.shrine-visit-detail-name{font-size:22px;font-weight:900;line-height:1.25;color:#17201b!important;letter-spacing:-.04em;word-break:keep-all;margin-bottom:12px}.shrine-visit-detail-row{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-top:1px solid #e4e8df!important}.shrine-visit-detail-row span{width:48px;flex-shrink:0;font-size:13px;font-weight:900;color:#75643c!important}.shrine-visit-detail-row strong{flex:1;min-width:0;font-size:14px;font-weight:800;color:#24312a!important;line-height:1.45;word-break:keep-all}.shrine-visit-detail-empty{margin:18px;padding:16px;border-radius:16px;background:#fff8e8;color:#6c4a00;font-size:14px;font-weight:900;text-align:center}
html.oai-font-global .shrine-visit-detail-head-title{font-size:calc(18px * var(--app-inner-font-scale,1))!important}html.oai-font-global .shrine-visit-detail-kicker,html.oai-font-global .shrine-visit-detail-section-title{font-size:calc(12px * var(--app-inner-font-scale,1))!important}html.oai-font-global .shrine-visit-detail-count{font-size:calc(32px * var(--app-inner-font-scale,1))!important}html.oai-font-global .shrine-visit-detail-recent,html.oai-font-global .shrine-visit-detail-add{font-size:calc(14px * var(--app-inner-font-scale,1))!important}html.oai-font-global .shrine-visit-detail-date-chip,html.oai-font-global .shrine-visit-detail-row span{font-size:calc(13px * var(--app-inner-font-scale,1))!important}html.oai-font-global .shrine-visit-detail-name{font-size:calc(22px * var(--app-inner-font-scale,1))!important}html.oai-font-global .shrine-visit-detail-row strong{font-size:calc(14px * var(--app-inner-font-scale,1))!important}

.shrine-visit-cards-modal{position:fixed!important;inset:0!important;z-index:10060!important;display:none!important;background:#fffdf7!important;overflow:hidden!important;width:100%!important;height:var(--oai-stampbook-viewport-h,100vh)!important;min-height:var(--oai-stampbook-viewport-h,100vh)!important}.shrine-visit-cards-modal.show{display:block!important}.shrine-visit-cards-backdrop{display:none!important}
.shrine-visit-cards-panel{position:absolute!important;inset:0!important;width:100%!important;max-width:none!important;height:auto!important;min-height:0!important;max-height:none!important;border-radius:0!important;border:0!important;background:#fffdf7!important;padding:0!important;box-shadow:none!important;display:flex!important;flex-direction:column!important;overflow:hidden!important}
.shrine-visit-detail-date-list{display:flex!important;flex-direction:column!important;gap:0!important;border-top:1px solid #e4e8df!important;border-bottom:1px solid #e4e8df!important;background:transparent!important;margin-top:4px!important}.shrine-visit-detail-date-chip{display:flex!important;justify-content:flex-start!important;align-items:center!important;border:0!important;border-radius:0!important;background:transparent!important;color:#17201b!important;padding:10px 2px 10px 18px!important;font-size:15px!important;font-weight:900!important;line-height:1!important;position:relative!important;box-shadow:none!important}.shrine-visit-detail-date-chip:before{content:"";position:absolute;left:3px;top:50%;width:7px;height:7px;border-radius:50%;background:#bda360;transform:translateY(-50%)}.shrine-visit-detail-date-chip+ .shrine-visit-detail-date-chip{border-top:1px solid #edf0e9!important}.shrine-visit-detail-empty-date{font-size:13px!important;font-weight:800!important;background:transparent!important;color:#7b837c!important;border:1px dashed #cbd2c6!important;border-radius:12px!important;padding:9px 10px!important}.shrine-visit-detail-add{width:100%!important;height:40px!important;margin-top:12px!important;border-radius:14px!important;background:#ffffff!important;color:#2f3b34!important;border:1px solid #bda360!important;font-size:14px!important;font-weight:900!important;font-family:inherit!important;box-shadow:0 2px 8px rgba(31,41,51,.05)!important;touch-action:manipulation!important}.shrine-visit-detail-add:active{transform:translateY(1px)!important;background:#f6f0dc!important;filter:none!important}

/* V8-1-14-563: 순례 스탬프북/지도 보조 UI는 이 블록을 최종 소유 위치로 사용한다.
   V542에서 하단 레이어와 내위치 버튼을 다시 크게 덮으면서 화면이 깨진 부분을 되돌리고,
   버튼 소유권만 이 원본 위치에 남긴다. */
#shrine-visit-cards-btn,.shrine-visit-sheet-btn,.shrine-visit-sheet-btn.show{display:none!important;}
#map-wrap #loc-btn,
#app #map-wrap #loc-btn{
  position:absolute!important;
  right:12px!important;
  bottom:calc(var(--oai-android-bottom-gap, env(safe-area-inset-bottom, 0px)) + 98px)!important;
  z-index:872!important;
  opacity:1!important;
  visibility:visible!important;
  pointer-events:auto!important;
  width:56px!important;
  height:56px!important;
  min-width:56px!important;
  min-height:56px!important;
  padding:5px 4px!important;
  border-radius:16px!important;
  display:inline-flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  gap:2px!important;
  font-size:19px!important;
  line-height:1!important;
  background:#ffffff!important;
  color:#0e1535!important;
  border:2px solid rgba(21,101,192,.34)!important;
  box-shadow:0 5px 14px rgba(0,0,0,.22)!important;
  box-sizing:border-box!important;
  touch-action:manipulation!important;
  -webkit-tap-highlight-color:transparent!important;
}
#map-wrap #loc-btn span,
#app #map-wrap #loc-btn span{
  font-size:13px!important;
  font-weight:900!important;
  line-height:1.05!important;
  letter-spacing:-.04em!important;
}
.shrine-visit-action-layer{
  display:none!important;
  align-items:center!important;
  justify-content:center!important;
  box-sizing:border-box!important;
  pointer-events:none!important;
  background:#eadfca!important;
}
.shrine-visit-action-layer.show{display:flex!important;}
#app > .shrine-visit-action-layer,
body > .shrine-visit-action-layer,
#map-wrap > .shrine-visit-action-layer{
  position:fixed!important;
  left:0!important;
  right:0!important;
  bottom:0!important;
  z-index:830!important;
  height:78px!important;
  min-height:78px!important;
  padding:7px 14px calc(var(--oai-android-bottom-gap, env(safe-area-inset-bottom, 0px)) + 3px)!important;
  border-top:1.5px solid rgba(143,105,48,.42)!important;
  box-shadow:0 -2px 10px rgba(63,47,20,.10)!important;
}
.sheet > .shrine-visit-action-layer{
  display:none!important;
}
.shrine-visit-floating-list-btn{
  position:relative!important;
  top:5px!important;
  left:auto!important;
  right:auto!important;
  bottom:auto!important;
  z-index:1!important;
  display:none!important;
  align-items:center!important;
  justify-content:center!important;
  opacity:0!important;
  visibility:hidden!important;
  pointer-events:none!important;
  width:100%!important;
  max-width:420px!important;
  min-width:0!important;
  height:58px!important;
  min-height:58px!important;
  padding:0 18px!important;
  border-radius:18px!important;
  font-size:16.5px!important;
  font-weight:950!important;
  line-height:1.1!important;
  background:#0b5fc8!important;
  color:#fff!important;
  border:2.5px solid #084a9a!important;
  box-shadow:none!important;
  font-family:inherit!important;
  letter-spacing:-.04em!important;
  white-space:nowrap!important;
  box-sizing:border-box!important;
  touch-action:manipulation!important;
  transform:translateZ(0)!important;
  -webkit-tap-highlight-color:transparent!important;
}
.shrine-visit-floating-list-btn.show{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  opacity:1!important;
  visibility:visible!important;
  pointer-events:auto!important;
}
#app > .shrine-visit-action-layer .shrine-visit-floating-list-btn,
body > .shrine-visit-action-layer .shrine-visit-floating-list-btn,
#map-wrap > .shrine-visit-action-layer .shrine-visit-floating-list-btn{
  width:min(calc(100% - 28px),390px)!important;
}
html.parish-mode #app #map-wrap #loc-btn,
html.retreat-mode #app #map-wrap #loc-btn,
html:not(.ios-device).parish-mode #app #map-wrap #loc-btn,
html:not(.ios-device).retreat-mode #app #map-wrap #loc-btn{
  bottom:calc(var(--oai-android-bottom-gap, env(safe-area-inset-bottom, 0px)) + 36px)!important;
}

.shrine-visit-cards-head.module-bar{
  display:flex!important;
  align-items:center!important;
  gap:0!important;
  height:calc(var(--oai-std-header-h) + env(safe-area-inset-top,0px))!important;
  min-height:calc(var(--oai-std-header-h) + env(safe-area-inset-top,0px))!important;
  max-height:calc(var(--oai-std-header-h) + env(safe-area-inset-top,0px))!important;
  padding:var(--oai-std-hdr-pad) 16px 10px!important;
  box-sizing:border-box!important;
  flex-shrink:0!important;
  width:100%!important;
  max-width:none!important;
  background:#0e1535!important;
  color:var(--v4-surface-white)!important;
  border-bottom:2px solid var(--gold)!important;
  box-shadow:0 4px 16px rgba(14,21,53,.18)!important;
  margin:0!important;
  border-radius:0!important;
}
.shrine-visit-cards-head.module-bar::before,
.shrine-visit-cards-head.module-bar::after{content:none!important;display:none!important;}
.shrine-visit-cards-head .module-bar-main{display:flex!important;align-items:center!important;gap:14px!important;flex:1!important;min-width:0!important;}
.shrine-visit-cards-head .module-bar-ico{width:42px!important;height:42px!important;min-width:42px!important;flex:0 0 42px!important;border-radius:12px!important;background:rgba(255,255,255,.12)!important;border:1px solid rgba(255,255,255,.2)!important;display:flex!important;align-items:center!important;justify-content:center!important;font-size:var(--oai-std-icon-sz)!important;line-height:1!important;color:var(--v4-surface-white)!important;overflow:hidden!important;}
.shrine-visit-cards-head .module-bar-txt{display:flex!important;flex-direction:column!important;align-items:flex-start!important;justify-content:center!important;min-width:0!important;gap:2px!important;}
.shrine-visit-cards-head .module-bar-title{font-size:var(--oai-std-title-fs)!important;font-weight:800!important;line-height:1.2!important;letter-spacing:-.02em!important;color:var(--v4-surface-white)!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;margin:0!important;text-align:left!important;}
.shrine-visit-cards-head .module-bar-sub{font-size:var(--oai-std-sub-fs)!important;font-weight:500!important;line-height:1.2!important;color:rgba(255,255,255,.65)!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;margin:0!important;opacity:1!important;}
.shrine-visit-cards-head .module-close{width:var(--oai-std-close-sz)!important;height:var(--oai-std-close-sz)!important;min-width:var(--oai-std-close-sz)!important;flex:0 0 var(--oai-std-close-sz)!important;border-radius:999px!important;background:transparent!important;border:1.5px solid currentColor!important;color:rgba(212,170,106,.9)!important;font-size:28px!important;font-weight:900!important;display:flex!important;align-items:center!important;justify-content:center!important;box-shadow:none!important;}
.shrine-visit-cards-tabs{
  width:100%!important;
  max-width:100%!important;
  margin:0!important;
  min-height:50px!important;
  height:50px!important;
  max-height:50px!important;
  padding:6px 10px!important;
  gap:5px!important;
  background:#0e1535!important;
  border-top:0!important;
  border-bottom:1px solid rgba(212,170,106,.68)!important;
  box-shadow:none!important;
  display:flex!important;
  align-items:center!important;
  overflow:hidden!important;
  box-sizing:border-box!important;
  flex-shrink:0!important;
  touch-action:pan-x!important;
}
.shrine-visit-cards-tabs button{
  min-width:0!important;
  height:38px!important;
  min-height:38px!important;
  padding:0 4px!important;
  border-radius:7px!important;
  border:1.5px solid rgba(255,255,255,.32)!important;
  background:#ffffff!important;
  color:#0e1535!important;
  box-shadow:0 1px 5px rgba(15,23,42,.10)!important;
  font-size:14px!important;
  font-weight:900!important;
  font-family:inherit!important;
  line-height:1.05!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  text-align:center!important;
  white-space:nowrap!important;
  box-sizing:border-box!important;
  flex:1 1 0!important;
  cursor:pointer!important;
}
.shrine-visit-cards-tabs button[data-shrine-visit-cards-tab="visited"]{flex:28 1 0!important;}
.shrine-visit-cards-tabs button[data-shrine-visit-cards-tab="unvisited"]{flex:31 1 0!important;}
.shrine-visit-cards-tabs button[data-shrine-visit-cards-tab="new"]{flex:25 1 0!important;}
.shrine-visit-cards-tabs button[data-shrine-visit-cards-tab="stats"]{flex:16 1 0!important;}
.shrine-visit-cards-tabs button.on,
.shrine-visit-cards-tabs button.active{
  background:#1565c0!important;
  color:#ffffff!important;
  border-color:#0d47a1!important;
  box-shadow:0 3px 10px rgba(21,101,192,.28)!important;
}
.shrine-visit-cards-diocese{
  display:flex!important;
  overflow-x:auto!important;
  gap:5px!important;
  min-height:42px!important;
  height:42px!important;
  max-height:42px!important;
  padding:5px 8px!important;
  align-items:center!important;
  background:var(--mode-header-solid)!important;
  flex-shrink:0!important;
  border-bottom:1px solid rgba(212,170,106,.68)!important;
  scrollbar-width:none!important;
  margin:0!important;
  box-sizing:border-box!important;
  touch-action:pan-x!important;
}
.shrine-visit-cards-diocese::-webkit-scrollbar{display:none!important;}
.shrine-visit-cards-diocese.stats-hidden{display:none!important;height:0!important;min-height:0!important;max-height:0!important;padding:0!important;border-bottom:0!important;overflow:hidden!important;}
.shrine-visit-cards-diocese .filter-btn{
  flex-shrink:0!important;
  height:32px!important;
  min-height:32px!important;
  padding:0 11px!important;
  border-radius:8px!important;
  border:1.5px solid var(--mode-filter-border)!important;
  background:#ffffff!important;
  color:#253142!important;
  font-size:14px!important;
  line-height:1.1!important;
  font-weight:800!important;
  font-family:inherit!important;
  cursor:pointer!important;
  white-space:nowrap!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  box-sizing:border-box!important;
  box-shadow:0 1px 5px rgba(15,23,42,.08)!important;
  scroll-margin-left:14px!important;
  scroll-margin-right:14px!important;
}
.shrine-visit-cards-diocese .filter-btn.active{background:#d4aa6a!important;color:#0e1535!important;border-color:#d4aa6a!important;font-weight:900!important;box-shadow:0 2px 9px rgba(0,0,0,.14)!important;}
.shrine-visit-cards-stats{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:6px!important;
  margin:8px 12px!important;
  min-height:54px!important;
  padding:8px 10px!important;
  border:1.8px solid #1565c0!important;
  border-radius:12px!important;
  background:#eaf3ff!important;
  color:#0e3f78!important;
  box-shadow:0 3px 11px rgba(21,101,192,.13)!important;
  text-align:center!important;
  white-space:nowrap!important;
  box-sizing:border-box!important;
  overflow:hidden!important;
}
.shrine-visit-cards-stats.stats-tab-hidden{display:none!important;height:0!important;min-height:0!important;margin:0!important;padding:0!important;border:0!important;overflow:hidden!important;}
.shrine-visit-cards-stats strong{font-size:22px!important;color:#0b3d72!important;font-weight:950!important;line-height:1.1!important;}
.shrine-visit-cards-stats span,
.shrine-visit-cards-stats b,
.shrine-visit-cards-stats em{font-size:16.5px!important;color:#284b70!important;font-weight:900!important;font-style:normal!important;line-height:1.1!important;}
.shrine-visit-cards-stats em{margin-left:2px!important;}
.shrine-visit-cards-body{display:flex!important;flex-direction:column!important;gap:9px!important;flex:1 1 auto!important;min-height:0!important;height:0!important;max-height:none!important;overflow-y:auto!important;-webkit-overflow-scrolling:touch!important;padding:8px 12px var(--oai-stampbook-bottom-clearance)!important;background:#fffdf7!important;touch-action:pan-y!important;overflow-x:hidden!important;box-sizing:border-box!important;scroll-padding-bottom:var(--oai-stampbook-bottom-clearance)!important;overscroll-behavior:contain!important;}
.shrine-visit-cards-body.stats{padding-top:14px!important;padding-bottom:var(--oai-stampbook-bottom-clearance)!important;}
.shrine-visit-stats-view{display:flex;flex-direction:column;gap:14px;padding:4px 0 10px;}
.shrine-visit-stat-total,
.shrine-visit-stat-list{border:1.5px solid #cfd6dd;border-radius:12px;background:linear-gradient(180deg,#fff,#f7f9fb);box-shadow:0 4px 14px rgba(26,38,51,.10);padding:14px;}
.shrine-visit-stat-total{margin-top:2px!important;}
.shrine-visit-stat-list{padding-bottom:12px!important;}
.shrine-visit-stat-kicker{font-size:14px;font-weight:900;color:#6d5a24;margin-bottom:8px;}
.shrine-visit-stat-total strong{display:block;font-size:25px;line-height:1.2;color:#101828;font-weight:900;letter-spacing:-.04em;}
.shrine-visit-stat-total span{display:inline-flex;margin-top:6px;font-size:16px;font-weight:900;color:#0e1535;}
.shrine-visit-stat-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(58px,auto) minmax(42px,auto);align-items:center;gap:8px;min-height:48px;padding:9px 0;border:0;border-top:1px solid #e1e6ec;background:transparent;font-size:16.5px;font-family:inherit;text-align:left;cursor:pointer;width:100%;box-sizing:border-box;overflow:hidden;}
.shrine-visit-stat-row:first-of-type{border-top:0;}
.shrine-visit-stat-row:active{transform:translateY(1px);background:rgba(212,170,106,.12)!important;}
.shrine-visit-stat-row.active{background:#eaf4ff!important;border:2px solid rgba(22,140,255,.48)!important;border-radius:11px 11px 0 0!important;margin-left:0!important;margin-right:0!important;padding-left:12px!important;padding-right:12px!important;width:100%!important;box-sizing:border-box!important;scroll-margin-top:8px!important;box-shadow:none!important;}
.shrine-visit-stat-row.active + .shrine-visit-stat-items{margin:0 0 12px 0!important;width:100%!important;padding:8px 10px 10px!important;border:2px solid rgba(22,140,255,.28)!important;border-top:0!important;border-radius:0 0 12px 12px!important;background:#f5fbff!important;box-sizing:border-box!important;box-shadow:none!important;display:flex!important;flex-direction:column!important;gap:7px!important;}
.shrine-visit-stat-item{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:4px!important;padding:9px 10px!important;border-radius:10px!important;background:#ffffff!important;border:1px solid rgba(15,23,42,.08)!important;box-shadow:none!important;box-sizing:border-box!important;line-height:1.28!important;word-break:keep-all!important;}
.shrine-visit-stat-place-name{display:block!important;color:#101828!important;font-size:15px!important;font-weight:850!important;letter-spacing:-.04em!important;line-height:1.28!important;white-space:normal!important;overflow-wrap:anywhere!important;}
.shrine-visit-stat-place-meta{display:flex!important;align-items:center!important;gap:7px!important;min-width:0!important;line-height:1!important;}
.shrine-visit-stat-place-meta strong{display:inline-flex!important;align-items:center!important;justify-content:center!important;min-height:22px!important;padding:3px 8px!important;border-radius:999px!important;background:#eaf4ff!important;border:1px solid rgba(21,101,192,.26)!important;color:#0b4f9c!important;font-size:12.5px!important;font-weight:900!important;line-height:1!important;white-space:nowrap!important;}
.shrine-visit-stat-place-meta em{display:inline-flex!important;align-items:center!important;color:#5b6472!important;font-size:12.5px!important;font-weight:800!important;font-style:normal!important;line-height:1!important;white-space:nowrap!important;}
.shrine-visit-stat-item.empty{align-items:center!important;justify-content:center!important;color:#6b7280!important;background:#fff!important;border-style:dashed!important;}

.shrine-visit-detail-info-head .shrine-visit-detail-section-title{
  margin:0!important;
  flex:1 1 auto!important;
}

.shrine-visit-cards-modal,
.shrine-visit-cards-panel,
.shrine-visit-cards-body{
  background:#fffdf7!important;
}
.shrine-visit-cards-empty{padding:18px!important;border-radius:14px!important;background:#fff8e8!important;color:#6c4a00!important;font-size:14px!important;font-weight:800!important;text-align:center!important;}

.shrine-visit-stat-items{
  scroll-margin-bottom:62px!important;
}
.shrine-visit-stat-item:last-child{
  margin-bottom:0!important;
}

html:not(.ios-device).oai-screen-compact-short #cover-main-block{
  gap:5px!important;
  padding-left:8px!important;
  padding-right:8px!important;
}
html:not(.ios-device).oai-screen-compact-short .cover-grid{
  row-gap:5px!important;
  column-gap:5px!important;
}
html:not(.ios-device).oai-screen-compact-short .cover-card{
  padding:4px 5px!important;
  border-radius:15px!important;
}
html:not(.ios-device).oai-screen-compact-short .cover-name{
  
  line-height:1.18!important;
}
html:not(.ios-device).oai-screen-compact-short .cover-emoji{
  
  line-height:1.12!important;
}
html:not(.ios-device).oai-screen-compact-short #cover-action-row,
html:not(.ios-device).oai-screen-compact-short #cover-diocese-box,
html:not(.ios-device).oai-screen-compact-short #cover-share-box,
html:not(.ios-device).oai-screen-compact-short #cover-update-box,
html:not(.ios-device).oai-screen-compact-short #cover-update-btn,
html:not(.ios-device).oai-screen-compact-short #cover-share-btn,
html:not(.ios-device).oai-screen-compact-short #cover .cover-diocese-btn,
html:not(.ios-device).oai-screen-compact-short #cover .cover-share-main-btn,
html:not(.ios-device).oai-screen-compact-short #cover .cover-refresh-main-btn{
  height:41px!important;
  min-height:41px!important;
  max-height:41px!important;
}
html:not(.ios-device).oai-screen-compact-short #app #info-card{
  border-radius:20px 20px 0 0!important;
}
html:not(.ios-device).oai-screen-compact-short:not(.parish-mode):not(.retreat-mode) #app #info-card{
  max-height:48vh!important;
}
html:not(.ios-device).oai-screen-compact-short #app #info-card .ic-header{padding:11px 12px 5px!important;}
html:not(.ios-device).oai-screen-compact-short #app #info-card .ic-meta{padding:0 12px 5px!important;}
html:not(.ios-device).oai-screen-compact-short #app #info-card .ic-meta .ic-dist-box{padding:4px 7px!important;}
html:not(.ios-device).oai-screen-compact-short #app #info-card .ic-header .ic-type-badge{max-width:86px;}
html:not(.ios-device).oai-screen-compact-short #app #info-card .ic-header .ic-type-badge.shrine-pilgrim-register-badge{min-width:68px!important;max-width:none!important;}
html:not(.ios-device).oai-screen-compact-short #app #info-card .ic-header .ic-type-badge.shrine-pilgrim-visited{min-width:78px!important;max-width:none!important;}
html:not(.ios-device).oai-screen-compact-short #app #info-card .ic-addr-row{padding:0 12px 7px!important;gap:8px!important;}
html:not(.ios-device).oai-screen-compact-short #app #info-card .ic-btn-row,
html:not(.ios-device).oai-screen-compact-short #app #info-card .ic-links,
html:not(.ios-device).oai-screen-compact-short #app #info-card .ic-kakao-row{gap:6px!important;padding:6px 12px 0!important;}
html:not(.ios-device).oai-screen-compact-short:is(.parish-mode,.retreat-mode) #app #info-card .ic-body{
  padding-bottom:12px!important;
}
html:not(.ios-device).oai-screen-compact-short:is(.parish-mode,.retreat-mode) #app #info-card .ic-kakao-row{
  padding-bottom:0!important;
  margin-bottom:0!important;
}
html:not(.ios-device).oai-screen-compact-short:not(.parish-mode):not(.retreat-mode) #app #info-card .ic-body{
  padding-bottom:8px!important;
}
html:not(.ios-device).oai-screen-compact-short #app .list-item,
html:not(.ios-device).oai-screen-compact-short #app .nearby-item,
html:not(.ios-device).oai-screen-compact-short #app .region-item{
  min-height:57px!important;
  padding:8px 10px!important;
  gap:8px!important;
  margin-bottom:5px!important;
}

html:not(.ios-device).oai-screen-tall-phone #cover-main-block{
  gap:var(--cover-main-gap)!important;
}
html:not(.ios-device).oai-screen-tall-phone:not(.parish-mode):not(.retreat-mode) #app #info-card{
  max-height:52vh!important;
}
html:not(.ios-device).oai-screen-tall-phone #app #info-card .ic-tel-btn,
html:not(.ios-device).oai-screen-tall-phone #app #info-card .ic-route-btn,
html:not(.ios-device).oai-screen-tall-phone #app #info-card .ic-link-btn,
html:not(.ios-device).oai-screen-tall-phone #app #info-card .btn-kakao-nav{
  height:45px!important;
  min-height:45px!important;
}
html:not(.ios-device).oai-screen-tall-phone:is(.parish-mode,.retreat-mode) #app #info-card .ic-body{
  padding-bottom:12px!important;
}
html:not(.ios-device).oai-screen-tall-phone:is(.parish-mode,.retreat-mode) #app #info-card .ic-kakao-row{
  padding-bottom:0!important;
  margin-bottom:0!important;
}

html:not(.ios-device).oai-screen-fold-wide #cover-main-block{
  max-width:min(560px,calc(100vw - 36px))!important;
  gap:var(--cover-main-gap)!important;
}
html:not(.ios-device).oai-screen-fold-wide .cover-grid{
  column-gap:10px!important;
}
html:not(.ios-device).oai-screen-fold-wide #cover-action-row,
html:not(.ios-device).oai-screen-fold-wide #cover-diocese-box,
html:not(.ios-device).oai-screen-fold-wide #cover-share-box,
html:not(.ios-device).oai-screen-fold-wide #cover-update-box,
html:not(.ios-device).oai-screen-fold-wide #cover-update-btn,
html:not(.ios-device).oai-screen-fold-wide #cover-share-btn,
html:not(.ios-device).oai-screen-fold-wide #cover .cover-diocese-btn,
html:not(.ios-device).oai-screen-fold-wide #cover .cover-share-main-btn,
html:not(.ios-device).oai-screen-fold-wide #cover .cover-refresh-main-btn{
  height:50px!important;
  min-height:50px!important;
  max-height:50px!important;
}
html:not(.ios-device).oai-screen-fold-wide:not(.parish-mode):not(.retreat-mode) #app #info-card{
  max-height:52vh!important;
  border-radius:22px 22px 0 0!important;
}
html:not(.ios-device).oai-screen-fold-wide:is(.parish-mode,.retreat-mode) #app #info-card{
  border-radius:22px 22px 0 0!important;
}
html:not(.ios-device).oai-screen-fold-wide #app #info-card .ic-tel-btn,
html:not(.ios-device).oai-screen-fold-wide #app #info-card .ic-route-btn,
html:not(.ios-device).oai-screen-fold-wide #app #info-card .ic-link-btn,
html:not(.ios-device).oai-screen-fold-wide #app #info-card .btn-kakao-nav{
  height:45px!important;
  min-height:45px!important;
}
html:not(.ios-device).oai-screen-fold-wide:is(.parish-mode,.retreat-mode) #app #info-card .ic-body{
  padding-bottom:12px!important;
}
html:not(.ios-device).oai-screen-fold-wide:is(.parish-mode,.retreat-mode) #app #info-card .ic-kakao-row{
  padding-bottom:0!important;
  margin-bottom:0!important;
}

html:not(.ios-device).oai-screen-compact-short .shrine-visit-cards-diocese{
  min-height:42px!important;
  height:42px!important;
  max-height:42px!important;
  padding:5px 8px!important;
}
html:not(.ios-device).oai-screen-compact-short .shrine-visit-cards-stats{
  min-height:40px!important;
  height:40px!important;
  padding:5px 8px!important;
  margin-top:8px!important;
}
html:not(.ios-device).oai-screen-compact-short .shrine-visit-cards-body{
  padding:8px 8px var(--oai-stampbook-bottom-clearance)!important;
}
html:not(.ios-device).oai-screen-compact-short .shrine-visit-card-grid{gap:8px!important;}
html:not(.ios-device).oai-screen-compact-short .shrine-visit-detail-head{height:50px!important;min-height:50px!important;}
html:not(.ios-device).oai-screen-compact-short .shrine-visit-detail-body{padding:10px 10px max(44px,env(safe-area-inset-bottom))!important;}
html:not(.ios-device).oai-screen-compact-short .shrine-visit-detail-name{margin-bottom:8px!important;}
html:not(.ios-device).oai-screen-compact-short .shrine-visit-detail-row{padding:8px 0!important;gap:9px!important;}

html:not(.ios-device).oai-screen-tall-phone .shrine-visit-cards-tabs{height:50px!important;min-height:50px!important;max-height:50px!important;}
html:not(.ios-device).oai-screen-tall-phone .shrine-visit-cards-diocese{height:42px!important;min-height:42px!important;max-height:42px!important;}
html:not(.ios-device).oai-screen-tall-phone .shrine-visit-cards-body{padding-bottom:var(--oai-stampbook-bottom-clearance)!important;}
html:not(.ios-device).oai-screen-tall-phone .shrine-visit-detail-body{padding-bottom:max(56px,env(safe-area-inset-bottom))!important;}

html:not(.ios-device).oai-screen-fold-wide .shrine-visit-cards-diocese{
  height:42px!important;
  min-height:42px!important;
  max-height:42px!important;
}
html:not(.ios-device).oai-screen-fold-wide .shrine-visit-cards-body{
  padding-bottom:var(--oai-stampbook-bottom-clearance)!important;
}
html:not(.ios-device).oai-screen-fold-wide .shrine-visit-detail-body{
  padding-bottom:max(56px,env(safe-area-inset-bottom))!important;
}

html:not(.ios-device).oai-screen-fold-wide .shrine-visit-card-grid{
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  column-gap:8px!important;
}
.shrine-visit-date-row.gps button{display:none!important;}
.shrine-visit-gps-lock{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-height:27px!important;
  padding:0 9px!important;
  border-radius:999px!important;
  background:#eef4ff!important;
  border:1px solid #b8d7ff!important;
  color:#0757a6!important;
  font-size:13px!important;
  font-weight:900!important;
  font-style:normal!important;
  white-space:nowrap!important;
}



/* V8-1-14-563: 과거 gold-cross 로딩 중복 블록 제거. 실제 로딩 십자가는 oai-loading-cross 변수 블록만 사용한다. */
html.oai-map-search-keyboard-lock,
html.oai-map-search-keyboard-lock body{
  overscroll-behavior:none!important;
}
html.oai-map-search-keyboard-lock #app,
html.oai-map-search-keyboard-lock #map-wrap{
  transform:none!important;
}
html.oai-map-search-keyboard-lock #srch-modal.open,
html.oai-map-search-keyboard-lock #srch-modal .sm-inner{
  transform:none!important;
}
html.oai-map-search-keyboard-lock #sheet-list.open,
html.oai-map-search-keyboard-lock #sheet-region.open{
  top:var(--oai-map-top-h)!important;
  bottom:0!important;
  transform:none!important;
}
.module-close,
#prayer-close,
#pr-back-btn,
.pr-back,
.my-diocese-close,
.ios-safari-banner-x,
.sheet-x,
.sm-x,
.route-sheet-x,
.map-category-close,
.ic-close-btn,
.trail-sh-close,
.shrine-visit-x,
.srch-x {
  border-radius: 999px !important;
  background: transparent !important;
  border: 1.5px solid currentColor !important;
  box-shadow: none !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  line-height: 1 !important;
}

.privacy-policy-frame {
  flex: 1 1 auto;
  min-height: 0;
  width: 100%;
  border: 1.5px solid #d8c9aa;
  border-radius: 16px;
  background: #f5f0e8;
  margin: 10px 0 12px;
}
/* V8-1-14-563: 사용하지 않는 이전 Google-style intro keyframes는 제거하고, oaiIntroSmoothPhoto*만 유지한다. */
html.oai-cover-booting body{
  background:#fbf8f1 !important;
}
html.oai-cover-booting #cover{
  background-color:#fbf8f1 !important;
}
html.oai-cover-booting::before{
  content:"" !important;
  position:fixed !important;
  inset:0 !important;
  z-index:2147482500 !important;
  background:#fbf8f1 !important;
  pointer-events:none !important;
  display:block !important;
  visibility:visible !important;
  opacity:1 !important;
}
html.oai-cover-booting::after{
  content:"" !important;
  position:fixed !important;
  left:50% !important;
  top:50% !important;
  z-index:2147482501 !important;
  width:min(84vw, 540px) !important;
  height:min(84vh, 740px) !important;
  transform:translate(-50%,-50%) scale(.54);
  background-image:
    linear-gradient(to right, #fbf8f1 0%, rgba(251,248,241,.96) 5%, rgba(251,248,241,.60) 13%, rgba(251,248,241,.16) 24%, rgba(251,248,241,0) 36%, rgba(251,248,241,0) 64%, rgba(251,248,241,.16) 76%, rgba(251,248,241,.60) 87%, rgba(251,248,241,.96) 95%, #fbf8f1 100%),
    linear-gradient(to bottom, #fbf8f1 0%, rgba(251,248,241,.90) 6%, rgba(251,248,241,.36) 17%, rgba(251,248,241,0) 30%, rgba(251,248,241,0) 70%, rgba(251,248,241,.36) 83%, rgba(251,248,241,.90) 94%, #fbf8f1 100%),
    radial-gradient(ellipse 96% 88% at 50% 48%, rgba(251,248,241,0) 50%, rgba(251,248,241,.08) 62%, rgba(251,248,241,.34) 76%, rgba(251,248,241,.76) 90%, rgba(251,248,241,1) 100%),
    url("intro-cross-jesus.jpg?v=V8-1-14-647") !important;
  background-position:center center, center center, center center, center center !important;
  background-size:100% 100%, 100% 100%, 100% 100%, auto 106% !important;
  background-repeat:no-repeat, no-repeat, no-repeat, no-repeat !important;
  border-radius:38px !important;
  background-color:#fbf8f1 !important;
  box-shadow:
    0 0 0 999px #fbf8f1,
    0 8px 18px rgba(80,54,18,.05),
    inset 0 0 72px rgba(251,248,241,.28),
    inset 0 0 150px rgba(251,248,241,.18) !important;
  -webkit-mask-image:
    linear-gradient(to right, transparent 0%, rgba(0,0,0,.35) 6%, rgba(0,0,0,.82) 15%, #000 28%, #000 72%, rgba(0,0,0,.82) 85%, rgba(0,0,0,.35) 94%, transparent 100%),
    linear-gradient(to bottom, transparent 0%, rgba(0,0,0,.50) 5%, rgba(0,0,0,.90) 13%, #000 24%, #000 76%, rgba(0,0,0,.90) 87%, rgba(0,0,0,.50) 95%, transparent 100%) !important;
  -webkit-mask-composite:source-in !important;
  mask-image:
    linear-gradient(to right, transparent 0%, rgba(0,0,0,.35) 6%, rgba(0,0,0,.82) 15%, #000 28%, #000 72%, rgba(0,0,0,.82) 85%, rgba(0,0,0,.35) 94%, transparent 100%),
    linear-gradient(to bottom, transparent 0%, rgba(0,0,0,.50) 5%, rgba(0,0,0,.90) 13%, #000 24%, #000 76%, rgba(0,0,0,.90) 87%, rgba(0,0,0,.50) 95%, transparent 100%) !important;
  mask-composite:intersect !important;
  pointer-events:none !important;
  display:block !important;
  visibility:visible !important;
  opacity:1 !important;
  animation:oaiIntroSmoothPhotoDesktopV85 1.85s cubic-bezier(.22,.61,.36,1) both !important;
}
html.oai-cover-revealing::before,
html.oai-cover-revealing::after{
  content:"" !important;
  display:none !important;
  opacity:0 !important;
  animation:none !important;
  transition:none !important;
  background-image:none !important;
}
@media (max-width: 540px) and (max-aspect-ratio: 3/4){
  html.oai-cover-booting::after{
    left:0 !important;
    top:0 !important;
    width:100vw !important;
    height:100vh !important;
    transform:none;
    border-radius:0 !important;
    background-size:100% 100%, 100% 100%, 100% 100%, auto 108% !important;
    -webkit-mask-image:none !important;
    mask-image:none !important;
    box-shadow:0 0 0 999px #fbf8f1 !important;
    animation:oaiIntroSmoothPhotoMobileV85 1.85s cubic-bezier(.22,.61,.36,1) both !important;
  }
}

html:not(.ios-device){
  --oai-android-bottom-gap:clamp(10px, env(safe-area-inset-bottom,0px), 18px);
  --oai-android-bottom-gap-tight:clamp(8px, env(safe-area-inset-bottom,0px), 14px);
  --oai-android-bottom-gap-roomy:clamp(12px, env(safe-area-inset-bottom,0px), 20px);
  --v4-list-pad-bottom:calc(72px + var(--oai-android-bottom-gap));
  /* V8-1-14-563: Android/WebView map tabs were hidden under the status bar when this was forced to 0.
     Keep one owner variable here and let tabbar, map-wrap and sheets share the same top height. */
  --oai-map-safe-top:max(24px, env(safe-area-inset-top, 0px));
  --oai-map-top-h:calc(var(--tab-h) + var(--oai-map-safe-top));
}
html:not(.ios-device) #cover{
  --cover-bottom-safe:var(--oai-android-bottom-gap)!important;
  padding-bottom:calc(var(--cover-bottom-reserve) + var(--oai-android-bottom-gap))!important;
}
html:not(.ios-device) #cover-bottom-note{
  bottom:var(--oai-android-bottom-gap)!important;
}
html:not(.parish-mode):not(.retreat-mode) #list-body,
html:not(.parish-mode):not(.retreat-mode) #nearby-body,
html:not(.parish-mode):not(.retreat-mode) #region-body{
  padding-bottom:calc(112px + env(safe-area-inset-bottom, 0px))!important;
  scroll-padding-bottom:calc(112px + env(safe-area-inset-bottom, 0px))!important;
}
html:not(.ios-device):not(.parish-mode):not(.retreat-mode) #list-body,
html:not(.ios-device):not(.parish-mode):not(.retreat-mode) #nearby-body,
html:not(.ios-device):not(.parish-mode):not(.retreat-mode) #region-body{
  padding-bottom:calc(112px + var(--oai-android-bottom-gap))!important;
  scroll-padding-bottom:calc(112px + var(--oai-android-bottom-gap))!important;
}
html:not(.ios-device).parish-mode #list-body,
html:not(.ios-device).parish-mode #nearby-body,
html:not(.ios-device).parish-mode #region-body,
html:not(.ios-device).retreat-mode #list-body,
html:not(.ios-device).retreat-mode #nearby-body,
html:not(.ios-device).retreat-mode #region-body{
  padding-bottom:calc(18px + var(--oai-android-bottom-gap))!important;
  scroll-padding-bottom:calc(18px + var(--oai-android-bottom-gap))!important;
}
html:not(.ios-device) .web-list,
html:not(.ios-device) #trail-list{
  padding-bottom:calc(72px + var(--oai-android-bottom-gap))!important;
}
html:not(.ios-device) .faith-bottom-nav{
  --faith-bottom-pad-bottom:calc(5px + var(--oai-android-bottom-gap));
}
html:not(.ios-device) #prayer-view{
  --faith-prayer-list-bottom-pad:calc(78px + var(--oai-android-bottom-gap));
  --faith-prayer-detail-bottom-pad:calc(86px + var(--oai-android-bottom-gap));
}
html:not(.ios-device) #app .guide-modal{
  padding-bottom:calc(14px + var(--oai-android-bottom-gap))!important;
}
html:not(.ios-device) .shrine-visit-panel,
html:not(.ios-device) .shrine-auto-visit-panel{
  padding-bottom:var(--oai-android-bottom-gap-roomy)!important;
}
html:not(.ios-device) .shrine-visit-cards-body{
  padding-bottom:var(--oai-stampbook-bottom-clearance)!important;
}
html:not(.ios-device) .shrine-visit-cards-body.stats{
  padding-bottom:var(--oai-stampbook-bottom-clearance)!important;
}
html:not(.ios-device) .shrine-visit-detail-view{
  padding-bottom:var(--oai-android-bottom-gap)!important;
}
html:not(.ios-device) .shrine-visit-detail-body{
  padding-bottom:max(44px, calc(32px + var(--oai-android-bottom-gap)))!important;
}

/* V8-1-14-563: 나의 성지순례 현황 버튼은 검색 키보드가 떠도 리스트 위에 남아야 하므로
   kb-open / map-search-keyboard-lock에서 숨기지 않는다. 표시 여부는 JS가 현재 화면 상태로만 결정한다. */
html.oai-refresh-no-intro.oai-cover-booting::after,
html.oai-refresh-no-intro.oai-cover-revealing::after{
  content:""!important;
  display:none!important;
  opacity:0!important;
  visibility:hidden!important;
  animation:none!important;
  background-image:none!important;
}

html:not(.ios-device){
  --oai-category-enter-ms:360ms!important;
  --oai-popup-enter-ms:320ms!important;
}
#app .sheet.from-right.open,
#app .sheet.from-left.open{
  transition:transform .14s cubic-bezier(.22,.61,.36,1)!important;
}
html.oai-resume-freeze #app .sheet.from-right.open,
html.oai-resume-freeze #app .sheet.from-left.open,
html.oai-resume-freeze #app .sheet.open,
html.oai-resume-freeze #map-wrap,
html.oai-resume-freeze #map,
html.oai-resume-freeze #loc-btn,
html.oai-resume-freeze #legend,
html.oai-resume-freeze #shrine-visit-action-layer,
html.oai-resume-freeze #info-card{
  transition:none!important;
  animation:none!important;
  scroll-behavior:auto!important;
}
html.oai-external-return-freeze *,
html.oai-stability-veil[data-oai-stability-reason*="external"] *{
  scroll-behavior:auto!important;
}
#sheet-nearby.open,
#sheet-list.open,
#sheet-region.open{
  backface-visibility:visible!important;
  transform:none!important;
  will-change:auto!important;
}
/* V8-1-14-563: Android/WebView 스탬프북 상단 안전여백은 변수만 여기서 정하고,
   헤더/탭/교구바 자체 스타일은 위의 스탬프북 원본 블록 한 곳에서만 관리한다. */
html:not(.ios-device){
  --oai-stampbook-top-safe:max(28px, env(safe-area-inset-top, 0px));
}
html:not(.ios-device).oai-screen-compact-short{
  --oai-stampbook-top-safe:max(24px, env(safe-area-inset-top, 0px));
}


/* V8-1-14-563: 스탬프북 전체화면은 modal/panel이 화면 높이를 소유하고, body만 스크롤을 소유한다. */
#shrine-visit-cards-modal.show{display:block!important;inset:0!important;bottom:0!important;background:#fffdf7!important;}
#shrine-visit-cards-modal .shrine-visit-cards-panel{position:absolute!important;inset:0!important;height:auto!important;min-height:0!important;display:flex!important;flex-direction:column!important;overflow:hidden!important;background:#fffdf7!important;}
#shrine-visit-cards-modal .shrine-visit-cards-body{flex:1 1 auto!important;height:0!important;min-height:0!important;overflow-y:auto!important;padding-bottom:12px!important;scroll-padding-bottom:12px!important;background:#fffdf7!important;}
#shrine-visit-cards-modal .shrine-visit-card-grid{padding-bottom:0!important;}
#shrine-visit-cards-modal .shrine-visit-cards-body.stats{padding-bottom:12px!important;}

@keyframes oaiIntroSmoothPhotoDesktopV85{
  0%{opacity:.12; transform:translate(-50%,-49%) scale(.84); filter:contrast(1.005) saturate(1.01) drop-shadow(0 4px 12px rgba(80,54,18,.035));}
  100%{opacity:1; transform:translate(-50%,-50%) scale(1); filter:contrast(1.015) saturate(1.02) drop-shadow(0 6px 16px rgba(80,54,18,.05));}
}
@keyframes oaiIntroSmoothPhotoMobileV85{
  0%{opacity:.12; transform:scale(.84); filter:contrast(1.005) saturate(1.01);}
  100%{opacity:1; transform:scale(1); filter:contrast(1.015) saturate(1.02);}
}
/* V8-1-14-563: intro animation 속도/이름 override 중복은 제거. 실제 값은 사진 블록과 keyframes에서만 관리한다. */

#cv-pull-modern,
#cv-pull-modern.show,
#cv-pull-modern.ready,
#cv-pull-modern.refreshing{
  display:none!important;
  opacity:0!important;
  visibility:hidden!important;
  pointer-events:none!important;
  animation:none!important;
}

.category-source-note {
  display: block;
  flex-shrink: 0;
  margin: 0;
  padding: 7px 13px 6px;
  background: #fffaf0;
  border-bottom: 1px solid rgba(180, 140, 80, .22);
  color: #7a5a22;
  font-size: 11px;
  font-weight: 750;
  line-height: 1.35;
  letter-spacing: -0.03em;
  text-align: left;
}
.category-source-note .source-parish,
.category-source-note .source-retreat { display: none; }
html.parish-mode .category-source-note .source-shrine,
html.parish-mode .category-source-note .source-retreat { display: none; }
html.parish-mode .category-source-note .source-parish { display: inline; }
html.retreat-mode .category-source-note .source-shrine,
html.retreat-mode .category-source-note .source-parish { display: none; }
html.retreat-mode .category-source-note .source-retreat { display: inline; }
#sheet-nearby .category-source-note,
#sheet-list .category-source-note,
#sheet-region .category-source-note { position: relative; z-index: 2; }
html.oai-font-global .category-source-note { font-size: calc(11px * var(--app-inner-font-scale,1)); }

/* V8-1-14-563: 상세 버튼 색상과 로딩 십자가는 각각 원래 위치에서 관리한다.
   이 앞의 반복 로딩 십자가 override는 아래 oai-loading-cross 변수 블록으로 통합했다. */
#app #loc-btn.oai-wait-nearby-list{
  opacity:1!important;
  visibility:visible!important;
  pointer-events:auto!important;
  transform:none!important;
}

@keyframes oaiUnifiedLoadingRingSpin{to{transform:rotate(360deg)}}
:root{
  --oai-loading-box-size:60px;
  --oai-loading-ring-size:56px;
  --oai-loading-ring-width:3px;
  --oai-loading-cross-font:34px;
  --oai-loading-cross-color:#d4aa6a;
  --oai-loading-ring-speed:2.60s;
  --oai-guard-bg:#f5f0e8;
}
/* 공통 전체화면 보호막: 배경과 고정 십자가는 ::before, 독립 회전 원은 ::after가 소유한다. */
html.oai-stability-veil::before{
  content:"✝"!important;
  position:fixed!important;
  inset:0!important;
  z-index:2147483000!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  box-sizing:border-box!important;
  background:var(--oai-guard-bg)!important;
  color:var(--oai-loading-cross-color)!important;
  font-size:var(--oai-loading-cross-font)!important;
  font-weight:900!important;
  line-height:1!important;
  opacity:1!important;
  visibility:visible!important;
  pointer-events:none!important;
  animation:none!important;
  transition:none!important;
}
html.oai-stability-veil::after,
html.oai-stability-veil[data-oai-stability-reason*="refresh"]::after,
html.oai-stability-veil[data-oai-stability-reason*="reload"]::after,
html.oai-stability-veil[data-oai-refresh-early-veil="1"]::after{
  content:""!important;
  position:fixed!important;
  left:50%!important;
  top:50%!important;
  z-index:2147483001!important;
  width:var(--oai-loading-ring-size)!important;
  height:var(--oai-loading-ring-size)!important;
  margin:calc(var(--oai-loading-ring-size) / -2) 0 0 calc(var(--oai-loading-ring-size) / -2)!important;
  box-sizing:border-box!important;
  display:block!important;
  border-radius:50%!important;
  border:var(--oai-loading-ring-width) solid rgba(212,170,106,.20)!important;
  border-top-color:var(--oai-loading-cross-color)!important;
  border-right-color:rgba(212,170,106,.68)!important;
  background:transparent!important;
  opacity:1!important;
  visibility:visible!important;
  pointer-events:none!important;
  transform-origin:center center!important;
  animation:oaiUnifiedLoadingRingSpin var(--oai-loading-ring-speed) linear infinite!important;
  transition:none!important;
}
/* 외부사이트 진입 보호창 DOM 하나만 유지한다. */
#oai-external-entry-guard{
  position:fixed!important;
  inset:0!important;
  z-index:2147483640!important;
  display:none!important;
  align-items:center!important;
  justify-content:center!important;
  background:var(--oai-guard-bg)!important;
  opacity:0!important;
  visibility:hidden!important;
  pointer-events:auto!important;
  transition:none!important;
  transform:translateZ(0)!important;
  backface-visibility:hidden!important;
  contain:layout paint style!important;
}
#oai-external-entry-guard.show{display:flex!important;opacity:1!important;visibility:visible!important;}
#oai-external-entry-guard.hide{display:flex!important;opacity:0!important;visibility:hidden!important;}
#oai-external-entry-guard::before,
#oai-external-entry-guard::after{content:""!important;display:none!important;opacity:0!important;visibility:hidden!important;animation:none!important;}
/* 요소형 로더 공통 소유자: 요소 자체와 십자가는 고정하고 ::before의 원만 회전한다. */
#oai-external-entry-guard .oai-external-entry-cross,
#oai-missa-portal-guard .oai-missa-portal-cross,
#oai-unified-refresh-guard .oai-unified-refresh-cross,
.map-loading-icon,
#diocese-loading .diocese-loading-spinner,
#nearby-body .nearby-distance-spinner,
.prayer-loading-cross,
.pr-external-guide-cross{
  position:relative!important;
  width:var(--oai-loading-box-size)!important;
  height:var(--oai-loading-box-size)!important;
  min-width:var(--oai-loading-box-size)!important;
  min-height:var(--oai-loading-box-size)!important;
  display:block!important;
  box-sizing:border-box!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:transparent!important;
  font-size:0!important;
  line-height:0!important;
  text-shadow:none!important;
  opacity:1!important;
  visibility:visible!important;
  animation:none!important;
  transition:none!important;
  transform:none!important;
  overflow:visible!important;
}
#oai-external-entry-guard .oai-external-entry-cross::before,
#oai-missa-portal-guard .oai-missa-portal-cross::before,
#oai-unified-refresh-guard .oai-unified-refresh-cross::before,
.map-loading-icon::before,
#diocese-loading .diocese-loading-spinner::before,
#nearby-body .nearby-distance-spinner::before,
.prayer-loading-cross::before,
.pr-external-guide-cross::before{
  content:""!important;
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  width:var(--oai-loading-ring-size)!important;
  height:var(--oai-loading-ring-size)!important;
  margin:calc(var(--oai-loading-ring-size) / -2) 0 0 calc(var(--oai-loading-ring-size) / -2)!important;
  box-sizing:border-box!important;
  display:block!important;
  border-radius:50%!important;
  border:var(--oai-loading-ring-width) solid rgba(212,170,106,.20)!important;
  border-top-color:var(--oai-loading-cross-color)!important;
  border-right-color:rgba(212,170,106,.68)!important;
  background:transparent!important;
  transform-origin:center center!important;
  animation:oaiUnifiedLoadingRingSpin var(--oai-loading-ring-speed) linear infinite!important;
  pointer-events:none!important;
}
#oai-external-entry-guard .oai-external-entry-cross::after,
#oai-missa-portal-guard .oai-missa-portal-cross::after,
#oai-unified-refresh-guard .oai-unified-refresh-cross::after,
.map-loading-icon::after,
#diocese-loading .diocese-loading-spinner::after,
#nearby-body .nearby-distance-spinner::after,
.prayer-loading-cross::after,
.pr-external-guide-cross::after{
  content:"✝"!important;
  position:absolute!important;
  inset:0!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  color:var(--oai-loading-cross-color)!important;
  font-size:var(--oai-loading-cross-font)!important;
  font-weight:900!important;
  line-height:1!important;
  background:transparent!important;
  animation:none!important;
  transform:none!important;
  pointer-events:none!important;
}
html.oai-stability-veil[data-oai-stability-reason="external-leave"],
html.oai-stability-veil[data-oai-stability-reason="external-leave"] body,
html.oai-external-leaving,
html.oai-external-leaving body{
  background:var(--oai-guard-bg)!important;
  color-scheme:light!important;
}
html.oai-stability-veil[data-oai-stability-reason="external-leave"]::before,
html.oai-stability-veil[data-oai-stability-reason="external-leave"]::after,
html.oai-stability-veil[data-oai-stability-reason="external-return"]::before,
html.oai-stability-veil[data-oai-stability-reason="external-return"]::after,
html.oai-stability-veil.oai-external-leaving::before,
html.oai-stability-veil.oai-external-leaving::after{
  content:""!important;
  display:none!important;
  opacity:0!important;
  visibility:hidden!important;
  animation:none!important;
}
html.oai-external-return-freeze #oai-external-entry-guard,
html.oai-external-return-freeze #oai-external-entry-guard.show,
html.oai-external-return-freeze #oai-external-entry-guard.hide{
  display:none!important;
  opacity:0!important;
  visibility:hidden!important;
  animation:none!important;
}

#app .sheet{
  will-change:auto!important;
}
#app #sheet-nearby,
#app #sheet-list,
#app #sheet-region{
  box-shadow:none!important;
  filter:none!important;
}
#app #sheet-nearby::before,
#app #sheet-nearby::after,
#app #sheet-list::before,
#app #sheet-list::after,
#app #sheet-region::before,
#app #sheet-region::after{
  content:none!important;
  display:none!important;
}
#app .sheet.open{
  transform:none!important;
  transition:none!important;
}
#app .sheet.from-right,
#app .sheet.from-left,
#app .sheet.from-right.open,
#app .sheet.from-left.open,
#app .sheet.exit-left,
#app .sheet.exit-right{
  transform:none!important;
  transition:none!important;
  animation:none!important;
}
#app .sheet:not(.open){
  transition:none!important;
  animation:none!important;
}
#oai-swipe-overlay,
#oai-swipe-overlay.active{
  display:none!important;
  opacity:0!important;
  visibility:hidden!important;
  animation:none!important;
}

html.oai-external-return-freeze::before{
  content:"✝"!important;
  position:fixed!important;
  inset:0!important;
  z-index:2147483000!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  box-sizing:border-box!important;
  background:#fbf8f1!important;
  color:var(--oai-loading-cross-color,#d4aa6a)!important;
  font-size:var(--oai-loading-cross-font,34px)!important;
  font-weight:900!important;
  line-height:1!important;
  opacity:1!important;
  visibility:visible!important;
  animation:none!important;
  transition:none!important;
  pointer-events:none!important;
}
html.oai-external-return-freeze::after{
  content:""!important;
  position:fixed!important;
  left:50%!important;
  top:50%!important;
  z-index:2147483001!important;
  width:var(--oai-loading-ring-size,56px)!important;
  height:var(--oai-loading-ring-size,56px)!important;
  margin:calc(var(--oai-loading-ring-size,56px) / -2) 0 0 calc(var(--oai-loading-ring-size,56px) / -2)!important;
  box-sizing:border-box!important;
  display:block!important;
  border-radius:50%!important;
  border:var(--oai-loading-ring-width,3px) solid rgba(212,170,106,.20)!important;
  border-top-color:var(--oai-loading-cross-color,#d4aa6a)!important;
  border-right-color:rgba(212,170,106,.68)!important;
  background:transparent!important;
  opacity:1!important;
  visibility:visible!important;
  pointer-events:none!important;
  transform-origin:center center!important;
  animation:oaiUnifiedLoadingRingSpin var(--oai-loading-ring-speed,2.60s) linear infinite!important;
  transition:none!important;
}

html.oai-external-return-freeze.oai-external-return-releasing::before,
html.oai-external-return-freeze.oai-external-return-releasing::after{
  opacity:0!important;
  visibility:visible!important;
  transition:opacity .18s ease-out!important;
}
html.oai-external-return-freeze.oai-external-return-releasing::after{
  animation:none!important;
}


/* V8-1-14-563: compact-short 탭바/지도 top 기준은 아래 변수 블록 하나로 통합한다. */
html:not(.ios-device).oai-screen-compact-short .map-category-close,
html:not(.ios-device).oai-screen-compact-short .ic-close-btn,
html:not(.ios-device).oai-screen-compact-short .sheet-x,
html:not(.ios-device).oai-screen-compact-short .route-sheet-x,
html:not(.ios-device).oai-screen-compact-short .sm-x,
html:not(.ios-device).oai-screen-compact-short .srch-x{
  width:34px!important;
  height:34px!important;
  min-width:34px!important;
  flex-basis:34px!important;
  
  line-height:1!important;
}
html:not(.ios-device).oai-screen-compact-short .shrine-visit-cards-diocese .filter-btn{
  height:30px!important;
  min-height:30px!important;
  padding:0 10px!important;
  
}
html:not(.ios-device).oai-screen-compact-short #app > .shrine-visit-action-layer,
html:not(.ios-device).oai-screen-compact-short body > .shrine-visit-action-layer,
html:not(.ios-device).oai-screen-compact-short #map-wrap > .shrine-visit-action-layer{
  padding:7px!important;
}
html:not(.ios-device).oai-screen-compact-short .sheet > .shrine-visit-action-layer{
  display:none!important;
}
html:not(.ios-device).oai-screen-compact-short #shrine-visit-floating-list-btn,
html:not(.ios-device).oai-screen-compact-short .shrine-visit-floating-list-btn{
  height:54px!important;
  min-height:54px!important;
  padding:0 18px!important;
  border-radius:16px!important;
  font-size:16px!important;
}
html:not(.ios-device).oai-screen-compact-short #shrine-visit-cards-modal .module-close,
html:not(.ios-device).oai-screen-compact-short #shrine-visit-detail-view .module-close,
html:not(.ios-device).oai-screen-compact-short #shrine-visit-cards-close,
html:not(.ios-device).oai-screen-compact-short #shrine-visit-detail-close{
  width:34px!important;
  height:34px!important;
  min-width:34px!important;
  
}

html:not(.ios-device).oai-screen-compact-short{
  --tab-h:66px;
  --map-tab-btn-h:56px;
  --oai-stampbook-bottom-clearance: 12px;
}
html:not(.ios-device).oai-screen-compact-short #tabbar{
  height:var(--oai-map-top-h)!important;
  min-height:var(--oai-map-top-h)!important;
  padding:calc(var(--oai-map-safe-top) + 4px) 6px 5px!important;
  gap:5px!important;
  align-items:stretch!important;
}
html:not(.ios-device).oai-screen-compact-short #tabbar .tab-btn{
  height:56px!important;
  min-height:56px!important;
  padding:4px 2px 4px!important;
}
html:not(.ios-device).oai-screen-compact-short #map-wrap,
html:not(.ios-device).oai-screen-compact-short .sheet{
  top:var(--oai-map-top-h)!important;
}
html:not(.ios-device).oai-screen-compact-short #map-wrap #shrine-visit-map-filter,
html:not(.ios-device).oai-screen-compact-short #map-wrap .shrine-visit-map-filter{
  top:0!important;
  min-height:44px!important;
  padding:4px 6px!important;
  gap:4px!important;
  border-radius:0!important;
  grid-template-columns:.72fr 1.14fr 1.14fr!important;
}
html:not(.ios-device).oai-screen-compact-short #map-wrap #shrine-visit-map-filter > button[data-shrine-visit-filter],
html:not(.ios-device).oai-screen-compact-short #map-wrap .shrine-visit-map-filter > button[data-shrine-visit-filter]{
  width:100%!important;
  height:36px!important;
  min-height:36px!important;
  min-width:0!important;
  padding:0 5px!important;
  border-radius:7px!important;
  font-size:14.5px!important;
}
html:not(.ios-device).oai-screen-compact-short #map-wrap #shrine-visit-map-filter > button[data-shrine-visit-filter="all"],
html:not(.ios-device).oai-screen-compact-short #map-wrap #shrine-visit-map-filter > button[data-shrine-visit-filter="visited"],
html:not(.ios-device).oai-screen-compact-short #map-wrap #shrine-visit-map-filter > button[data-shrine-visit-filter="unvisited"],
html:not(.ios-device).oai-screen-compact-short #map-wrap .shrine-visit-map-filter > button[data-shrine-visit-filter="all"],
html:not(.ios-device).oai-screen-compact-short #map-wrap .shrine-visit-map-filter > button[data-shrine-visit-filter="visited"],
html:not(.ios-device).oai-screen-compact-short #map-wrap .shrine-visit-map-filter > button[data-shrine-visit-filter="unvisited"]{
  min-width:0!important;
}
html:not(.ios-device).oai-screen-compact-short #app .li-side{max-width:88px!important;}
html:not(.ios-device).oai-screen-compact-short #app .li-pilgrim-register{min-width:68px!important;padding:0 7px!important;}
html:not(.ios-device).oai-screen-compact-short #app .shrine-visit-detail-info-head{gap:7px!important;}
html:not(.ios-device).oai-screen-compact-short #app .shrine-visit-cards-body.stats{
  padding-top:12px!important;
  padding-bottom:var(--oai-stampbook-bottom-clearance)!important;
}
html:not(.ios-device).oai-screen-compact-short #app .shrine-visit-stats-view{padding-bottom:46px!important;}
html:not(.ios-device).oai-screen-compact-short #app .shrine-visit-stat-row{grid-template-columns:minmax(0,1fr) minmax(54px,auto) minmax(38px,auto)!important;gap:5px!important;}
html:not(.ios-device).oai-screen-compact-short #app .shrine-visit-stat-name,
html:not(.ios-device).oai-screen-compact-short #app .shrine-visit-stat-row strong,
html:not(.ios-device).oai-screen-compact-short #app .shrine-visit-stat-row em{font-size:15.5px!important;}
html:not(.ios-device).oai-screen-compact-short #app .shrine-visit-stat-items{margin-bottom:10px!important;padding:7px 8px 9px!important;}
html:not(.ios-device).oai-screen-compact-short #app .shrine-visit-stat-place-name{font-size:14.2px!important;}
html:not(.ios-device).oai-screen-compact-short #app .shrine-visit-stat-place-meta strong,
html:not(.ios-device).oai-screen-compact-short #app .shrine-visit-stat-place-meta em{font-size:12px!important;}
html:not(.ios-device).oai-screen-compact-short #app #loc-btn{
  right:10px!important;
  bottom:calc(var(--oai-android-bottom-gap, 10px) + 98px)!important;
  z-index:872!important;
  width:56px!important;
  height:56px!important;
  min-width:56px!important;
  min-height:56px!important;
  border-radius:16px!important;
  font-size:19px!important;
  opacity:1!important;
  visibility:visible!important;
  pointer-events:auto!important;
}
html:not(.ios-device).oai-screen-compact-short.parish-mode #app #loc-btn,
html:not(.ios-device).oai-screen-compact-short.retreat-mode #app #loc-btn{
  bottom:calc(var(--oai-android-bottom-gap, 10px) + 36px)!important;
}

html:not(.ios-device).oai-screen-compact-short .faith-bottom-nav{
  --faith-bottom-gap:6px;
  --faith-bottom-pad-top:4px;
  --faith-bottom-pad-x:10px;
  --faith-bottom-pad-bottom:calc(0px + var(--oai-android-bottom-gap, env(safe-area-inset-bottom, 0px)));
  --faith-bottom-btn-offset-y:4px;
}
html:not(.ios-device).oai-screen-compact-short .faith-bottom-btn{
  --faith-bottom-btn-height:42px;
  --faith-bottom-btn-radius:13px;
  --faith-bottom-btn-gap:4px;
}
html:not(.ios-device).oai-screen-compact-short #prayer-view{
  --faith-prayer-list-bottom-pad:calc(66px + var(--oai-android-bottom-gap, env(safe-area-inset-bottom, 0px)));
  --faith-prayer-detail-bottom-pad:calc(76px + var(--oai-android-bottom-gap, env(safe-area-inset-bottom, 0px)));
}

#app #sheet-route[hidden]{
  display:none!important;
}
#app #sheet-route.open{
  transform:translateY(0)!important;
  backface-visibility:visible!important;
  will-change:auto!important;
}

/* V8-1-14-563: 인트로 종료(revealing) 때 십자가 사진 확대 애니메이션을 재시작하지 않는다.
   booting 단계에서만 .84→1로 커지고, revealing 단계는 최종 크기에서 opacity만 사라진다. */
html.oai-cover-revealing::after{
  content:""!important;
  display:none!important;
  animation:none!important;
  transform:translate(-50%,-50%) scale(1)!important;
  will-change:auto!important;
}
@media (max-width:540px) and (max-aspect-ratio:3/4){
  html.oai-cover-revealing::after{
    content:""!important;
    display:none!important;
    animation:none!important;
    transform:none!important;
    will-change:auto!important;
  }
}

/* V8-1-14-563: Android tablet uses the same single map-top owner variable, so the status bar does not cover the top tabs. */
html.oai-android-tablet:not(.ios-device) #tabbar{
  height:var(--oai-map-top-h)!important;
  min-height:var(--oai-map-top-h)!important;
  max-height:var(--oai-map-top-h)!important;
  padding:calc(var(--oai-map-safe-top) + 5px) 7px 6px!important;
}
html.oai-android-tablet:not(.ios-device) #map-wrap,
html.oai-android-tablet:not(.ios-device) .sheet{
  top:var(--oai-map-top-h)!important;
}
html.oai-android-tablet:not(.ios-device) #app .module-bar,
html.oai-android-tablet:not(.ios-device) #prayer-view .module-bar,
html.oai-android-tablet:not(.ios-device) #web-view .module-bar,
html.oai-android-tablet:not(.ios-device) #trail-view .module-bar,
html.oai-android-tablet:not(.ios-device) #diocese-view .module-bar,
html.oai-android-tablet:not(.ios-device) #qna-view .module-bar{
  height:var(--oai-std-header-h,70px)!important;
  min-height:var(--oai-std-header-h,70px)!important;
  max-height:var(--oai-std-header-h,70px)!important;
  padding:10px 16px!important;
}
html.oai-android-tablet:not(.ios-device) .module-view.open{
  padding-top:0!important;
}

/* V8-1-14-563: route-choice and cover/mass-quick modal styles are managed in their module CSS files. */

/* V8-1-14-563: Fold 전환 아이보리 안정막은 Android native 한 곳에서만 처리한다. PWA overlay는 제거했다. */

/* V8-1-14-563: visible cover version remains available for release verification. */

/* V8-1-14-563: 검색 키보드가 열린 상태에서 성지/성당/피정 리스트를 처음 스크롤할 때
   키보드 닫힘/viewport 복원/카드 눌림 효과가 겹쳐 생기던 첫 버벅임을 줄인다. */
#list-body,
#region-body,
#nearby-body,
#srch-modal .sm-body,
#sm-body-all,
#sm-body,
#sm-body-place{
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
  touch-action:pan-y;
  scroll-behavior:auto;
}
#list-body .list-item,
#region-body .region-item,
#nearby-body .nearby-item,
#srch-modal .sm-item,
#srch-modal .sm-place-item{
  touch-action:pan-y;
}
html.oai-result-scroll-kb-dismiss #list-body .list-item,
html.oai-result-scroll-kb-dismiss #region-body .region-item,
html.oai-result-scroll-kb-dismiss #nearby-body .nearby-item,
html.oai-result-scroll-kb-dismiss #srch-modal .sm-item,
html.oai-result-scroll-kb-dismiss #srch-modal .sm-place-item,
html.oai-result-scroll-kb-dismiss .list-item.app-pressing,
html.oai-result-scroll-kb-dismiss .nearby-item.app-pressing,
html.oai-result-scroll-kb-dismiss .region-item.app-pressing{
  transition:none!important;
  transform:none!important;
  filter:none!important;
}



/* V8-1-14-563: 커버 하단 여백은 실제 요소가 아닌 과거 선택자 덧씌움으로 조정하지 않는다.
   하단 3버튼과 안내문구 간격은 상단 cover 변수의 --cover-note-reserve에서만 조정한다. */

/* V8-1-14-563: 매일미사/주요기도문 상단바 중복 보정은 원래 기준 위치로 병합했다. */

/* V8-1-14-563: 검색 모달이 키보드/edge-to-edge 상태에서 상단에 붙어 제목줄이 잘리는 것을 방지한다. */
#srch-modal .sm-inner{
  min-height:0!important;
  height:100%!important;
}
#srch-modal .sm-hd{
  padding-top:calc(env(safe-area-inset-top,0px) + 18px)!important;
  padding-bottom:12px!important;
  min-height:calc(env(safe-area-inset-top,0px) + 64px)!important;
  box-sizing:border-box!important;
}
html:not(.ios-device) #srch-modal .sm-hd{
  padding-top:max(18px, calc(env(safe-area-inset-top,0px) + 18px))!important;
}
html.oai-map-search-keyboard-lock #srch-modal .sm-hd,
html.oai-result-scroll-kb-dismiss #srch-modal .sm-hd{
  flex-shrink:0!important;
}

/* V8-1-14-563: 마산교구·의정부교구 성당 상세페이지 미사시간 안내문. */
#app #info-card .ic-parish-mass-notice{
  display:none;
  margin:7px 14px 2px;
  padding:9px 11px;
  border-radius:12px;
  border:1.5px solid rgba(196,155,86,.42);
  background:#fff8e6;
  color:#4b3a16;
  box-sizing:border-box;
}
#app #info-card .ic-parish-mass-notice-title{
  font-size:12px;
  line-height:1.25;
  font-weight:950;
  color:#7a4f00;
  margin-bottom:3px;
  letter-spacing:-.03em;
}
#app #info-card .ic-parish-mass-notice-text{
  font-size:12px;
  line-height:1.48;
  font-weight:650;
  color:#4b3a16;
  word-break:keep-all;
  overflow-wrap:anywhere;
  letter-spacing:-.035em;
}
html.oai-font-global #app #info-card .ic-parish-mass-notice-title{
  font-size:calc(12px * var(--app-inner-font-scale,1))!important;
}
html.oai-font-global #app #info-card .ic-parish-mass-notice-text{
  font-size:calc(12px * var(--app-inner-font-scale,1))!important;
}


/* V8-1-14-621: 길찾기 탭 활성 중에는 장소 정보카드를 강제로 숨겨
   경로검색 시트와 겹치지 않게 한다. */
html.route-tab-active #info-card,
html.route-tab-active #info-card.open{
  display: none !important;
  pointer-events: none !important;
}
