:root {
  --bg:     #0a0a0a;
  --bg2:    #161616;
  --bg3:    #202020;
  --card:   #181818;
  --line:   #282828;
  --ink:    #f0ede8;
  --sub:    #9a9a9a;
  --muted:  #5a5a5a;
  --accent: #f0c000;
  --going:  #2ecc71;
  --inter:  #3b9eed;
  --no:     #e85050;
  --r-sm:   10px;
  --r-md:   16px;
  --r-lg:   22px;
  --r-xl:   30px;
  --st: env(safe-area-inset-top,44px);
  --sb: env(safe-area-inset-bottom,34px);
  --fd: 'Barlow Condensed',sans-serif;
  --fb: 'Barlow',sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
button,a,[onclick]{touch-action:manipulation;cursor:pointer}
svg{pointer-events:none}
html{height:100%;overflow:hidden;background:#000;overscroll-behavior:none;}body{height:100%;overflow:hidden;background:#000;overscroll-behavior:none;color:var(--ink);font-family:var(--fb);-webkit-font-smoothing:antialiased;position:fixed;width:100%;}

/* ── SHELL ── */
#app{width:100%;height:100dvh;max-width:430px;margin:0 auto;background:var(--bg);display:flex;flex-direction:column;overflow:hidden;position:relative}

/* ── SCREEN SYSTEM ── */
.page{display:none;flex:1;flex-direction:column;overflow:hidden;animation:fadeIn 0.2s ease;content-visibility:auto;contain-intrinsic-size:auto 100dvh}
.page.on{display:flex;content-visibility:visible}
.stack{display:none;position:fixed;top:0;left:50%;width:100%;max-width:430px;transform:translateX(-50%);z-index:200;background:var(--bg);flex-direction:column;height:100dvh;overflow:hidden;content-visibility:auto}
.stack.open{display:flex;content-visibility:visible}
.modal{position:fixed;inset:0;max-width:430px;left:50%;transform:translateX(-50%) translateY(100%);transition:transform 0.35s cubic-bezier(0.32,0,0.67,0);z-index:300;display:flex;flex-direction:column;height:100dvh}
.modal.open{transform:translateX(-50%) translateY(0);transition:transform 0.35s cubic-bezier(0.33,1,0.68,1)}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* ── SCROLL ── */
.scroll{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.scroll::-webkit-scrollbar{display:none}
#app.scroll-locked .scroll{overflow:hidden!important;touch-action:none}

/* ══════════ ONBOARDING ══════════ */
#ob{position:fixed;top:0;bottom:0;left:50%;width:100%;max-width:430px;transform:translateX(-50%);z-index:500;background:#000;display:flex;flex-direction:column;transition:opacity 0.5s ease,transform 0.5s cubic-bezier(0.4,0,0.2,1)}
#ob.hide{opacity:0;transform:translateX(-50%) scale(0.96);pointer-events:none;z-index:-1}
.ob-screen{position:absolute;inset:0;display:flex;flex-direction:column;opacity:0;transition:opacity 0.4s ease;pointer-events:none}
.ob-screen.on{opacity:1;pointer-events:all}

/* 스플래시 */
#ob-splash{align-items:center;justify-content:center;gap:12px;background:#000}
.ob-logo{font-family:var(--fd);font-weight:900;font-style:italic;font-size:64px;color:var(--ink);letter-spacing:-2px;line-height:0.85}
.ob-tagline{font-size:14px;color:var(--muted);letter-spacing:0.5px}

/* 온보딩 슬라이드들 */
#ob-slide{background:#000;padding:calc(var(--st) + 20px) 0 0}
.ob-slides-wrap{overflow:hidden;flex:1}
.ob-slides{display:flex;transition:transform 0.4s cubic-bezier(0.33,1,0.68,1);height:100%}
.ob-slide{flex:0 0 100%;padding:0 32px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:16px}
.ob-slide-icon{width:80px;height:80px;border-radius:24px;background:rgba(240,192,0,0.1);border:1px solid rgba(240,192,0,0.2);display:flex;align-items:center;justify-content:center;margin-bottom:8px}
.ob-slide-icon svg{width:36px;height:36px;stroke:var(--accent);fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.ob-slide-title{font-size:24px;font-weight:700;color:var(--ink);line-height:1.3}
.ob-slide-desc{font-size:15px;color:var(--sub);line-height:1.6}
.ob-dots{display:flex;gap:6px;justify-content:center;padding:20px 0}
.ob-dot{width:6px;height:6px;border-radius:50%;background:var(--muted);transition:all 0.3s}
.ob-dot.on{width:20px;border-radius:3px;background:var(--accent)}
.ob-bottom{padding:0 24px calc(24px + var(--sb));flex-shrink:0}
.ob-btn{width:100%;height:54px;border-radius:var(--r-xl);background:var(--accent);border:none;font-family:var(--fb);font-size:17px;font-weight:700;color:#0a0a0a;cursor:pointer;transition:transform 0.15s,opacity 0.15s}
.acct-type-btn{flex:1;padding:16px 12px;border-radius:var(--r-lg);border:2px solid var(--line);background:var(--bg2);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:8px;transition:all 0.2s}
.acct-type-btn.on{border-color:var(--accent);background:rgba(240,192,0,0.08)}
.acct-type-btn svg{width:28px;height:28px;stroke:var(--muted);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:stroke 0.2s}
.acct-type-btn.on svg{stroke:var(--accent)}
.acct-type-btn .at-label{font-size:15px;font-weight:700;color:var(--sub);transition:color 0.2s}
.acct-type-btn.on .at-label{color:var(--accent)}
.acct-type-btn .at-desc{font-size:11px;color:var(--muted);text-align:center;line-height:1.4}
/* 기업 뱃지 */
.biz-badge{display:inline-flex;align-items:center;gap:3px;background:rgba(59,158,237,0.15);border:1px solid rgba(59,158,237,0.3);border-radius:4px;padding:2px 6px;font-size:10px;font-weight:700;color:var(--inter)}
/* 계정 유형별 아바타 테두리 */
.av-biz{border:2px solid #3b9eed !important}
.av-personal{border:2px solid #f0c000 !important}
.ob-btn:active{transform:scale(0.97);opacity:0.9}
.ob-skip{text-align:center;padding-top:12px;font-size:13px;color:var(--muted);cursor:pointer}

/* 로그인 */
#ob-login{background:#000;justify-content:flex-end;padding-bottom:calc(32px + var(--sb))}
.ob-login-bg{position:absolute;inset:0;background:linear-gradient(to bottom,#000 0%,#0a0a05 100%)}
.ob-login-center{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:0 32px}
.ob-login-logo{font-family:var(--fd);font-weight:900;font-style:italic;font-size:52px;color:var(--ink);letter-spacing:-2px;line-height:0.85;margin-bottom:8px}
.ob-login-title{font-size:22px;font-weight:700;color:var(--ink);text-align:center;line-height:1.3}
.ob-login-sub{font-size:14px;color:var(--sub);text-align:center;line-height:1.6}
.ob-login-actions{padding:0 24px;display:flex;flex-direction:column;gap:10px;flex-shrink:0}
.login-btn{height:54px;border-radius:var(--r-xl);display:flex;align-items:center;justify-content:center;gap:12px;font-size:16px;font-weight:600;cursor:pointer;border:none;transition:transform 0.15s,opacity 0.15s}
.login-btn:active{transform:scale(0.97);opacity:0.9}
.login-btn svg{width:20px;height:20px;flex-shrink:0}
.btn-apple{background:var(--ink);color:var(--bg)}
.btn-apple svg{fill:var(--bg)}
.btn-google{background:var(--bg2);color:var(--ink);border:1px solid var(--line)}
.btn-google svg{fill:none}
.btn-kakao{background:#FEE500;color:#191919;border:none}
.btn-kakao svg{fill:#191919}

/* ══════════ TAB BAR ══════════ */
.tabbar{display:flex;background:rgba(10,10,10,0.9);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:1px solid rgba(255,255,255,0.06);padding-bottom:var(--sb);flex-shrink:0}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:10px 0;cursor:pointer;gap:4px;transition:opacity 0.15s}
.tab:active{opacity:0.6}
.tab svg{width:24px;height:24px;stroke:var(--muted);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;transition:stroke 0.2s}
.tab-lbl{font-size:10px;font-weight:500;color:var(--muted);transition:color 0.2s}
.tab.on svg{stroke:var(--accent)}
.tab.on .tab-lbl{color:var(--accent)}
.tab-add{flex:1;display:flex;align-items:center;justify-content:center;padding:8px 0;cursor:pointer}
.add-btn{width:44px;height:44px;border-radius:50%;background:var(--accent);display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px rgba(240,192,0,0.3);transition:transform 0.15s,box-shadow 0.15s}
.add-btn:active{transform:scale(0.92);box-shadow:0 2px 10px rgba(240,192,0,0.15)}
.add-btn svg{width:22px;height:22px;stroke:#0a0a0a;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}

/* ══════════ HOME ══════════ */
.home-topbar{padding:calc(var(--st) + 6px) 20px 0;display:flex;justify-content:space-between;align-items:center;flex-shrink:0}
.logo{font-family:var(--fd);font-weight:900;font-style:italic;font-size:30px;color:var(--ink);letter-spacing:-0.5px;line-height:0.85}
.icon-btn{width:40px;height:40px;border-radius:50%;background:var(--bg2);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;transition:background 0.15s}
.icon-btn:active{background:var(--bg3)}
.icon-btn svg{width:19px;height:19px;stroke:var(--sub);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.notif-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);border:1.5px solid var(--bg);position:absolute;top:7px;right:7px}

/* 검색 */
.search-bar{margin:14px 20px 0;background:var(--bg2);border-radius:var(--r-xl);display:flex;align-items:center;gap:10px;padding:12px 16px;border:1px solid var(--line)}
.search-bar svg{width:16px;height:16px;stroke:var(--muted);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.search-bar input{flex:1;background:none;border:none;outline:none;color:var(--ink);font-family:var(--fb);font-size:14px}
.search-bar input::placeholder{color:var(--muted)}

/* 필터 */
.filter-row{display:flex;gap:8px;padding:12px 20px;overflow-x:auto;flex-shrink:0;scrollbar-width:none;-ms-overflow-style:none}
.filter-row::-webkit-scrollbar{display:none}
.chip{padding:7px 16px;border-radius:var(--r-xl);font-size:13px;font-weight:500;white-space:nowrap;cursor:pointer;background:var(--bg2);color:var(--sub);border:1px solid var(--line);transition:all 0.15s;flex-shrink:0}
.chip.on{background:var(--accent);color:#0a0a0a;border-color:var(--accent);font-weight:600}
.chip:active{transform:scale(0.96)}

/* 뷰 토글 */
.view-toggle{display:flex;align-items:center;gap:0;background:var(--bg2);border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;flex-shrink:0}
.vt-btn{width:36px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background 0.15s}
.vt-btn svg{width:16px;height:16px;stroke:var(--muted);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.vt-btn.on{background:var(--bg3)}
.vt-btn.on svg{stroke:var(--ink)}

/* 섹션 */
.sec{display:flex;justify-content:space-between;align-items:center;padding:16px 20px 10px}
.sec-t{font-size:17px;font-weight:600;color:var(--ink)}
.sec-m{font-size:13px;color:var(--muted);cursor:pointer}

/* 광고 슬롯 */
.ad-slot{display:flex;align-items:center;justify-content:center;background:var(--bg2);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;position:relative;color:var(--muted);font-size:12px;letter-spacing:0.3px}
.ad-slot::before{content:'AD';position:absolute;top:5px;left:8px;font-size:9px;font-weight:700;color:var(--muted);opacity:0.6;letter-spacing:1px}
.ad-infeed{margin:0 20px 14px;height:80px;width:calc(100% - 40px)}
.ad-banner{margin:0 20px;height:80px;width:calc(100% - 40px)}
.ad-medium{height:80px}
.ad-gallery{grid-column:span 3;height:80px;margin:4px 20px;width:calc(100% - 40px)}
/* 하단 고정 광고 배너 */
.ad-fixed-bottom{position:fixed;bottom:calc(64px + var(--sb));left:50%;transform:translateX(-50%);width:calc(100% - 32px);max-width:398px;height:80px;z-index:150;border-radius:var(--r-lg)}
/* 홈 스크롤 영역 하단 여백 - 고정 광고 배너가 가리지 않도록 */
#view-list,#view-cal{padding-bottom:96px}
/* 스택 내부 하단 광고 */
.ad-stack-bottom{flex-shrink:0;width:calc(100% - 32px);height:80px;margin:8px 16px calc(8px + var(--sb));border-radius:var(--r-lg)}
/* 이벤트 카드 */
.ecard{margin:0 20px 14px;border-radius:var(--r-lg);background:var(--card);overflow:hidden;cursor:pointer;transition:transform 0.2s}
.ecard:active{transform:scale(0.985)}
.ec-cover{width:100%;aspect-ratio:2/1;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;background-size:cover;background-position:center;background-repeat:no-repeat}
.ec-cover-inner{width:100%;height:100%}
.g1{background:linear-gradient(135deg,#1c1810,#261e0e,#1c1a0e)}
.g2{background:linear-gradient(135deg,#0e1420,#0e1828,#0c1018)}
.g3{background:linear-gradient(135deg,#1c0e0e,#240e0e,#160808)}
.g4{background:linear-gradient(135deg,#0e180e,#102010,#0c160c)}
.g5{background:linear-gradient(135deg,#180e18,#1e1020,#120a14)}
.ec-cover-overlay{position:absolute;inset:0;background:linear-gradient(to bottom,transparent 35%,rgba(10,10,10,0.9))}
.ec-type{position:absolute;top:12px;left:12px;background:rgba(10,10,10,0.65);backdrop-filter:blur(8px);border-radius:8px;padding:4px 10px;font-size:11px;font-weight:600;color:var(--ink);border:1px solid rgba(255,255,255,0.1)}
.ec-dday{position:absolute;top:12px;right:12px;background:var(--accent);border-radius:8px;padding:4px 10px;font-family:var(--fd);font-weight:900;font-style:italic;font-size:13px;color:#0a0a0a}
.ec-body{padding:14px 20px 16px}
.ec-title{font-size:16px;font-weight:600;color:var(--ink);margin-bottom:7px;line-height:1.3}
.ec-meta{display:flex;gap:14px;flex-wrap:wrap}
.ec-mi{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--sub)}
.ec-mi svg{width:12px;height:12px;stroke:var(--muted);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ec-foot{display:flex;justify-content:space-between;align-items:center;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.ec-host{display:flex;align-items:center;gap:8px}
.ec-av{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;font-family:var(--fd);font-style:italic}
.ec-hn{font-size:12px;color:var(--sub)}
.ec-cnt{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--sub)}
.ec-cnt svg{width:12px;height:12px;stroke:var(--muted);fill:none;stroke-width:1.8}

/* 작은 카드 가로 스크롤 */
.hscroll{display:flex;gap:12px;padding:0 20px 20px;overflow-x:auto}
.hscroll::-webkit-scrollbar{display:none}
.sc{flex-shrink:0;width:155px;border-radius:var(--r-md);background:var(--card);overflow:hidden;cursor:pointer;transition:transform 0.2s}
.sc:active{transform:scale(0.96)}
.sc-img{width:100%;aspect-ratio:4/3;position:relative;overflow:hidden}
.sc-badge{position:absolute;bottom:8px;left:8px;background:rgba(10,10,10,0.7);backdrop-filter:blur(6px);border-radius:8px;padding:3px 8px;font-size:10px;font-weight:600;color:var(--ink)}
.sc-body{padding:10px 12px 12px}
.sc-title{font-size:13px;font-weight:600;color:var(--ink);margin-bottom:3px;line-height:1.3}
.sc-meta{font-size:11px;color:var(--sub)}

/* 캘린더 뷰 */
.cal-wrap{padding:0 20px}
.cal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.cal-month{font-size:18px;font-weight:700;color:var(--ink)}
.cal-nav{display:flex;gap:4px}
.cal-nav-btn{width:32px;height:32px;border-radius:50%;background:var(--bg2);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer}
.cal-nav-btn svg{width:16px;height:16px;stroke:var(--sub);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:16px}
.cal-day-hdr{text-align:center;font-size:11px;font-weight:600;color:var(--muted);padding:4px 0}
.cal-cell{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--r-sm);cursor:pointer;transition:background 0.15s;gap:2px;position:relative}
.cal-cell:active{background:var(--bg3)}
.cal-num{font-size:13px;font-weight:500;color:var(--sub)}
.cal-cell.today .cal-num{color:var(--accent);font-weight:700}
.cal-cell.has-event .cal-num{color:var(--ink)}
.cal-dot{width:5px;height:5px;border-radius:50%;background:var(--accent);flex-shrink:0}
.cal-dot.personal{background:var(--accent)}
.cal-dot.community{background:var(--going)}
.cal-dot.official{background:var(--no)}
.cal-dots{display:flex;gap:2px;justify-content:center;flex-wrap:wrap}
.cal-cell.selected{background:var(--bg3)}
.cal-cell.selected .cal-num{color:var(--accent);font-weight:700}
.cal-cell.other .cal-num{color:var(--muted);opacity:0.4}
.cal-events{display:flex;flex-direction:column;gap:8px}
.cal-ev-row{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);cursor:pointer}
.ad-cal{width:100%;height:80px;border-radius:var(--r-md)}
.cal-ev-date{width:44px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.cal-ev-d{font-family:var(--fd);font-weight:900;font-style:italic;font-size:26px;color:var(--ink);line-height:1}
.cal-ev-m{font-size:10px;color:var(--muted);text-transform:uppercase}
.cal-ev-info{flex:1}
.cal-ev-title{font-size:14px;font-weight:600;color:var(--ink);margin-bottom:3px}
.cal-ev-meta{font-size:12px;color:var(--sub)}
.cal-ev-badge{align-self:center;padding:3px 10px;border-radius:var(--r-xl);font-size:11px;font-weight:600;background:rgba(240,192,0,0.1);color:var(--accent)}

/* ══════════ EVENT DETAIL ══════════ */
.det-topbar{position:absolute;top:0;left:0;right:0;padding:calc(var(--st) + 8px) 20px 8px;display:flex;justify-content:space-between;z-index:10}
.det-back,.det-share{width:40px;height:40px;border-radius:50%;background:rgba(10,10,10,0.55);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,0.1);display:flex;align-items:center;justify-content:center;cursor:pointer}
.det-back svg,.det-share svg{width:18px;height:18px;stroke:var(--ink);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.det-hero{width:100%;aspect-ratio:2/3;position:relative;flex-shrink:0;overflow:hidden}
.det-hero-slider{display:flex;width:100%;height:100%;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.det-hero-slider::-webkit-scrollbar{display:none}
.det-hero-img{flex-shrink:0;width:100%;height:100%;background-size:cover;background-position:center;background-repeat:no-repeat;scroll-snap-align:start}
.det-hero-overlay{position:absolute;inset:0;background:linear-gradient(to bottom,transparent 45%,var(--bg) 100%);pointer-events:none}
.det-hero-dots{position:absolute;bottom:12px;left:0;right:0;display:flex;gap:5px;justify-content:center;z-index:2}
.det-hero-dot{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,0.4);transition:background 0.2s}
.det-hero-dot.on{background:#fff}
.det-scroll .det-body{padding:0 20px 20px}
.det-cats{display:flex;gap:6px;margin-bottom:10px}
.det-cat{padding:4px 12px;border-radius:var(--r-xl);background:rgba(240,192,0,0.1);border:1px solid rgba(240,192,0,0.2);font-size:11px;font-weight:600;color:var(--accent)}
.det-title{font-size:26px;font-weight:700;color:var(--ink);line-height:1.2;margin-bottom:16px}
.det-info-card{background:var(--bg2);border-radius:var(--r-lg);padding:16px;margin-bottom:14px;border:1px solid var(--line)}
.det-info-row{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--line)}
.det-info-row:first-child{padding-top:0}
.det-info-row:last-child{border-bottom:none;padding-bottom:0}
.det-info-ico{width:34px;height:34px;border-radius:10px;background:var(--bg3);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.det-info-ico svg{width:16px;height:16px;stroke:var(--accent);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.det-info-main{font-size:14px;font-weight:500;color:var(--ink)}
.det-info-sub{font-size:12px;color:var(--sub);margin-top:1px}

/* 참여 의사 */
.attend-row{display:flex;gap:8px;margin-bottom:14px}
.attend-btn{flex:1;height:44px;border-radius:var(--r-md);border:1px solid var(--line);background:var(--bg2);display:flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;transition:all 0.2s;font-size:13px;font-weight:600;color:var(--sub)}
.attend-btn svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.attend-btn.on-going{background:rgba(46,204,113,0.12);border-color:rgba(46,204,113,0.4);color:var(--going)}
.attend-btn.on-inter{background:rgba(255,80,120,0.12);border-color:rgba(255,80,120,0.4);color:#ff5078}
.attend-btn.on-no{background:rgba(232,80,80,0.12);border-color:rgba(232,80,80,0.4);color:var(--no)}
.attend-btn.on-like{background:rgba(240,192,0,0.12);border-color:rgba(240,192,0,0.4);color:var(--accent)}

/* 참가자 카운트 */
.cnt-row{display:flex;gap:8px;margin-bottom:16px}
.cnt-pill{flex:1;background:var(--bg2);border:1px solid var(--line);border-radius:var(--r-md);padding:12px;text-align:center}
.cnt-n{font-family:var(--fd);font-weight:900;font-style:italic;font-size:26px;color:var(--ink);line-height:1}
.cnt-l{font-size:11px;color:var(--muted);margin-top:3px}

.det-divider{height:1px;background:var(--line);margin:14px 0}
.det-desc{font-size:14px;color:var(--sub);line-height:1.75;margin-bottom:16px}

/* 주최자 */
.host-card{display:flex;align-items:center;gap:12px;background:var(--bg2);border-radius:var(--r-lg);padding:14px 16px;border:1px solid var(--line);cursor:pointer;margin-bottom:16px;transition:background 0.15s}
.host-card:active{background:var(--bg3)}
.host-av{width:46px;height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--fd);font-weight:900;font-style:italic;font-size:20px;flex-shrink:0}
.host-info{flex:1}
.host-lbl{font-size:11px;color:var(--muted);margin-bottom:2px}
.host-name{font-size:14px;font-weight:600;color:var(--ink)}
.host-arrow svg{width:16px;height:16px;stroke:var(--muted);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* 주변 장소 미리보기 */
.nearby-preview{margin-bottom:16px}
.comment-section{margin-top:8px;padding-top:16px;border-top:1px solid var(--line)}
.comment-input-row{display:flex;gap:8px;align-items:center;margin-bottom:12px}
.comment-input{flex:1;background:var(--bg2);border:1px solid var(--line);border-radius:var(--r-xl);padding:10px 14px;font-family:var(--fb);font-size:13px;color:var(--ink);outline:none}
.comment-input::placeholder{color:var(--muted)}
.comment-send-btn{width:36px;height:36px;border-radius:50%;background:var(--accent);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}
.comment-send-btn svg{width:16px;height:16px;stroke:#0a0a0a;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.comment-item{display:flex;gap:8px;margin-bottom:10px;align-items:flex-start}
.comment-av{width:28px;height:28px;border-radius:50%;background:var(--bg3);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:var(--ink);flex-shrink:0}
.comment-content{flex:1}
.comment-name{font-size:11px;font-weight:600;color:var(--sub);margin-bottom:2px}
.comment-body{font-size:13px;color:var(--ink);line-height:1.4}
.comment-time{font-size:10px;color:var(--muted);margin-top:2px}
.nearby-scroll{display:flex;gap:10px;overflow-x:auto;padding-bottom:4px}
.nearby-scroll::-webkit-scrollbar{display:none}
.np-card{flex-shrink:0;width:130px;background:var(--bg2);border-radius:var(--r-md);padding:12px;border:1px solid var(--line);cursor:pointer;transition:border-color 0.15s}
.np-card:active{border-color:var(--muted)}
.np-ico{width:32px;height:32px;border-radius:10px;display:flex;align-items:center;justify-content:center;margin-bottom:8px}
.np-ico svg{width:16px;height:16px;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.np-name{font-size:12px;font-weight:600;color:var(--ink);margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.np-dist{font-size:11px;color:var(--sub)}
.np-more{flex-shrink:0;width:80px;background:var(--bg2);border-radius:var(--r-md);padding:12px;border:1px solid var(--line);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}
.np-more svg{width:18px;height:18px;stroke:var(--muted);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.np-more-lbl{font-size:11px;color:var(--muted)}

/* 지도 연결 버튼 */
.map-btns{display:flex;gap:8px;margin-bottom:16px}
.map-btn{flex:1;height:42px;border-radius:var(--r-md);background:var(--bg2);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;gap:6px;font-size:12px;font-weight:600;color:var(--sub);cursor:pointer;transition:all 0.15s}
.map-btn:active{background:var(--bg3)}
.map-btn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* CTA 하단 */
.det-cta{padding:10px 20px calc(10px + var(--sb));border-top:1px solid var(--line);background:var(--bg);flex-shrink:0;display:flex;gap:10px}
.cta-save{width:52px;height:52px;border-radius:var(--r-md);background:var(--bg2);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:all 0.15s}
.cta-save svg{width:20px;height:20px;stroke:var(--sub);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;transition:all 0.2s}
.cta-save.on{background:rgba(240,192,0,0.1);border-color:rgba(240,192,0,0.3)}
.cta-save.on svg{stroke:var(--accent);fill:rgba(240,192,0,0.15)}
.cta-apply{flex:1;height:52px;border-radius:var(--r-md);background:var(--accent);border:none;font-family:var(--fb);font-size:16px;font-weight:700;color:#0a0a0a;cursor:pointer;transition:transform 0.15s,opacity 0.15s}
.cta-apply:active{transform:scale(0.97);opacity:0.9}
.cta-apply.going{background:var(--going);color:#fff}
.host-actions{display:none;gap:8px;padding:0 20px 8px}
.host-actions.on{display:flex}
.host-act-btn{flex:1;height:46px;border-radius:var(--r-md);border:none;font-family:var(--fb);font-size:14px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:7px;-webkit-appearance:none}
.host-act-btn svg{width:16px;height:16px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.host-act-btn:active{opacity:0.7}
.hab-edit{background:var(--bg2);color:var(--ink);border:1px solid var(--line)}
.hab-del{background:rgba(232,80,80,0.12);color:var(--no);border:1px solid rgba(232,80,80,0.25)}

/* ══════════ NEARBY FULL ══════════ */
.nearby-top{padding:calc(var(--st) + 10px) 20px 0;display:flex;align-items:center;gap:12px;flex-shrink:0}
.back-btn{width:40px;height:40px;border-radius:50%;background:var(--bg2);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer}
.back-btn svg{width:18px;height:18px;stroke:var(--ink);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nearby-screen-title{font-size:20px;font-weight:700;color:var(--ink)}
.nearby-event-label{margin:12px 20px;background:var(--bg2);border-radius:var(--r-md);padding:10px 14px;display:flex;align-items:center;gap:10px;border:1px solid var(--line)}
.nel-dot{width:8px;height:8px;border-radius:50%;background:var(--going);flex-shrink:0}
.nel-info{font-size:12px;color:var(--sub)}
.nel-name{font-size:13px;font-weight:600;color:var(--ink)}
.nearby-cat-row{display:flex;gap:8px;padding:0 20px 12px;overflow-x:auto}
.nearby-cat-row::-webkit-scrollbar{display:none}
.ncat-chip{padding:7px 16px;border-radius:var(--r-xl);font-size:13px;font-weight:500;white-space:nowrap;cursor:pointer;background:var(--bg2);color:var(--sub);border:1px solid var(--line);flex-shrink:0;transition:all 0.15s;display:flex;align-items:center;gap:6px}
.ncat-chip.on{background:var(--accent);color:#0a0a0a;border-color:var(--accent);font-weight:600}
.ncat-chip svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.place-card{margin:0 20px 10px;background:var(--bg2);border-radius:var(--r-lg);padding:16px;border:1px solid var(--line);cursor:pointer;display:flex;gap:14px;transition:border-color 0.15s}
.place-card:active{border-color:var(--muted)}
.place-ico{width:48px;height:48px;border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.place-ico svg{width:22px;height:22px;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.place-info{flex:1}
.place-name{font-size:15px;font-weight:600;color:var(--ink);margin-bottom:3px}
.place-addr{font-size:12px;color:var(--sub);margin-bottom:6px}
.place-tags{display:flex;gap:6px;flex-wrap:wrap}
.place-tag{font-size:10px;font-weight:600;padding:2px 8px;border-radius:6px}
.place-meta{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0}
.place-dist{font-size:12px;font-weight:600;color:var(--ink)}
.place-rating{font-size:11px;color:var(--sub)}
.place-navi{margin-top:6px;background:var(--bg3);border:1px solid var(--line);border-radius:8px;padding:4px 10px;font-size:11px;font-weight:600;color:var(--sub);cursor:pointer}
.place-navi:active{color:var(--ink)}

/* ══════════ MY ══════════ */
.my-topbar{padding:calc(var(--st) + 12px) 20px 0;flex-shrink:0}
.my-title{font-size:24px;font-weight:700;color:var(--ink)}
.profile-card{margin:16px 20px;background:var(--bg2);border-radius:var(--r-xl);padding:20px;border:1px solid var(--line);display:flex;align-items:center;gap:16px}
.profile-av{width:64px;height:64px;border-radius:50%;background:linear-gradient(135deg,#2a2010,#3a3020);display:flex;align-items:center;justify-content:center;font-family:var(--fd);font-weight:900;font-style:italic;font-size:28px;color:var(--accent);border:2px solid rgba(240,192,0,0.2);flex-shrink:0}
.profile-info{flex:1}
.profile-name{font-size:18px;font-weight:700;color:var(--ink);margin-bottom:3px}
.profile-sub{font-size:13px;color:var(--muted)}
.edit-btn{width:44px;height:44px;border-radius:50%;background:var(--bg3);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;-webkit-appearance:none;touch-action:manipulation}
.edit-btn svg{width:16px;height:16px;stroke:var(--sub);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.stat-strip{display:flex;margin:0 20px 16px;border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line)}
.sstat{flex:1;text-align:center;padding:14px 0;background:var(--bg2);border-right:1px solid var(--line)}
.sstat:last-child{border-right:none}
.sstat-n{font-family:var(--fd);font-weight:900;font-style:italic;font-size:24px;color:var(--ink);line-height:1}
.sstat-l{font-size:11px;color:var(--muted);margin-top:3px}
.menu-section{padding:0 20px 12px}
.menu-lbl{font-size:12px;font-weight:600;color:var(--muted);letter-spacing:0.5px;text-transform:uppercase;margin-bottom:8px}
.menu-group{background:var(--bg2);border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line)}
.menu-row{display:flex;align-items:center;gap:14px;padding:14px 16px;border-bottom:1px solid var(--line);cursor:pointer;transition:background 0.15s}
.menu-row:last-child{border-bottom:none}
.menu-row:active{background:var(--bg3)}
.menu-ico{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.menu-ico svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.menu-text{flex:1}
.menu-name{font-size:14px;font-weight:500;color:var(--ink)}
.menu-desc{font-size:12px;color:var(--muted);margin-top:1px}
.menu-arr svg{width:16px;height:16px;stroke:var(--muted);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* ══════════ CREATE ══════════ */
.create-topbar{padding:calc(var(--st) + 12px) 20px 16px;flex-shrink:0}
.create-title{font-size:24px;font-weight:700;color:var(--ink);margin-bottom:3px}
.create-sub{font-size:13px;color:var(--muted)}
.form-label{font-size:12px;font-weight:600;color:var(--sub);letter-spacing:0.5px;text-transform:uppercase;margin-bottom:8px}
.form-input{width:100%;height:52px;background:var(--bg2);border:1px solid var(--line);border-radius:var(--r-md);padding:14px 16px;font-family:var(--fb);font-size:15px;color:var(--ink);outline:none;transition:border-color 0.2s;-webkit-appearance:none;box-sizing:border-box}
.form-input:focus{border-color:rgba(240,192,0,0.4)}
.form-input::placeholder{color:var(--muted)}
textarea.form-input{height:auto;resize:none;min-height:90px;line-height:1.6}
select.form-input{appearance:auto;-webkit-appearance:auto}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.cover-up{width:calc(100% - 40px);margin:0 20px 14px;aspect-ratio:16/9;background:var(--bg2);border:2px dashed var(--line);border-radius:var(--r-lg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;cursor:pointer;transition:border-color 0.2s}
.cover-up:active{border-color:var(--accent)}
.cover-up svg{width:28px;height:28px;stroke:var(--muted);fill:none;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.cover-up-lbl{font-size:14px;color:var(--muted)}
/* 멀티 이미지 업로더 */
.img-upload-wrap{margin:0 20px 14px;display:flex;flex-direction:column;gap:8px}
.img-slots{display:flex;gap:8px}
.img-slot{flex:1;aspect-ratio:2/3;border-radius:var(--r-md);border:2px dashed var(--line);background:var(--bg2);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;position:relative;overflow:hidden;transition:border-color 0.2s}
.img-slot:active{border-color:var(--accent)}
.img-slot.filled{border-style:solid;border-color:var(--line)}
.img-slot svg{width:20px;height:20px;stroke:var(--muted);fill:none;stroke-width:1.6;stroke-linecap:round}
.img-slot-lbl{font-size:10px;color:var(--muted);margin-top:4px}
.img-slot-del{position:absolute;top:4px;right:4px;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,0.6);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:2}
.img-slot-del svg{width:10px;height:10px;stroke:#fff;fill:none;stroke-width:2.5}
/* 갤러리 → 히어로 슬라이더로 통합 */
.form-block{padding:0 20px;margin-bottom:14px}
.cat-wrap{display:flex;flex-wrap:wrap;gap:8px}
.cat-chip{padding:8px 16px;border-radius:var(--r-xl);background:var(--bg2);border:1px solid var(--line);font-size:13px;font-weight:500;color:var(--sub);cursor:pointer;transition:all 0.15s}
.cat-chip:active{transform:scale(0.96)}
.cat-chip.on{background:rgba(240,192,0,0.1);border-color:rgba(240,192,0,0.35);color:var(--accent)}
.submit-btn{margin:8px 20px calc(20px + var(--sb));height:54px;border-radius:var(--r-md);background:var(--accent);border:none;font-family:var(--fb);font-size:17px;font-weight:700;color:#0a0a0a;width:calc(100% - 40px);cursor:pointer;transition:transform 0.15s}
.submit-btn:active{transform:scale(0.98)}

/* ══════════ NOTIFICATION ══════════ */
.notif-topbar{padding:calc(var(--st) + 12px) 20px 16px;display:flex;justify-content:space-between;align-items:center;flex-shrink:0}
.notif-title{font-size:22px;font-weight:700;color:var(--ink)}
.read-all-btn{font-size:13px;color:var(--muted);background:none;border:none;cursor:pointer;font-family:var(--fb)}
.notif-item{margin:0 20px 10px;border-radius:var(--r-lg);padding:14px 16px;cursor:pointer;transition:background 0.15s;border:1px solid var(--line);background:var(--bg2)}
.notif-item:active{background:var(--bg3)}
.notif-item.unread{background:rgba(240,192,0,0.04);border-color:rgba(240,192,0,0.15)}
.ni-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.ni-ico{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ni-ico svg{width:14px;height:14px;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ni-type{font-size:12px;font-weight:600}
.ni-time{font-size:11px;color:var(--muted);margin-left:auto}
.ni-body{font-size:13px;color:var(--ink);line-height:1.5}
.ni-sub{font-size:12px;color:var(--sub);margin-top:4px}


/* ══════════ HOST DASHBOARD ══════════ */
.host-topbar{padding:calc(var(--st)+12px) 20px 0;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;gap:12px}
.host-top-title{font-size:22px;font-weight:700;color:var(--ink)}
.host-tab-row{display:flex;gap:0;margin:14px 20px 0;background:var(--bg2);border-radius:var(--r-md);overflow:hidden;border:1px solid var(--line);flex-shrink:0}
.htab{flex:1;padding:10px 0;text-align:center;font-size:13px;font-weight:500;color:var(--muted);cursor:pointer;transition:all 0.15s;border-right:1px solid var(--line)}
.htab:last-child{border-right:none}
.htab.on{background:var(--accent);color:#0a0a0a;font-weight:700}

/* 이벤트 선택 드롭다운 */
.event-selector{margin:12px 20px 0;background:var(--bg2);border-radius:var(--r-lg);padding:14px 16px;border:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;cursor:pointer;flex-shrink:0}
.es-info{}
.es-label{font-size:11px;color:var(--muted);margin-bottom:2px}
.es-name{font-size:15px;font-weight:600;color:var(--ink)}
.es-arr svg{width:18px;height:18px;stroke:var(--muted);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* 대시보드 패널들 */
.host-panel{display:none}
.host-panel.on{display:block}

/* 개요 */
.dash-kpi-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px 20px 0}
.kpi-card{background:var(--bg2);border-radius:var(--r-lg);padding:8px 12px;border:1px solid var(--line)}
.kpi-card.accent{border-color:rgba(240,192,0,0.25);background:rgba(240,192,0,0.05)}
.kpi-num{font-family:var(--fd);font-weight:900;font-style:italic;font-size:22px;line-height:1;color:var(--ink)}
.kpi-num.green{color:var(--going)}
.kpi-num.yellow{color:var(--accent)}
.kpi-label{font-size:11px;color:var(--muted);margin-top:2px}
.kpi-change{font-size:11px;color:var(--going);margin-top:3px;display:flex;align-items:center;gap:3px}
.kpi-change svg{width:11px;height:11px;stroke:var(--going);fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.dash-quick{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px 20px 0}
.dq-btn{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px;display:flex;align-items:center;gap:10px;cursor:pointer;transition:border-color 0.15s}
.dq-btn:active{border-color:var(--muted)}
.dq-btn.primary{background:var(--accent);border-color:var(--accent)}
.dq-btn.primary .dq-label{color:#0a0a0a}
.dq-btn.primary svg{stroke:#0a0a0a}
.dq-btn svg{width:18px;height:18px;stroke:var(--sub);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.dq-text{}
.dq-label{font-size:13px;font-weight:600;color:var(--ink)}
.dq-sub{font-size:11px;color:var(--muted);margin-top:1px}

/* 참가자 패널 */
.att-summary{display:flex;gap:0;margin:12px 20px 0;border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line)}
.att-sum-item{flex:1;text-align:center;padding:12px 0;background:var(--bg2);border-right:1px solid var(--line)}
.att-sum-item:last-child{border-right:none}
.att-sum-n{font-family:var(--fd);font-weight:900;font-style:italic;font-size:22px;color:var(--ink);line-height:1}
.att-sum-l{font-size:10px;color:var(--muted);margin-top:2px}
.att-filter{display:flex;gap:6px;padding:10px 20px 0;overflow-x:auto}
.att-filter::-webkit-scrollbar{display:none}
.af-chip{padding:6px 14px;border-radius:var(--r-xl);font-size:12px;font-weight:500;white-space:nowrap;cursor:pointer;background:var(--bg2);color:var(--sub);border:1px solid var(--line);flex-shrink:0;transition:all 0.15s}
.af-chip.on{background:var(--accent);color:#0a0a0a;border-color:var(--accent);font-weight:600}
.att-section-label{padding:12px 20px 6px;font-size:11px;font-weight:600;color:var(--muted);letter-spacing:0.5px;text-transform:uppercase}
.att-row{display:flex;align-items:center;gap:12px;padding:12px 20px;border-bottom:1px solid var(--line);cursor:pointer;transition:background 0.15s}
.att-row:active{background:var(--bg2)}
.att-num{font-size:13px;color:var(--muted);width:20px;text-align:right;flex-shrink:0}
.att-av{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--fd);font-weight:900;font-style:italic;font-size:16px;flex-shrink:0}
.att-info{flex:1}
.att-name{font-size:14px;font-weight:600;color:var(--ink);margin-bottom:2px}
.att-car{font-size:12px;color:var(--sub)}
.att-status{flex-shrink:0}
.att-approve-btn{padding:6px 14px;border-radius:var(--r-xl);font-size:12px;font-weight:600;cursor:pointer;border:1px solid;transition:all 0.2s}
.att-approve-btn.pending{background:rgba(240,192,0,0.08);border-color:rgba(240,192,0,0.3);color:var(--accent)}
.att-approve-btn.pending:active{background:rgba(240,192,0,0.18)}
.att-approve-btn.approved{background:rgba(46,204,113,0.08);border-color:rgba(46,204,113,0.3);color:var(--going)}
.att-checkin-btn{width:32px;height:32px;border-radius:50%;border:1.5px solid var(--line);background:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all 0.2s;flex-shrink:0}
.att-checkin-btn svg{width:14px;height:14px;stroke:var(--muted);fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.att-checkin-btn.checked{background:var(--going);border-color:var(--going)}
.att-checkin-btn.checked svg{stroke:#fff}

/* 공지 패널 */
.notice-compose{margin:12px 20px 0;background:var(--bg2);border-radius:var(--r-lg);padding:16px;border:1px solid var(--line)}
.notice-target-row{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
.nt-chip{padding:6px 14px;border-radius:var(--r-xl);font-size:12px;font-weight:500;cursor:pointer;background:var(--bg3);color:var(--sub);border:1px solid var(--line);transition:all 0.15s}
.nt-chip.on{background:var(--accent);color:#0a0a0a;border-color:var(--accent);font-weight:600}
.notice-textarea{width:100%;background:var(--bg3);border:1px solid var(--line);border-radius:var(--r-md);padding:12px 14px;font-family:var(--fb);font-size:14px;color:var(--ink);outline:none;resize:none;min-height:90px;line-height:1.6;transition:border-color 0.2s;-webkit-appearance:none}
.notice-textarea:focus{border-color:rgba(240,192,0,0.4)}
.notice-textarea::placeholder{color:var(--muted)}
.notice-send-btn{width:100%;height:48px;border-radius:var(--r-md);background:var(--accent);border:none;font-family:var(--fb);font-size:15px;font-weight:700;color:#0a0a0a;cursor:pointer;margin-top:10px;transition:transform 0.15s}
.notice-send-btn:active{transform:scale(0.98)}
.notice-history-label{padding:16px 20px 8px;font-size:12px;font-weight:600;color:var(--muted);letter-spacing:0.5px;text-transform:uppercase}
.notice-item{margin:0 20px 10px;background:var(--bg2);border-radius:var(--r-lg);padding:14px 16px;border:1px solid var(--line)}
.ni-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.ni-tag{font-size:11px;font-weight:600;padding:3px 10px;border-radius:var(--r-xl);border:1px solid}
.ni-tag.all{color:var(--inter);border-color:rgba(59,158,237,0.3);background:rgba(59,158,237,0.08)}
.ni-tag.going{color:var(--going);border-color:rgba(46,204,113,0.3);background:rgba(46,204,113,0.08)}
.ni-tag.urgent{color:var(--no);border-color:rgba(232,80,80,0.3);background:rgba(232,80,80,0.08)}
.ni-time{font-size:11px;color:var(--muted)}
.ni-msg{font-size:13px;color:var(--ink);line-height:1.6}
.ni-reach{font-size:11px;color:var(--muted);margin-top:5px}
.ni-reach span{color:var(--ink)}

/* QR 체크인 패널 */
.qr-panel{padding:12px 20px 0}
.checkin-progress{background:var(--bg2);border-radius:var(--r-lg);padding:18px;border:1px solid var(--line);margin-bottom:12px}
.cp-header{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:12px}
.cp-nums{font-family:var(--fd);font-weight:900;font-style:italic;font-size:42px;color:var(--ink);line-height:1}
.cp-total{font-size:14px;color:var(--muted);margin-bottom:8px}
.cp-bar{height:10px;background:var(--bg3);border-radius:5px;overflow:hidden;margin-bottom:6px}
.cp-fill{height:100%;border-radius:5px;background:var(--going);transition:width 0.6s ease}
.cp-label{font-size:12px;color:var(--muted)}
.qr-box{background:var(--bg2);border-radius:var(--r-lg);padding:24px;border:1px solid var(--line);display:flex;flex-direction:column;align-items:center;gap:14px;margin-bottom:12px}
.qr-grid{width:140px;height:140px;background:var(--bg3);border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;position:relative;border:1px solid var(--line)}
.qr-corner{position:absolute;width:18px;height:18px;border-color:var(--accent);border-style:solid}
.qr-corner.tl{top:6px;left:6px;border-width:2px 0 0 2px}
.qr-corner.tr{top:6px;right:6px;border-width:2px 2px 0 0}
.qr-corner.bl{bottom:6px;left:6px;border-width:0 0 2px 2px}
.qr-corner.br{bottom:6px;right:6px;border-width:0 2px 2px 0}
.qr-inner svg{width:80px;height:80px;opacity:0.4}
.qr-label{font-size:15px;font-weight:700;color:var(--ink)}
.qr-sub{font-size:12px;color:var(--muted);text-align:center;line-height:1.6}
.qr-refresh-btn{padding:9px 24px;border-radius:var(--r-xl);background:none;border:1px solid var(--line);font-family:var(--fb);font-size:13px;font-weight:600;color:var(--sub);cursor:pointer;transition:all 0.15s}
.qr-refresh-btn:active{border-color:var(--muted);color:var(--ink)}
.checkin-recent-label{font-size:12px;font-weight:600;color:var(--muted);letter-spacing:0.5px;text-transform:uppercase;padding:4px 0 8px}
.checkin-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}
.checkin-row:last-child{border-bottom:none}
.cr-time{font-size:11px;color:var(--muted);width:36px;flex-shrink:0}
.cr-av{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--fd);font-weight:900;font-style:italic;font-size:12px;flex-shrink:0}
.cr-info{flex:1}
.cr-name{font-size:13px;font-weight:500;color:var(--ink)}
.cr-car{font-size:11px;color:var(--sub)}
.cr-ok{width:22px;height:22px;border-radius:50%;background:var(--going);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.cr-ok svg{width:12px;height:12px;stroke:#fff;fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}


/* ══════════ MY FLOW ══════════ */

/* 참가 이력 */
.history-filter{display:flex;gap:6px;padding:12px 20px 0;overflow-x:auto;flex-shrink:0}
.history-filter::-webkit-scrollbar{display:none}
.hf-chip{padding:6px 14px;border-radius:var(--r-xl);font-size:12px;font-weight:500;white-space:nowrap;cursor:pointer;background:var(--bg2);color:var(--sub);border:1px solid var(--line);flex-shrink:0;transition:all 0.15s}
.hf-chip.on{background:var(--accent);color:#0a0a0a;border-color:var(--accent);font-weight:600}
.history-row{display:flex;gap:12px;padding:14px 20px;border-bottom:1px solid var(--line);cursor:pointer;transition:background 0.15s}
.ad-history{margin:0 20px;height:80px;width:calc(100% - 40px);border-bottom:1px solid var(--line)}
.history-row:active{background:var(--bg2)}
.hr-thumb{width:64px;height:64px;border-radius:var(--r-md);flex-shrink:0;overflow:hidden}
.hr-info{flex:1}
.hr-title{font-size:14px;font-weight:600;color:var(--ink);margin-bottom:4px;line-height:1.3}
.hr-meta{font-size:12px;color:var(--sub);margin-bottom:6px}
.hr-badge{display:inline-block;padding:3px 10px;border-radius:var(--r-xl);font-size:11px;font-weight:600}
.hr-badge.upcoming{background:rgba(240,192,0,0.1);color:var(--accent)}
.hr-badge.done{background:var(--bg3);color:var(--muted)}
.hr-badge.going{background:rgba(46,204,113,0.1);color:var(--going)}

/* 차량 관리 */
.vehicle-card{margin:12px 20px 0;background:var(--bg2);border-radius:var(--r-xl);overflow:hidden;border:1px solid var(--line)}
.vc-header{background:linear-gradient(135deg,#1c1810,#261e0e);padding:20px;position:relative;overflow:hidden}
.vc-bg-text{position:absolute;right:-10px;bottom:-14px;font-family:var(--fd);font-weight:900;font-style:italic;font-size:72px;color:rgba(240,192,0,0.06);line-height:1;pointer-events:none;white-space:nowrap}
.vc-make{font-size:12px;font-weight:600;color:var(--accent);letter-spacing:0.5px;text-transform:uppercase;margin-bottom:4px}
.vc-model{font-size:22px;font-weight:700;color:var(--ink);margin-bottom:2px}
.vc-year{font-size:14px;color:var(--sub)}
.vc-body{padding:16px 20px}
.vc-spec-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}
.vc-spec{background:var(--bg3);border-radius:var(--r-md);padding:12px}
.vc-spec-label{font-size:11px;color:var(--muted);margin-bottom:3px;text-transform:uppercase;letter-spacing:0.3px}
.vc-spec-val{font-size:14px;font-weight:600;color:var(--ink)}
.vc-edit-btn{width:100%;height:44px;border-radius:var(--r-md);background:none;border:1px solid var(--line);font-family:var(--fb);font-size:14px;font-weight:600;color:var(--sub);cursor:pointer;transition:all 0.15s;display:flex;align-items:center;justify-content:center;gap:8px}
.vc-edit-btn svg{width:15px;height:15px;stroke:var(--sub);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.vc-edit-btn:active{border-color:var(--accent);color:var(--accent)}
.add-vehicle-btn{margin:10px 20px 0;height:52px;border-radius:var(--r-lg);border:2px dashed var(--line);background:none;width:calc(100% - 40px);display:flex;align-items:center;justify-content:center;gap:10px;cursor:pointer;transition:border-color 0.2s;font-family:var(--fb);font-size:14px;font-weight:500;color:var(--muted)}
.add-vehicle-btn svg{width:18px;height:18px;stroke:var(--muted);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.add-vehicle-btn:active{border-color:var(--accent);color:var(--accent)}

/* 프로필 수정 */
.profile-edit-form{padding:0 20px}
.avatar-edit{display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px 0}
.ae-av{width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,#2a2010,#3a3020);display:flex;align-items:center;justify-content:center;font-family:var(--fd);font-weight:900;font-style:italic;font-size:32px;color:var(--accent);border:2px solid rgba(240,192,0,0.2);position:relative}
.ae-edit-ico{position:absolute;bottom:0;right:0;width:26px;height:26px;border-radius:50%;background:var(--accent);display:flex;align-items:center;justify-content:center;border:2px solid var(--bg)}
.ae-edit-ico svg{width:12px;height:12px;stroke:#0a0a0a;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.ae-label{font-size:13px;color:var(--muted)}
.interests-wrap{display:flex;flex-wrap:wrap;gap:8px}
.interest-chip{padding:8px 16px;border-radius:var(--r-xl);background:var(--bg2);border:1px solid var(--line);font-size:13px;font-weight:500;color:var(--sub);cursor:pointer;transition:all 0.15s}
.interest-chip.on{background:rgba(240,192,0,0.1);border-color:rgba(240,192,0,0.35);color:var(--accent)}
.interest-chip:active{transform:scale(0.96)}

/* 알림 설정 */
.notif-setting-row{display:flex;align-items:center;gap:14px;padding:14px 20px;border-bottom:1px solid var(--line);cursor:pointer}
.notif-setting-row:last-child{border-bottom:none}
.nsr-ico{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.nsr-ico svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.nsr-text{flex:1}
.nsr-name{font-size:14px;font-weight:500;color:var(--ink)}
.nsr-desc{font-size:12px;color:var(--muted);margin-top:1px}
.toggle-wrap{flex-shrink:0}
.toggle{width:44px;height:26px;border-radius:13px;background:var(--bg3);border:1px solid var(--line);position:relative;cursor:pointer;transition:background 0.25s}
.toggle.on{background:var(--accent);border-color:var(--accent)}
.toggle-thumb{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform 0.25s;box-shadow:0 1px 4px rgba(0,0,0,0.3)}
.toggle.on .toggle-thumb{transform:translateX(18px)}


/* ══════════ TICKET / 신청 완료 ══════════ */
.ticket-wrap{padding:calc(var(--st)+20px) 20px 0;display:flex;flex-direction:column;align-items:center;text-align:center;flex:1}
.ticket-check{width:72px;height:72px;border-radius:50%;background:rgba(46,204,113,0.12);border:2px solid rgba(46,204,113,0.3);display:flex;align-items:center;justify-content:center;margin-bottom:16px}
.ticket-check svg{width:32px;height:32px;stroke:var(--going);fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.ticket-title{font-size:24px;font-weight:700;color:var(--ink);margin-bottom:6px}
.ticket-sub{font-size:14px;color:var(--sub);line-height:1.6;margin-bottom:28px}
.ticket-card{width:100%;background:var(--bg2);border-radius:var(--r-xl);border:1px solid var(--line);overflow:hidden;margin-bottom:20px}
.ticket-top{padding:20px;border-bottom:1px dashed var(--line);position:relative;text-align:left}
.ticket-event-cat{font-size:11px;font-weight:600;color:var(--accent);letter-spacing:0.5px;text-transform:uppercase;margin-bottom:4px;text-align:left}
.ticket-event-name{font-size:20px;font-weight:700;color:var(--ink);margin-bottom:12px;line-height:1.2;text-align:left}
.ticket-info-rows{display:flex;flex-direction:column;gap:8px}
.ticket-info-row{display:flex;align-items:center;gap:8px}
.ticket-info-row svg{width:14px;height:14px;stroke:var(--muted);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.ticket-info-row span{font-size:13px;color:var(--sub)}
.ticket-cut{display:flex;align-items:center;margin:0 -1px}
.ticket-cut-circle-l,.ticket-cut-circle-r{width:20px;height:20px;border-radius:50%;background:var(--bg);border:1px solid var(--line);flex-shrink:0}
.ticket-cut-line{flex:1;border-top:2px dashed var(--line)}
.ticket-bottom{padding:20px;display:flex;justify-content:center}
.ticket-qr-mini{width:80px;height:80px;background:var(--bg3);border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;border:1px solid var(--line)}
.ticket-qr-mini svg{width:50px;height:50px;opacity:0.5}
.ticket-actions{display:flex;gap:10px;width:100%;padding-bottom:calc(20px + var(--sb))}
.ticket-action-btn{flex:1;height:52px;border-radius:var(--r-md);font-family:var(--fb);font-size:15px;font-weight:700;cursor:pointer;transition:all 0.15s}
.ticket-action-btn:active{transform:scale(0.97)}
.tab-primary{background:var(--accent);border:none;color:#0a0a0a}
.tab-secondary{background:none;border:1px solid var(--line);color:var(--sub)}

/* ══════════ CREATE 완성 ══════════ */
.event-type-row{display:flex;gap:8px;margin-bottom:14px}
.event-type-btn{flex:1;padding:14px 10px;border-radius:var(--r-md);border:1px solid var(--line);background:var(--bg2);display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;transition:all 0.15s;text-align:center}
.event-type-btn .et-emoji{font-size:22px;line-height:1;color:var(--muted)}
.event-type-btn.on .et-emoji{color:var(--accent)}
.event-type-btn .et-name{font-size:12px;font-weight:700;color:var(--sub);transition:color 0.15s}
.event-type-btn .et-desc{font-size:10px;color:var(--muted);line-height:1.4;word-break:keep-all}
.event-type-btn.on{border-color:rgba(240,192,0,0.4);background:rgba(240,192,0,0.08)}
.event-type-btn.on .et-name{color:var(--accent)}
.fee-row{display:flex;gap:8px}
.fee-btn{flex:1;height:46px;border-radius:var(--r-md);border:1px solid var(--line);background:var(--bg2);font-family:var(--fb);font-size:14px;font-weight:600;color:var(--sub);cursor:pointer;transition:all 0.15s}
.fee-btn.on{border-color:rgba(240,192,0,0.4);background:rgba(240,192,0,0.08);color:var(--accent)}
.vis-btn{flex:1;height:52px;border-radius:var(--r-md);border:1px solid var(--line);background:var(--bg2);font-family:var(--fb);font-size:13px;font-weight:600;color:var(--sub);cursor:pointer;transition:all 0.15s;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:0 8px}
.vis-btn.on{border-color:rgba(240,192,0,0.4);background:rgba(240,192,0,0.08);color:var(--accent)}
.vis-btn .vis-sub{font-size:10px;font-weight:400;color:var(--muted);line-height:1}
.vis-btn.on .vis-sub{color:rgba(240,192,0,0.7)}

/* ══════════ ONBOARDING PROFILE ══════════ */
#ob-profile{background:var(--bg);padding:calc(var(--st)+20px) 0 0}
.ob-prof-title{font-size:24px;font-weight:700;color:var(--ink);padding:0 28px;margin-bottom:4px}
.ob-prof-sub{font-size:14px;color:var(--sub);padding:0 28px;margin-bottom:24px;line-height:1.6}
.ob-prof-avatar{display:flex;justify-content:center;margin-bottom:20px}
.ob-prof-av-circle{width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,#2a2010,#3a3020);border:2px solid rgba(240,192,0,0.2);display:flex;align-items:center;justify-content:center;position:relative;cursor:pointer}
.ob-prof-av-circle svg{width:28px;height:28px;stroke:var(--accent);fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.ob-prof-av-add{position:absolute;bottom:0;right:0;width:26px;height:26px;border-radius:50%;background:var(--accent);display:flex;align-items:center;justify-content:center;border:2px solid var(--bg)}
.ob-prof-av-add svg{width:12px;height:12px;stroke:#0a0a0a;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.ob-prof-form{padding:0 20px}
.ob-car-cats{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:6px}
.ob-car-cat{padding:8px 16px;border-radius:var(--r-xl);background:var(--bg2);border:1px solid var(--line);font-size:13px;font-weight:500;color:var(--sub);cursor:pointer;transition:all 0.15s}
.ob-car-cat.on{background:rgba(240,192,0,0.1);border-color:rgba(240,192,0,0.35);color:var(--accent)}
.ob-car-cat:active{transform:scale(0.96)}

/* ══════════ 광고 관리 ══════════ */
.adm-slot-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:16px;margin-bottom:12px}
.adm-slot-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.adm-slot-name{font-size:15px;font-weight:700;color:var(--ink)}
.adm-slot-id{font-size:11px;color:var(--muted);margin-top:2px}
.adm-toggle{width:44px;height:26px;border-radius:13px;background:var(--bg3);border:none;cursor:pointer;position:relative;transition:background 0.2s;flex-shrink:0}
.adm-toggle::after{content:'';position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform 0.2s}
.adm-toggle.on{background:var(--accent)}
.adm-toggle.on::after{transform:translateX(18px)}
.adm-slot-preview{width:100%;height:70px;border-radius:var(--r-md);border:1px solid var(--line);overflow:hidden;margin-bottom:10px;background:var(--bg2);display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:12px}
.adm-slot-preview img{width:100%;height:100%;object-fit:cover}
.adm-field{margin-bottom:8px}
.adm-field-lbl{font-size:11px;color:var(--muted);font-weight:600;margin-bottom:4px;letter-spacing:0.3px}
.adm-field input{width:100%;background:var(--bg2);border:1px solid var(--line);border-radius:var(--r-sm);padding:9px 12px;font-size:13px;color:var(--ink);font-family:var(--fb);outline:none}
.adm-field input:focus{border-color:var(--accent)}
.adm-slot-btns{display:flex;gap:8px;margin-top:10px}
.adm-btn{flex:1;padding:9px 0;border-radius:var(--r-md);font-size:13px;font-weight:700;font-family:var(--fb);border:none;cursor:pointer;transition:opacity 0.15s}
.adm-btn:active{opacity:0.7}
.adm-btn-upload{background:var(--bg3);color:var(--ink);border:1px solid var(--line)}
.adm-btn-save{background:var(--accent);color:#0a0a0a}

/* ── 신고 관리 필터 ── */
.rpt-filter-btn{padding:6px 14px;border-radius:20px;border:1px solid var(--line);background:var(--bg2);color:var(--sub);font-size:13px;font-weight:600;cursor:pointer;transition:all 0.15s}
.rpt-filter-btn.on{background:var(--no);color:#fff;border-color:var(--no)}
.rpt-filter-btn:active{opacity:0.7}

/* ══════════ TOAST ══════════ */
#toast{position:fixed;bottom:calc(90px + var(--sb));left:50%;transform:translateX(-50%) translateY(8px);background:rgba(28,28,28,0.96);backdrop-filter:blur(16px);color:var(--ink);font-size:13px;font-weight:500;padding:11px 22px;border-radius:var(--r-xl);z-index:9999;opacity:0;transition:opacity 0.22s,transform 0.22s;white-space:nowrap;pointer-events:none;border:1px solid rgba(255,255,255,0.07)}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
/* Pull-to-Refresh */
.ptr-indicator{position:fixed;top:calc(var(--st) + 8px);left:50%;transform:translateX(-50%) translateY(-60px);width:36px;height:36px;border-radius:50%;background:var(--bg2);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;transition:transform 0.2s;z-index:9999;pointer-events:none}
.ptr-indicator svg{width:18px;height:18px;stroke:var(--accent);fill:none;stroke-width:2;stroke-linecap:round;transition:transform 0.3s}
.ptr-indicator.ptr-ready svg{transform:rotate(180deg)}
.ptr-indicator.ptr-loading svg{animation:ptr-spin 0.8s linear infinite}
@keyframes ptr-spin{to{transform:rotate(360deg)}}
/* 후기 피드 */
.review-card{background:var(--card);border-radius:var(--r-lg);border:1px solid var(--line);overflow:hidden;margin-bottom:12px}
.review-img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}
.review-body{padding:12px 14px}
.review-top{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.review-av{width:32px;height:32px;border-radius:50%;background:var(--bg3);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:var(--accent);flex-shrink:0;background-size:cover;background-position:center}
.review-meta{flex:1;min-width:0}
.review-nick{font-size:13px;font-weight:600;color:var(--ink)}
.review-event{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.review-stars{display:flex;gap:2px;flex-shrink:0}
.review-star{font-size:13px}
.review-text{font-size:13px;color:var(--sub);line-height:1.6}
.review-imgs{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.review-imgs img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;flex-shrink:0}
.review-imgs[data-count="2"] img{width:calc(50% - 2px)}
.review-imgs[data-count="3"] img{width:calc(50% - 2px)}
.review-action-row{display:flex;align-items:center;gap:16px;padding:8px 14px 4px}
.review-act{display:flex;align-items:center;gap:4px;cursor:pointer;font-size:13px;color:var(--sub);transition:color 0.15s}
.review-act.liked{color:#ff4757}
.review-act svg{width:20px;height:20px}
.review-act.liked svg{transform:scale(1.1)}
.review-host-tag{display:inline-flex;align-items:center;gap:4px;background:rgba(240,192,0,0.1);border:1px solid rgba(240,192,0,0.2);border-radius:20px;padding:3px 10px 3px 3px;cursor:pointer;transition:background 0.15s;margin-top:8px}
.review-host-tag:active{background:rgba(240,192,0,0.2)}
.review-host-tag .rht-av{width:20px;height:20px;border-radius:50%;background:var(--bg3);background-size:cover;background-position:center}
.review-host-tag .rht-name{font-size:11px;font-weight:600;color:var(--accent)}
.review-comments-section{padding:0 14px 12px}
.review-comment{display:flex;gap:8px;padding:6px 0}
.review-comment .rc-av{width:24px;height:24px;border-radius:50%;background:var(--bg3);flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:var(--accent);background-size:cover;background-position:center}
.review-comment .rc-body{flex:1;min-width:0}
.review-comment .rc-nick{font-size:12px;font-weight:600;color:var(--ink);display:inline;margin-right:6px}
.review-comment .rc-text{font-size:12px;color:var(--sub);display:inline}
.review-comment .rc-time{font-size:10px;color:var(--muted);margin-top:2px}
.review-comment-input{display:flex;gap:8px;align-items:center;padding:8px 14px;border-top:1px solid var(--line)}
.review-comment-input input{flex:1;background:var(--bg2);border:none;border-radius:20px;padding:8px 14px;font-size:13px;color:var(--ink);font-family:var(--fb);outline:none}
.review-comment-input input::placeholder{color:var(--muted)}
.review-comment-input button{background:none;border:none;color:var(--accent);font-size:13px;font-weight:700;cursor:pointer;font-family:var(--fb);padding:8px}
.rsort{padding:10px 16px;font-size:13px;font-weight:600;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;transition:color 0.15s,border-color 0.15s}
.rsort.on{color:var(--accent);border-bottom-color:var(--accent)}
.rv-event-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;padding:2px}
.rv-event-cell{position:relative;aspect-ratio:1;overflow:hidden;cursor:pointer;background:var(--bg2)}
.rv-event-cell img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 0.2s}
.rv-event-cell:active img{transform:scale(0.97)}
.rv-event-overlay{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,rgba(0,0,0,0.75));padding:20px 8px 8px;pointer-events:none}
.rv-event-title{font-size:11px;font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rv-event-count{font-size:10px;color:rgba(255,255,255,0.7);margin-top:1px}
.rv-photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;padding:2px}
.rv-photo-cell{position:relative;aspect-ratio:1;overflow:hidden;cursor:pointer;background:var(--bg2)}
.rv-photo-cell img{width:100%;height:100%;object-fit:cover;display:block}
.rv-photo-like{position:absolute;bottom:5px;right:6px;display:flex;align-items:center;gap:2px;font-size:10px;font-weight:700;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,0.8)}
.rv-photo-like svg{width:13px;height:13px;fill:#ff4757;filter:drop-shadow(0 1px 2px rgba(0,0,0,0.5))}
.rv-cover-badge{position:absolute;top:5px;left:6px;background:var(--accent);color:#0a0a0a;font-size:9px;font-weight:700;padding:2px 7px;border-radius:10px;letter-spacing:0.5px}
/* 후기 작성 모달 */
.write-review-wrap{padding:20px}
.star-select{display:flex;gap:8px;justify-content:center;margin:12px 0}
.star-btn{font-size:28px;cursor:pointer;opacity:0.3;transition:opacity 0.15s}
.star-btn.on{opacity:1}
/* ══════════ ADMIN ══════════ */
.adm-topbar{padding-top:calc(var(--st) + 12px);padding-right:20px;padding-bottom:14px;padding-left:20px;display:flex;align-items:center;gap:10px;flex-shrink:0;border-bottom:1px solid var(--line)}
.adm-topbar-title{flex:1;font-size:18px;font-weight:700;color:var(--ink)}
.adm-pdf-btn{padding:7px 14px;border-radius:var(--r-md);background:var(--accent);color:#000;font-size:12px;font-weight:700;border:none;cursor:pointer;display:flex;align-items:center;gap:5px;flex-shrink:0}
.adm-pdf-btn svg{width:14px;height:14px;stroke:#000;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.adm-period-row{display:flex;gap:6px;padding:14px 20px 0;flex-shrink:0}
.adm-period-tab{flex:1;text-align:center;padding:7px 0;border-radius:var(--r-md);font-size:12px;font-weight:600;color:var(--muted);background:var(--bg2);border:1px solid var(--line);cursor:pointer;transition:all 0.15s}
.adm-period-tab.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.adm-section-title{padding:18px 20px 8px;font-size:11px;font-weight:700;color:var(--muted);letter-spacing:0.6px;text-transform:uppercase}
.adm-kpi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:0 20px}
.adm-kpi-card{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r-lg);padding:12px 10px}
.adm-kpi-label{font-size:10px;font-weight:600;color:var(--muted);margin-bottom:4px;letter-spacing:0.3px}
.adm-kpi-val{font-size:22px;font-weight:800;color:var(--ink);line-height:1}
.adm-kpi-sub{font-size:10px;color:var(--muted);margin-top:4px}
.adm-chart-card{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px 16px;margin:0 20px}
.adm-chart-labels{display:flex;justify-content:space-between;margin-top:4px}
.adm-chart-labels span{font-size:9px;color:var(--muted);text-align:center;flex:1}
.adm-bar-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.adm-bar-label{font-size:11px;color:var(--sub);width:64px;flex-shrink:0;text-align:right}
.adm-bar-track{flex:1;height:8px;background:var(--bg3);border-radius:4px;overflow:hidden}
.adm-bar-fill{height:100%;border-radius:4px;transition:width 0.4s ease}
.adm-bar-val{font-size:11px;font-weight:600;color:var(--ink);width:28px;text-align:right;flex-shrink:0}
.adm-demo-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:0 20px}
.adm-demo-title{font-size:11px;font-weight:600;color:var(--sub);margin-bottom:10px}
.adm-seg-header{margin:20px 20px 0;padding:14px 16px 12px;border-radius:var(--r-lg) var(--r-lg) 0 0;display:flex;align-items:center;gap:8px}
.adm-seg-header svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.adm-seg-header-title{font-size:13px;font-weight:700}
.adm-seg-header-desc{font-size:11px;opacity:0.75;margin-left:auto}
.adm-seg-op{background:rgba(59,158,237,0.1);color:var(--inter);border:1px solid rgba(59,158,237,0.2)}
.adm-seg-ad{background:rgba(240,192,0,0.1);color:#b8960a;border:1px solid rgba(240,192,0,0.25)}
.adm-seg-funnel{background:rgba(139,92,246,0.1);color:#6d28d9;border:1px solid rgba(139,92,246,0.25)}
.adm-seg-ret{background:rgba(20,184,166,0.1);color:#0f766e;border:1px solid rgba(20,184,166,0.25)}
.adm-seg-evt{background:rgba(234,88,12,0.1);color:#c2410c;border:1px solid rgba(234,88,12,0.25)}
.adm-seg-data{background:rgba(219,39,119,0.1);color:#9d174d;border:1px solid rgba(219,39,119,0.25)}
.adm-seg-utm{background:rgba(100,116,139,0.1);color:#475569;border:1px solid rgba(100,116,139,0.25)}
.adm-funnel-wrap{padding:14px 16px 8px;display:flex;flex-direction:column;gap:8px}
.adm-funnel-step{display:flex;align-items:center;gap:8px}
.adm-funnel-label{font-size:11px;color:var(--sub);width:80px;flex-shrink:0;text-align:right}
.adm-funnel-track{flex:1;height:22px;background:var(--bg3);border-radius:4px;overflow:hidden}
.adm-funnel-fill{height:100%;border-radius:4px;display:flex;align-items:center;justify-content:flex-end;padding-right:6px;transition:width 0.5s ease}
.adm-funnel-fill span{font-size:10px;font-weight:700;color:#fff;white-space:nowrap}
.adm-funnel-count{font-size:11px;font-weight:700;color:var(--ink);width:28px;text-align:right;flex-shrink:0}
.adm-funnel-drop{font-size:10px;color:var(--no);width:36px;text-align:right;flex-shrink:0}
.adm-progress-wrap{padding:14px 16px 8px;display:flex;flex-direction:column;gap:10px}
.adm-progress-row{display:flex;align-items:center;gap:8px}
.adm-progress-label{font-size:11px;color:var(--sub);width:72px;flex-shrink:0;text-align:right}
.adm-progress-track{flex:1;height:7px;background:var(--bg3);border-radius:4px;overflow:hidden}
.adm-progress-fill{height:100%;border-radius:4px;transition:width 0.4s ease}
.adm-progress-pct{font-size:11px;font-weight:700;color:var(--ink);width:36px;text-align:right;flex-shrink:0}
.adm-checkin-btn{padding:4px 10px;border-radius:var(--r-md);font-size:11px;font-weight:700;border:none;cursor:pointer;transition:all 0.15s}
.adm-checkin-btn.checked{background:rgba(46,204,113,0.15);color:var(--going)}
.adm-checkin-btn.unchecked{background:var(--bg3);color:var(--muted)}
.adm-seg-body{margin:0 20px;padding:0 0 16px;background:var(--bg2);border:1px solid var(--line);border-top:none;border-radius:0 0 var(--r-lg) var(--r-lg)}
.adm-kpi-grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;padding:14px 16px 0}
.adm-kpi-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:14px 16px 0}
.adm-growth-pill{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:700;padding:2px 6px;border-radius:20px;margin-top:4px}
.adm-growth-up{background:rgba(46,204,113,0.15);color:var(--going)}
.adm-growth-dn{background:rgba(231,76,60,0.12);color:var(--no)}
.adm-growth-flat{background:var(--bg3);color:var(--muted)}
.adm-inner-title{padding:14px 16px 6px;font-size:11px;font-weight:700;color:var(--muted);letter-spacing:0.4px;text-transform:uppercase}
.adm-inner-chart{padding:0 16px 4px}
.adm-inner-bars{padding:0 16px 8px}
@media print{
  body>*{display:none!important}
  #s-admin{display:block!important;position:static!important;width:100%!important;height:auto!important;overflow:visible!important;transform:none!important;background:#fff!important}
  #s-admin .adm-topbar{padding:16px 20px!important}
  #s-admin .adm-pdf-btn,.back-btn{display:none!important}
  #s-admin .scroll{overflow:visible!important;height:auto!important}
  .adm-kpi-card,.adm-chart-card{break-inside:avoid;border:1px solid #ddd!important;background:#fff!important}
  .adm-bar-fill{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* ── SKELETON LOADING ── */
@keyframes shimmer {
  0%   { background-position: -400px 0; }
  100% { background-position: 400px 0; }
}
.sk {
  background: linear-gradient(90deg, #1a1a1a 25%, #2a2a2a 50%, #1a1a1a 75%);
  background-size: 800px 100%;
  animation: shimmer 1.4s infinite;
  border-radius: 6px;
}
.sk-card {
  padding: 14px 16px;
  border-bottom: 1px solid var(--line);
}
.sk-img  { width: 100%; height: 110px; border-radius: 10px; margin-bottom: 12px; }
.sk-line { height: 14px; margin-bottom: 8px; }
.sk-line.w80 { width: 80%; }
.sk-line.w55 { width: 55%; }
.sk-line.w40 { width: 40%; }
