/* ── Reset & Tokens ──────────────────────────────────────── */
:root {
    --bg-main:    #faf7ee;   /* 포스터 크림 배경 */
    --bg-card:    #f4f5e9;   /* 포스터 카드 배경 */
    --bg-card2:   #eceee0;
    --text-p:     #2a2a2a;   /* 포스터 본문 텍스트 */
    --text-s:     #6b6b5a;   /* 포스터 보조 텍스트 */
    --green:      #1a4727;   /* 포스터 진한 녹색 */
    --green-light:#405d31;   /* 포스터 중간 녹색 */
    --stone:      #b8a07a;
    --amber:      #a8631a;   /* 포스터 앰버 */
    --gold:       #f5b942;   /* 포스터 골드 */
    --blue:       #0f3772;   /* 포스터 블루 강조 */
    --red:        #d32f2f;
    --border:     #b7c49a;   /* 포스터 점선 색상 */
    --radius-card:14px;
    --radius-btn: 12px;
    --shadow-card:0 1px 4px rgba(0,0,0,.06);
}
*{box-sizing:border-box;margin:0;padding:0;
  font-family:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Noto Sans KR",sans-serif;
  -webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;}
html{
  scroll-behavior:smooth;
  overscroll-behavior:none;
  -webkit-overflow-scrolling:touch;
}
body{background:var(--bg-main);color:var(--text-p);
     overscroll-behavior:none;
     padding-bottom:0;}

/* ── Header / Hero ───────────────────────────────────────── */
header{
    padding:env(safe-area-inset-top,12px) 24px 0;
    padding-top:max(40px,env(safe-area-inset-top));
    background:var(--green);color:#fff;position:relative;overflow:hidden;
    display:flex;flex-direction:column;
}
.hero-top-row{
    display:flex;align-items:center;justify-content:space-between;
    gap:8px;margin-bottom:4px;
}
.hero-tag{
    font-size:13px;font-weight:700;color:rgba(255,255,255,.75);
    letter-spacing:.03em;line-height:1.5;
}
header h1{
    font-size:clamp(28px,8vw,38px);
    font-weight:900;line-height:1.15;color:#fff;
    margin-bottom:14px;
}
header p{font-size:13px;color:rgba(255,255,255,.72);margin-top:10px;line-height:1.9;}

/* 언어 스위치 */
.lang-switch{
    background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.25);
    padding:4px 10px;border-radius:16px;font-size:11px;font-weight:700;
    color:#fff;backdrop-filter:blur(4px);cursor:pointer;font-family:inherit;
    flex-shrink:0;
}
.lang-switch:active{background:rgba(255,255,255,.25);}

/* 덜 중요한 정보 — 회색 처리 */
.hero-info-dim{color:rgba(255,255,255,.45)!important;}
.hero-ic-dim{stroke:rgba(255,255,255,.35)!important;}

@keyframes btn-glow {
    0%,100% { box-shadow:0 2px 16px rgba(255,208,96,.45); }
    50%      { box-shadow:0 4px 28px rgba(255,208,96,.85), 0 0 0 5px rgba(255,208,96,.15); }
}
.hero-reg-btn:active{opacity:.88;transform:scale(.97);animation:none;}
.hero-reg-deadline{
    font-size:13px;font-weight:700;color:rgba(26,54,41,.75);
}

/* 히어로 포스터 스타일 정보 행 */
.hero-info-rows{ display:flex;flex-direction:column;gap:5px; }
.hero-info-row{
    display:flex;align-items:center;gap:7px;
}
.hero-ic{
    width:13px;height:13px;flex-shrink:0;
    fill:none;stroke:rgba(255,255,255,.6);
    stroke-width:2;stroke-linecap:round;stroke-linejoin:round;
}
.hero-info-text{
    font-size:14px;font-weight:500;color:rgba(255,255,255,.93);
    line-height:1.35;
}

/* 교통 강조 배지 */
.hero-location-row{
    display:flex;flex-direction:column;gap:5px;
    margin-top:16px;
}
.hero-location-main{
    font-size:14px;font-weight:700;color:rgba(255,255,255,.92);
    line-height:1.4;
}
.hero-location-sub{
    font-size:13px;font-weight:600;color:rgba(255,255,255,.7);
    line-height:1.4;
}
.hero-btn-spacer{flex:1;display:flex;align-items:center;padding:30px 0 4px;}
.hero-btns-row{
    display:flex;gap:10px;align-items:stretch;
    width:100%;
}

/* 클릭 유도 — 펄스 글로우 + 탭 힌트 */
.hero-btn-wrap{
    flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;
}
.hero-reg-btn{
    width:100%;
    display:inline-flex;align-items:center;justify-content:center;gap:6px;
    background:#FFD060;
    border:1.5px solid #FFD060;
    color:#1a3629;
    padding:11px 14px;border-radius:22px;
    font-size:15px;font-weight:800;
    cursor:pointer;font-family:inherit;
    transition:opacity .2s, transform .15s;
    box-shadow:0 2px 16px rgba(255,208,96,.45);
    animation:btn-glow 2.2s ease-in-out infinite;
}
.hero-ai-btn{
    flex:0 0 auto;
    display:inline-flex;align-items:center;justify-content:center;gap:6px;
    background:transparent;
    border:1.5px solid rgba(255,255,255,.35);
    color:#fff;
    padding:11px 16px;border-radius:22px;
    font-size:14px;font-weight:700;
    cursor:pointer;font-family:inherit;
    white-space:nowrap;
    align-self:stretch;
    transition:background .2s, transform .15s;
}
.hero-ai-btn:active{background:rgba(255,255,255,.22);transform:scale(.97);}
.hero-tap-hint{
    font-size:11px;color:rgba(255,255,255,.45);
    letter-spacing:.03em;text-align:center;
}
.grid-section{padding:28px 18px 16px;}
.grid-title{font-size:13px;font-weight:700;color:var(--text-s);margin-bottom:14px;letter-spacing:.04em;}
.grid-container{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.grid-card{
    background:linear-gradient(160deg, rgba(255,255,255,.72) 0%, rgba(240,245,238,.5) 100%);
    border:1px solid rgba(255,255,255,.9);
    border-bottom-color:rgba(183,196,154,.5);
    border-right-color:rgba(183,196,154,.4);
    border-radius:16px;
    padding:20px 8px 16px;
    min-height:112px;
    min-width:0;
    text-align:center;cursor:pointer;
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    transition:transform .15s, box-shadow .15s;
    box-shadow:
        0 2px 12px rgba(0,0,0,.07),
        inset 0 1px 0 rgba(255,255,255,.9),
        inset 0 -1px 0 rgba(183,196,154,.3);
    backdrop-filter:blur(12px);
    -webkit-backdrop-filter:blur(12px);
}
.grid-card:active{transform:scale(.96);background:rgba(255,255,255,.9);}
.grid-card .icon{
    width:28px;height:28px;
    display:flex;align-items:center;justify-content:center;
    margin-bottom:10px;
    flex-shrink:0;
}
.grid-card .icon svg{
    width:26px;height:26px;
    fill:none;stroke:#5a9a3a;
    stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;
}
.grid-card .gtitle{
    font-size:14px;font-weight:800;color:var(--green);line-height:1.3;
    white-space:normal;
    word-break:keep-all;
    overflow-wrap:break-word;
    word-wrap:break-word;
    max-width:100%;
}
.grid-card .gsub{display:none;}

/* ── Notice ──────────────────────────────────────────────── */
.notice-section{padding:16px 18px;}
.notice-box{
    background:#eef2e6;
    border-radius:var(--radius-card);padding:18px;
    border-left:4px solid var(--green);box-shadow:var(--shadow-card);
}
.notice-title{font-size:13px;font-weight:800;color:var(--green);margin-bottom:6px;}
.notice-body{font-size:13px;color:var(--text-p);line-height:1.75;}

/* ── Timeline ────────────────────────────────────────────── */
.timeline-section{
    padding:32px 18px 24px;
}
.timeline-section h2{font-size:17px;font-weight:800;margin-bottom:18px;}

/* 카운트다운 (한눈에 보기 ~ 전체 일정 Timeline 중간) */
.countdown-box{margin:24px 18px 20px;}
.cd-label{
    font-size:12px;font-weight:800;color:var(--amber);
    letter-spacing:.04em;margin-bottom:8px;display:block;
}
.cd-single{
    display:flex;align-items:center;justify-content:center;gap:6px;
    background:linear-gradient(155deg,var(--blue) 0%,#1a4f9c 100%);
    border:1px solid var(--blue);border-radius:var(--radius-card);
    padding:16px 8px;
    box-shadow:0 4px 14px rgba(15,55,114,.32);
}
.cd-item{text-align:center;min-width:44px;}
.cd-num{
    font-size:26px;font-weight:900;color:#fff;
    display:block;line-height:1;font-variant-numeric:tabular-nums;
}
.cd-unit-label{
    font-size:10px;color:var(--gold);margin-top:5px;
    display:block;letter-spacing:.02em;font-weight:800;
}
.cd-sep{
    font-size:22px;font-weight:900;color:rgba(255,255,255,.5);
    padding-bottom:16px;line-height:1;
}
.day-divider{display:flex;align-items:center;gap:10px;margin-bottom:12px;margin-top:20px;}
.day-badge{background:var(--green);color:#fff;border-radius:20px;
           padding:4px 14px;font-size:12px;font-weight:800;white-space:nowrap;}
.day-line{flex:1;height:1px;background:var(--border);}

.program-card{
    background:#fff;border-radius:var(--radius-card);
    border:1px solid #d5ce9e;
    padding:18px;margin-bottom:10px;box-shadow:var(--shadow-card);
}
.program-time{font-size:13px;font-weight:700;color:var(--green);margin-bottom:4px;}
.program-title{font-size:16px;font-weight:800;color:var(--text-p);}
.program-sub{font-size:13px;color:var(--text-s);margin-top:3px;line-height:1.6;}

/* 섹터 탭 */
.sector-box{margin-top:14px;padding-top:14px;border-top:1px solid #e5e8eb;}
.sector-tabs{display:flex;gap:6px;margin-bottom:10px;overflow-x:auto;padding-bottom:2px;}
.sector-tabs::-webkit-scrollbar{display:none;}
.sector-btn{
    background:#fff;border:1px solid #e5e8eb;color:var(--text-p);
    padding:7px 16px;border-radius:20px;font-size:12px;font-weight:700;
    cursor:pointer;white-space:nowrap;transition:all .18s;flex-shrink:0;
}
.sector-btn.active{background:#b8a07a;color:#fff;border-color:#b8a07a;font-weight:800;}
.sector-panel{background:#fff;border-radius:14px;padding:16px;border:1px solid #efefef;}
.sector-name{font-size:13px;font-weight:700;color:var(--amber);}
.sector-topic{font-size:14px;font-weight:700;color:var(--text-p);margin-top:5px;}
.sector-spk{font-size:13px;color:var(--text-s);margin-top:3px;}

/* ── Modal ───────────────────────────────────────────────── */
.modal-overlay{
    position:fixed;inset:0;background:rgba(0,0,0,0);z-index:2000;
    display:flex;align-items:flex-end;
    pointer-events:none;transition:background .3s;
}
.modal-overlay.active{background:rgba(0,0,0,.48);pointer-events:all;}
.modal-content{
    background:#fff;width:100%;
    border-top-left-radius:24px;border-top-right-radius:24px;
    transform:translateY(100%);transition:transform .35s cubic-bezier(.32,0,.15,1);
}
.modal-overlay.active .modal-content{transform:translateY(0);}
.modal-sticky{
    background:#fff;
    padding:20px 20px 14px;
    border-bottom:1px solid #f2f4f6;
    border-top-left-radius:24px;border-top-right-radius:24px;
}
.modal-scroll-wrap{
    max-height:65vh;
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
    padding:8px 20px max(44px,env(safe-area-inset-bottom));
}
#modal-body-content{ }
.modal-handle{width:40px;height:5px;background:#ccc;border-radius:3px;margin:0 auto 16px;}
.modal-header{display:flex;justify-content:space-between;align-items:center;}
.modal-header h3{font-size:18px;font-weight:800;margin:0;}
.close-btn{
    background:#e8e8e8;border:none;width:34px;height:34px;
    border-radius:50%;font-weight:900;cursor:pointer;font-size:15px;
    color:#444;
    display:flex;align-items:center;justify-content:center;
}

/* ── 공통 카드 컴포넌트 ──────────────────────────────────── */
.item-card{
    background:var(--bg-card);border-radius:var(--radius-card);
    padding:18px;margin-bottom:12px;box-shadow:var(--shadow-card);
}
.item-row{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;}
.item-name{font-weight:700;font-size:15px;color:var(--text-p);}
.item-sub{font-size:13px;color:var(--text-s);margin-top:3px;line-height:1.6;}
.badge{
    font-size:10px;font-weight:700;padding:3px 9px;border-radius:20px;
    white-space:nowrap;flex-shrink:0;
}
.badge-green{background:#eaf2ee;color:var(--green);}
.meta-pills{display:flex;gap:10px;margin-top:8px;}
.meta-pill{font-size:13px;color:var(--text-s);}

/* 전화 버튼 */
.tel-btn{
    display:inline-block;background:var(--green-light);color:#fff;
    text-decoration:none;padding:8px 16px;border-radius:var(--radius-btn);
    font-size:12px;font-weight:700;margin-top:12px;
}
.action-btn{
    display:block;text-align:center;color:#fff;text-decoration:none;
    padding:16px;border-radius:var(--radius-card);font-size:14px;font-weight:800;
    margin-top:10px;transition:opacity .15s;
}
.action-btn:active{opacity:.8;}

/* ── 아코디언 FAQ ────────────────────────────────────────── */
.accordion-card{
    background:var(--bg-card);border-radius:var(--radius-card);
    margin-bottom:10px;overflow:hidden;box-shadow:var(--shadow-card);
}
.accordion-header{
    display:flex;justify-content:space-between;align-items:center;
    padding:16px;font-weight:700;font-size:14px;cursor:pointer;
    gap:8px;
}
.accordion-header .q-text{flex:1;line-height:1.4;}
.accordion-arrow{
    font-size:18px;color:var(--text-s);flex-shrink:0;
    transition:transform .25s;font-weight:400;
}
.accordion-card.open .accordion-arrow{transform:rotate(45deg);}
.accordion-body{
    font-size:13px;color:var(--text-s);line-height:1.75;
    white-space:pre-line;
    padding:0 16px;max-height:0;overflow:hidden;
    transition:max-height .3s ease,padding .3s ease;
}
.accordion-card.open .accordion-body{max-height:600px;padding:0 16px 16px;overflow-y:auto;}

/* ── 산행 코스 카드 ─────────────────────────────────────── */
.trail-card{
    border-radius:var(--radius-card);padding:18px;margin-bottom:12px;
    box-shadow:var(--shadow-card);border-top-width:4px;border-top-style:solid;
    background:#fff;
}
.trail-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;}
.trail-name{font-weight:800;font-size:15px;color:var(--text-p);}
.diff-badge{font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px;color:#fff;}
.trail-meta{display:flex;gap:14px;margin-bottom:8px;}
.trail-meta span{font-size:12px;color:var(--text-s);}
.trail-desc{font-size:13px;color:var(--text-s);line-height:1.65;}

/* ── 숙소 카드 ──────────────────────────────────────────── */
.lodge-card{
    background:#fff;border:1px solid #eee;border-radius:var(--radius-card);
    padding:18px;margin-bottom:12px;box-shadow:var(--shadow-card);
}
.lodge-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px;}
.lodge-name{font-weight:800;font-size:15px;color:var(--text-p);}
.lodge-pills{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:8px;}
.lodge-pill{font-size:12px;color:var(--text-s);}
.lodge-price{font-weight:700;color:var(--amber);}
.lodge-note{font-size:13px;color:var(--text-s);line-height:1.65;}

/* 숙소 정렬 필터 (가격순 · 거리순) */
.lodge-filter-row{
    display:flex;justify-content:space-between;align-items:center;
    margin-bottom:10px;
}
.lodge-filter{display:flex;gap:6px;}
.lodge-filter-btn{
    background:#fff;border:1px solid #e5e8eb;color:var(--text-s);
    padding:6px 12px;border-radius:20px;font-size:11px;font-weight:700;
    cursor:pointer;transition:all .15s;
}
.lodge-filter-btn.active{background:var(--green);color:#fff;border-color:var(--green);}
.lodge-recommend-badge{
    display:inline-block;background:#fff3cd;color:#8a6516;
    font-size:10px;font-weight:800;padding:3px 9px;border-radius:20px;
    margin-left:6px;vertical-align:middle;
}

/* ── 소속 그룹 안내 ─────────────────────────────────────── */
.grp-btn-grid{
    display:grid;grid-template-columns:repeat(4,1fr);gap:6px;
    margin-bottom:14px;
}
.grp-btn{
    background:var(--bg-card);border:1px solid #e5e8eb;color:var(--text-p);
    padding:10px 4px;border-radius:10px;font-size:12px;font-weight:700;
    cursor:pointer;transition:all .15s;text-align:center;
    white-space:nowrap;overflow:hidden;
}
.grp-btn.active{background:#1B4F91;color:#fff;border-color:#1B4F91;}

/* ── 주요 장소 안내 — 좌우 2개 버튼 ─────────────────────────
   식사장소는 따뜻한 저녁식사 분위기(호박빛 그라데이션),
   마라톤 모임장소는 밤샘 철야모임 분위기(짙은 남색 그라데이션)로
   서로 다른 정체성을 주어 한눈에 구분되게 함 */
.keyplace-btn-grid{grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:0;}
.keyplace-btn-grid .grp-btn{
    position:relative;overflow:hidden;isolation:isolate;
    border:none;border-radius:16px;color:#fff;
    padding:20px 10px;font-size:14px;font-weight:800;line-height:1.35;
    white-space:normal;letter-spacing:.01em;
    transition:transform .15s ease, box-shadow .2s ease, filter .2s ease, opacity .2s ease;
}
.keyplace-btn-grid .grp-btn::before{
    /* 유리 광택 하이라이트 */
    content:'';position:absolute;inset:0;z-index:1;pointer-events:none;
    background:linear-gradient(125deg,rgba(255,255,255,.4) 0%,rgba(255,255,255,0) 42%);
}
.keyplace-btn-grid .grp-btn:active{transform:translateY(1px) scale(.98);}

.keyplace-btn-grid .grp-btn[data-idx="0"]{
    background:linear-gradient(155deg,#ffcf6b 0%,#f5b942 32%,#d9862a 100%);
    box-shadow:0 8px 18px rgba(217,134,42,.4),inset 0 1px 0 rgba(255,255,255,.5);
    text-shadow:0 1px 2px rgba(120,60,0,.25);
}
.keyplace-btn-grid .grp-btn[data-idx="0"]:hover{
    box-shadow:0 10px 22px rgba(217,134,42,.5),inset 0 1px 0 rgba(255,255,255,.5);
}
.keyplace-btn-grid .grp-btn[data-idx="0"].active{
    background:linear-gradient(155deg,#d9862a 0%,#a5620f 100%);
    box-shadow:0 4px 10px rgba(165,98,15,.5) inset;
}

.keyplace-btn-grid .grp-btn[data-idx="1"]{
    background:linear-gradient(155deg,#2c5aa8 0%,var(--blue) 55%,#081b3d 100%);
    box-shadow:0 8px 18px rgba(15,55,114,.45),inset 0 1px 0 rgba(255,255,255,.18);
}
.keyplace-btn-grid .grp-btn[data-idx="1"]:hover{
    box-shadow:0 10px 22px rgba(15,55,114,.55),inset 0 1px 0 rgba(255,255,255,.18);
}
.keyplace-btn-grid .grp-btn[data-idx="1"].active{
    background:linear-gradient(155deg,#081b3d 0%,#040d20 100%);
    box-shadow:0 4px 10px rgba(4,13,32,.6) inset;
}

/* 한쪽을 선택하면 반대쪽은 회색으로 눌러서, 지금 어떤 장소를 보고 있는지 명확히 표시 */
.keyplace-btn-grid .grp-btn.dimmed{
    filter:grayscale(.9) brightness(.9);
    opacity:.5;
    box-shadow:0 2px 6px rgba(0,0,0,.15);
}
.grp-detail{
    background:var(--bg-card);border-radius:var(--radius-card);
    padding:14px 16px;margin-bottom:14px;
    max-height:400px;opacity:1;overflow:hidden;
    transition:max-height .3s ease,opacity .25s ease,padding .3s ease,margin .3s ease;
}
.grp-detail.collapsed{
    max-height:0;opacity:0;padding-top:0;padding-bottom:0;margin-bottom:0;
}
.grp-detail-row{
    display:flex;justify-content:space-between;align-items:flex-start;
    padding:8px 0;border-bottom:1px solid #ececec;
    font-size:13px;gap:12px;
}
.grp-detail-row:last-child{border-bottom:none;}
.grp-detail-label{color:var(--text-s);font-weight:600;flex-shrink:0;padding-top:1px;}
.grp-detail-value{color:var(--text-p);font-weight:700;text-align:right;word-break:keep-all;overflow-wrap:break-word;line-height:1.5;flex:1;min-width:0;}

/* 주요 장소 안내 상세패널 — 이름 옆 닫기 버튼 */
.kp-detail-head{
    display:flex;align-items:center;justify-content:space-between;gap:10px;
    padding-bottom:8px;margin-bottom:4px;border-bottom:1px solid #ececec;
}
.kp-detail-head #kp-name{text-align:left;}
.kp-close-btn{
    flex-shrink:0;width:26px;height:26px;border-radius:50%;
    border:none;background:var(--bg-card2);color:var(--text-s);
    font-size:13px;line-height:1;cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    transition:background .15s,color .15s;
}
.kp-close-btn:hover{background:#e5e8eb;color:var(--text-p);}
.kp-close-btn:active{transform:scale(.92);}
.kp-tel-link{color:var(--blue);font-weight:800;text-decoration:underline;text-underline-offset:2px;}
.kp-tel-link:active{opacity:.7;}

/* 요일 · 시간 · 공개여부 — 3열로 나란히, 라벨 위/값 아래 배치 */
.grp-detail-top{
    display:flex;gap:6px;
    padding:0 0 12px;margin-bottom:8px;
    border-bottom:1px solid #ececec;
}
.grp-detail-col{
    flex:1;min-width:0;
    display:flex;flex-direction:column;gap:4px;
}
.grp-detail-top .grp-detail-label{
    font-size:11px;color:var(--text-s);font-weight:600;
    white-space:nowrap;
}
.grp-detail-top .grp-detail-value{
    font-size:14px;font-weight:800;color:var(--text-p);
    text-align:left;flex:none;
}
.grp-detail-col:nth-child(1){align-items:flex-start;text-align:left;}
.grp-detail-col:nth-child(2){align-items:center;text-align:center;}
.grp-detail-col:nth-child(3){align-items:flex-end;text-align:right;}

/* 그룹 상세 — 네이버 길찾기 버튼 (작게, 특히 위아래 패딩 최소화) */
.grp-nav-btn{
    display:flex;align-items:center;justify-content:center;gap:6px;
    background:#03C75A;color:#fff;text-decoration:none;
    padding:9px 14px;border-radius:10px;
    font-size:12px;font-weight:800;
    margin-top:10px;transition:opacity .15s;
}
.grp-nav-btn:active{opacity:.8;}
.grp-nav-btn img{width:16px;height:16px;border-radius:4px;}
.grp-map{
    width:100%;height:240px;border-radius:var(--radius-card);
    background:var(--bg-card2);overflow:hidden;
}
.grp-viewall-btn{
    display:block;width:100%;margin-top:10px;
    background:var(--green);border:1px solid var(--green);
    color:#fff;font-size:13px;font-weight:700;
    padding:12px;border-radius:12px;cursor:pointer;
    transition:opacity .15s;
}
.grp-viewall-btn:active{opacity:.85;}
.grp-tagline{
    text-align:center;
    margin-top:10px;padding:6px 0;
    font-size:16px;font-weight:900;color:#1B4F91;
    letter-spacing:.01em;
}

/* AA 심볼 스타일 핀 (aa.org 파란 원 + 흰 AA) */
.aa-pin{
    width:34px;height:44px;position:relative;
    font-family:'Helvetica Neue',Arial,-apple-system,sans-serif;
}
.aa-pin-circle{
    width:34px;height:34px;border-radius:50%;
    background:#1B4F91;border:2px solid #fff;
    display:flex;align-items:center;justify-content:center;
    color:#fff;font-weight:800;font-size:13px;letter-spacing:.02em;
    box-shadow:0 2px 6px rgba(0,0,0,.35);
}
.aa-pin-tail{
    position:absolute;left:50%;top:30px;transform:translateX(-50%);
    width:0;height:0;
    border-left:7px solid transparent;
    border-right:7px solid transparent;
    border-top:10px solid #1B4F91;
}

/* ── 주요 장소 안내 지도 핀 — 버튼과 같은 테마 컬러(호박빛/남색)로 통일 ── */
.kp-pin{width:38px;height:50px;position:relative;}
.kp-pin-circle{
    width:38px;height:38px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    font-size:18px;border:2.5px solid #fff;
    box-shadow:0 3px 8px rgba(0,0,0,.35);
    position:relative;z-index:2;
}
.kp-pin-tail{
    position:absolute;left:50%;top:34px;transform:translateX(-50%);
    width:0;height:0;z-index:1;
    border-left:8px solid transparent;
    border-right:8px solid transparent;
}
.kp-pin--meal .kp-pin-circle{background:linear-gradient(155deg,#ffcf6b 0%,#f5b942 32%,#d9862a 100%);}
.kp-pin--meal .kp-pin-tail{border-top:12px solid #d9862a;}
.kp-pin--marathon .kp-pin-circle{background:linear-gradient(155deg,#2c5aa8 0%,var(--blue) 55%,#081b3d 100%);}
.kp-pin--marathon .kp-pin-tail{border-top:12px solid #081b3d;}

/* 핀 위치를 한 번 더 짚어주는 은은한 펄스 링 */
.kp-pin-pulse{
    position:absolute;left:50%;top:19px;transform:translate(-50%,-50%);
    width:38px;height:38px;border-radius:50%;
    z-index:1;pointer-events:none;
    animation:kp-pulse 2.2s ease-out infinite;
}
.kp-pin--meal .kp-pin-pulse{background:rgba(217,134,42,.45);}
.kp-pin--marathon .kp-pin-pulse{background:rgba(15,55,114,.45);}
@keyframes kp-pulse{
    0%{transform:translate(-50%,-50%) scale(1);opacity:.55;}
    100%{transform:translate(-50%,-50%) scale(2.2);opacity:0;}
}
@media (prefers-reduced-motion: reduce){
    .kp-pin-pulse{animation:none;opacity:.3;}
}

/* ── 핀 위 그룹명 라벨(토글) — 좌표 겹치는 핀은 여러 개, 아니면 1개 ── */
.pin-label-wrap{display:flex;flex-direction:column;align-items:center;}
.pin-label{
    display:flex;flex-wrap:wrap;justify-content:center;gap:4px;
    max-width:172px;
    background:#fff;border:1px solid #1B4F91;border-radius:10px;
    padding:5px;box-shadow:0 3px 12px rgba(0,0,0,.2);
}
/* 그룹이 3개 이상 겹치는 핀 — 3열 그리드로 고정 (예: 6개 → 3열×2행) */
.pin-label.grid3{
    display:grid;
    grid-template-columns:repeat(3, minmax(48px,1fr));
    width:186px;max-width:none;
}
.pin-label.grid3 .pin-label-btn{width:100%;}
.pin-label-btn{
    background:var(--bg-card);border:1px solid #e5e8eb;color:var(--text-p);
    font-size:11px;font-weight:700;padding:5px 9px;border-radius:8px;
    cursor:pointer;white-space:nowrap;transition:background .15s,transform .1s;
}
.pin-label-btn:active{background:var(--bg-card2);transform:scale(.95);}

/* ── 문헌 아코디언 ──────────────────────────────────────── */
.doc-quote{
    background:linear-gradient(135deg,#f0f7f3,#eaf2ee);
    border-left:3px solid var(--green);border-radius:0 12px 12px 0;
    padding:14px 16px;margin-top:10px;
    font-size:14px;color:var(--text-p);line-height:1.9;font-style:italic;
}

/* ── 오시는길 ───────────────────────────────────────────── */
.dir-card{
    background:var(--bg-card);border-radius:var(--radius-card);
    padding:16px;margin-bottom:12px;box-shadow:var(--shadow-card);
}
.dir-title{font-weight:700;font-size:14px;margin-bottom:8px;display:flex;align-items:center;gap:8px;}
.modal-ic-circle{
    width:24px;height:24px;border-radius:50%;
    background:var(--green);
    display:inline-flex;align-items:center;justify-content:center;
    flex-shrink:0;
}
.dir-lines{font-size:13px;color:var(--text-s);line-height:1.9;}
.highlight-line{color:var(--green);font-weight:700;}

/* ── 비상연락 ───────────────────────────────────────────── */
.contact-row{
    display:flex;justify-content:space-between;align-items:center;
    padding:14px 0;border-bottom:1px solid #f2f4f6;
}
.contact-row:last-child{border-bottom:none;}
.contact-label{font-weight:600;font-size:14px;color:var(--text-p);}
.contact-sub{font-size:13px;color:var(--text-s);margin-top:2px;}
.call-btn{
    text-decoration:none;padding:9px 18px;border-radius:var(--radius-btn);
    font-size:13px;font-weight:700;color:#fff;flex-shrink:0;
}

/* ── 팁 박스 ────────────────────────────────────────────── */
.tip-box{
    background:#fff8ed;border-radius:14px;padding:14px 16px;
    margin-top:16px;border-left:3px solid var(--amber);
}
.tip-title{font-size:13px;font-weight:700;color:var(--amber);margin-bottom:5px;}
.tip-body{font-size:13px;color:var(--text-s);line-height:1.75;}

/* ── 카카오 버튼 ────────────────────────────────────────── */
.kakao-btn{
    display:block;text-align:center;background:#fee500;color:#181600;
    text-decoration:none;border-radius:var(--radius-card);
    padding:15px;font-size:14px;font-weight:800;margin-top:10px;
}

/* ── 섹션 구분 tip ──────────────────────────────────────── */
.section-label{
    font-size:11px;font-weight:700;color:var(--text-s);
    letter-spacing:.05em;margin-bottom:10px;margin-top:20px;
}
.section-label:first-child{margin-top:0;}

/* ── 챗봇 창 ────────────────────────────────────────────── */
#chat-window{
    position:fixed;bottom:0;left:0;right:0;
    width:100%;
    height:min(580px, calc(100vh - 60px));
    background:#fff;border-radius:24px 24px 0 0;
    box-shadow:0 -8px 40px rgba(0,0,0,.18);
    z-index:1400;display:flex;flex-direction:column;overflow:hidden;
    transform:translateY(100%);
    opacity:1;pointer-events:none;
    transition:transform .32s cubic-bezier(.32,0,.15,1);
}
#chat-window.open{transform:translateY(0);pointer-events:all;}

#chat-header{
    background:var(--green);padding:16px 16px 14px;
    display:flex;justify-content:space-between;align-items:center;
    flex-shrink:0;
}

#chat-messages{
    flex:1;overflow-y:auto;padding:16px;
    display:flex;flex-direction:column;gap:10px;
    background:#f9fafb;
}
#chat-messages::-webkit-scrollbar{width:4px;}
#chat-messages::-webkit-scrollbar-thumb{background:#ddd;border-radius:2px;}

.msg{
    max-width:85%;padding:11px 14px;border-radius:18px;
    font-size:13px;line-height:1.65;
}
.msg.user{
    align-self:flex-end;background:var(--green);color:#fff;
    border-bottom-right-radius:4px;
}
.msg.bot{
    align-self:flex-start;background:#fff;color:var(--text-p);
    border-bottom-left-radius:4px;
    box-shadow:0 1px 4px rgba(0,0,0,.08);
}

/* 입력창 */
#chat-input-row{
    display:flex;gap:8px;padding:12px;border-top:1px solid #eee;
    flex-shrink:0;background:#fff;
}
#chat-input{
    flex:1;border:1.5px solid #e5e8eb;border-radius:20px;
    padding:10px 14px;font-size:13px;outline:none;
    transition:border-color .2s;
}
#chat-input:focus{border-color:var(--green);}
#chat-send{
    width:38px;height:38px;border-radius:50%;
    background:var(--green);color:#fff;border:none;
    font-size:16px;cursor:pointer;flex-shrink:0;
    display:flex;align-items:center;justify-content:center;
    transition:background .2s;
}
#chat-send:disabled{background:#ccc;}

/* 타이핑 애니메이션 */
.dot-typing{display:flex;gap:4px;align-items:center;padding:4px 0;}
.dot-typing span{
    width:7px;height:7px;border-radius:50%;background:var(--text-s);
    animation:bounce .9s ease-in-out infinite;
}
.dot-typing span:nth-child(2){animation-delay:.15s;}
.dot-typing span:nth-child(3){animation-delay:.3s;}
@keyframes bounce{0%,60%,100%{transform:translateY(0);}30%{transform:translateY(-6px);}}


/* ── 인트로 스플래시 ─────────────────────────────────────── */
#splash{
    position:fixed;inset:0;background:#1a3629;z-index:9999;
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    cursor:pointer;user-select:none;
}
#splash.fadeout{animation:sp-fadeout .8s ease forwards;}
@keyframes sp-fadeout{to{opacity:0;pointer-events:none;}}

/* 빅뱅 플래시 */
#splash.bigbang::after{
    content:'';position:absolute;inset:0;
    background:radial-gradient(circle, rgba(255,255,255,.85) 0%, rgba(255,208,96,.4) 40%, transparent 70%);
    animation:sp-bang .5s ease-out forwards;
    pointer-events:none;
}
@keyframes sp-bang{
    0%{opacity:0;transform:scale(0);}
    30%{opacity:1;transform:scale(1);}
    100%{opacity:0;transform:scale(2.5);}
}

/* 세 단어 세로 배치 */
#sp-words{
    display:flex;flex-direction:column;align-items:center;
    gap:clamp(18px,5vw,36px);
    position:relative;
}
.sp-word{
    font-size:clamp(24px,7vw,38px);
    font-weight:900;color:#fff;
    opacity:0;transform:translateY(24px);
    letter-spacing:.06em;
    pointer-events:none;
    transition:opacity .5s ease, transform .55s cubic-bezier(.34,1.3,.64,1);
    text-shadow:0 0 20px rgba(255,255,255,.3);
}
.sp-word.show{opacity:1;transform:translateY(0);}

/* 수렴 애니메이션 */
.sp-word.rush-down{
    transform:translateY(80px) scale(1.2);
    opacity:0;
    transition:transform .45s cubic-bezier(.6,0,.4,1), opacity .35s ease;
}
.sp-word.rush-up{
    transform:translateY(-80px) scale(1.2);
    opacity:0;
    transition:transform .45s cubic-bezier(.6,0,.4,1), opacity .35s ease;
}
.sp-word.rush-center{
    transform:scale(1.6);
    opacity:0;
    transition:transform .45s cubic-bezier(.6,0,.4,1), opacity .35s ease;
}
.sp-word.vanish{opacity:0 !important;}

/* 희망 */
#sp-hope{
    position:fixed;
    left:50%;top:50%;
    font-size:clamp(52px,14vw,76px);
    font-weight:900;color:#FFD060;
    letter-spacing:-.02em;
    opacity:0;
    pointer-events:none;
    transform:translate(-50%,-50%) scale(.2);
    text-shadow:0 0 40px rgba(255,208,96,.8),0 0 80px rgba(255,208,96,.4);
    transition:opacity .55s ease, transform .65s cubic-bezier(.34,1.5,.64,1);
}
#sp-hope.show{opacity:1;transform:translate(-50%,-50%) scale(1);}
#sp-hope.fly{
    transition:left .65s cubic-bezier(.4,0,.2,1),
               top  .65s cubic-bezier(.4,0,.2,1),
               font-size .65s ease,
               opacity .35s ease .35s,
               transform .65s ease;
    text-shadow:none;
    transform:translate(-50%,-50%) scale(1);
}

#sp-hint{
    position:absolute;bottom:28px;
    font-size:11px;color:rgba(255,255,255,.28);
    letter-spacing:.06em;pointer-events:none;
}

/* ── AI 챗봇 FAB ────────────────────────────────────────── */
#chat-fab{
    position:fixed;
    bottom:max(88px,calc(env(safe-area-inset-bottom) + 68px));
    right:16px;
    width:50px;height:50px;border-radius:50%;
    background:rgba(255,208,96,.9);
    border:1px solid rgba(255,208,96,.6);
    color:#1a3629;
    font-size:21px;cursor:pointer;z-index:1500;
    box-shadow:0 4px 16px rgba(0,0,0,.15);
    backdrop-filter:blur(2px);
    -webkit-backdrop-filter:blur(2px);
    transition:transform .25s, opacity .25s;
    display:flex;align-items:center;justify-content:center;
}
#chat-fab:active{transform:scale(.93);}

/* ── 챗봇 코치마크(온보딩 힌트) ── */
.chat-coachmark{
    position:fixed;
    bottom:max(96px,calc(env(safe-area-inset-bottom) + 76px));
    right:74px;
    background:linear-gradient(135deg,#ffe9a8 0%,#f5b942 55%,#d99420 100%);
    color:#1a3629;
    font-size:13px;font-weight:800;
    padding:8px 14px;border-radius:20px;
    box-shadow:0 4px 16px rgba(245,185,66,.5), inset 0 1px 0 rgba(255,255,255,.5);
    white-space:nowrap;
    z-index:1499;
    opacity:0;transform:translateX(8px);
    pointer-events:none;
    transition:opacity .35s ease, transform .35s ease;
}
.chat-coachmark::after{
    content:'';position:absolute;right:-5px;top:50%;
    width:10px;height:10px;background:#d99420;
    transform:translateY(-50%) rotate(45deg);
    border-radius:2px;
}
.chat-coachmark.show{opacity:1;transform:translateX(0);}
.chat-coachmark.wiggle{animation:coachmark-wiggle 1.6s ease-in-out 2;}
@keyframes coachmark-wiggle{
    0%,100%{transform:translateX(0);}
    25%{transform:translateX(-4px);}
    50%{transform:translateX(0);}
    75%{transform:translateX(-4px);}
}
#chat-fab.hidden{
    opacity:0;
    transform:scale(0);
    pointer-events:none;
}

/* ── 위로가기 버튼 ──────────────────────────────────────── */
#top-btn{
    position:fixed;
    bottom:max(140px,calc(env(safe-area-inset-bottom) + 124px));
    right:16px;
    width:50px;height:50px;border-radius:50%;
    background:rgba(255,255,255,.25);
    border:1px solid rgba(38,77,59,.15);
    color:#264d3b;
    cursor:pointer;z-index:1499;
    box-shadow:0 4px 16px rgba(0,0,0,.15);
    backdrop-filter:blur(2px);
    -webkit-backdrop-filter:blur(2px);
    display:flex;align-items:center;justify-content:center;
    opacity:0;transform:scale(0);
    transition:opacity .3s, transform .3s;
    pointer-events:none;
}
#top-btn.visible{
    opacity:1;transform:scale(1);
    pointer-events:all;
}
#top-btn:active{transform:scale(.92);}

/* ── Footer ──────────────────────────────────── */
#site-footer{
    background:#142623;
    padding:32px 24px max(140px,calc(28px + env(safe-area-inset-bottom)));
    text-align:center;
    border-top:1px solid rgba(255,255,255,.08);
}
.footer-title{
    font-size:13px;font-weight:800;color:#f5b942;
    letter-spacing:.02em;margin-bottom:12px;
}
.footer-line{
    font-size:12px;color:rgba(255,255,255,.55);
    line-height:1.9;
}
.footer-link{
    display:inline-flex;align-items:center;gap:6px;
    margin-top:16px;
    font-size:12px;font-weight:700;color:rgba(255,255,255,.75);
    text-decoration:none;
    padding:8px 16px;border-radius:20px;
    border:1px solid rgba(255,255,255,.18);
    transition:background .15s,color .15s;
}
.footer-link:active{background:rgba(255,255,255,.08);color:#fff;}

/* ── 하단 고정 배너 ──────────────────────────── */
#reg-banner{
    position:fixed;
    bottom:0;
    left:0;right:0;
    padding:10px 16px max(16px,env(safe-area-inset-bottom));
    background:var(--green);
    border-top:1px solid rgba(255,255,255,.1);
    box-shadow:0 -2px 20px rgba(26,71,39,.4);
    z-index:1000;
    display:flex;
    gap:10px;
    align-items:center;
}
#cta-register{
    flex:1;
    height:52px;
    background:transparent;
    color:#fff;
    border:1.5px solid rgba(255,255,255,.3);
    border-radius:14px;
    font-size:15px;font-weight:800;
    cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    gap:8px;
    transition:background .2s, transform .15s;
    font-family:inherit;
}
#cta-register:active{background:rgba(255,255,255,.1);transform:scale(.98);}
#cta-share{
    flex:1;
    height:52px;
    padding:0;
    background:rgba(255,255,255,.12);
    border:1.5px solid rgba(255,255,255,.25);
    border-radius:14px;
    color:rgba(255,255,255,.9);
    cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    gap:6px;
    font-size:14px;font-weight:700;
    font-family:inherit;
    white-space:nowrap;
    transition:background .2s, transform .15s;
}
#cta-share:active{background:rgba(255,255,255,.22);transform:scale(.96);}


/* ── 도시락 사전예약 버튼 ────────────────────────────────── */


/* ── 카카오맵 / 네이버맵 버튼 (카드형) ────────────────────── */
.map-btn-row{
    display:flex;gap:10px;margin-top:12px;
}
#directions-map-slot{
    display:flex;justify-content:center;
}
.kakao-map-btn,.naver-map-btn{
    flex:1;
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:9px;
    padding:16px 10px;
    border-radius:16px;
    text-decoration:none;
    font-weight:800;
    font-size:12.5px;
    text-align:center;
    line-height:1.3;
    color:var(--text-p);
    box-shadow:0 2px 8px rgba(0,0,0,.06);
    transition:transform .18s ease, box-shadow .18s ease;
}
.kakao-map-btn img,.naver-map-btn img{
    width:36px;height:36px;
    border-radius:10px;
    box-shadow:0 2px 6px rgba(0,0,0,.15);
}
.kakao-map-btn{
    background:linear-gradient(155deg,#fff9d9 0%,#ffedA0 100%);
    border:1.5px solid #ffe066;
}
.kakao-map-btn:hover{
    transform:translateY(-3px);
    box-shadow:0 10px 22px rgba(254,229,0,.4);
}
.naver-map-btn{
    background:linear-gradient(155deg,#e9fbf1 0%,#c9f5dc 100%);
    border:1.5px solid #7fe3a8;
}
.naver-map-btn:hover{
    transform:translateY(-3px);
    box-shadow:0 10px 22px rgba(3,199,90,.3);
}
.kakao-map-btn:active,.naver-map-btn:active{
    transform:translateY(0);
    box-shadow:0 2px 8px rgba(0,0,0,.1);
}
.coupang-btn,.baemin-btn{
    flex:1;
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:9px;
    padding:16px 10px;
    border-radius:16px;
    text-decoration:none;
    font-weight:800;
    font-size:12.5px;
    text-align:center;
    line-height:1.3;
    color:#fff;
    box-shadow:0 2px 8px rgba(0,0,0,.06);
    transition:transform .18s ease, box-shadow .18s ease;
}
.coupang-btn img,.baemin-btn img{
    width:36px;height:36px;
    border-radius:10px;
    box-shadow:0 2px 6px rgba(0,0,0,.15);
    object-fit:cover;
    background:#fff;
}
.coupang-btn{
    background:linear-gradient(155deg,#ff5c7a 0%,#e6295a 100%);
}
.coupang-btn:hover{
    transform:translateY(-3px);
    box-shadow:0 10px 22px rgba(230,41,90,.35);
}
.baemin-btn{
    background:linear-gradient(155deg,#2ac1bc 0%,#1ea39e 100%);
}
.baemin-btn:hover{
    transform:translateY(-3px);
    box-shadow:0 10px 22px rgba(30,163,158,.35);
}
.coupang-btn:active,.baemin-btn:active{
    transform:translateY(0);
    box-shadow:0 2px 8px rgba(0,0,0,.1);
}

/* ── 카카오맵 지도 퍼가기 (오시는 길 모달) ────────────────── */
#daumRoughmapContainer1785179971346{
    border-radius:14px;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    -ms-overflow-style:none;
    scrollbar-width:none;
}
#daumRoughmapContainer1785179971346::-webkit-scrollbar{display:none;}
