	/* design-pc.md 토큰 — soft travel AI workspace. 메인 액센트는 유지하고 표면감만 부드럽게 조정 */
	@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url('/Form/fonts/Inter-latin-wght-normal.woff2') format('woff2-variations');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
	/* Pretendard @font-face 는 css/pretendard.css(2단 base/ext 서브셋)로 이관 — 2026-07-28.
	   여기 있던 원본 4종(각 ~780KB)을 직접 물어 이 계열 페이지가 폰트만 3,095KB 를 받고 있었다.
	   이 CSS 를 쓰는 페이지는 pretendard.css 를 **먼저** link 할 것(chat01_lite.html·guides.html). */
	:root {
		--pc-sidebar-w:62px; --accent:#533afd; --accent-strong:#4434d4; --tint:rgba(83,58,253,.06);
		--ink:#061727; --text:#26384d; --sub:#4f6178; --muted:#6f7f93;
		--line:#dedbd6; --line-soft:#e8e6e1; --surface:#f6f5f2; --surface2:#eeece7; --bg:#ffffff; --star:#f59e0b; --open:#087f5b; --closed:#d9480f;
		--answer-bg:#ffffff; --answer-warm:#fffdf9; --answer-line:#ddd9d2;
		--shadow-soft:0 8px 20px rgba(15,23,42,.10); --shadow-card:0 6px 16px rgba(15,23,42,.08);
		--pc-shadow:var(--shadow-soft);
		/* 알약 줄 기준선 — 좌 [대화|일정](.chatHd)과 우 [시간표|지도](.canvasTop)는 같은 높이에 있어야 한다(소유자 2026-07-28).
		   셋을 여기서 한 번만 정하고 세 규칙이 참조한다. 값을 따로 고치면 두 알약이 어긋난다. */
		--pc-pane-inset:12px; /* .trippane 상단 MT 인셋 */
		--pc-canvas-pad:14px; /* 알약 위 여백 */
		--pc-pill-h:37px;     /* 알약 높이(테두리 포함) */
	}
	* { box-sizing:border-box; }
	html,body { height:100%; margin:0; }
	/* 기본 서체 = Wanted Sans(소유자 확정 2026-07-31, 비교 테스트 후) — 라틴도 Wanted 로 통일(옛 Inter 1순위 폐기). 페이지는 /Form/fonts/wanted-sans CSS 를 link 할 것 */
	body { font-family:'Wanted Sans Variable','Wanted Sans','Pretendard',ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI','Apple SD Gothic Neo','Noto Sans KR',sans-serif; background:var(--surface); color:var(--text); -webkit-font-smoothing:auto; -moz-osx-font-smoothing:auto; text-rendering:geometricPrecision; font-synthesis-weight:none; }
	button, input, select, textarea { font-family:inherit; } /* 폼 컨트롤 UA 기본(Arial) 누수 교정(2026-08-02) */
	html:root .maplibregl-map, html:root .maplibregl-map * { font-family:inherit; } /* 지도 내부 UI 도 본문 서체로 — maplibre-gl.css 가 런타임에 늦게 로드돼 특이도로 이긴다 */
	:focus-visible { outline:2px solid var(--accent); outline-offset:2px; border-radius:12px; }
	.chatpane::-webkit-scrollbar-button, .chatpane *::-webkit-scrollbar-button, .trippane::-webkit-scrollbar-button, .trippane *::-webkit-scrollbar-button { width:0; height:0; display:none; }
	.msgs, .nfList, .tpBody, .daylist, #tt, .placeDetail, .pop.placeAdd .paResults { scrollbar-width:thin; scrollbar-color:rgba(90,106,130,.55) transparent; }
	.msgs::-webkit-scrollbar, .nfList::-webkit-scrollbar, .tpBody::-webkit-scrollbar, .daylist::-webkit-scrollbar, #tt::-webkit-scrollbar, .placeDetail::-webkit-scrollbar, .pop.placeAdd .paResults::-webkit-scrollbar { width:10px; height:10px; }
	.msgs::-webkit-scrollbar-track, .nfList::-webkit-scrollbar-track, .tpBody::-webkit-scrollbar-track, .daylist::-webkit-scrollbar-track, #tt::-webkit-scrollbar-track, .placeDetail::-webkit-scrollbar-track, .pop.placeAdd .paResults::-webkit-scrollbar-track { background:transparent; }
	.msgs::-webkit-scrollbar-thumb, .nfList::-webkit-scrollbar-thumb, .tpBody::-webkit-scrollbar-thumb, .daylist::-webkit-scrollbar-thumb, #tt::-webkit-scrollbar-thumb, .placeDetail::-webkit-scrollbar-thumb, .pop.placeAdd .paResults::-webkit-scrollbar-thumb { border:3px solid transparent; border-radius:999px; background:rgba(90,106,130,.55); background-clip:content-box; }
	.msgs::-webkit-scrollbar-button, .msgs::-webkit-scrollbar-button:vertical:start:decrement, .msgs::-webkit-scrollbar-button:vertical:end:increment,
	.nfList::-webkit-scrollbar-button, .nfList::-webkit-scrollbar-button:vertical:start:decrement, .nfList::-webkit-scrollbar-button:vertical:end:increment,
	.tpBody::-webkit-scrollbar-button, .tpBody::-webkit-scrollbar-button:vertical:start:decrement, .tpBody::-webkit-scrollbar-button:vertical:end:increment,
	.daylist::-webkit-scrollbar-button, .daylist::-webkit-scrollbar-button:vertical:start:decrement, .daylist::-webkit-scrollbar-button:vertical:end:increment,
	#tt::-webkit-scrollbar-button, #tt::-webkit-scrollbar-button:vertical:start:decrement, #tt::-webkit-scrollbar-button:vertical:end:increment,
	.placeDetail::-webkit-scrollbar-button, .placeDetail::-webkit-scrollbar-button:vertical:start:decrement, .placeDetail::-webkit-scrollbar-button:vertical:end:increment,
	.pop.placeAdd .paResults::-webkit-scrollbar-button, .pop.placeAdd .paResults::-webkit-scrollbar-button:vertical:start:decrement, .pop.placeAdd .paResults::-webkit-scrollbar-button:vertical:end:increment { width:0 !important; height:0 !important; display:none !important; background:transparent !important; -webkit-appearance:none; }
	/* 위 목록에서 빠졌던 스크롤러 보강 — OS 기본 스크롤바(굵은 트랙+▲▼ 버튼)가 지도 가장자리에 노출되던 것(소유자 지적 2026-07-08). 새 스크롤 컨테이너를 만들면 반드시 여기나 위 목록에 추가할 것 */
	.mcGrid, .placeModal .pmResults, .pop.insertPick .ipList, .routeEdit .reList, .dfWrap { scrollbar-width:thin; scrollbar-color:rgba(90,106,130,.55) transparent; }
	.mcGrid::-webkit-scrollbar, .placeModal .pmResults::-webkit-scrollbar, .pop.insertPick .ipList::-webkit-scrollbar, .routeEdit .reList::-webkit-scrollbar, .dfWrap::-webkit-scrollbar { width:10px; height:10px; }
	.mcGrid::-webkit-scrollbar-track, .placeModal .pmResults::-webkit-scrollbar-track, .pop.insertPick .ipList::-webkit-scrollbar-track, .routeEdit .reList::-webkit-scrollbar-track, .dfWrap::-webkit-scrollbar-track { background:transparent; }
	.mcGrid::-webkit-scrollbar-thumb, .placeModal .pmResults::-webkit-scrollbar-thumb, .pop.insertPick .ipList::-webkit-scrollbar-thumb, .routeEdit .reList::-webkit-scrollbar-thumb, .dfWrap::-webkit-scrollbar-thumb { border:3px solid transparent; border-radius:999px; background:rgba(90,106,130,.55); background-clip:content-box; }
	.mcGrid::-webkit-scrollbar-button, .placeModal .pmResults::-webkit-scrollbar-button, .pop.insertPick .ipList::-webkit-scrollbar-button, .routeEdit .reList::-webkit-scrollbar-button, .dfWrap::-webkit-scrollbar-button { width:0 !important; height:0 !important; display:none !important; background:transparent !important; -webkit-appearance:none; }
	/* PC 크로미움: 표준 scrollbar-width/color가 지정되면 ::-webkit-* 커스텀이 통째로 무시되고 OS 플루언트 스크롤바로 렌더 — '스크롤 막대 항상 표시' 환경에선 ▲▼ 버튼·굵은 트랙까지 노출(소유자 지적 2026-07-08). PC는 표준 속성을 initial로 되돌려 author 커스텀(얇은 알약·버튼 없음)을 강제. 모바일은 오버레이 스크롤바라 표준 thin 유지(커스텀은 레이아웃 폭을 먹어 역효과) */
	@supports selector(::-webkit-scrollbar) {
		html:not(.isMobile) .msgs, html:not(.isMobile) .nfList, html:not(.isMobile) .tpBody, html:not(.isMobile) .daylist, html:not(.isMobile) #tt, html:not(.isMobile) .placeDetail, html:not(.isMobile) .pop.placeAdd .paResults,
		html:not(.isMobile) .mcGrid, html:not(.isMobile) .placeModal .pmResults, html:not(.isMobile) .pop.insertPick .ipList, html:not(.isMobile) .routeEdit .reList, html:not(.isMobile) .dfWrap { scrollbar-width:auto; scrollbar-color:auto; }
	}
	@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; scroll-behavior:auto !important; } }
	.pcToast { position:fixed; bottom:28px; left:50%; transform:translateX(-50%); background:var(--ink); color:#fff; padding:11px 18px; border-radius:8px; font-size:13px; z-index:60; opacity:0; transition:opacity .2s; pointer-events:none; max-width:min(90vw,440px); text-align:center; }
	.pcToast.on { opacity:1; }

	/* '여기 찜한 곳 N곳' 한 줄 안내 — 답변 아래 subtle 라인 */
	.savedNote { margin:8px 0 14px 37px; display:inline-flex; align-items:center; gap:7px; max-width:780px; padding:8px 12px; border:1px solid var(--line); border-radius:8px; background:var(--surface); font-size:12.5px; color:var(--ink); cursor:pointer; }
	.savedNote .shc { width:14px; height:14px; flex:0 0 auto; color:#ff4d6d; } .savedNote .shc svg { width:14px; height:14px; fill:#ff4d6d; }
	.savedNote:hover { background:#f1f1ee; }
	.app { display:flex; height:100vh; }
	/* ── 최상단 전체폭 바 (MT 채팅 레이아웃 정합, 2026-07-28) ──────────────────────
	   .app = 사이드바 + .appMain(세로) / .appMain = .appBar(46px) + .appBody(가로: chatpane+trippane).
	   판들의 기존 flex 규칙은 .appBody 안에서 그대로 살아 있다(min-height:0 필수 — 없으면 내부 스크롤이 죽는다). */
	.appMain { flex:1; min-width:0; display:flex; flex-direction:column; }
	.appBody { flex:1; min-height:0; display:flex; }
	.appBar { position:relative; flex:0 0 46px; height:46px; display:flex; align-items:center; gap:14px; padding:0 16px;
		background:#fff; border-bottom:1px solid rgba(0,0,0,.078); } /* MT 실측: 48px + 하단 헤어라인 */
	.abLeft { display:flex; align-items:center; gap:9px; min-width:0; flex:0 1 auto; }
	.abTitle { display:inline-flex; align-items:center; gap:5px; max-width:320px; border:0; background:none; padding:3px 6px; margin-left:-6px;
		border-radius:8px; cursor:pointer; font-family:inherit; color:var(--ink); transition:background .12s ease; }
	.abTitle:hover { background:var(--surface); }
	.abTitle b { font-size:15px; font-weight:600; letter-spacing:normal; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
	.abTitle .chev { width:15px; height:15px; color:var(--sub); flex:0 0 15px; }
	/* 조건칩은 **바 중앙**에 온다(소유자 2026-07-28). 흐름에 두면 제목·액션 폭에 밀려 남은 공간의 중앙이 되므로
	   좌우와 무관하게 절대 중앙 배치한다 — .leftSeg·.viewToggle 이 각 판에서 쓰는 것과 같은 방식.
	   MT 실측도 바 중심 828 / 칩 중심 824 로 바 기준 중앙이다. */
	.abMid { position:absolute; left:50%; top:0; bottom:0; transform:translateX(-50%);
		display:flex; align-items:center; justify-content:center; gap:10px; }
	/* 중앙 칩과 겹치지 않게 좌우가 각자 절반 안에서 끝나도록 제한(긴 제목은 말줄임) */
	.abLeft, .abRight { max-width:calc(50% - 190px); }
	.abRight { display:flex; align-items:center; gap:8px; flex:0 0 auto; margin-left:auto; }
	/* 바 안으로 노드째 옮겨온 것들 — 원래 .chatHd 기준 배치 규칙(절대중앙·항상숨김)을 여기서 푼다 */
	.appBar #leftSeg { position:static; left:auto; transform:none; box-shadow:none; align-self:center; }
	.appBar .composer { display:inline-flex; } /* renderComposer 의 인라인 display:none 은 JS 쪽에서 바 안일 때 해제 */
	/* 제목·부제·액션은 바로 올라갔고 .chatHd 엔 [대화|일정] 알약만 남는다 → 줄이 아니라 '떠 있는 띠'로 바꾼다.
	   우측 .canvasTop 과 같은 계산(pane-inset + canvas-pad)을 써서 두 알약이 같은 높이에 놓인다. */
	html:not(.isMobile) .app:has(.appBar) .chatHd {
		position:absolute; top:0; left:0; right:0; z-index:10; padding:0; border:0; pointer-events:none;
		height:calc(var(--pc-pane-inset,12px) + var(--pc-canvas-pad,14px) * 2 + var(--pc-pill-h,37px));
		background:rgba(255,255,255,.96); /* 대화가 알약 밑으로 지나가므로 우측 .canvasTop.ctSolid 와 같은 캡을 쓴다 */
	}
	html:not(.isMobile) .app:has(.appBar) .chatHd > * { pointer-events:auto; }
	/* 제목·부제는 바가 이미 보여 준다 — 원래 자리에 두면 같은 정보가 두 줄로 겹쳐 보인다 */
	html:not(.isMobile) .app:has(.appBar) .chatHd .chatTitle,
	html:not(.isMobile) .app:has(.appBar) .chatHd .chatSub { display:none; }
	html:not(.isMobile) .app:has(.appBar) .chatHd #leftSeg { top:calc(var(--pc-pane-inset,12px) + var(--pc-canvas-pad,14px)); }
	/* 알약이 떠 있으므로 판 내용이 그 아래에서 시작하도록 자리를 비운다.
	   .msgs·.leftItin·.myContent 를 따로 패치하지 않고 판에 한 번만 준다 — 스크롤 컨테이너가 늘어나도 안 새게.
	   .chatHd 캡은 position:absolute(= padding box 기준)라 이 패딩에 밀리지 않고 판 맨 위에 그대로 남는다. */
	html:not(.isMobile) .app:has(.appBar) .chatpane {
		padding-top:calc(var(--pc-pane-inset,12px) + var(--pc-canvas-pad,14px) * 2 + var(--pc-pill-h,37px));
	}
	html.isMobile .appBar { display:none; } /* 모바일은 기존 .chatHd 유지 — 상단 한 줄은 PC 레이아웃 */
	svg { display:block; }

	/* 좌측 사이드바 (Mindtrip 구조) */
	/* 아이콘 전용 레일 — 브랜드 마크와 활성 인디케이터만 남겨 콘텐츠와 경쟁하지 않게 한다. */
	.sidebar { --ink:#20212a; width:var(--pc-sidebar-w); flex-shrink:0; background:#fff; border-right:1px solid #dedbd6; display:flex; flex-direction:column; align-items:center; padding:14px 0 16px; position:relative; }
	.sidebar::before { display:none; }
	.sidebar > * { position:relative; z-index:1; }
	.sbLogo { width:44px; height:44px; display:flex; align-items:center; justify-content:center; padding:0; margin:0 0 17px; border-radius:8px; color:var(--accent); cursor:pointer; text-decoration:none; transition:background .12s ease; }
	.sbLogo:hover { background:#f5f4f0; }
	.sbLogo .m { color:var(--accent); display:flex; }
	.sbLogo .m svg, .sbLogo .travelassiMark { width:29px; height:29px; }
	.sbLogo span:not(.m) { display:none; }
	.sbNav { display:flex; flex-direction:column; align-items:center; gap:10px; width:100%; }
	.sbItem { position:relative; display:flex; align-items:center; justify-content:center; width:44px; height:44px; border-radius:8px; color:#b6b9c3; cursor:pointer; user-select:none; transition:background .12s ease, color .12s ease; text-decoration:none; }
	.sbItem .i { display:flex; color:inherit; }
	.sbItem .i svg { width:22px; height:22px; }
	.sbItem .lbl { display:none; }
	.sbItem:hover { background:#f5f4f0; color:var(--ink); }
	.sbItem.on { background:transparent; color:var(--ink); box-shadow:none; }
	.sbItem.on::before { content:''; position:absolute; right:-10px; top:50%; width:3px; height:24px; border-radius:999px; background:var(--ink); transform:translateY(-50%); }
	.sbItem.on .i { color:var(--ink); }
	.sbItem.on .i svg { fill:currentColor; }
	.sbItem .badge { position:absolute; top:2px; right:2px; min-width:16px; height:16px; display:flex; align-items:center; justify-content:center; padding:0 4px; font-size:9px; font-weight:700; line-height:1; color:#fff; background:var(--accent); border-radius:8px; box-shadow:0 0 0 2px #fff; }
	.sbItem .badge:empty { display:none; }
	.sbItem::after, .sbNew::after { content:attr(aria-label); position:absolute; left:calc(100% + 12px); top:50%; transform:translateY(-50%); background:var(--ink); color:#fff; font-size:12px; line-height:1; padding:6px 9px; border-radius:6px; white-space:nowrap; opacity:0; pointer-events:none; transition:opacity .12s ease; z-index:60; box-shadow:0 4px 12px -4px rgba(0,0,0,.18); }
	.sbItem:hover::after, .sbNew:hover::after { opacity:1; }
	.sbNew { position:relative; display:flex; align-items:center; justify-content:center; width:44px; height:44px; margin:10px 0 0; border:none; border-radius:8px; background:transparent; color:#b6b9c3; cursor:pointer; transition:background .12s ease, color .12s ease; }
	.sbNew svg { width:22px; height:22px; }
	.sbNew .lbl { display:none; }
	.sbNew:hover { background:#f5f4f0; color:var(--ink); }
	.sbSpacer { flex:1; min-height:12px; }
	.sbProfile { display:flex; align-items:center; justify-content:center; width:100%; padding:12px 0 0; }
	.sbProfile .av2 { width:32px; height:32px; border-radius:50%; background:#f5f4f0; color:#1f2b3d; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
	.sbProfile .av2 svg { width:17px; height:17px; }
	.sbProfile > div { display:none; }
	.sbFooter { display:none; }

	/* 통합 내비 플라이아웃 — 레일 옆 컴팩트 오버레이(Mindtrip식) */
	.navFlyout { position:absolute; top:12px; bottom:12px; left:calc(var(--pc-sidebar-w) + 12px); width:300px; background:#fff; border:1px solid #d8d7d2; border-radius:22px; box-shadow:0 14px 28px rgba(15,23,42,.16), 0 1px 0 rgba(255,255,255,.88) inset; z-index:20; display:none; flex-direction:column; overflow:hidden; }
	.navFlyout.on { display:flex; }
	.nfSearch { display:flex; align-items:center; gap:8px; margin:14px 14px 8px; padding:9px 12px; background:#fff; border:1px solid var(--line); border-radius:14px; box-shadow:0 1px 0 rgba(15,23,42,.04); }
	.nfSearch svg { width:15px; height:15px; color:var(--muted); flex-shrink:0; }
	.nfSearch input { flex:1; border:none; background:none; outline:none; font-family:inherit; font-size:13px; color:var(--ink); }
	.nfSearch input::placeholder { color:#7b8798; opacity:1; }
	.nfActions { display:flex; flex-direction:column; padding:0 12px 10px; gap:3px; border-bottom:1px solid var(--line-soft); }
	.nfAction { display:flex; align-items:center; gap:10px; padding:10px 11px; border:none; background:transparent; border-radius:14px; font-family:inherit; font-size:13px; font-weight:600; color:var(--ink); cursor:pointer; text-align:left; transition:background .12s ease, transform .12s ease; }
	.nfAction:hover { background:#f4f4f1; transform:translateY(-1px); }
	.nfAction svg { width:16px; height:16px; color:var(--sub); flex-shrink:0; }
	.nfList { flex:1; overflow-y:auto; padding:6px 12px 18px; }
	.nfSec { font-size:11px; font-weight:700; color:#4b5d73; padding:14px 8px 6px; }
	.nfRow { display:flex; align-items:center; gap:10px; padding:9px 8px; border:1px solid transparent; border-radius:15px; cursor:pointer; transition:background .12s ease, border-color .12s ease, box-shadow .12s ease, transform .12s ease; }
	.nfRow:hover { background:#fff; border-color:var(--line); box-shadow:0 5px 14px rgba(15,23,42,.08); transform:translateY(-1px); }
	.nfRow .th { width:34px; height:34px; border-radius:11px; object-fit:cover; background:#efefec; flex-shrink:0; display:flex; align-items:center; justify-content:center; color:var(--muted); }
	.nfRow .th svg { width:15px; height:15px; }
	.nfRow > div { min-width:0; }
	.nfRow .tt { font-size:13px; font-weight:700; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
	.nfRow .ts { font-size:11.5px; font-weight:500; color:#586b83; margin-top:1px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
	.nfEmpty { color:var(--sub); font-size:12.5px; line-height:1.7; padding:14px 8px; }

	/* 채팅 패널 — Mindtrip 비율(채팅:캔버스 ≈ 37:63), 접기 가능 */
	.chatpane { flex:1 1 0; min-width:400px; display:flex; flex-direction:column; background:#fff; border-right:none; position:relative; }
	.app.chatHidden .chatpane { display:none; }
	.chatHd { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; padding:14px 22px 12px; border-bottom:1px solid var(--line); background:rgba(255,255,255,.95); -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); position:relative; }
	.chatHd .chatTitle { flex:0 1 auto; min-width:0; }
	.chatHd .composer { position:absolute; left:50%; transform:translateX(-50%); flex-shrink:0; }
	.chatHd .createBtn { flex-shrink:0; margin-left:auto; padding:8px 13px; }
	.chatHd .chatSub { flex:0 0 100%; }
	.chatTitle { display:inline-flex; align-items:center; gap:6px; max-width:100%; border:none; background:none; padding:5px 8px; margin:-5px -8px; border-radius:12px; cursor:pointer; font-family:inherit; color:var(--ink); transition:background .12s ease; }
	.chatTitle:hover { background:var(--surface); }
	.chatTitle b { font-size:21px; font-weight:700; letter-spacing:0; color:#111827; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
	.chatTitle .chev { width:16px; height:16px; color:#6b7684; flex-shrink:0; }
	.chatSub { display:flex; align-items:center; gap:8px; font-size:12px; font-weight:500; color:#586b83; margin-top:3px; font-variant-numeric:tabular-nums; }
	.chatSub:empty { display:none; }
	.chatSub .tsGearBtn { flex-shrink:0; display:inline-flex; align-items:center; justify-content:center; width:22px; height:22px; margin-left:-4px; margin-right:-4px; padding:0; border:none; border-radius:6px; background:transparent; color:#8b95a1; cursor:pointer; }
	.chatSub .tsGearBtn:hover { background:var(--surface); color:var(--ink); }
	.chatSub .tsGear { width:13px; height:13px; color:currentColor; flex-shrink:0; }
	.chatSub .tsSpec { flex:0 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
	.chatSub .tsEdit { flex-shrink:0; border:1px solid #e5e8eb; background:#fff; color:#6b7684; font-family:inherit; font-size:11px; font-weight:600; padding:2px 8px; border-radius:5px; cursor:pointer; line-height:1.4; }
	.chatSub .tsEdit:hover { background:var(--surface); color:var(--ink); }
	/* 좌측 보기 토글 [대화]/[일정] — chatHd 상단 풀폭 행 */
	.leftSeg { position:absolute; left:50%; transform:translateX(-50%); display:inline-grid; grid-template-columns:repeat(2,minmax(0,1fr)); align-self:center; background:var(--surface); border:1px solid var(--answer-line); border-radius:13px; padding:3px; z-index:1; box-shadow:0 4px 14px rgba(15,23,42,.04); } /* 헤더 가운데 배치 + 두 칸 동일 폭 */
	.leftSeg[hidden] { display:none; }
	.lsBtn { border:none; background:none; font-family:inherit; font-size:13px; font-weight:600; color:var(--sub); padding:6px 13px; border-radius:10px; cursor:pointer; text-align:center; white-space:nowrap; }
	.lsBtn.on { background:#fff; color:var(--ink); box-shadow:0 1px 3px rgba(15,23,42,.08); }
	/* 내 콘텐츠 패널(찜+저장) — 일정 편집 시 좌측 */
	.myContent { display:none; }
	.app.leftContent .msgs, .app.leftContent .foot { display:none; }
	.app.leftContent .myContent { display:flex; }
	.leftItin { display:none; flex:1; min-height:0; overflow:hidden; background:#fff; flex-direction:column; }
	.app.leftItinMode .msgs, .app.leftItinMode .foot, .app.leftItinMode .myContent { display:none; }
	.app.leftItinMode .leftItin { display:flex; }
	.app.leftItinMode .leftItin .daylist { position:relative; inset:auto; flex:1; min-height:0; display:block; overflow-y:auto; padding:0 30px 48px; background:#fff; }
	.app.leftItinMode .leftItin .day { margin-bottom:30px; }
	.app.leftItinMode .leftItin .dayhd { top:0; margin:0 -30px 12px; padding:7px 30px; }
	.app.leftItinMode .leftItin .dayhd b { font-size:16px; }
	.app.leftItinMode .leftItin .item { gap:10px; padding:10px 9px; } /* 상하 +2px(소유자 2026-08-11) */
	.app.leftItinMode .leftItin .item .thumb { width:48px; height:48px; }
	.app.leftItinMode .leftItin .item .nm { font-size:14.5px; }
	.app.leftItinMode .leftItin .stayCard { padding:8px 9px; }
	.app.leftItinMode .leftItin .stayCard .scNm { font-size:13px; }
	.app.leftItinMode .leftItin .paneMsg { padding:64px 20px 24px; }
	.app.leftItinMode .leftItin .day > .item,
	.app.leftItinMode .leftItin .day > .stayCard,
	.app.leftItinMode .leftItin .day > .noteShow,
	.app.leftItinMode .leftItin .day > .noteSum,
	.app.leftItinMode .leftItin .day > .noteGhost,
	.app.leftItinMode .leftItin .day > .noteEditRow,
	.app.leftItinMode .leftItin .day > .dayEmpty { width:min(calc(100% - 60px), 564px); margin:0 auto 8px; transform:none; } /* noteShow·noteGhost·noteEditRow = 카드와 같은 폭·센터(밑면 이어붙음, 2026-08-02) */
	.app.leftItinMode .leftItin .day > .noteGhost { height:8px; } /* 접힘 고스트 = 8px 스페이서(위 폭 규칙 합류의 부작용 방지) */
	.app.leftItinMode .leftItin .day > .memoAddBtn,
	.app.leftItinMode .leftItin .day > .memoAddBtn.empty { width:fit-content; min-width:116px; height:32px; min-height:32px; max-height:32px; flex:0 0 auto; align-self:center; padding:0 13px; margin:0 auto; transform:none; border-radius:999px; box-sizing:border-box; }
	.app.leftItinMode .leftItin .itDist { width:min(calc(100% - 60px), 564px); margin:0 auto 8px; padding-left:0; justify-content:center; }
	.app.leftItinMode .leftItin .itDist .itMove { justify-content:center; text-align:center; }
	.app.leftItinMode .leftItin .day > .dayRouteStatus { width:min(calc(100% - 60px), 564px); margin:-4px auto 10px; }
	.app.leftItinMode .leftItin .itDir { opacity:1; pointer-events:auto; }
	.msgs { flex:1; overflow-y:auto; padding:30px max(34px, calc((100% - 780px) / 2)); display:flex; flex-direction:column; gap:18px; }
	.row { display:flex; gap:10px; max-width:min(94%, 780px); min-width:0; }
	.row.me { align-self:flex-end; flex-direction:row-reverse; }
	.av { width:28px; height:28px; border-radius:8px; flex-shrink:0; display:flex; align-items:center; justify-content:center; background:var(--surface2); color:var(--ink); }
	.av svg { width:15px; height:15px; }
	.bubble { padding:12px 15px; border-radius:20px; font-size:16px; line-height:1.7; white-space:pre-wrap; word-break:break-word; }
	.me .bubble { background:var(--ink); color:#fff; border-top-right-radius:8px; }
	.loadOlder { display:block; margin:2px auto 16px; padding:7px 16px; border:1px solid var(--ctrl-line); border-radius:999px; background:#fff; color:var(--sub); font-family:inherit; font-size:12.5px; font-weight:600; cursor:pointer; transition:background .12s ease, color .12s ease; }
	.loadOlder:hover { background:var(--surface); color:var(--ink); }
	.loadOlder:active { opacity:.6; }
	.bot .bubble { background:transparent; color:var(--ink); padding:0; border:none; border-radius:0; white-space:normal; font-size:16px; font-weight:500; line-height:1.7; min-width:0; box-shadow:none; }
	.bot .bubble p { margin:0 0 18px; } .bot .bubble p:last-child { margin-bottom:0; }
	.bot .bubble h3, .bot .bubble h4, .bot .bubble h5 { line-height:1.3; }
	.bot .bubble > :first-child, .bot .bubble h3:first-child, .bot .bubble h4:first-child, .bot .bubble h5:first-child { margin-top:0; }
	.bot .bubble h3 { margin:24px 0 10px; font-size:19px; font-weight:600; color:var(--ink); letter-spacing:0; }
	.bot .bubble h4 { margin:26px 0 10px; font-size:18px; font-weight:600; color:var(--ink); letter-spacing:0; }
	.bot .bubble h5 { margin:26px 0 10px; font-size:24px; font-weight:600; color:var(--ink); letter-spacing:0; }
	.bot .bubble ul, .bot .bubble ol { margin:10px 0 14px; padding-left:19px; }
	.bot .bubble li { margin:7px 0; line-height:1.7; }
	.bot .bubble code { background:var(--surface); padding:1px 5px; border-radius:4px; font-size:13px; font-variant-numeric:tabular-nums; }
	.bot .bubble a { color:var(--accent); text-decoration:underline; }
	.bot .bubble hr { border:none; border-top:1px solid rgba(6,27,49,.08); margin:28px 0; }
	.bot .bubble .mdtable { overflow-x:auto; margin:8px 0 14px; }
	.bot .bubble table { border-collapse:collapse; width:100%; font-size:13px; line-height:1.55; }
	.bot .bubble th, .bot .bubble td { border:1px solid var(--line); padding:6px 9px; text-align:left; vertical-align:top; }
	.bot .bubble th { background:var(--surface); font-weight:600; color:var(--ink); white-space:nowrap; }
	.chipsBlock { margin-top:18px; margin-left:37px; }
	.chipsHd { font-size:12px; font-weight:500; color:var(--muted); margin-bottom:8px; }
	.chips { display:flex; flex-wrap:wrap; gap:6px 5px; }
	.chip { padding:3px 12px; font-size:12.5px; font-weight:500; color:var(--ink); background:rgba(6,27,49,.05); border:1px solid transparent; border-radius:999px; cursor:pointer; line-height:1.55; transition:background .15s ease; }
	.chip:hover { background:rgba(6,27,49,.06); }
	.placeBlock { margin-top:10px; margin-left:37px; }
	.placeHd { font-size:12.5px; font-weight:600; color:var(--ink); margin-bottom:7px; }
	.placeList { display:flex; flex-direction:column; gap:0; padding:2px 0 4px; }
	.placeList .prow + .prow, .bot .bubble > .prow + .prow { border-top:1px solid var(--line-soft); margin-top:24px; padding-top:24px; }
	.bot .bubble .prow { margin:16px 0 26px; text-decoration:none; }
	/* 카테고리 소제목 → 바로 아래 장소 카드 간격 = 2px(소유자 2026-07-13). 각 카테고리 그룹의 첫 카드만, 카드끼리(.prow+.prow 24px)는 유지 */
	.bot .bubble h3:has(+ .prow[data-pi]), .bot .bubble h4:has(+ .prow[data-pi]), .bot .bubble h5:has(+ .prow[data-pi]) { margin-bottom:2px; }
	/* 단, 소제목 아래 '장르 설명' 줄과 첫 카드는 2px이면 붙어 읽힘(소유자 2026-07-27) → 12px로 띄운다. 카드끼리 24px보다는 좁게 둬서 그룹 소속은 유지 */
	.bot .bubble p:has(+ .prow[data-pi]) { margin-bottom:12px; }
	.bot .bubble h3 + .prow[data-pi], .bot .bubble h4 + .prow[data-pi], .bot .bubble h5 + .prow[data-pi], .bot .bubble p + .prow[data-pi] { margin-top:0; }
	.bot .bubble a.fcard, .bot .bubble a.prow { color:var(--ink); text-decoration:none; }
	.prDesc { font-size:15.5px; color:var(--ink); line-height:1.42; display:flex; flex-direction:column; gap:3px; overflow:visible; }
	.prBriefMain, .prBriefPoint { min-width:0; overflow:visible; white-space:normal; text-overflow:clip; word-break:keep-all; overflow-wrap:anywhere; }
	.prBriefPoint { display:block; font-size:14.5px; line-height:1.38; }
	.prBriefPoint b { color:var(--ink); font-weight:600; }
	.prCat { font-size:12.5px; color:var(--ink); line-height:1.4; margin-top:6px; margin-bottom:5px; }
	.prDesc strong { color:var(--ink); font-weight:600; }
	.bot .bubble .pMention { cursor:pointer; border-bottom:1px dashed rgba(6,27,49,.3); transition:color .12s ease, border-color .12s ease; }
	.bot .bubble .pMention:hover { color:var(--accent); border-bottom-color:var(--accent); }
	.bot .bubble .prNm.pMention,
	.bot .bubble .prNm.pMention:hover { color:inherit; border-bottom:none; }
	.prName .prIco { width:16px; height:16px; margin-top:2px; flex:0 0 auto; }
	.bot .bubble .moreHd { font-size:13px; font-weight:600; color:var(--ink); margin:32px 0 6px; padding-top:26px; border-top:1px solid rgba(6,27,49,.08); }
	.bot .bubble .moreHd.hotelCatHd { font-size:20px; font-weight:800; line-height:1.28; display:flex; align-items:center; gap:7px; margin:34px 0 8px; padding-top:28px; letter-spacing:0; color:#061727; }
	.bot .bubble .moreHd.hotelFinalHd,
	.bot .bubble .moreHd.placeFinalHd { margin:36px 0 9px; padding-top:30px; font-size:21px; font-weight:800; color:#061727; }
	.bot .bubble > .moreHd.hotelFinalHd:first-child,
	.bot .bubble > .moreHd.placeFinalHd:first-child { margin-top:0; padding-top:0; }
	.bot .bubble .hotelCatEmoji { font-size:21px; line-height:1; flex:0 0 auto; transform:translateY(-1px); }
	.bot .bubble .hotelCatSub { font-size:13px; line-height:1.45; color:var(--sub); margin:-2px 0 13px; }
	.bot .bubble .hotelCatHd + .hotelCatSub { max-width:620px; color:#667085; }
	.bot .bubble .hotelFinalSub { max-width:680px; margin:0 0 22px; font-size:15px; font-weight:500; line-height:1.82; color:#142033; }
	.bot .bubble .hotelFinalSub p { margin:0; }
	.bot .bubble .hotelFinalSub ul { margin:0 0 14px; padding-left:20px; color:#061727; }
	.bot .bubble .hotelFinalSub li { margin:0 0 9px; padding-left:3px; line-height:1.72; }
	.bot .bubble .hotelFinalSub li:last-child { margin-bottom:0; }
	.bot .bubble .hotelFinalSub li::marker { font-size:.78em; color:#061727; }
	.bot .bubble .hotelFinalSub .finalCond { font-weight:800; color:#061727; }
	.bot .bubble .hotelFinalSub .finalArrow { display:inline-block; margin:0 4px; color:#061727; font-weight:700; }
	.bot .bubble .hotelFinalSub .finalBed { margin-right:3px; }
	.bot .bubble .hotelFinalSub .finalQuestion { margin:14px 0 0; color:#142033; font-size:15px; font-weight:500; line-height:1.75; }
	.bot .bubble .hotelFinalSub .pMention { font-weight:800; color:var(--ink); border-bottom:1px dashed rgba(6,27,49,.3); }
	.bot .bubble .hotelFinalSub .pMention:hover { color:var(--accent); border-bottom-color:var(--accent); }
	.bot .bubble .placeFinalProse { max-width:680px; margin:0 0 22px; font-size:15px; font-weight:500; line-height:1.82; color:#142033; }
	.bot .bubble .placeFinalProse p { margin:0 0 12px; }
	.bot .bubble .placeFinalProse p:last-child { margin-bottom:0; }
	.bot .bubble .placeFinalProse .pMention { font-weight:800; color:var(--ink); border-bottom:1px dashed rgba(6,27,49,.3); }
	.bot .bubble .placeFinalProse .pMention:hover { color:var(--accent); border-bottom-color:var(--accent); }
	.bot .bubble .finalTake { font-weight:700; color:#061727; }
	.bot .bubble > .moreHd:first-child, .bot .bubble .moreHd:first-child { border-top:none; padding-top:0; margin-top:0; }
	.bot .bubble .moreSub { font-size:12px; color:var(--sub); margin:0 0 14px; }
	.prow { display:flex; gap:18px; align-items:flex-start; max-width:780px; text-decoration:none; cursor:pointer; position:relative; transition:transform .18s ease; }
	.prow.swiping { transition:none; cursor:grabbing; user-select:none; }
	.prow .prThumb img { -webkit-user-drag:none; user-drag:none; }
	.prow.swiping::before { content:'인용'; position:absolute; right:100%; top:50%; transform:translateY(-50%); margin-right:14px; white-space:nowrap; font-size:12.5px; font-weight:600; color:var(--muted); display:inline-flex; align-items:center; gap:4px; }
	.prow.willQuote::before { content:'놓으면 인용'; color:var(--ink); }
	@media (prefers-reduced-motion: reduce) { .prow { transition:none; } }
	.prow.quoted { box-shadow:0 0 0 1.5px var(--accent); }
	.prow.quoted:hover { box-shadow:0 0 0 2px var(--accent), var(--pc-shadow); }
	.prInfo { flex:1 1 200px; min-width:0; padding:3px 0 0; display:flex; flex-direction:column; gap:6px; }
	.prName { font-size:16px; font-weight:700; color:var(--ink); line-height:1.34; display:flex; align-items:flex-start; gap:6px; }
	.prName .prNm { display:block; overflow:visible; min-width:0; word-break:keep-all; overflow-wrap:anywhere; }
	.prRating { display:flex; align-items:center; gap:3px; font-size:13px; font-weight:600; color:var(--ink); }
	.prRating .prStar { color:var(--star); line-height:1; }
	.prRating .prRc { color:var(--ink); font-weight:400; }
	.prMeta { font-size:12.5px; color:var(--ink); line-height:1.5; display:block; overflow:visible; word-break:keep-all; overflow-wrap:anywhere; }
	.prThumb { flex:0 0 224px; min-width:160px; aspect-ratio:1.18/1; border-radius:15px; overflow:hidden; background:var(--surface2); position:relative; transition:box-shadow .15s ease; }
	.prow:hover .prThumb { box-shadow:var(--pc-shadow); }
	.prThumb .prCar { position:absolute; inset:0; }
	.prThumb .prCar img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; opacity:0; transition:opacity .25s ease; }
	.prThumb .prCar img.on { opacity:1; }
	.prThumb.imgFailed::after { content:""; position:absolute; inset:0; background:linear-gradient(135deg,var(--surface2),#efeee9); z-index:1; }
	.prThumb.imgFailed::before { content:""; position:absolute; left:50%; top:50%; width:34px; height:26px; transform:translate(-50%,-50%); border:2px solid rgba(100,116,139,.45); border-radius:6px; box-sizing:border-box; z-index:2; }
	.prThumb.imgFailed .prScrim, .prThumb.imgFailed .prDots { display:none; }
	.prThumb.imgFailed .prFav, .prThumb.imgFailed .prAdd { z-index:3; }
	.prThumb .prScrim { position:absolute; left:0; right:0; bottom:0; height:34px; background:linear-gradient(to top, rgba(6,27,49,.4), transparent); pointer-events:none; }
	.prThumb .prDots { position:absolute; bottom:9px; left:50%; transform:translateX(-50%); display:flex; gap:4px; z-index:2; }
	.prThumb .prDots i { width:5px; height:5px; border-radius:50%; background:rgba(255,255,255,.6); cursor:pointer; transition:background .12s ease; }
	.prThumb .prDots i.on { background:#fff; }
	.prThumb .prNav { position:absolute; top:50%; transform:translateY(-50%); width:26px; height:26px; border:none; border-radius:50%; background:rgba(255,255,255,.92); color:var(--ink); display:flex; align-items:center; justify-content:center; cursor:pointer; opacity:0; transition:opacity .15s ease; z-index:3; box-shadow:0 1px 4px rgba(0,0,0,.22); padding:0; }
	.prThumb .prNav svg { width:13px; height:13px; }
	.prThumb .prNav.prev { left:8px; }
	.prThumb .prNav.next { right:8px; }
	.prThumb:hover .prNav, .prThumb .prNav:focus-visible { opacity:1; }
	.prThumb .prNav:hover { background:#fff; }
	/* 카드 우상단 액션 = savedP 장소 카드와 같은 규격(소유자 2026-08-10 "savedP 랑 맞추자").
	   savedP 가 MT 실측으로 맞춘 값을 그대로 가져온다: 버튼 25 · 우 13 / 위 13 · 간격 8 · ♥ svg 25 · ⊕ svg 27.
	   검은 판(rgba(17,24,39,.5) 34px 원)을 걷고 아이콘 자체에 흰 테두리를 둘러 어떤 사진 위에서도 읽히게 한다 —
	   판 두 개가 사진 위에 얹히면 무겁다는 게 savedP 에서 이미 정리된 결론이다. svg 가 버튼보다 큰 건 MT 그대로(overflow:visible). */
	.prAdd { position:absolute; top:13px; right:13px; width:25px; height:25px; padding:0; border:0; border-radius:50%; background:transparent; display:flex; align-items:center; justify-content:center; overflow:visible; cursor:pointer; }
	.prAdd:hover { background:rgba(17,24,39,.72); }
	.prAdd svg { flex:0 0 auto; width:27px; height:27px; fill:rgba(0,0,0,.5); stroke:rgba(255,255,255,.95); stroke-width:1.6; filter:drop-shadow(0 1px 2px rgba(0,0,0,.28)); transition:transform .12s ease; }
	.prAdd svg line { stroke:rgba(255,255,255,.95); stroke-width:2; }
	.prAdd.added { background:var(--accent); cursor:default; }
	.prAdd.added:hover { background:var(--accent); }
.prow.mapSel:not(.pmini) { border-radius:0; background:transparent; box-shadow:none; }
.prow.mapSel:not(.pmini) .prThumb { box-shadow:none !important; transition:none; }
.prow.mapSel:not(.pmini):hover .prThumb, .prow.mapSel:not(.pmini).cardHover .prThumb { box-shadow:none !important; }
	.bot .bubble .moreGrid { display:flex; gap:12px; overflow-x:auto; overflow-y:hidden; max-width:780px; margin:0 0 24px; padding-bottom:6px; scroll-snap-type:x proximity; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
	.bot .bubble .moreGrid::-webkit-scrollbar { display:none; }
	.bot .bubble .moreGrid > * { flex:0 0 146px; scroll-snap-align:start; }
	.bot .bubble .moreGrid.dragging { cursor:grabbing; }
	.prow.pmini { display:block; flex:none; margin:0; max-width:none; gap:0; }
	.prow.pmini .pmThumb { width:100%; aspect-ratio:1/1; border-radius:8px; overflow:hidden; background:var(--surface2); transition:box-shadow .15s ease; }
	.prow.pmini .pmThumb img { width:100%; height:100%; object-fit:cover; display:block; }
	.prow.pmini:hover .pmThumb { box-shadow:var(--pc-shadow); }
	.prow.pmini .pmBody { padding:6px 2px 0; }
	.prow.pmini.pmNoimg .pmBody { padding:10px 10px; border:1px solid var(--line); border-radius:8px; min-height:54px; }
	.prow.pmini .pmName { font-size:13px; font-weight:600; color:var(--ink); line-height:1.32; display:block; overflow:visible; word-break:keep-all; overflow-wrap:anywhere; }
	.prow.pmini .pmRate { margin-top:3px; font-size:11.5px; font-weight:600; color:var(--ink); }
	.prow.pmini .pmRate .s { color:var(--star); }
	.prow.pmini .pmRate.pmPrice { color:var(--ink); font-weight:700; }
	.prow.pmini .pmRate.pmPrice i { font-weight:600; font-size:10px; font-style:normal; margin-left:1px; }
	.prow.pmini.mapSel { border-radius:8px; background:transparent; box-shadow:none; }
.prow.pmini.mapSel .pmThumb, .prow.pmini.pmNoimg.mapSel .pmBody { box-shadow:none; transition:box-shadow .15s ease; }
	.prow.pmini.quoted { box-shadow:none; }
	.prow.pmini.quoted .pmThumb, .prow.pmini.pmNoimg.quoted .pmBody { box-shadow:0 0 0 1.5px var(--accent); }
	.bot .bubble .fcGrid { display:grid; grid-template-columns:repeat(auto-fill, minmax(184px, 1fr)); gap:10px; max-width:780px; margin:0 0 6px; }
	.fcard { display:flex; flex-direction:column; gap:5px; padding:13px 14px; border:1px solid var(--line); border-radius:10px; background:var(--bg); text-decoration:none; transition:box-shadow .15s ease, border-color .15s ease; }
	a.fcard:hover { border-color:var(--accent); box-shadow:var(--pc-shadow); }
	.fcard .fcRoute { font-size:15px; font-weight:600; color:var(--ink); line-height:1.3; }
	.fcard .fcRoute .fcAr { color:var(--muted); font-weight:400; margin:0 2px; }
	.fcard .fcMeta { font-size:12px; color:var(--sub); line-height:1.4; }
	.fcard .fcBot { display:flex; align-items:baseline; justify-content:space-between; gap:8px; margin-top:3px; flex-wrap:wrap; }
	.fcard .fcPrice { font-size:17px; font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums; }
	.fcard .fcPrice i { font-size:12px; font-weight:600; font-style:normal; margin-left:1px; }
	.fcard .fcGo { font-size:12.5px; font-weight:600; color:var(--accent); white-space:nowrap; }
	.fcard.nolink { cursor:default; }
	.bot .bubble .fcCap { font-size:11.5px; color:var(--muted); margin:0 0 18px; line-height:1.5; }
	.bot .bubble .hcGrid { display:flex; flex-direction:column; gap:0; max-width:780px; margin:16px 0 26px; }
	.bot .bubble .hotelCatHd + .hotelCatSub + .hcGrid { margin-top:14px; padding-left:22px; }
	.bot .bubble .hcGrid .prowHotel:not(.pmini) { margin:0; }
	.bot .bubble .hcGrid .prowHotel:not(.pmini) + .prowHotel:not(.pmini) { border-top:1px solid var(--line-soft); margin-top:24px; padding-top:24px; }
	.prowHotel:not(.pmini) .prName { font-size:16.5px; font-weight:650; color:#142033; }
	.prowHotel:not(.pmini) .prIco { width:14px; height:14px; margin-top:3px; opacity:.78; }
	.prowHotel:not(.pmini) .prRating { gap:3px; flex-wrap:wrap; row-gap:2px; font-size:13.5px; color:#4b5563; }
	.prowHotel:not(.pmini) .prDesc { font-size:15px; line-height:1.45; color:#263445; }
	.hcScore { color:var(--ink); font-weight:700; font-variant-numeric:tabular-nums; }
	.hcSlash { font-style:normal; color:var(--muted); font-size:11px; font-weight:500; margin-right:2px; }
	.hcBook { display:flex; align-items:baseline; gap:9px; margin-top:3px; flex-wrap:wrap; }
	.hcPrice { font-size:16px; font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums; }
	.hcPrice i { font-size:12px; font-weight:600; font-style:normal; margin-left:1px; }
	@media (min-width: 769px) and (max-width: 1100px) {
		.bot .bubble .prow:not(.pmini) { flex-direction:column; gap:10px; }
		.bot .bubble .prow:not(.pmini) .prInfo { width:100%; padding:0; }
		.bot .bubble .prow:not(.pmini) .prThumb { order:-1; flex:none; width:100%; min-width:0; aspect-ratio:16/9; border-radius:12px; }
	}
	.quoteBar { display:none; flex-wrap:wrap; gap:6px; margin:0 0 8px 37px; }
	.quoteBar.on { display:flex; }
	.quoteChip { display:inline-flex; align-items:center; gap:6px; max-width:240px; padding:5px 8px 5px 10px; border:1px solid var(--line); border-radius:6px; background:var(--surface); font-size:12.5px; color:var(--ink); }
	.quoteChip .qcPin { width:12px; height:12px; flex:0 0 auto; color:var(--sub); }
	.quoteChip .qcNm { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
	.quoteChip .qcX { flex:0 0 auto; width:16px; height:16px; display:inline-flex; align-items:center; justify-content:center; border:none; background:none; color:var(--muted); cursor:pointer; padding:0; border-radius:4px; }
	.quoteChip .qcX:hover { color:var(--ink); background:#e7e5df; }
	.quoteChip .qcX svg { width:11px; height:11px; }
	.prFav { position:absolute; top:13px; right:46px; width:25px; height:25px; padding:0; border:0; border-radius:50%; background:transparent; display:flex; align-items:center; justify-content:center; overflow:visible; cursor:pointer; }
	.prFav:hover { background:rgba(17,24,39,.72); }
	.prFav svg { flex:0 0 auto; width:25px; height:25px; fill:rgba(0,0,0,.35); stroke:rgba(255,255,255,.95); stroke-width:1.6; filter:drop-shadow(0 1px 2px rgba(0,0,0,.28)); transition:transform .12s ease; }
	.prFav.on svg { fill:#dc3e42; } /* 저장됨 = savedP·MT 와 같은 빨강(흰 테두리는 유지) */
	.prFav::after { content:attr(data-save-label); position:absolute; right:calc(100% + 7px); top:50%; transform:translate(4px,-50%); opacity:0; pointer-events:none; height:24px; padding:0 8px; display:inline-flex; align-items:center; border-radius:7px; background:rgba(17,24,39,.82); color:#fff; font-size:11px; font-weight:700; white-space:nowrap; box-shadow:0 4px 12px rgba(15,23,42,.16); transition:opacity .12s ease, transform .12s ease; }
	.prFav:hover::after, .prFav:focus-visible::after, .prFav.saving::after { opacity:1; transform:translate(0,-50%); }
	.prFav.saving { cursor:progress; background:rgba(17,24,39,.72); }
	.prFav.saving svg { opacity:.6; animation:savePulse .72s ease-in-out infinite alternate; }
	.prFav:disabled { pointer-events:auto; cursor:progress; }
	@keyframes savePulse { from { transform:scale(.92); opacity:.48; } to { transform:scale(1.06); opacity:1; } }
	.prow[data-pi] .prThumb .prFav, .prow[data-pi] .prThumb .prAdd { opacity:0; visibility:hidden; pointer-events:none; transform:translateY(-2px); transition:opacity .14s ease, transform .14s ease, visibility .14s ease, background .12s ease; }
	.prow[data-pi]:hover .prThumb .prFav, .prow[data-pi]:hover .prThumb .prAdd, .prow[data-pi].cardHover .prThumb .prFav, .prow[data-pi].cardHover .prThumb .prAdd, .prow[data-pi].mapSel .prThumb .prFav, .prow[data-pi].mapSel .prThumb .prAdd, .prow[data-pi] .prThumb:focus-within .prFav, .prow[data-pi] .prThumb:focus-within .prAdd { opacity:1; visibility:visible; pointer-events:auto; transform:none; }
	.chatHoverPreview.mkPreview { position:fixed; width:240px; max-width:calc(100vw - 32px); background:var(--bg); border:1px solid var(--line); border-radius:18px; box-shadow:var(--pc-shadow); overflow:hidden; z-index:90; display:none; pointer-events:auto; animation:chatHvIn .14s ease both; cursor:pointer; transform:none; margin-top:0; font-family:inherit; }
	.chatHoverPreview.mkPreview .ph { position:relative; width:100%; height:158px; background:var(--surface); overflow:hidden; }
	.chatHoverPreview.mkPreview .ph img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:0; transition:opacity .22s ease; }
	.chatHoverPreview.mkPreview .ph img.on { opacity:1; }
	.chatHoverPreview.mkPreview .mkNav { position:absolute; top:50%; transform:translateY(-50%); width:28px; height:28px; display:inline-flex; align-items:center; justify-content:center; padding:0; border:none; border-radius:50%; background:rgba(17,24,39,.42); color:#fff; cursor:pointer; opacity:0; -webkit-backdrop-filter:blur(2px); backdrop-filter:blur(2px); transition:opacity .12s ease, background .12s ease; }
	.chatHoverPreview.mkPreview .ph:hover .mkNav { opacity:1; }
	.chatHoverPreview.mkPreview .mkNav:hover { background:rgba(17,24,39,.64); }
	.chatHoverPreview.mkPreview .mkPrev { left:7px; }
	.chatHoverPreview.mkPreview .mkNext { right:7px; }
	.chatHoverPreview.mkPreview .mkNav svg { width:15px; height:15px; }
	.chatHoverPreview.mkPreview .mkDots { position:absolute; left:0; right:0; bottom:8px; display:flex; justify-content:center; gap:5px; pointer-events:none; }
	.chatHoverPreview.mkPreview .mkDots i { width:6px; height:6px; border-radius:50%; background:rgba(255,255,255,.55); box-shadow:0 0 2px rgba(0,0,0,.35); transition:background .12s ease; }
	.chatHoverPreview.mkPreview .mkDots i.on { background:#fff; }
	.chatHoverPreview.mkPreview .mkOv { position:absolute; top:9px; right:9px; display:flex; gap:7px; }
	.chatHoverPreview.mkPreview .mkOv .mkAct { display:inline-flex; align-items:center; justify-content:center; width:32px; height:32px; padding:0; border:none; border-radius:50%; background:rgba(17,24,39,.5); color:#fff; cursor:pointer; -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px); box-shadow:0 1px 4px rgba(0,0,0,.2); transition:background .12s ease; }
	.chatHoverPreview.mkPreview .mkOv .mkAct:hover { background:rgba(17,24,39,.72); }
	.chatHoverPreview.mkPreview .mkOv .mkFav svg { fill:none; stroke:#fff; }
	.chatHoverPreview.mkPreview .mkOv .mkFav.on svg { fill:#fb5a86; stroke:#fb5a86; }
	.chatHoverPreview.mkPreview .mkOv .mkAdded { background:var(--accent); cursor:default; }
	.chatHoverPreview.mkPreview .mkOv .mkRemove { cursor:pointer; }
	.chatHoverPreview.mkPreview .mkOv .mkRemove .mkIcMinus { display:none; }
	.chatHoverPreview.mkPreview .mkOv .mkRemove:hover { background:#e5484d; }
	.chatHoverPreview.mkPreview .mkOv .mkRemove:hover .mkIcChk { display:none; }
	.chatHoverPreview.mkPreview .mkOv .mkRemove:hover .mkIcMinus { display:inline; }
	.chatHoverPreview.mkPreview .mkAct svg { width:15px; height:15px; }
	.chatHoverPreview.mkPreview .bd { padding:11px 13px 13px; }
	.chatHoverPreview.mkPreview .nmRow { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; }
	.chatHoverPreview.mkPreview .nm { font-weight:600; font-size:15px; color:var(--ink); line-height:1.3; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
	.chatHoverPreview.mkPreview .rtR { flex-shrink:0; font-size:12.5px; color:var(--ink); font-weight:600; white-space:nowrap; padding-top:2px; }
	.chatHoverPreview.mkPreview .rtR .st { color:#f59e0b; }
	.chatHoverPreview.mkPreview .mt { font-size:12px; color:var(--sub); display:flex; align-items:center; gap:7px; flex-wrap:wrap; margin-top:5px; }
	.chatHoverPreview.mkPreview .rt { color:#f59e0b; font-weight:700; }
	.chatHoverPreview.mkPreview .rc { color:var(--muted); font-weight:500; margin-left:2px; }
	.chatHoverPreview.mkPreview .cat { display:inline-flex; align-items:center; gap:5px; }
	.chatHoverPreview.mkPreview .dot { width:7px; height:7px; border-radius:50%; flex-shrink:0; }
	.chatHoverPreview.mkPreview .loc { font-size:11.5px; color:var(--muted); margin-top:4px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
	.chatHoverPreview.mkPreview .desc { font-size:12px; color:var(--sub); line-height:1.45; margin-top:7px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
	@keyframes chatHvIn { from { opacity:0; transform:translateY(4px); } to { opacity:1; transform:none; } }
	.typing .bubble { display:inline-flex; align-items:center; color:var(--muted); font-size:13.5px; font-weight:500; }
	.thinkCue { display:inline-flex; align-items:center; gap:10px; min-height:36px; padding:7px 12px; border:1px solid rgba(83,58,253,.14); border-radius:18px; background:linear-gradient(180deg,#fffdf9,#f6f5f2); box-shadow:0 4px 12px rgba(15,23,42,.05); }
	.routeSig { position:relative; width:78px; height:18px; flex:0 0 78px; display:flex; align-items:center; }
	.routeSig::before { content:""; position:absolute; left:4px; right:4px; top:50%; height:2px; transform:translateY(-50%); background:linear-gradient(90deg,rgba(83,58,253,.12),rgba(83,58,253,.46),rgba(16,152,173,.35),rgba(83,58,253,.12)); border-radius:999px; }
	.routeSig i { position:absolute; top:50%; width:8px; height:8px; border-radius:50%; background:#d9d4ff; transform:translateY(-50%); box-shadow:0 0 0 3px rgba(83,58,253,.08); }
	.routeSig i:nth-child(1) { left:0; }
	.routeSig i:nth-child(2) { left:34px; background:#cfd7ff; }
	.routeSig i:nth-child(3) { right:0; background:#caedf1; box-shadow:0 0 0 3px rgba(16,152,173,.10); }
	.routeSig .pulse { position:absolute; left:0; top:50%; width:12px; height:12px; border-radius:50%; background:linear-gradient(135deg,var(--accent),#1098ad); transform:translate(-2px,-50%); box-shadow:0 0 0 5px rgba(83,58,253,.10); animation:routeTravel 2.1s cubic-bezier(.55,0,.25,1) infinite; }
	.thinkCopy { color:#4f6178; font-size:13.5px; font-weight:600; line-height:1.35; letter-spacing:0; white-space:nowrap; }
	@keyframes bl { 0%, 80%, 100% { opacity:.35; transform:translateY(0); } 40% { opacity:1; transform:translateY(-3px); } }
	@keyframes routeTravel { 0% { left:0; opacity:.34; transform:translate(-2px,-50%) scale(.76); } 16% { opacity:1; transform:translate(-2px,-50%) scale(1); } 45% { left:34px; opacity:1; transform:translate(-2px,-50%) scale(.9); } 78% { left:66px; opacity:1; transform:translate(-2px,-50%) scale(1); } 100% { left:66px; opacity:.28; transform:translate(-2px,-50%) scale(.72); } }
	@media (prefers-reduced-motion: reduce) {
		.routeSig .pulse { animation:none; left:34px; opacity:.85; }
	}
	.foot { padding:14px max(34px, calc((100% - 780px) / 2)) 16px; }
	.inbar { display:flex; align-items:flex-end; gap:7px; margin-left:37px; background:#fff; border:1px solid var(--line); border-radius:24px; padding:7px 7px 7px 9px; box-shadow:0 1px 4px rgba(6,27,49,.06); transition:border-color .15s ease; }
	.inbar:focus-within { border-color:#b9c8da; }
	.inbar textarea { flex:1; border:none; background:none; resize:none; outline:none; font-family:inherit; font-size:14px; line-height:1.5; max-height:110px; padding:6px 4px; color:var(--ink); }
	.inbar button { width:38px; height:38px; flex-shrink:0; border:none; border-radius:50%; background:var(--accent); color:#fff; cursor:pointer; display:flex; align-items:center; justify-content:center; }
	.inbar button svg { width:18px; height:18px; }
	.inbar button:disabled { background:var(--surface2); color:var(--muted); cursor:default; }
	.inbar .inAdd { background:transparent; color:var(--ink); }
	.inbar .inAdd:hover { background:#e7e5df; color:var(--ink); }
	.trippane { flex:1 1 0; min-width:0; display:flex; flex-direction:column; position:relative; background:#fff; border-left:1px solid var(--line); border-radius:20px 0 0 20px; overflow:hidden; }
	.canvasTop { position:absolute; top:0; left:0; right:0; z-index:10; display:flex; align-items:flex-start; gap:10px; padding:var(--pc-canvas-pad,14px) 16px; pointer-events:none; }
	.canvasTop > * { pointer-events:auto; }
	.canvasTop.ctSolid { background:var(--bg); }
	.ctLeft { display:flex; align-items:center; gap:8px; }
	.ctRight { margin-left:auto; display:flex; align-items:center; gap:8px; }
	/* 액션 그룹 — [저장하기]/[공유][동선 최적화]. 각 버튼 노출은 JS([hidden]).
	   버튼 스타일은 위치가 아니라 **컴포넌트(.ctOptBtn)** 에 건다 — 이 버튼들은 표면마다 사는 곳이 다르다
	   (.appBar / .chatHd / 모바일 .chatHd). 위치로 스코프하면 옮기는 순간 전부 무스타일이 된다(2026-07-28 두 번 겪음). */
	.hdActs { margin-left:auto; display:inline-flex; align-items:center; gap:6px; flex-shrink:0; }
	.hdActs:empty { display:none; }
	/* 아이콘만(소유자 2026-07-10) — 텍스트 라벨 제거, 정사각 아이콘 버튼. 구분은 title/aria + 아이콘 형태(공유=3원, 최적화=곡선) */
	.ctOptBtn { display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; width:34px; height:32px; padding:0; border:1px solid var(--ctrl-line); border-radius:8px; background:#fff; color:var(--sub); cursor:pointer; transition:background .12s ease, color .12s ease, border-color .12s ease; }
	.ctOptBtn[hidden] { display:none; }
	.ctOptBtn svg { width:16px; height:16px; }
	.ctOptBtn:hover { background:var(--surface); color:var(--ink); border-color:color-mix(in srgb, var(--accent) 25%, var(--line)); }
	.ctOptBtn.on { border-color:color-mix(in srgb, var(--accent) 40%, var(--line)); background:var(--tint); color:var(--accent); }
	/* 저장하기 = 미저장 일정의 주 액션(소유자 2026-07-10) — 텍스트 solid pill. 미저장일 때만 노출(그때 공유·최적화는 숨김이라 강조 충돌 없음) */
	#saveTripBtn { width:auto; gap:6px; padding:0 14px; background:var(--accent); border-color:var(--accent); color:#fff; font-family:inherit; font-size:12.5px; font-weight:600; white-space:nowrap; }
	#saveTripBtn:hover { background:var(--accent-strong); border-color:var(--accent-strong); color:#fff; }
	/* 동선 최적화 = 주(主) 액션 — 라벨 하이브리드(소유자 2026-07-10 예시검토): 아이콘+'최적화' 텍스트 solid pill(강조+명확). 공유는 아이콘만 중립 유지 */
	#ctOptBtn { width:auto; gap:6px; padding:0 12px; background:var(--accent); border-color:var(--accent); color:#fff; font-family:inherit; font-size:12.5px; font-weight:600; white-space:nowrap; }
	#ctOptBtn:hover { background:var(--accent-strong); border-color:var(--accent-strong); color:#fff; }
	#ctOptBtn.on { background:var(--accent-strong); border-color:var(--accent-strong); color:#fff; }
	/* 동선 최적화 플로팅 알약(소유자 2026-07-29) — 이득이 있을 때만 일정 판 우하단에 뜬다.
	   퍼플 솔리드가 맞는 이유: 저장하기(#saveTripBtn)와는 isDraft 로 **배타**라 한 화면에 같이 뜨지 않는다.
	   즉 이 알약이 뜬 순간 그 화면의 유일한 주 액션이다. 검정은 토스트 색이라 '알림'처럼 읽혀 액션과 구분이 흐려진다. */
	html:not(.isMobile) .optFab { position:absolute; right:22px; bottom:22px; z-index:12;
		display:inline-flex; align-items:center; padding:11px 18px; border:0; border-radius:999px;
		background:var(--accent); color:#fff; font-family:inherit; font-size:13px; font-weight:700; cursor:pointer;
		box-shadow:0 8px 24px rgba(83,58,253,.34); animation:optFabIn .18s cubic-bezier(.3,0,0,1) both; }
	html:not(.isMobile) .optFab:hover { background:var(--accent-strong); }
	@keyframes optFabIn { from { opacity:0; transform:translateY(6px); } to { opacity:1; transform:none; } }
	html.isMobile .optFab { display:none; } /* 모바일은 이번 범위 아님 */
	.viewToggle { position:absolute; left:50%; transform:translateX(-50%); display:inline-flex; background:#fff; border:1px solid var(--line); border-radius:8px; padding:3px; box-shadow:var(--pc-shadow); }
	.viewToggle[hidden] { display:none; }
	html:not(.isMobile) #tabItin { display:none; }
	html.isMobile #tabTT { display:none; }
	.vtBtn { border:none; background:none; font-family:inherit; font-size:13px; font-weight:600; color:var(--sub); padding:6px 16px; border-radius:6px; cursor:pointer; white-space:nowrap; transition:background .12s ease, color .12s ease; }
	.vtBtn.on { background:var(--ink); color:#fff; }
	.iconBtn { display:inline-flex; align-items:center; justify-content:center; width:38px; height:38px; flex-shrink:0; border:1px solid var(--ctrl-line); border-radius:8px; background:#fff; color:var(--ink); cursor:pointer; box-shadow:var(--pc-shadow); text-decoration:none; transition:background .12s ease; }
	.canvasTop .iconBtn { border-color:rgba(10,22,49,.13); box-shadow:0 1px 3px rgba(10,22,49,.14), 0 8px 22px -8px rgba(10,22,49,.32); }
	.iconBtn:hover { background:var(--surface); }
	.tripsPanel { position:absolute; inset:0; z-index:21; background:var(--bg); display:none; flex-direction:column; }
	.tripsPanel.on { display:flex; }
	.tripsPanel:focus { outline:none; }
	.tpHd { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:18px 28px; border-bottom:1px solid var(--line); flex-shrink:0; }
	.tpTitle { min-width:0; display:flex; align-items:center; gap:10px; }
	.tpHd b { font-size:18px; color:var(--ink); white-space:nowrap; }
	.tpCount { display:inline-flex; align-items:center; height:24px; padding:0 9px; border-radius:999px; background:var(--surface); color:var(--sub); font-size:12px; font-weight:700; }
	.tpCount[hidden] { display:none; }
	.tpTools { display:flex; align-items:center; gap:8px; margin-left:auto; }
	.tpNew, .tpClose { height:36px; border:1px solid var(--ctrl-line); border-radius:8px; background:#fff; color:var(--ink); cursor:pointer; display:inline-flex; align-items:center; justify-content:center; font-family:inherit; transition:background .12s ease, border-color .12s ease; }
	.tpNew { gap:6px; padding:0 12px 0 10px; font-size:13px; font-weight:700; white-space:nowrap; }
	.tpClose { width:36px; padding:0; }
	.tpNew:hover,
	.tpClose:hover { background:var(--surface); }
	.tpNew:focus-visible,
	.tpClose:focus-visible,
	.tpCard .cbody:focus-visible,
	.tpCard .acts > *:focus-visible { outline:2px solid color-mix(in srgb, var(--accent) 46%, transparent); outline-offset:2px; }
	.tpNew svg { width:16px; height:16px; }
	.tpClose svg { width:18px; height:18px; }
	.tpBody { flex:1; overflow-y:auto; padding:22px 28px 48px; }
	.tpState { min-height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:52px 24px; color:var(--sub); text-align:center; }
	.tpStateIcon { width:54px; height:54px; border-radius:16px; background:var(--surface); color:var(--muted); display:flex; align-items:center; justify-content:center; margin-bottom:16px; }
	.tpStateIcon svg { width:27px; height:27px; }
	.tpState b { color:var(--ink); font-size:16px; font-weight:700; letter-spacing:0; }
	.tpState p { margin:8px 0 0; font-size:13px; line-height:1.55; }
	.tpSpinner { width:28px; height:28px; border-radius:50%; border:3px solid var(--surface2); border-top-color:var(--accent); margin-bottom:16px; animation:tpSpin .8s linear infinite; }
	@keyframes tpSpin { to { transform:rotate(360deg); } }
	@media (prefers-reduced-motion: reduce) { .tpSpinner { animation:none; } }
	.tpGrid { display:grid; grid-template-columns:repeat(auto-fill, minmax(260px, 1fr)); gap:18px; align-content:start; }
	.tpCard { border:1px solid var(--line); border-radius:12px; overflow:hidden; background:#fff; display:flex; flex-direction:column; transition:box-shadow .14s ease, transform .14s ease; }
	.tpCard:hover { box-shadow:var(--pc-shadow); transform:translateY(-2px); }
	.tpCard .thumb { height:132px; background:var(--surface2); position:relative; overflow:hidden; }
	.tpCard .thumb img { width:100%; height:100%; object-fit:cover; display:block; }
	.tpCard .thumb .ph { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:var(--muted); }
	.tpCard .thumb.imgReady .ph { display:none; }
	.tpCard .thumb .ph svg { width:34px; height:34px; }
	.tpCard .cbody { padding:14px 14px 8px; cursor:pointer; flex:1; }
	.tpCard .tt { font-weight:600; color:var(--ink); font-size:14px; line-height:1.35; }
	.tpCard .ts { color:var(--sub); font-size:12px; margin-top:3px; }
	.tpChips { display:flex; flex-wrap:wrap; gap:6px; margin-top:10px; }
	.tpChips span { display:inline-flex; align-items:center; min-height:24px; padding:0 8px; border-radius:999px; background:var(--surface); color:var(--sub); font-size:12px; font-weight:700; line-height:1; }
	.tpCard .acts { display:flex; gap:8px; padding:8px 14px 14px; }
	.tpCard .acts > * { flex:1; text-align:center; padding:8px 0; border-radius:7px; font-size:12.5px; font-weight:600; cursor:pointer; text-decoration:none; border:1px solid var(--ctrl-line); background:#fff; color:var(--ink); font-family:inherit; transition:background .12s ease; }
	.tpCard .acts .tpOpen { background:var(--ink); color:#fff; border-color:var(--ink); }
	.tpCard .acts .tpOpen:hover { opacity:.9; }
	.tpCard .acts .tpDel { color:#d6453a; border-color:#f0c9c4; flex:0 0 auto; padding:8px 12px; }
	.tpCard .acts .tpDel:hover { background:#fdeeec; }
	.iconBtn svg { width:18px; height:18px; }
	.iconBtn[hidden] { display:none; }
	.app.chatHidden .collapseBtn svg { transform:scaleX(-1); }
	#empty { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; color:var(--sub); gap:14px; text-align:center; padding:40px; background:#fff; z-index:5; }
	#empty .ic { color:var(--muted); }
	#empty .ic svg { width:40px; height:40px; }
	#empty b { color:var(--ink); font-size:18px; font-weight:600; letter-spacing:0; }
	/* 빈 캔버스 = MT식 디스커버리 피드(mindtrip_ref/mt_before.png 구조) — PC 전용(모바일은 JS서 미생성). 섹션 데이터 없으면 dfFallback 중앙 안내만 */
	html:not(.isMobile) #empty { align-items:stretch; justify-content:flex-start; padding:0; text-align:left; gap:0; }
	#empty .dfWrap { flex:1; min-height:0; overflow-y:auto; padding:58px 34px 42px; display:flex; flex-direction:column; }
	#empty .dfSec { width:100%; max-width:760px; margin:0 auto 30px; flex-shrink:0; }
	#empty .dfHd { display:flex; align-items:baseline; gap:10px; margin:0 0 12px; }
	#empty .dfHd h3 { margin:0; font-size:16px; font-weight:700; color:var(--ink); letter-spacing:-.2px; }
	#empty .dfMore { margin-left:auto; border:none; background:none; padding:0; font-family:inherit; font-size:12.5px; font-weight:600; color:var(--sub); text-decoration:none; cursor:pointer; }
	#empty .dfMore:hover { color:var(--accent); }
	#empty .dfRow { display:flex; gap:12px; overflow-x:auto; padding:2px 2px 8px; scrollbar-width:none; }
	#empty .dfRow::-webkit-scrollbar { display:none; }
	/* PC 가로 스트립 표준 내비 = 엣지 페이드+셰브론(design-pc §12, 소유자 Ⓒ안 2026-07-24) — dfRow·moreGrid 공용, JS가 .hsWrap 자동 래핑 */
	.hsWrap { position:relative; --hs-bg:#fff; }
	.hsNav { position:absolute; top:0; bottom:0; z-index:2; display:flex; align-items:center; justify-content:center; width:52px; padding:0; border:0; background:none; color:var(--ink); cursor:pointer; }
	.hsNav[hidden] { display:none; } /* display:flex가 [hidden] UA 규칙을 이김 — 명시 필수 */
	.hsNav svg { width:19px; height:19px; transition:transform .14s ease; }
	.hsNav:hover svg { transform:scale(1.12); }
	.hsNav.prev { left:0; background:linear-gradient(90deg, var(--hs-bg) 18%, transparent); }
	.hsNav.next { right:0; background:linear-gradient(270deg, var(--hs-bg) 18%, transparent); }
	.hsNav.prev svg { margin-right:20px; }
	.hsNav.next svg { margin-left:20px; }
	html.isMobile .hsNav { display:none; } /* 모바일=스와이프 유지, 화살표는 PC 전용 */
	#empty .dfCard { position:relative; flex:0 0 188px; height:126px; border-radius:16px; overflow:hidden; background:var(--surface2); border:1px solid var(--line-soft); cursor:pointer; transition:box-shadow .15s ease, transform .15s ease; }
	#empty .dfCard:hover { box-shadow:var(--shadow-card); transform:translateY(-1px); }
	#empty .dfCard img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
	#empty .dfCard .scrim { position:absolute; inset:0; background:linear-gradient(180deg, rgba(6,23,39,.04) 34%, rgba(6,23,39,.64)); }
	#empty .dfCard .tag { position:absolute; top:10px; left:10px; padding:3px 9px; border-radius:999px; background:rgba(255,255,255,.94); color:var(--ink); font-size:10.5px; font-weight:700; line-height:1.4; }
	#empty .dfCard .bd { position:absolute; left:12px; right:12px; bottom:10px; color:#fff; }
	#empty .dfCard .bd b { display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; font-size:13.5px; font-weight:700; line-height:1.35; color:inherit; letter-spacing:0; }
	#empty .dfCard .bd small { display:block; margin-top:2px; font-size:11px; opacity:.85; }
	#empty .dfCard.chat { background:#fff; border-color:var(--line); }
	#empty .dfCard.chat .bd { color:var(--ink); }
	#empty .dfCard.chat .bd small { color:var(--sub); opacity:1; }
	#empty .dfCard.chat .tag { background:var(--surface); }
	#empty .dfGrid { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:12px; }
	#empty .dfPlace { border:1px solid var(--line-soft); border-radius:14px; overflow:hidden; background:#fff; cursor:pointer; transition:box-shadow .15s ease, transform .15s ease; }
	#empty .dfPlace:hover { box-shadow:var(--shadow-card); transform:translateY(-1px); }
	#empty .dfPlace .ph { width:100%; aspect-ratio:4/3; object-fit:cover; display:block; background:var(--surface2); }
	#empty .dfPlace .pi { display:block; padding:9px 11px 11px; text-align:left; }
	#empty .dfPlace .nm { display:block; font-size:13px; font-weight:700; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
	#empty .dfPlace .mt2 { display:flex; align-items:center; gap:5px; margin-top:3px; font-size:11.5px; color:var(--sub); white-space:nowrap; overflow:hidden; }
	#empty .dfPlace .cdot { width:7px; height:7px; border-radius:50%; flex-shrink:0; }
	#empty .dfReel { position:relative; flex:0 0 106px; height:168px; border-radius:14px; overflow:hidden; background:var(--surface2); cursor:pointer; }
	#empty .dfReel img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
	#empty .dfReel .rp { position:absolute; left:8px; right:8px; bottom:7px; color:#fff; font-size:10.5px; font-weight:600; text-shadow:0 1px 4px rgba(0,0,0,.55); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
	#empty .dfFallback { margin:auto; display:flex; flex-direction:column; align-items:center; gap:6px; text-align:center; }
	#empty .dfFallback[hidden] { display:none; } /* display:flex가 hidden 속성을 덮는 함정(ttSheetBtn[hidden]과 동일) */
	#empty .dfFallback span { font-size:13.5px; color:var(--sub); }
	.trip { position:absolute; inset:0; display:none; flex-direction:column; }
	.trip.on { display:flex; }
	.panelbody { flex:1; min-height:0; position:relative; }
	#map { position:absolute; inset:0; width:100%; height:100%; background:#fff; display:none; }
	#map.on { display:block; }
	.mapFilter[hidden], .mapLegend[hidden] { display:none; }
	.daylist { position:absolute; inset:0; overflow-y:auto; padding:74px 32px 48px; background:var(--bg); display:none; }
	.daylist.on { display:block; }
	#tt { position:absolute; inset:0; overflow:auto; padding:74px 0 28px; background:var(--bg); display:none; }
	#tt.on { display:block; }
	#tt .ttEmpty { padding:96px 28px 28px; text-align:center; color:var(--sub); line-height:1.6; }
	.day { margin-bottom:36px; }
	.dayhd { display:flex; align-items:center; gap:9px; position:sticky; top:-12px; z-index:5; margin:0 -32px 12px; padding:7px 32px; background:var(--bg); }
	.dayhd .dot { width:12px; height:12px; border-radius:50%; flex-shrink:0; }
	.dayhd .dayTitle { flex:1 1 auto; min-width:0; display:flex; align-items:baseline; gap:9px; }
	.dayhd b { font-size:18px; font-weight:600; color:var(--ink); letter-spacing:0; }
	.dayhd span { min-width:0; font-size:12px; color:var(--sub); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
	/* Day 헤더 숙소 칩 — 출발/복귀 카드 대체(소유자 2026-07-03). teal 톤, 체크인/체크아웃 태그 + 빼기 */
	.dayhd .dayStay { flex:0 1 auto; min-width:0; display:inline-flex; align-items:center; gap:6px; padding:4px 8px; border:1px solid color-mix(in srgb, #119a8e 32%, var(--line)); border-radius:999px; background:color-mix(in srgb, #119a8e 9%, #fff); color:#0d6e65; font-size:12px; font-weight:600; }
	.dayhd .dayStay svg { flex:0 0 auto; }
	.dayhd .dayStay .dsNm { min-width:0; max-width:220px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
	.dayhd .dayStay i { font-style:normal; font-size:10.5px; font-weight:700; color:#fff; background:#119a8e; border-radius:5px; padding:1px 5px; }
	.dayhd .dayStay .scDel { display:inline-flex; align-items:center; justify-content:center; width:18px; height:18px; padding:0; border:none; border-radius:50%; background:transparent; color:#0d6e65; opacity:.55; cursor:pointer; }
	.dayhd .dayStay .scDel:hover { opacity:1; background:rgba(17,154,142,.14); }
	.dayhd .dayStay .scDel svg { width:11px; height:11px; }
	html.isMobile .dayhd .dayStay .dsNm { max-width:120px; }
	/* ('이어 묵기' 고스트 칩 제거 — 연박 확장은 시간표 ＋1박으로만, 소유자 2026-07-03) */
	.routeDayBtn { flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px; padding:0; border:1px solid var(--ctrl-line); border-radius:8px; background:#fff; color:var(--sub); cursor:pointer; transition:background .12s ease, color .12s ease, border-color .12s ease; }
	.routeDayBtn svg { width:17px; height:17px; }
	.routeDayBtn:hover,
	.routeDayBtn:focus-visible,
	.routeDayBtn.on { color:var(--accent); border-color:color-mix(in srgb, var(--accent) 35%, var(--line)); background:var(--tint); outline:none; }
	.dayRouteStatus { display:flex; align-items:center; justify-content:space-between; gap:8px; min-height:42px; margin:-4px 0 10px; padding:8px 9px 8px 11px; border:1px solid var(--line); border-radius:10px; background:#fbfaf7; }
	.dayRouteStatus.noRoute { background:var(--surface); }
	.dayRouteMeta { min-width:0; display:flex; align-items:center; gap:8px; color:var(--text); font-size:12px; font-weight:600; line-height:1.35; }
	.dayRouteMeta span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
	.dayRouteMeta b { color:var(--ink); font-weight:700; } /* 이동 거리 = 검정(소유자 2026-07-29). 초록은 '좋다'는 뜻인데 거리는 좋고 나쁨이 아니라 사실이다 */
	.dayRouteStatus.noRoute .dayRouteMeta { color:var(--muted); }
	.routeDayTextBtn { width:auto; min-width:102px; height:32px; padding:0 11px; border-color:var(--accent); background:var(--accent); color:#fff; font-size:12.5px; font-weight:600; white-space:nowrap; }
	.routeDayTextBtn:hover,
	.routeDayTextBtn:focus-visible,
	.routeDayTextBtn.on { border-color:var(--accent-strong); background:var(--accent-strong); color:#fff; }
	.placeDetail { position:absolute; inset:0; z-index:20; background:#fff; display:none; flex-direction:column; overflow-y:auto; }
	.placeDetail.on { display:flex; }
	.pdPane { display:none; }
	.pdPane.on { display:block; }
	.pdLightbox { display:none; }
	.paneMsg { font-size:13px; color:var(--sub); padding:24px 0; text-align:center; }
	.retryBtn { display:inline-flex; margin-top:10px; padding:8px 14px; border:1px solid var(--ctrl-line); border-radius:6px; background:#fff; color:var(--ink); font-size:13px; font-weight:600; cursor:pointer; font-family:inherit; }
	.pop { position:fixed; z-index:30; background:#fff; border:1px solid var(--line); border-radius:8px; box-shadow:0 0 10px 0 rgba(157,157,157,.2); padding:6px; display:none; min-width:130px; }
	.pop.on { display:block; }
	.pop .opt { padding:9px 12px; border-radius:7px; font-size:13px; color:var(--text); cursor:pointer; }
	.pop .opt:hover { background:var(--surface); }
	.pop .opt.optNew { display:flex; align-items:center; gap:5px; } /* 전역 svg{display:block} 때문에 + 아이콘이 줄바꿈되던 것 — 아이콘+텍스트 한 줄 */
	.pop .opt.optNew svg { flex:0 0 auto; margin-right:0; }
	.pop .opt.optNew { margin-bottom:6px; padding-bottom:12px; border-bottom:1px solid var(--line); font-weight:600; } /* 새로 만들기 ↔ 기존 일정 목록 구분 경계 */
	.pop .opt.tripMoreBtn { text-align:center; color:var(--accent); font-weight:600; } /* 일정 5개 초과 시 나머지 펼치기 */
	.item { display:flex; align-items:center; gap:12px; background:#fff; border:1px solid var(--line); border-radius:12px; padding:11px; margin-bottom:8px; cursor:grab; transition:box-shadow .14s ease; }
	#daylist.dragging-active .item { cursor:grabbing; }
	.item:hover { box-shadow:var(--pc-shadow); }
	#daylist .dragGrip { width:28px; height:28px; flex-shrink:0; display:inline-flex; align-items:center; justify-content:center; padding:0; border:0; border-radius:8px; background:transparent; color:var(--muted); cursor:grab; touch-action:none; }
	#daylist .dragGrip svg { width:18px; height:18px; }
	#daylist .item > .dragGrip:first-child { margin-left:-6px; margin-right:-4px; } /* 그립이 맨 왼쪽 — 카드 여백에 붙이고 썸네일과 간격만 좁힘 */
	#daylist .dragGrip:hover, #daylist .dragGrip:focus-visible { background:var(--surface); color:var(--ink); outline:none; }
	#daylist.dragging-active .dragGrip { cursor:grabbing; }
	.item .thumb { position:relative; width:54px; height:54px; flex-shrink:0; border-radius:9px; overflow:hidden; background:var(--surface2); }
	.item .thumb img { width:100%; height:100%; object-fit:cover; display:block; }
	.item .thumb .thNo { position:absolute; left:4px; top:4px; min-width:18px; height:18px; padding:0 4px; border-radius:9px; color:#fff; font-size:10.5px; font-weight:700; display:flex; align-items:center; justify-content:center; box-shadow:0 1px 3px rgba(0,0,0,.28); }
	.item .thumb .thNo.stayEmoji { min-width:22px; width:22px; height:22px; padding:0; border-radius:10px; font-size:13px; line-height:1; }
	.item.stay { background:color-mix(in srgb, #119a8e 6%, #fff); }
	/* 숙소 출발·복귀 카드 — 출발=Day 상단·복귀=Day 하단 각각 카드. 호텔 + 출발/복귀 라벨 + 시각(편집 가능). 시각=담을 때 그 날 첫/마지막 일정에서 자동 */
	.stayCard { display:flex; align-items:center; gap:9px; background:color-mix(in srgb, #119a8e 7%, #fff); border:1px solid color-mix(in srgb, #119a8e 22%, #fff); border-radius:11px; padding:8px 11px; }
	.stayCard.sc-out { margin:0 0 8px; }
	.stayCard.sc-in { margin:8px 0 0; }
	#daylist .tm.tmEdit { user-select:none; } /* touch-action:none은 PC 전용으로 분리 — 모바일에선 시트 스크롤 트랩 방지 */
	html:not(.isMobile) #daylist .tm.tmEdit { touch-action:none; cursor:ns-resize; } /* 시간 끌어조정은 PC 전용 — 모바일은 탭=시간 시트 */
	html:not(.isMobile) #daylist .stayCard { cursor:ns-resize; } /* PC: 숙소 카드는 본문 어디나 끌어 조정 */
	.stayCard.stayScrubbing { background:color-mix(in srgb, #119a8e 13%, #fff); box-shadow:0 2px 8px rgba(17,154,142,.18); }
	.stayCard.stayScrubbing .scR .tm { background:color-mix(in srgb, #119a8e 22%, #fff); }
	.item.stayScrubbing { box-shadow:0 2px 8px rgba(17,154,142,.2); }
	.item.stayScrubbing .mt .tm.tmEdit { background:color-mix(in srgb, #119a8e 20%, #fff); border-radius:5px; padding:1px 5px; color:#0d6e65; }
	.stayCard .scIcon { width:26px; height:26px; flex-shrink:0; border-radius:7px; background:#119a8e; display:flex; align-items:center; justify-content:center; }
	.stayCard .scNm { font-size:13.5px; font-weight:600; color:#0d6e65; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; }
	.stayCard .scR { margin-left:auto; display:inline-flex; align-items:center; gap:8px; flex-shrink:0; }
	.stayCard .scR .scL { font-size:12px; color:#0d6e65; font-weight:600; opacity:.8; }
	.stayCard .scR .tm { font-size:13px; font-weight:700; color:#0d6e65; font-variant-numeric:tabular-nums; }
	.stayCard .scR .tm.tmEdit { cursor:pointer; border-radius:5px; padding:1px 6px; transition:background .12s ease; }
	.stayCard .scR .tm.tmEdit:hover { background:color-mix(in srgb, #119a8e 14%, #fff); }
	.stayCard .scR .tm.scAuto { opacity:.7; padding:1px 2px; } /* 메모 없는 계산값(비편집) */
	.stayCard .scR .tmAdd { color:#119a8e; font-weight:600; }
	.stayCard .scDel { flex-shrink:0; width:24px; height:24px; margin-left:2px; padding:0; border:none; border-radius:50%; background:transparent; color:#0d6e65; opacity:0; display:inline-flex; align-items:center; justify-content:center; cursor:pointer; transition:opacity .14s ease, background .12s ease, color .12s ease; }
	.stayCard .scDel svg { width:14px; height:14px; }
	.stayCard:hover .scDel, .stayCard:focus-within .scDel { opacity:.55; }
	.stayCard .scDel:hover { opacity:1; background:rgba(224,49,49,.12); color:#e03131; }
	@media (hover:none){ .stayCard .scDel { opacity:.55; } }
	.item .body { flex:1; min-width:0; }
	.item .body.pdLink, .item .thumb.pdLink { cursor:pointer; } /* 일정 장소 클릭 → 상세 */
	.item .body.pdLink:hover .nm { text-decoration:underline; text-underline-offset:2px; }
	.item .nm { font-size:16px; font-weight:600; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
	.item .mt { display:flex; align-items:center; gap:4px; margin-top:3px; font-size:12px; color:var(--sub); min-width:0; }
	.item .mt .clk { width:13px; height:13px; flex-shrink:0; color:var(--muted); }
	.item .mt .tm { font-weight:600; color:var(--ink); cursor:pointer; flex-shrink:0; }
	.item .mt .tmEnd { color:var(--sub); font-weight:400; flex-shrink:0; }
	.item .mt .tmEnd.tmEditEnd { cursor:pointer; } /* 종료도 눌러서 고친다 — 시작(.tm)과 같은 어포던스 */
	/* 시계+시작+종료 한 덩어리 — hover 하면 시간 영역이 통째로 반응(소유자 2026-08-11 C안).
	   margin 음수로 자리를 미리 확보해 hover 때 뒤 글자(· 관광지 …)가 밀리지 않게 한다. */
	.item .mt .tmBox { display:inline-flex; align-items:center; gap:4px; min-width:0; padding:1px 6px; margin:0 -6px; border-radius:7px; cursor:pointer; transition:background .12s ease; }
	.item .mt .tmBox .clk { transition:color .12s ease; }
	.item .mt .tmBox:hover { background:var(--surface2); }
	.item .mt .tmBox:hover .clk { color:var(--ink); } /* 시계는 잉크색(소유자 2026-08-11) — 퍼플 아님 */
	.item.stayScrubbing .mt .tmBox { background:none; } /* 끌어 조정 중엔 시각 자신이 청록 알약을 쓴다 — 겹치지 않게 */
	/* 종료 시각을 저장하지 않은 장소의 '예상 종료'(2026-08-10) — 확정 시각보다 흐리게 둬서 저장값인 척하지 않는다 */
	.item .mt .tmEnd.tmEndEst { opacity:.55; }
	.item .mt .mtCate { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
	.item .mt .tmAdd { color:var(--muted); font-weight:500; }
	.item .mt .star { color:var(--sub); font-weight:600; }
	.item .mt, .triphd .sub, .param, .nfRow .ts, .prRating, .prRc, .mkPreview .rt, .mkPreview .rc { font-variant-numeric:tabular-nums; }
	/* 장소에 붙은 메모(케밥 → 메모) — 이름·시간 아래 한 줄, 메모 아이콘 + 텍스트 */
	/* 메모 표시 = 아이콘만(호버=내용 툴팁, 클릭=편집). MT식으로 항목을 짧게(소유자: 아이콘만+호버) */
	/* 메모 있음 = 핀 라인 아이콘만(배경/배지 없이 비움, 소유자). 호버=내용 툴팁, 클릭=편집 */
	.item .noteFlag { flex-shrink:0; align-self:center; width:26px; height:26px; display:inline-flex; align-items:center; justify-content:center; padding:0; border:none; background:none; color:var(--ink); cursor:pointer; transition:color .12s ease; }
	.item .noteFlag svg { width:16px; height:16px; pointer-events:none; }
	.item .noteFlag:hover { color:var(--accent); }
	/* 메모 버튼은 상시 노출(2026-08-11) — 비었으면 흐리게, 있으면 잉크색으로 '있음'을 알린다.
	   아이콘·크기·hover 모두 tripDetail(.dNoteBtn)과 같게 맞춘다 — 두 화면이 같은 버튼으로 보여야 한다. */
	.item .noteFlag { color:#c3c6cd; border-radius:7px; transition:color .12s ease, background .12s ease; }
	.item .noteFlag svg { width:15px; height:15px; }
	.item .noteFlag.has { color:var(--ink); }
	.item .noteFlag:hover, .item .noteFlag:focus-visible { background:var(--surface2); color:var(--ink); outline:0; }
	.item.memo { border-style:dashed; background:var(--surface); }
	.item.memo .memoIco { width:26px; height:26px; flex-shrink:0; display:flex; align-items:center; justify-content:center; color:var(--muted); }
	.item.memo .memoIco svg { width:15px; height:15px; }
	.item.memo .nm { color:var(--sub); font-weight:500; font-size:13.5px; }
	/* 숙소(출발/복귀) — 노트 메모와 구분: 호텔 아이콘 박스 + 솔리드 카드 + 출발/복귀 태그 */
	.item.lodge { background:var(--surface); }
	.item.lodge .lodgeIco { width:54px; height:54px; flex-shrink:0; display:flex; align-items:center; justify-content:center; border-radius:10px; background:#fff; border:1px solid var(--line); color:var(--sub); }
	.item.lodge .lodgeIco svg { width:22px; height:22px; }
	.item.lodge .nm { color:var(--ink); font-weight:600; font-size:13.5px; }
	.lodgeTag { display:inline-block; margin-left:7px; padding:1px 7px; border:1px solid var(--line); border-radius:5px; font-size:10.5px; font-weight:600; color:var(--sub); vertical-align:1px; }
	/* ── 일정 드래그 재정렬(기본 동작) + 장소 간 거리 표시 ── */
	.item.dragging { opacity:.4; }
	/* 목록 드래그(Mindtrip식) — 고스트(떠다니는 복제) + 드롭 위치선 + 시각 툴팁 */
	.itDist { display:flex; align-items:center; gap:8px; margin:-4px 0 4px; padding-left:16px; } /* 카드 사이 거리(Mindtrip식) + 구간 길찾기 */
	.itDist > span { font-size:11px; color:var(--muted); font-variant-numeric:tabular-nums; }
	.itDist .itMove { min-width:0; display:inline-flex; align-items:center; flex-wrap:wrap; gap:4px 7px; line-height:1.35; }
	.itDist .itMove b { font-size:11.5px; font-weight:700; color:var(--sub); }
	.itDist .itMove em { font-style:normal; font-size:11px; color:var(--muted); }
	.itDist .itMove .taxiAlt { display:inline-flex; align-items:center; font-style:normal; font-size:10.5px; font-weight:700; color:#3f4b5f; background:var(--surface); border:1px solid var(--line); border-radius:5px; padding:1px 5px; }
	.itDist .itMove small { display:inline-flex; align-items:center; font-size:10.5px; font-weight:700; color:#0d6e65; }
	.itDist .itMove small.bad { color:var(--closed); }
	/* 이동줄 접기/펼치기 — 기본=주 수단+경고만, 클릭 시 대안(노선·요금·도보·택시) 노출(소유자 "다 나오니 복잡") */
	.itDist .itMove .mvCaret { width:12px; height:12px; color:var(--muted); flex-shrink:0; transition:transform .12s ease; }
	.itDist.open .itMove .mvCaret { transform:rotate(180deg); }
	.itDist .itMove:has(.mvCaret) { cursor:pointer; }
	/* 수단 비교·선택 팝업(소유자 "팝업이 뜨게 만들자") — 한 줄 풀폭 리스트, 탭=이 구간 수단으로 저장, 선택 행 재탭=자동 복귀 */
	#mvPop { position:fixed; z-index:70; min-width:212px; background:#fff; border:1px solid var(--line); border-radius:12px; box-shadow:0 14px 34px rgba(15,23,42,.16); padding:6px; display:none; }
	#mvPop.on { display:flex; flex-direction:column; gap:2px; }
	#mvPop .mvPick { display:flex; align-items:center; justify-content:space-between; gap:12px; width:100%; border:0; background:none; text-align:left; font:inherit; font-size:12.5px; font-weight:700; color:#3f4b5f; padding:9px 11px; border-radius:8px; cursor:pointer; font-variant-numeric:tabular-nums; }
	#mvPop .mvPick:hover { background:var(--surface); }
	#mvPop .mvPick.on { background:var(--tint); color:var(--accent); }
	html.isMobile #mvPop .mvPick { padding:12px; font-size:13.5px; }
	.itDist.estimating .itMove b { color:var(--muted); } /* '예상' 배지는 제거(소유자 2026-07-28) — 흐린 글자색으로만 구분 */
	.itDir { display:inline-flex; align-items:center; justify-content:center; width:22px; height:22px; padding:0; border:1px solid var(--ctrl-line); border-radius:6px; background:#fff; color:var(--sub); cursor:pointer; opacity:0; pointer-events:none; transition:opacity .14s ease, color .12s ease, background .12s ease, border-color .12s ease; }
	.itDist:hover .itDir, .itDist:focus-within .itDir { opacity:1; pointer-events:auto; } /* 공간은 늘 확보 → 호버 시 페이드 인(행이 안 벌어짐) */
	.itDir:hover { color:var(--accent); background:var(--surface); border-color:var(--accent); }
	.itDir svg { width:13px; height:13px; flex-shrink:0; }
	@media (max-width:768px) { .itDir { opacity:1; pointer-events:auto; } } /* 모바일: 호버 없음 → 항상 표시 */
	#daylist.dragging-active { user-select:none; }
	#daylist.dragging-active .itDist { visibility:hidden; opacity:0; pointer-events:none; }
	.item .lk:hover { background:var(--tint); }
	.item .delBtn { flex-shrink:0; align-self:center; width:28px; height:28px; display:inline-flex; align-items:center; justify-content:center; border:1px solid var(--ctrl-line); border-radius:6px; background:#fff; color:var(--muted); cursor:pointer; opacity:.4; transition:opacity .15s ease, color .15s ease, border-color .15s ease, background .15s ease; }
	.item .delBtn svg { width:13px; height:13px; }
	.item:hover .delBtn { opacity:1; }
	.item .delBtn:hover { color:var(--text); border-color:var(--ctrl-line); background:var(--surface); }
	/* 항목 ⋯ 케밥 — 탭=편집 메뉴(시간·장소변경·날이동·삭제). delBtn 자리 대체. */
	.item .kebab { flex-shrink:0; align-self:center; width:26px; height:26px; padding:0; display:inline-flex; align-items:center; justify-content:center; border:none; border-radius:6px; background:none; color:var(--muted); cursor:pointer; opacity:.45; transition:opacity .15s ease, color .15s ease; }
	.item .kebab svg { width:17px; height:17px; pointer-events:none; }
	.item:hover .kebab { opacity:1; }
	.item .kebab:hover { color:var(--text); background:none; }
	.item.memo .kebab { opacity:.3; }
	.item.memo:hover .kebab { opacity:.9; }
	/* 일정 카드 케밥 언펄(소유자 2026-07-30, design-pc.md §12) — itemMenu 상태에서만(다른 pop 용도는 그대로).
	   positionPop 이 앵커 왼쪽에 맞춰 아래로 여니 원점은 좌상단. 모바일 pop 은 바텀시트라 PC 한정 */
	.item .kebab svg { transition:transform .22s cubic-bezier(.3,1.4,.4,1); }
	.item .kebab.on svg { transform:rotate(90deg); }
	html:not(.isMobile) .pop.itemMenu.on { transform-origin:top left; animation:kebUnfurl .24s cubic-bezier(.24,1.2,.3,1) both; }
	html:not(.isMobile) .pop.itemMenu.on > * { animation:kebItemIn .28s cubic-bezier(.24,1.3,.35,1) both; }
	html:not(.isMobile) .pop.itemMenu.on > :nth-child(1) { animation-delay:.03s; }
	html:not(.isMobile) .pop.itemMenu.on > :nth-child(2) { animation-delay:.06s; }
	html:not(.isMobile) .pop.itemMenu.on > :nth-child(3) { animation-delay:.09s; }
	html:not(.isMobile) .pop.itemMenu.on > :nth-child(4) { animation-delay:.12s; }
	html:not(.isMobile) .pop.itemMenu.on > :nth-child(5) { animation-delay:.15s; }
	html:not(.isMobile) .pop.itemMenu.on > :nth-child(6) { animation-delay:.18s; }
	html:not(.isMobile) .pop.itemMenu.on > :nth-child(7) { animation-delay:.21s; }
	@keyframes kebUnfurl { from { opacity:0; transform:scale(.35); border-radius:26px; } to { opacity:1; transform:scale(1); border-radius:10px; } }
	@keyframes kebItemIn { from { opacity:0; transform:scale(.7); } to { opacity:1; transform:none; } }
	@media (prefers-reduced-motion:reduce) { .pop.itemMenu.on, .pop.itemMenu.on > *, .item .kebab svg { animation:none !important; transition:none; } }
	/* 항목 편집 메뉴 / 날 이동 픽커 */
	.pop.itemMenu { min-width:168px; }
	.pop .imHd { font-size:11.5px; font-weight:600; color:var(--sub); padding:5px 12px 7px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:240px; }
	.pop .opt.del { color:var(--closed); }
	.pop .opt.del:hover { background:#fdf0ec; }
	/* ── 여행 스위처(제목 옆 ⌄) — 목록이 주(主), 액션은 아래. 소유자 2026-07-28 A안 ── */
	/* 제목 메뉴는 모바일 .chatHd 에서도 같은 함수로 열린다 → 좁은 화면에서 넘치지 않게 폭·높이를 뷰포트에 묶는다 */
	.pop.tripSwitch { min-width:0; width:min(302px, calc(100vw - 32px)); padding:6px; }
	.pop.tripSwitch .imHd { padding:7px 10px 5px; color:var(--muted); }
	.pop.tripSwitch .imDiv { height:1px; background:var(--line-soft); margin:5px 6px; }
	.pop.tripSwitch .tsList { max-height:min(268px, 40vh); overflow-y:auto; } /* 5줄 넘어가면 스크롤 — 팝업이 화면을 넘지 않게 */
	.tsRow { display:flex; align-items:center; gap:11px; padding:7px 10px; border-radius:9px; cursor:pointer; }
	.tsRow:hover { background:var(--surface); }
	.tsRow.sel { background:var(--tint); cursor:default; }
	.tsTh { width:40px; height:40px; flex:0 0 40px; border-radius:7px; object-fit:cover; background:var(--surface); border:1px solid var(--line-soft); }
	.tsTx { min-width:0; display:flex; flex-direction:column; }
	.tsNm { font-size:13.5px; font-weight:600; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
	.tsDt { font-size:11.5px; color:var(--muted); margin-top:2px; font-variant-numeric:tabular-nums; white-space:nowrap; }
	.pop .opt.tsAct { display:flex; align-items:center; gap:10px; padding:8px 10px; border-radius:8px; font-size:13.5px; }
	.pop .opt.tsAct svg { width:16px; height:16px; flex:0 0 16px; color:var(--sub); }
	.pop .opt.tsAct.del svg { color:var(--closed); }
	.pop .opt.tsMore { display:flex; align-items:center; padding:8px 10px; font-size:13.5px; color:var(--sub); }
	.tsArrow { margin-left:auto; color:var(--muted); font-size:12px; }
	.pop .cmpInMenu { display:flex; margin:2px 2px 5px; } /* 제목 드롭다운 상단 여행조건 컴포저 — 가로 바 */
	/* 장소 변경 후보 픽커 — 썸네일 행 */
	.pop.swapPick { min-width:228px; max-width:288px; }
	.pop.swapPick .swOpt { display:flex; align-items:center; gap:9px; padding:7px 10px; }
	.pop.swapPick .swThumb { width:34px; height:34px; border-radius:7px; object-fit:cover; flex-shrink:0; background:var(--surface2); display:inline-block; }
	.pop.swapPick .swBody { display:flex; flex-direction:column; min-width:0; }
	.pop.swapPick .swNm { font-size:13px; font-weight:600; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
	.pop.swapPick .swCt { font-size:11.5px; color:var(--sub); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-variant-numeric:tabular-nums; }
	/* 메모 내용 수정 */
	.pop.memoEdit { min-width:288px; padding:10px; }
	.pop.memoEdit .meRow { display:flex; gap:6px; }
	.pop.memoEdit .meInput { flex:1; border:1px solid var(--line); border-radius:6px; padding:8px 10px; font-size:13px; font-family:inherit; color:var(--ink); outline:none; min-width:0; }
	.pop.memoEdit .meInput:focus { border-color:var(--accent); }
	.pop.memoEdit .meApply { flex-shrink:0; border:none; background:var(--accent); color:#fff; border-radius:6px; padding:0 14px; font-size:12.5px; font-weight:600; cursor:pointer; font-family:inherit; }
	.pop.memoEdit .meApply:hover { background:var(--accent-strong); }
	.pop.memoEdit .meHint { font-size:11px; color:var(--muted); padding:6px 2px 0; }
	/* Day에 장소 검색해서 추가 */
	.pop.placeAdd { min-width:320px; max-width:360px; padding:10px; }
	.pop.placeAdd .paInput { width:100%; border:1px solid var(--line); border-radius:6px; padding:8px 10px; font-size:13px; font-family:inherit; color:var(--ink); outline:none; box-sizing:border-box; }
	.pop.placeAdd .paInput:focus { border-color:var(--accent); }
	.pop.placeAdd .paResults { max-height:300px; overflow-y:auto; margin-top:6px; }
	.pop.placeAdd .paResults:empty { display:none; }
	.pop.placeAdd .paOpt { display:flex; align-items:center; gap:9px; padding:7px 6px; border-radius:7px; cursor:pointer; }
	.pop.placeAdd .paOpt:hover, .pop.placeAdd .paOpt:focus { background:var(--surface); outline:none; }
	.pop.placeAdd .paThumb { flex-shrink:0; width:38px; height:38px; border-radius:6px; object-fit:cover; background:var(--surface2); display:inline-block; }
	.pop.placeAdd .paBody { min-width:0; display:flex; flex-direction:column; gap:1px; }
	.pop.placeAdd .paNm { font-size:13px; font-weight:600; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
	.pop.placeAdd .paCt { font-size:11.5px; color:var(--sub); }
	.pop.placeAdd .paAddr { font-size:11px; color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
	.pop.placeAdd .paMsg { font-size:12.5px; color:var(--muted); padding:10px 4px; text-align:center; }
	.pop.placeAdd .meHint { font-size:11px; color:var(--muted); padding:6px 2px 0; }
	/* 비용 추가(가계부) 입력 — 항목명·금액·통화·결제수단 */
	.pop.costAdd { min-width:304px; padding:12px; }
	.pop.costAdd .caHd { font-size:13px; font-weight:600; color:var(--ink); padding:0 2px 6px; }
	.pop.costAdd label { display:block; font-size:11px; color:var(--sub); margin:8px 2px 4px; }
	.pop.costAdd input, .pop.costAdd select { width:100%; border:1px solid var(--ctrl-line); border-radius:6px; padding:8px 10px; font-size:13px; font-family:inherit; color:var(--ink); outline:none; box-sizing:border-box; background:#fff; }
	.pop.costAdd input:focus, .pop.costAdd select:focus { border-color:var(--accent); }
	.pop.costAdd input.caAmount { font-variant-numeric:tabular-nums; }
	.pop.costAdd .caRow2 { display:flex; gap:7px; }
	.pop.costAdd .caRow2 > div { flex:1; min-width:0; }
	.pop.costAdd .caApply { width:100%; margin-top:13px; border:none; background:var(--accent); color:#fff; border-radius:6px; padding:10px; font-size:13px; font-weight:600; cursor:pointer; font-family:inherit; }
	.pop.costAdd .caApply:hover { background:var(--accent-strong); }
	.dayEmpty { font-size:12px; color:var(--sub); padding:10px 12px; border:1px dashed var(--line); border-radius:8px; background:var(--bg); margin-bottom:8px; }
	/* Day별 메모 추가 — 항목 아래 은은한 점선 버튼(body 컬럼에 맞춰 들여쓰기) */
	.memoAddBtn { width:calc(100% - 58px); min-height:38px; margin:8px 0 0 58px; padding:0 13px; display:flex; align-items:center; justify-content:center; gap:7px; border:1px dashed color-mix(in srgb, var(--accent) 18%, var(--ctrl-line)); border-radius:9px; background:#fff; color:#64748b; font-size:13px; font-weight:600; font-family:inherit; cursor:pointer; opacity:.82; transition:opacity .15s ease, color .15s ease, border-color .15s ease, background .15s ease; }
	.memoAddBtn.empty { position:static; inset:auto; z-index:auto; flex-direction:row; width:100%; margin-left:0; }
	.memoAddBtn svg { width:15px; height:15px; flex-shrink:0; }
	.day:hover .memoAddBtn { opacity:1; }
	.memoAddBtn:hover, .memoAddBtn:focus-visible { color:var(--accent); border-color:color-mix(in srgb, var(--accent) 42%, var(--line)); background:color-mix(in srgb, var(--accent) 5%, #fff); outline:none; }
	.day > .item, .day > .stayCard, .day > .dayEmpty { width:calc(100% - 8px); box-sizing:border-box; transform:translateX(4px); }
	.day > .memoAddBtn { width:calc(100% - 66px); transform:translateX(4px); }
	.day > .memoAddBtn.empty { width:fit-content; min-width:116px; height:32px; min-height:32px; max-height:32px; max-width:calc(100% - 8px); flex:0 0 auto; align-self:center; padding:0 13px; margin:8px auto 0; transform:none; border-radius:999px; white-space:nowrap; box-sizing:border-box; }
	/* 더 둘러볼 곳(Ideas) */
	.ideas { margin-top:8px; padding-top:18px; border-top:1px solid var(--line); }
	.ihd { font-size:13px; font-weight:600; color:var(--ink); margin-bottom:4px; display:flex; align-items:center; gap:7px; }
	.ihd svg { width:16px; height:16px; color:var(--sub); }
	.ihd .c2 { font-weight:600; color:var(--muted); font-size:12px; }
	.isub { font-size:12px; color:var(--sub); margin-bottom:12px; }
	.idea { display:flex; gap:12px; padding:8px 0; align-items:center; }
	.idea .body { flex:1; min-width:0; }
	.idea .nm { font-size:14px; font-weight:600; color:var(--ink); }
	.idea .ct { font-size:12px; color:var(--sub); margin-top:1px; }
	.idea .ct .star { color:var(--sub); font-weight:600; }
	.idea .thumb { width:42px; height:42px; border-radius:8px; object-fit:cover; flex-shrink:0; background:var(--surface2); }
	.idea .addBtn { flex-shrink:0; align-self:center; display:inline-flex; align-items:center; gap:4px; padding:6px 12px; border:1px solid var(--accent); border-radius:6px; font-size:12px; font-weight:600; color:#fff; background:var(--accent); cursor:pointer; transition:background .15s ease; }
	.idea .addBtn:hover { background:var(--accent-strong); }
	.idea .addBtn:disabled { background:var(--surface2); border-color:var(--ctrl-line); color:var(--muted); cursor:default; }
	/* Mindtrip식 세그먼트 캡슐(여행지|날짜|인원|예산) — 텍스트만, 하나로 연결, 활성=잉크 굵게 */
	.composer { display:inline-flex; align-items:stretch; border:1px solid var(--line); border-radius:8px; overflow:hidden; background:#fff; }
	.cseg { display:inline-flex; align-items:center; padding:8px 16px; border:none; background:#fff; font-family:inherit; font-size:13.5px; line-height:1; color:var(--muted); cursor:pointer; user-select:none; white-space:nowrap; font-variant-numeric:tabular-nums; transition:background .12s ease, color .12s ease; }
	.cseg + .cseg { border-left:1px solid var(--line); }
	.cseg.on { color:var(--ink); font-weight:600; }
	.cseg:hover { background:var(--surface); }
	/* Create a trip 버튼 — Mindtrip식 검은 알약 */
	.createBtn { display:inline-flex; align-items:center; gap:6px; padding:9px 16px; border:none; border-radius:6px; background:var(--accent); color:#fff; font-family:inherit; font-size:13px; font-weight:600; cursor:pointer; white-space:nowrap; transition:opacity .15s ease, background .15s ease; }
	.createBtn:not(.await):hover { background:var(--accent-strong); }
	.createBtn:hover { opacity:.9; }
	.createBtn svg { width:14px; height:14px; }
	.createBtn:disabled { background:var(--surface2); color:var(--muted); cursor:default; }
	.createBtn[hidden] { display:none; }
	/* '대기' 상태 — 여행지 미정. 비활성처럼 보이되 눌러서 이유를 안내받을 수 있음 */
	.createBtn.await { background:var(--surface2); color:var(--muted); }
	.createBtn.await:hover { background:#e7e5df; }
	/* 여행지 입력 팝오버 */
	.pop.dest { min-width:226px; padding:10px; }
	.pop.dest .destRow { display:flex; gap:6px; }
	.pop.dest .destInput { flex:1; border:1px solid var(--line); border-radius:7px; padding:8px 10px; font-size:13px; font-family:inherit; color:var(--ink); outline:none; min-width:0; }
	.pop.dest .destInput:focus { border-color:var(--accent); }
	.pop.dest .destApply { flex-shrink:0; border:none; background:var(--accent); color:#fff; border-radius:7px; padding:0 14px; font-size:12.5px; font-weight:600; cursor:pointer; font-family:inherit; }
	.pop.dest .destApply:hover { background:var(--accent-strong); }
	/* 여행지 = 여러 곳(MT 'Where' 정합, 소유자 2026-07-28). 형식도 MT를 따른다:
	   담긴 곳은 [썸네일 + 이름/지역 + ×] 행, 평소엔 [＋ 장소 추가] 버튼, 누르면 그 자리가 같은 모양의 입력 행이 되고
	   타이핑하면 아래로 제안 목록(썸네일 + 일치 볼드 + 지역)이 열린다. 사진이 없으면 핀 아이콘(가짜 이미지 금지). */
	.pop.dest .destList { display:flex; flex-direction:column; gap:8px; }
	.pop.dest .destItem { display:flex; align-items:center; gap:11px; padding:9px 10px 9px 11px; border:1px solid var(--line); border-radius:12px; background:#fff; }
	.pop.dest .diTh, .pop.dest .dsTh { width:40px; height:40px; flex:0 0 40px; border-radius:8px; object-fit:cover; background:var(--surface); border:1px solid var(--line-soft); }
	.pop.dest .diTh.ph, .pop.dest .dsTh.ph { display:inline-flex; align-items:center; justify-content:center; color:var(--muted); }
	.pop.dest .diTh.ph svg, .pop.dest .dsTh.ph svg { width:18px; height:18px; }
	.pop.dest .diTx, .pop.dest .dsTx { flex:1; min-width:0; display:flex; flex-direction:column; }
	.pop.dest .diNm { font-size:14px; font-weight:600; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
	.pop.dest .diAddr, .pop.dest .dsAddr { margin-top:2px; font-size:11.5px; color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
	.pop.dest .diX { flex:0 0 28px; width:28px; height:28px; display:inline-flex; align-items:center; justify-content:center;
		border:0; background:transparent; color:var(--muted); border-radius:8px; cursor:pointer; padding:0; }
	.pop.dest .diX:hover { background:var(--surface); color:var(--ink); }
	.pop.dest .diX svg { width:15px; height:15px; }
	/* 입력 행 — 담긴 행과 같은 모양이라 '여기에 하나 더 들어온다'가 그대로 읽힌다(MT와 동일) */
	.pop.dest .destInputRow { border-color:var(--accent); box-shadow:0 0 0 3px var(--tint); }
	.pop.dest .destInput { flex:1; min-width:0; border:0; background:transparent; padding:0; font-size:14px; font-weight:600;
		font-family:inherit; color:var(--ink); outline:none; }
	.pop.dest .destInput::placeholder { font-weight:400; color:var(--muted); }
	.pop.dest .destAddBtn { margin-top:8px; width:100%; display:flex; align-items:center; justify-content:center; gap:6px;
		padding:10px; border:1px dashed var(--ctrl-line); border-radius:12px; background:#fff; color:var(--sub);
		font-family:inherit; font-size:13px; font-weight:600; cursor:pointer; }
	.pop.dest .destAddBtn:hover { background:var(--surface); color:var(--ink); border-color:var(--muted); }
	/* 제안 목록 */
	.pop.dest .dsList { margin-top:8px; border:1px solid var(--line); border-radius:12px; background:#fff; overflow:hidden; max-height:min(268px,38vh); overflow-y:auto; }
	.pop.dest .dsOpt { display:flex; align-items:center; gap:11px; padding:8px 11px; cursor:pointer; }
	.pop.dest .dsOpt:hover, .pop.dest .dsOpt:focus { background:var(--surface); outline:none; }
	.pop.dest .dsNm { font-size:13.5px; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
	.pop.dest .dsNm b { font-weight:700; }
	.pop.dest .dsMsg { padding:14px 12px; font-size:12.5px; color:var(--muted); text-align:center; }
	.pop.dest .destFoot { margin-top:14px; display:flex; justify-content:flex-end; }
	.pop.dest .destFoot .destApply { padding:0 22px; height:38px; border-radius:9px; font-size:13.5px; }
	/* Attach(첨부) 메뉴 — 입력창 ＋ */
	.pop.attachMenu { min-width:268px; padding:7px; border-radius:16px; }
	.pop.tripDays { padding:13px; min-width:240px; border-radius:14px; }
	.pop.tripDays .tdHd { font-size:13px; font-weight:700; color:var(--ink); margin:0 0 10px; }
	.pop.tripDays .dayChips { display:grid; grid-template-columns:repeat(5, 1fr); gap:6px; }
	.pop.tripDays .dayChip { padding:9px 0; border:1px solid var(--ctrl-line); border-radius:9px; background:#fff; color:var(--ink); font-size:13px; font-weight:600; font-family:inherit; cursor:pointer; transition:background .12s ease, border-color .12s ease, color .12s ease; }
	.pop.tripDays .dayChip:hover { background:var(--tint); border-color:var(--accent); color:var(--accent); }
	.pop.attachMenu .opt { display:flex; align-items:center; gap:12px; padding:11px 10px; border-radius:11px; color:var(--ink); cursor:pointer; }
	.pop.attachMenu .opt:hover, .pop.attachMenu .opt:active { background:var(--tint); }
	.pop.attachMenu .atIco { width:36px; height:36px; border-radius:10px; background:var(--surface); color:var(--accent); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
	.pop.attachMenu .atIco svg { width:19px; height:19px; }
	.pop.attachMenu .atT { font-size:14px; font-weight:600; color:var(--ink); line-height:1.25; }
	.pop.attachMenu .atS { font-size:11.5px; color:var(--muted); margin-top:1px; line-height:1.3; }
	/* 링크 입력 팝오버 — dest와 동일 룩, 6px */
	.pop.urlAdd { min-width:312px; padding:10px; }
	.pop.urlAdd .uaRow { display:flex; gap:6px; }
	.pop.urlAdd .uaInput { flex:1; border:1px solid var(--line); border-radius:6px; padding:8px 10px; font-size:13px; font-family:inherit; color:var(--ink); outline:none; min-width:0; }
	.pop.urlAdd .uaInput:focus { border-color:var(--accent); }
	.pop.urlAdd .uaApply { flex-shrink:0; border:none; background:var(--accent); color:#fff; border-radius:6px; padding:0 14px; font-size:12.5px; font-weight:600; cursor:pointer; font-family:inherit; }
	.pop.urlAdd .uaApply:hover { background:var(--accent-strong); }
	.pop.urlAdd .uaHint { margin:7px 2px 1px; font-size:11.5px; color:var(--muted); line-height:1.5; }
	/* 날짜 달력 팝오버(기간 선택) */
	.pop.cal { min-width:270px; padding:10px; }
	.pop.cal .calHd { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
	.pop.cal .calTitle { font-size:13px; font-weight:600; color:var(--ink); font-variant-numeric:tabular-nums; }
	.pop.cal .calNav { width:28px; height:28px; border:1px solid var(--ctrl-line); border-radius:7px; background:#fff; color:var(--ink); cursor:pointer; font-size:16px; line-height:1; display:flex; align-items:center; justify-content:center; }
	.pop.cal .calNav:hover { background:var(--surface); }
	.pop.cal .calGrid { display:grid; grid-template-columns:repeat(7,1fr); gap:2px; }
	.pop.cal .calDow { margin-bottom:4px; }
	.pop.cal .calDow span { text-align:center; font-size:11px; color:var(--muted); padding:3px 0; }
	.pop.cal .calDay { text-align:center; font-size:12.5px; padding:7px 0; border-radius:6px; cursor:pointer; color:var(--ink); font-variant-numeric:tabular-nums; user-select:none; }
	.pop.cal .calDay:hover { background:var(--surface); }
	.pop.cal .calDay.blank { visibility:hidden; cursor:default; }
	.pop.cal .calDay.off { color:var(--muted); opacity:.4; cursor:default; }
	.pop.cal .calDay.off:hover { background:none; }
	.pop.cal .calDay.inrange { background:var(--tint); border-radius:0; }
	.pop.cal .calDay.selstart, .pop.cal .calDay.selend { background:var(--accent); color:#fff; }
	.pop.cal .calDay.selstart:hover, .pop.cal .calDay.selend:hover { background:var(--accent); }
	.pop.cal .calDay.selstart { border-radius:6px 0 0 6px; }
	.pop.cal .calDay.selend { border-radius:0 6px 6px 0; }
	.pop.cal .calDay.selstart.selend { border-radius:6px; }
	.pop.cal .calFoot { display:flex; justify-content:space-between; align-items:center; margin-top:9px; padding-top:9px; border-top:1px solid var(--line); }
	.pop.cal .calClear { border:none; background:none; color:var(--sub); font-size:12.5px; cursor:pointer; font-family:inherit; padding:6px 4px; }
	.pop.cal .calClear:hover { color:var(--ink); }
	.pop.cal .calApply { border:none; background:var(--accent); color:#fff; font-size:12.5px; font-weight:600; padding:7px 16px; border-radius:7px; cursor:pointer; font-family:inherit; }
	.pop.cal .calApply:hover { background:var(--accent-strong); }
	/* 스켈레톤 — 일정 로딩(§8). reduced-motion은 전역 * 규칙이 셔머를 멈춤 */
	.daylist .skelLine { background:linear-gradient(90deg, var(--surface) 25%, var(--surface2) 37%, var(--surface) 63%); background-size:400% 100%; animation:skelSh 1.8s ease-in-out infinite; height:13px; border-radius:6px; }
	@keyframes skelSh { 0% { background-position:100% 0; } 100% { background-position:-100% 0; } }
	/* 캔버스 에러/안내 — '다시 시도'로 같은 로더 재호출 */
	.canvasMsg { position:absolute; inset:0; z-index:6; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px; text-align:center; padding:40px; background:#fff; }
	.canvasMsg b { color:var(--ink); font-size:17px; font-weight:600; letter-spacing:0; }
	.canvasMsg p { margin:0; color:var(--sub); font-size:13px; line-height:1.6; }
	.canvasMsg .retry { display:inline-flex; align-items:center; gap:6px; padding:9px 18px; border:1px solid var(--ctrl-line); border-radius:6px; background:#fff; color:var(--ink); font-family:inherit; font-size:13px; font-weight:600; cursor:pointer; transition:background .12s ease; }
	.canvasMsg .retry:hover { background:var(--surface); }

	/* 인앱 확인 모달 — 네이티브 confirm()이 앱 웹뷰에서 차단돼 새 여행·삭제가 안 먹던 문제 대체. PC·모바일 공통 */
	.confirmModal { position:fixed; inset:0; z-index:200; display:none; align-items:center; justify-content:center; padding:24px; background:rgba(6,27,49,.42); }
	.confirmModal.on { display:flex; }
	.confirmModal .cmBox { width:100%; max-width:340px; background:#fff; border-radius:14px; padding:22px 20px 16px; box-shadow:0 20px 50px -12px rgba(6,27,49,.4); animation:cmIn .16s ease both; }
	@keyframes cmIn { from { opacity:0; transform:translateY(8px) scale(.98); } to { opacity:1; transform:none; } }
	.confirmModal .cmMsg { margin:0 0 18px; font-size:15px; line-height:1.6; color:var(--ink); white-space:pre-line; text-align:center; }
	.confirmModal .cmBtns { display:flex; gap:8px; }
	.confirmModal .cmBtn { flex:1; padding:12px; border-radius:9px; font-family:inherit; font-size:14px; font-weight:600; cursor:pointer; border:1px solid var(--ctrl-line); transition:filter .12s ease, background .12s ease; }
	.confirmModal .cmNo { background:#fff; color:var(--sub); }
	.confirmModal .cmNo:hover { background:var(--surface); }
	.confirmModal .cmYes { background:var(--accent); color:#fff; border-color:var(--accent); }
	.confirmModal .cmYes:hover { filter:brightness(1.05); }
	.confirmModal .cmYes.cmDanger { background:#101623; border-color:#101623; } /* 삭제=잉크(소유자 2026-08-05 "검은색으로", 빨강 기각 — savedP·tripDetail 과 통일) */
	@media (prefers-reduced-motion: reduce) { .confirmModal .cmBox { animation:none; } }
	/* 일정 공유 모달(가이드) — 공유 on/off 스위치 + 링크 복사. confirmModal과 동일 셸 */
	.shareModal { position:fixed; inset:0; z-index:200; display:none; align-items:center; justify-content:center; padding:24px; background:rgba(6,27,49,.42); }
	.shareModal.on { display:flex; }
	.shareModal .smBox { width:100%; max-width:380px; background:#fff; border-radius:14px; padding:20px 20px 16px; box-shadow:0 20px 50px -12px rgba(6,27,49,.4); }
	.shareModal .smHd { font-size:16px; font-weight:700; color:var(--ink); margin:0 0 12px; }
	.shareModal .smRow { display:flex; align-items:center; gap:12px; padding:4px 0 14px; }
	.shareModal .smLbl { flex:1; min-width:0; }
	.shareModal .smLbl b { display:block; font-size:14px; font-weight:600; color:var(--ink); }
	.shareModal .smLbl span { display:block; margin-top:2px; font-size:12px; color:var(--sub); line-height:1.5; }
	.shareModal .smSwitch { position:relative; width:44px; height:26px; flex-shrink:0; border:none; border-radius:999px; background:#cdd3dc; cursor:pointer; transition:background .15s ease; padding:0; }
	.shareModal .smSwitch i { position:absolute; top:3px; left:3px; width:20px; height:20px; border-radius:50%; background:#fff; box-shadow:0 1px 3px rgba(6,27,49,.25); transition:transform .15s ease; }
	.shareModal .smSwitch[aria-checked="true"] { background:var(--accent); }
	.shareModal .smSwitch[aria-checked="true"] i { transform:translateX(18px); }
	.shareModal .smSwitch[disabled] { opacity:.55; cursor:default; }
	.shareModal .smLink { display:flex; gap:7px; margin:0 0 14px; }
	.shareModal .smLink[hidden] { display:none; }
	.shareModal .smLinkInp { flex:1; min-width:0; height:38px; padding:0 11px; border:1px solid var(--line); border-radius:9px; background:var(--surface); font-family:inherit; font-size:12.5px; color:var(--text); }
	.shareModal .smCopy { height:38px; padding:0 14px; border:1px solid var(--accent); border-radius:9px; background:var(--accent); color:#fff; font-family:inherit; font-size:13px; font-weight:600; cursor:pointer; }
	.shareModal .smCopy:hover { background:var(--accent-strong); }
	.shareModal .smClose { width:100%; padding:11px; border:1px solid var(--ctrl-line); border-radius:9px; background:#fff; color:var(--sub); font-family:inherit; font-size:14px; font-weight:600; cursor:pointer; }
	.shareModal .smClose:hover { background:var(--surface); }
	/* 장소 추가 — 별도 모달(검색→선택) */
	.placeModal { display:none; }

	/* PC soft workspace polish — design-pc.md의 부드러운 표면감을 chat02 캔버스까지 확장 */
	html:not(.isMobile) .chatpane,
	html:not(.isMobile) .trippane,
	html:not(.isMobile) .navFlyout { font-optical-sizing:auto; }
	html:not(.isMobile) .nfSearch input { font-size:14px; font-weight:400; }
	html:not(.isMobile) .nfAction { font-size:14px; font-weight:600; }
	html:not(.isMobile) .nfSec { font-size:12px; font-weight:700; }
	html:not(.isMobile) .nfRow .tt { font-size:14px; font-weight:700; }
	html:not(.isMobile) .nfRow .ts { font-size:13px; font-weight:400; color:#62748a; }
	html:not(.isMobile) .chatSub,
	html:not(.isMobile) .dayhd span,
	html:not(.isMobile) .tpCard .ts,
	html:not(.isMobile) .item .mt { font-size:13px; font-weight:400; color:#62748a; }
	html:not(.isMobile) .lsBtn,
	html:not(.isMobile) .vtBtn,
	/* 알약 2px 축소(소유자 2026-07-28) — 높이 32→30, 칸마다 가로 2px. 치수는 여기서만 나온다:
	   line-height:1 이라 padding*2 + font-size + .composer 테두리 2px. 모바일은 컴포저를 숨기므로 PC 스코프로만 줄인다. */
	html:not(.isMobile) .cseg { font-size:14px; padding:7px 15px; } /* 볼드는 활성(.on)만 — 미설정 칸까지 굵으면 채운 것처럼 보인다(소유자 2026-08-02) */
	html:not(.isMobile) .cseg.on { font-weight:600; }
	html:not(.isMobile) .chatTitle b { font-size:22px; font-weight:700; }
	html:not(.isMobile) .tpCard .tt,
	html:not(.isMobile) .item .nm,
	html:not(.isMobile) .prName { font-weight:700; }
	html:not(.isMobile) .savedNote,
	html:not(.isMobile) .loadOlder,
	html:not(.isMobile) .chip,
	html:not(.isMobile) .placeHd,
	html:not(.isMobile) .quoteChip,
	html:not(.isMobile) .fcGo,
	html:not(.isMobile) .routeDayTextBtn { font-size:13px; }
	html:not(.isMobile) .prow.pmini .pmRate,
	html:not(.isMobile) .bot .bubble .fcCap,
	html:not(.isMobile) .chatHoverPreview.mkPreview .loc,
	html:not(.isMobile) .itDist .itMove b,
	html:not(.isMobile) .pop .imHd,
	html:not(.isMobile) .pop.swapPick .swCt,
	html:not(.isMobile) .pop.placeAdd .paCt,
	html:not(.isMobile) .pop.attachMenu .atS,
	html:not(.isMobile) .pop.urlAdd .uaHint { font-size:12px; }
	html:not(.isMobile) .prDesc { font-size:15.5px; }
	html:not(.isMobile) .prBriefPoint,
	html:not(.isMobile) .bot .bubble .hotelFinalSub,
	html:not(.isMobile) .bot .bubble .placeFinalProse { font-size:15px; }
	html:not(.isMobile) .prCat,
	html:not(.isMobile) .prMeta,
	html:not(.isMobile) .chatHoverPreview.mkPreview .rtR,
	html:not(.isMobile) .tpCard .acts > *,
	html:not(.isMobile) .pop.memoEdit .meApply,
	html:not(.isMobile) .pop.dest .destApply,
	html:not(.isMobile) .pop.urlAdd .uaApply,
	html:not(.isMobile) .pop.cal .calDay,
	html:not(.isMobile) .pop.cal .calClear,
	html:not(.isMobile) .pop.cal .calApply { font-size:13px; }
	html:not(.isMobile) .cseg,
	html:not(.isMobile) .stayCard .scNm,
	html:not(.isMobile) .item.memo .nm,
	html:not(.isMobile) .item.lodge .nm { font-size:14px; }
	html:not(.isMobile) .app.leftItinMode .leftItin .item .nm { font-size:15px; }
	html:not(.isMobile) .item .thumb .thNo,
	html:not(.isMobile) .lodgeTag,
	html:not(.isMobile) .itDist .itMove .taxiAlt,
	html:not(.isMobile) .itDist .itMove small { font-size:11px; }
	html:not(.isMobile) .bot .bubble,
	html:not(.isMobile) .prDesc,
	html:not(.isMobile) .prBriefPoint,
	html:not(.isMobile) .bot .bubble .hotelFinalSub,
	html:not(.isMobile) .bot .bubble .placeFinalProse,
	html:not(.isMobile) .prMeta,
	html:not(.isMobile) .fcard .fcMeta,
	html:not(.isMobile) .hotelCatSub,
	html:not(.isMobile) .moreSub { font-weight:400; }
	html:not(.isMobile) .bot .bubble strong,
	html:not(.isMobile) .bot .bubble b,
	html:not(.isMobile) .prBriefPoint b,
	html:not(.isMobile) .prDesc strong,
	html:not(.isMobile) .bot .bubble .pMention,
	html:not(.isMobile) .bot .bubble .hotelFinalSub .pMention,
	html:not(.isMobile) .bot .bubble .placeFinalProse .pMention { font-weight:700; }
	html:not(.isMobile) .bot .bubble .hotelFinalSub,
	html:not(.isMobile) .bot .bubble .placeFinalProse { max-width:680px; font-size:15.5px; font-weight:500; line-height:1.86; }
	html:not(.isMobile) .bot .bubble .hotelFinalSub li { line-height:1.78; }
	html:not(.isMobile) .bot .bubble .hotelFinalSub .finalQuestion { font-size:15.5px; }
	html:not(.isMobile) .bot .bubble .finalTake,
	html:not(.isMobile) .bot .bubble .hotelFinalSub .finalCond,
	html:not(.isMobile) .bot .bubble .hotelFinalSub .pMention,
	html:not(.isMobile) .bot .bubble .placeFinalProse .pMention { font-weight:800; }
	html:not(.isMobile) .foot { background:linear-gradient(180deg, rgba(255,255,255,0), #fff 34%); }
	html:not(.isMobile) .inbar { border-color:var(--line); border-radius:22px; box-shadow:0 6px 14px rgba(15,23,42,.08); }
	html:not(.isMobile) .inbar:focus-within { border-color:color-mix(in srgb, var(--accent) 34%, var(--line)); box-shadow:0 8px 18px rgba(83,58,253,.10); }
	html:not(.isMobile) .inbar .inAdd:hover { background:var(--surface); }
	html:not(.isMobile) .composer { border-color:var(--line); border-radius:13px; box-shadow:0 3px 10px rgba(15,23,42,.07); }
	html:not(.isMobile) .cseg { color:var(--sub); }
	html:not(.isMobile) .cseg + .cseg { border-left-color:var(--line-soft); }
	html:not(.isMobile) .cseg.on { color:var(--ink); }
	html:not(.isMobile) .createBtn { border-radius:12px; box-shadow:0 8px 18px rgba(83,58,253,.14); }
	html:not(.isMobile) .bot .bubble:has(.prow),
	html:not(.isMobile) .bot .bubble:has(.fcard),
	html:not(.isMobile) .bot .bubble:has(.hcGrid) { background:transparent; border-color:transparent; box-shadow:none; padding:0; }
	html:not(.isMobile) .fcard { border-color:var(--line); border-radius:16px; box-shadow:0 3px 10px rgba(15,23,42,.06); }
	html:not(.isMobile) a.fcard:hover { box-shadow:var(--shadow-card); }
	/* 트립패널 = MT(q2.png 실측)식 라운드 인셋 — 흰 여백으로만 분리(보더·섀도·그레이캔버스 없음), 왼쪽만 24px 라운드, 우/하 flush, 위 12px 숨통. 경계 헤어라인이 라운드 노치를 결함처럼 보이게 했던 원흉이라 다시 넣지 말 것 */
	html:not(.isMobile) .app { background:#fff; }
	html:not(.isMobile) .trippane { background:#fff; margin:var(--pc-pane-inset,12px) 0 0; border:none; box-shadow:none; border-radius:24px 0 0 24px; }
	html:not(.isMobile) .trippane:has(#map.on) .canvasTop { background:transparent; -webkit-backdrop-filter:none; backdrop-filter:none; }
	/* 지도 위에서도 접기 버튼은 흰 판을 유지한다(소유자 2026-08-10 "이 버튼 투명으로 만들지말자").
	   투명으로 두면 지도 도로·라벨이 아이콘 뒤로 비쳐 버튼인지 지도 일부인지 안 읽혔다.
	   지도 자체 컨트롤(현위치·레이어)도 흰 판을 쓰므로 이쪽이 오히려 일관된다. hover 만 살짝 눌러 준다 */
	html:not(.isMobile) .trippane:has(#map.on) .collapseBtn:hover { background:var(--surface); }
	html:not(.isMobile) .canvasTop.ctSolid { background:rgba(255,255,255,.96); -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); }
	html:not(.isMobile) .viewToggle { border-color:var(--line); border-radius:13px; box-shadow:var(--shadow-card); }
	html:not(.isMobile) .vtBtn { border-radius:10px; color:var(--sub); }
	html:not(.isMobile) .vtBtn.on { background:var(--ink); color:#fff; box-shadow:0 6px 14px rgba(6,27,49,.16); }
	html:not(.isMobile) .iconBtn { border-color:var(--ctrl-line); border-radius:13px; box-shadow:var(--shadow-card); transition:background .12s ease, transform .12s ease, box-shadow .12s ease; }
	html:not(.isMobile) .canvasTop .iconBtn { border-color:var(--ctrl-line); box-shadow:var(--shadow-card); }
	html:not(.isMobile) .iconBtn:hover { background:#fff; transform:translateY(-1px); box-shadow:0 8px 18px rgba(15,23,42,.11); }
	html:not(.isMobile) .tripsPanel { background:#fff; }
	html:not(.isMobile) .tpHd { border-bottom-color:var(--line); background:rgba(255,255,255,.96); -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); }
	html:not(.isMobile) .tpCount { background:#f5f4f0; color:#62748a; }
	html:not(.isMobile) .tpNew,
	html:not(.isMobile) .tpClose { border-color:var(--line); border-radius:12px; box-shadow:0 3px 10px rgba(15,23,42,.07); }
	html:not(.isMobile) .tpNew:hover,
	html:not(.isMobile) .tpClose:hover { background:#f7f6f3; }
	html:not(.isMobile) .tpStateIcon { border-radius:18px; background:#f7f6f3; }
	html:not(.isMobile) .tpGrid { gap:16px; }
	html:not(.isMobile) .tpCard { border-color:var(--line); border-radius:18px; box-shadow:0 5px 14px rgba(15,23,42,.07); }
	html:not(.isMobile) .tpCard:hover { box-shadow:var(--shadow-card); transform:translateY(-2px); }
	html:not(.isMobile) .tpChips span { background:#f7f6f3; color:#62748a; }
	html:not(.isMobile) .tpCard .acts > * { border-color:var(--line); border-radius:11px; }
	html:not(.isMobile) #empty,
	html:not(.isMobile) .canvasMsg { background:#fff; }
	html:not(.isMobile) .daylist,
	html:not(.isMobile) #tt { background:#fff; }
	html:not(.isMobile) .dayhd { background:rgba(255,255,255,.96); -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); border-bottom:1px solid var(--line-soft); }
	html:not(.isMobile) .routeDayBtn { border-color:var(--ctrl-line); border-radius:12px; }
	html:not(.isMobile) .dayRouteStatus { border-color:var(--line); border-radius:16px; background:var(--answer-bg); box-shadow:0 3px 10px rgba(15,23,42,.06); }
	html:not(.isMobile) .dayRouteStatus.noRoute { background:#f7f6f3; }
	html:not(.isMobile) .routeDayTextBtn { border-radius:12px; box-shadow:0 6px 14px rgba(83,58,253,.12); }
	html:not(.isMobile) .item { border-color:var(--line); border-radius:18px; box-shadow:0 3px 10px rgba(15,23,42,.06); transition:box-shadow .14s ease, transform .14s ease, border-color .14s ease; }
	html:not(.isMobile) .item:hover { border-color:color-mix(in srgb, var(--accent) 20%, var(--line)); box-shadow:var(--shadow-card); transform:translateY(-1px); }
	html:not(.isMobile) .item .thumb,
	html:not(.isMobile) .item.lodge .lodgeIco { border-radius:14px; }
	html:not(.isMobile) .stayCard { border-radius:16px; box-shadow:0 3px 10px rgba(17,154,142,.08); }
	html:not(.isMobile) .dayEmpty { border-color:var(--line); border-radius:14px; background:var(--answer-bg); }
	html:not(.isMobile) .memoAddBtn { border-radius:14px; }
	html:not(.isMobile) .pop { border-color:var(--answer-line); border-radius:16px; box-shadow:var(--shadow-soft); }
	html:not(.isMobile) .pop .opt { border-radius:11px; }

	/* =====	/* ===== 모바일 반응형(#9 청크1) — 단일컬럼 풀스크린 챗 + 일정/지도 바텀시트. Mindtrip 모바일식 ===== */
	/* 모바일 전용 컨트롤은 데스크톱에선 숨김(기본값) */
	.mGrab, .mItinBar, .mSheetBack, .mBotNav, .mSheetClose { display:none; }
	/* ── 모바일 레이아웃 — viewport(≤768px) OR 강제(html.isMobile, head 스크립트가 토글) ── */
	html.isMobile { --accent:#533afd; --accent-strong:#4434d4; --tint:rgba(83,58,253,.06); --mobile-nav-h:64px; } /* PC와 동일 딥 퍼플로 통일(소유자: PC가 훨 나아). 옛 인디고(#5d5fef) 폐기 */
	html.isMobile .app { height:100vh; height:100dvh; }
	html.isMobile .sidebar, html.isMobile .splitter { display:none; }               /* PC 아이콘 레일·스플리터 제거 */
	/* 하단 6탭 앱 네비(#9 청크2) — chat01에서도 앱 다른 탭으로 이동, 'AI 챗' 활성. fixed로 깔고 chatpane이 자리를 비움 */
	/* ── 하단 네비 — common.css `nav`/`.navLnk` 블록을 그대로 복사(값·구조 동일). 변경 시 common.css와 동기화. 강제모바일 포함 표시 ── */
	html.isMobile nav.mBotNav { position:fixed; display:flex; box-sizing:border-box; width:100%; max-width:430px; height:calc(var(--mobile-nav-h) + env(safe-area-inset-bottom, 0px)); padding-bottom:env(safe-area-inset-bottom, 0px); bottom:0; margin:0 auto; background:#FFF; border-top:1px solid #ECECEC; z-index:40; transition:transform .26s cubic-bezier(.2,.8,.3,1); will-change:transform; }
	html.isMobile.chatNavHidden nav.mBotNav, html.isMobile.kbdUp nav.mBotNav { transform:translateY(100%); } /* MT식: 스크롤 아래로/바닥이면 숨김. kbdUp=키보드 올라오면 무조건 숨김(타이핑 집중) */
	html.isMobile nav.mBotNav .navLnk { display:flex; align-items:center; justify-content:center; width:20%; height:var(--mobile-nav-h); text-align:center; transition:opacity .12s ease; -webkit-tap-highlight-color:transparent; text-decoration:none; }
	html.isMobile nav.mBotNav .navLnk:active { opacity:.5; }
	html.isMobile nav.mBotNav .navLnk span { display:block; }
	html.isMobile nav.mBotNav .navLnk .lnkCon:before { content:""; box-sizing:border-box; display:block; width:24px; height:24px; margin:0 auto 5px; background-repeat:no-repeat; background-position:center; background-size:contain; }
	html.isMobile nav.mBotNav .navLnk.navLnk01 .lnkCon:before { background-image:url(/Form/_renew_vue/images/navIco01_off.svg); }
	html.isMobile nav.mBotNav .navLnk.navLnk01.on .lnkCon:before { background-image:url(/Form/_renew_vue/images/navIco01_on.svg); }
	html.isMobile nav.mBotNav .navLnk.navLnk02 .lnkCon:before { background-image:url(/Form/_renew_vue/images/navIco02_off.svg); }
	html.isMobile nav.mBotNav .navLnk.navLnk02.on .lnkCon:before { background-image:url(/Form/_renew_vue/images/navIco02_on.svg); }
	html.isMobile nav.mBotNav .navLnk.navLnk03 .lnkCon:before { background-image:url(/Form/_renew_vue/images/navIco03_off.svg); }
	html.isMobile nav.mBotNav .navLnk.navLnk03.on .lnkCon:before { background-image:url(/Form/_renew_vue/images/navIco03_on.svg); }
	html.isMobile nav.mBotNav .navLnk.navLnk04 .lnkCon:before { background-image:url(/Form/_renew_vue/images/navIco04_off.svg); }
	html.isMobile nav.mBotNav .navLnk.navLnk04.on .lnkCon:before { background-image:url(/Form/_renew_vue/images/navIco04_on.svg); }
	html.isMobile nav.mBotNav .navLnk.navLnk06 .lnkCon:before { background-image:url(/Form/_renew_vue/images/navIcoChat_off.svg); }
	html.isMobile nav.mBotNav .navLnk.navLnk06.on .lnkCon:before { background-image:url(/Form/_renew_vue/images/navIcoChat_on.svg); }
	html.isMobile nav.mBotNav .navLnk .lnkTxt { font-size:11.5px; line-height:1.3; letter-spacing:0; color:#6B6E7A; transition:color .15s ease; } /* line-height: 홈은 상속 1.3 — chat01은 명시해서 동일하게 */
	html.isMobile nav.mBotNav .navLnk.on .lnkTxt { font-weight:700; color:#20212A; }
	html.isMobile .chatpane { flex:1 1 auto; width:100%; min-width:0; border-right:none; padding-bottom:calc(var(--mobile-nav-h) + env(safe-area-inset-bottom)); transition:padding-bottom .26s cubic-bezier(.2,.8,.3,1); } /* 하단 fixed 네비 자리 비움 */
	html.isMobile.chatNavHidden .chatpane, html.isMobile.kbdUp .chatpane { padding-bottom:env(safe-area-inset-bottom, 0px); } /* 네비 숨김(스크롤 or 키보드) 시 입력창이 바닥으로 */
	html.isMobile .app.chatHidden .chatpane { display:flex; }          /* 모바일은 chatHidden 무시(시트로 대체) */
	html.isMobile .collapseBtn { display:none; }                       /* 데스크톱 접기 버튼 숨김(그랩으로 닫음) */
	/* 헤더: 제목바만 — 상단 컴포저 캡슐은 모바일선 숨김(편집칩은 추후 청크) */
	html.isMobile .chatHd { min-height:43px; padding:8px 14px 7px; gap:0; justify-content:center; border-bottom-color:#e8e6e1; background:rgba(255,255,255,.98); }
	html.isMobile .chatHd .composer, html.isMobile .chatHd .createBtn { display:none; } /* 모바일은 칩·CTA 숨김(채팅으로 생성) */
	html.isMobile .leftSeg { display:none; } /* 모바일은 좌측 토글 제거 — 대화만(소유자 지시). PC 2-pane은 유지 */
	html.isMobile .leftItin { display:none !important; }
	html.isMobile .chatTitle { max-width:calc(100% - 88px); justify-content:center; margin:0; padding:4px 8px; }
	html.isMobile .chatTitle b { font-size:15.5px; font-weight:750; text-align:center; }
	html.isMobile .chatTitle .chev { width:14px; height:14px; }
	html.isMobile .chatSub { display:none; }
	/* 메시지·입력 풀폭 */
	html.isMobile .msgs { padding:20px 16px 18px; gap:18px; }
	html.isMobile .row { max-width:100%; min-width:0; gap:0; }
	html.isMobile .bot .av { display:none; }
	html.isMobile .bot .bubble { font-size:15.5px; line-height:1.72; }
	html.isMobile .chipsBlock, html.isMobile .placeBlock, html.isMobile .quoteBar, html.isMobile .savedNote { margin-left:0; }
	html.isMobile .chipsBlock { margin-top:22px; }
	html.isMobile .chips { gap:7px 6px; }
	html.isMobile .chip { padding:4px 13px; font-size:12.5px; background:rgba(6,27,49,.055); }
	/* 메시지 버블이 컬럼 폭을 넘어 가로 스크롤 생기던 버그 — flex item이 min-content 밑으로 안 줄던 것. min-width:0로 줄이고 카드/이미지/썸네일 폭 제한 */
	html.isMobile .bubble { min-width:0; }
	/* ── 모바일 장소 카드 = MT식 컴팩트 인라인 카드. PC 가로카드·미니카드(.pmini)는 베이스 그대로. 전부 html.isMobile 스코프 ── */
	html.isMobile .bot .bubble .prow { min-width:0; max-width:100%; }
	html.isMobile .placeList .prow:not(.pmini), html.isMobile .bot .bubble .prow:not(.pmini) { flex-direction:column; align-items:stretch; gap:10px; max-width:100%; } /* MT 모바일 = 텍스트 위 / 풀폭 사진 아래 세로 스택(소유자 2026-07-13). 가로 컴팩트로 되돌리지 말 것 */
	html.isMobile .placeList .prow:not(.pmini) .prInfo, html.isMobile .bot .bubble .prow:not(.pmini) .prInfo { flex:1 1 auto; min-width:0; width:100%; padding:1px 0 0; gap:5px; }
	html.isMobile .placeList .prow:not(.pmini) .prThumb, html.isMobile .bot .bubble .prow:not(.pmini) .prThumb { order:0; flex:none; width:100%; min-width:0; aspect-ratio:1.5/1; border-radius:14px; } /* 풀폭 큰 사진(텍스트 아래) — DOM 순서 prInfo→prThumb라 order 조작 없이 텍스트 위/사진 아래 */
	html.isMobile .placeList .prName, html.isMobile .bot .bubble .prName { font-size:17.5px; line-height:1.3; } /* 장소카드 폰트 +2px (모바일, 소유자 2026-07-13) */
	html.isMobile .placeList .prRating, html.isMobile .bot .bubble .prRating { font-size:14.5px; }
	html.isMobile .placeList .prMeta, html.isMobile .bot .bubble .prMeta { font-size:14.5px; line-height:1.45; }
	html.isMobile .placeList .prDesc, html.isMobile .bot .bubble .prDesc { font-size:15px; line-height:1.42; gap:2px; }
	html.isMobile .placeList .prBriefPoint, html.isMobile .bot .bubble .prBriefPoint { font-size:16.5px; }
	html.isMobile .bot .bubble .hotelCatHd + .hotelCatSub + .hcGrid { padding-left:14px; }
	html.isMobile .prThumb .prNav { display:none; } /* 모바일: < > 화살표 제거 → 스와이프 슬라이드 — 소유자 */
	html.isMobile .prThumb .prCar { display:flex; overflow-x:auto; overflow-y:hidden; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
	html.isMobile .prThumb .prCar::-webkit-scrollbar { display:none; }
	html.isMobile .prThumb .prCar img { position:static; opacity:1; flex:0 0 100%; width:100%; height:100%; scroll-snap-align:center; }
	html.isMobile .prThumb .prFav, html.isMobile .prThumb .prAdd { width:36px; height:36px; } /* 터치 타깃 30→36px */
	html.isMobile .prThumb .prFav svg, html.isMobile .prThumb .prAdd svg { width:17px; height:17px; }
	html.isMobile .bot .bubble img { max-width:100%; }
	html.isMobile .foot { padding:8px 12px 10px; border-top:none; position:relative; background:linear-gradient(180deg, rgba(255,255,255,0), #fff 28%); } /* 입력창 영역. position:relative=↓버튼 앵커 */
	html.isMobile.mapBtnAway .mItinBar:not([hidden]) { opacity:0; transform:translateY(5px) scale(.96); max-height:0; margin-top:0; margin-bottom:0; padding-top:0; padding-bottom:0; pointer-events:none; } /* '지도' 버튼: 위로 스크롤 시 부드럽게 사라짐(페이드+슬라이드+collapse, display:none 대신) — MT식 */
	.toLatest { display:none; position:absolute; right:14px; top:-50px; width:40px; height:40px; border-radius:50%; background:#fff; border:1px solid var(--line2); box-shadow:0 3px 12px rgba(6,27,49,.18); align-items:center; justify-content:center; color:var(--ink); cursor:pointer; z-index:5; }
	.toLatest svg { width:19px; height:19px; }
	html.isMobile.chatAwayBottom .toLatest { display:flex; } /* 바닥서 충분히 멀 때만 '최신으로' 버튼 */
	html.isMobile.kbdUp .toLatest { display:none; } /* 키보드 올라오면 ↓버튼 숨김 */
	html.isMobile .inbar { min-height:52px; margin-left:0; padding:6px 6px 6px 9px; border-color:#d8d8d8; border-radius:26px; box-shadow:0 3px 12px rgba(15,23,42,.10); } /* 모바일은 MT식 단일 pill */
	html.isMobile .inbar:focus-within { border-color:#171717; box-shadow:0 4px 14px rgba(15,23,42,.12); }
	html.isMobile .inbar textarea { font-size:14px; padding:7px 4px; }
	html.isMobile .inbar button { width:38px; height:38px; }
	html.isMobile .inbar #send:not(:disabled) { background:#171717; }
	html.isMobile .savedNote { margin-left:0; }
	/* 트립페인 → 바텀시트 */
	html.isMobile .trippane { position:fixed; left:0; right:0; bottom:0; top:auto; height:88dvh; max-height:88dvh; z-index:55; background:#fff; border-radius:16px 16px 0 0; transform:translateY(101%); transition:transform .3s cubic-bezier(.32,.72,0,1); will-change:transform; }
	html.isMobile .app.sheetOpen .trippane { transform:translateY(0); box-shadow:0 -10px 36px rgba(6,27,49,.22); } /* 그림자는 시트 열렸을 때만 — 닫혀 화면밖에 숨었을 때 위로 쏘는 그림자가 네비 아래로 새던 것 차단 */
	html.isMobile .mSheetBack { display:block; position:fixed; inset:0; background:rgba(6,27,49,.34); z-index:54; opacity:0; pointer-events:none; transition:opacity .3s ease; }
	html.isMobile .app.sheetOpen .mSheetBack { opacity:1; pointer-events:auto; }
	/* 시트 상단 그랩 핸들(탭=닫기) */
	html.isMobile .mGrab { display:block; position:absolute; top:0; left:0; right:0; height:12px; z-index:13; cursor:pointer; } /* 높이 26→12px — canvasTop 컨트롤과 겹침 제거 */
	html.isMobile .mGrab::before { content:""; position:absolute; top:4px; left:50%; transform:translateX(-50%); width:40px; height:4px; border-radius:3px; background:var(--line); } /* top 9→4px — 높이 축소에 맞춰 보정 */
	/* 모바일 시트 '채팅' 복귀 버튼 — 채팅 화면 '지도' 펄(mItinBar)과 동일: 글래스-블랙 + 아이콘+글자 + 입력창 위 높이(같은 자리 토글감). z-index는 필터 패널(z11) 아래라 필터 열리면 패널이 덮음(겹침 방지). 시트 닫힘 시 trippane이 화면밖이라 함께 숨음. PC 무영향 */
	html.isMobile .mSheetClose { display:inline-flex; align-items:center; justify-content:center; gap:7px; position:absolute; left:50%; bottom:calc(76px + env(safe-area-inset-bottom, 0px)); transform:translateX(-50%); z-index:10; padding:9px 18px; border:none; border-radius:999px; background:linear-gradient(180deg, #202a3f, #0a0f1a); color:#fff; font-family:inherit; font-size:13px; font-weight:600; letter-spacing:.2px; box-shadow:0 6px 18px rgba(6,27,49,.34), 0 1px 2px rgba(6,27,49,.3), inset 0 1px 0 rgba(255,255,255,.12); cursor:pointer; }
	html.isMobile .mSheetClose svg { width:15px; height:15px; opacity:.92; }
	/* 모바일: 지도 필터 = 우하단 아이콘 버튼(패널은 위로 펼침) — MT 맵컨트롤 위치, 상단은 안 건드림(탭과 안 겹침). PC는 상단 우측 유지(무영향) */
	html.isMobile .mapFilter { top:auto; bottom:16px; right:14px; flex-direction:column-reverse; gap:10px; }
	html.isMobile .mapFilter .mfLbl { display:none; }                                   /* '필터' 글자 숨김 → 아이콘만 */
	html.isMobile .mapFilter .mfToggle { width:46px; height:46px; padding:0; border-radius:50%; justify-content:center; gap:0; }
	html.isMobile .mapFilter .mfToggle svg { width:19px; height:19px; }
	html.isMobile .mapFilter .mfPanel { width:min(272px, calc(100vw - 28px)); }
	/* 시트(z55) 안에서 연 팝오버가 가려지는 역전 수정 — confirmModal(200)/toast(60)보다는 낮게 */
	html.isMobile .pop { z-index:57; }
	/* 모바일 픽커 = 바텀시트 (positionPop 모바일 분기와 세트) — 좋아요 폴더·일정추가·날 선택 등 앵커 팝오버 → 하단 시트. PC 무영향 */
	/* 딤 = MT 실측값(2026-07-28): background oklch(0 0 0 / .5) + backdrop-filter grayscale(.5).
	   종전 rgba(6,27,49,.36)은 더 옅고 남색 기가 돌아 뒤가 덜 죽었다. grayscale 은 뒤 지도의 색을 빼서
	   모달만 유채색으로 남긴다 — 어둡게만 하는 것보다 초점이 훨씬 분명해진다(MT가 쓰는 이유). */
	#popScrim { position:fixed; inset:0; background:rgba(0,0,0,.5); z-index:56; opacity:0; visibility:hidden; transition:opacity .2s ease;
		-webkit-backdrop-filter:grayscale(.5); backdrop-filter:grayscale(.5); }
	#popScrim.on { opacity:1; visibility:visible; }
	html.isMobile .pop.popSheet.on { left:0; right:0; bottom:0; top:auto; width:100%; max-width:100%; min-width:0; border-radius:20px 20px 0 0; padding:6px 16px calc(20px + env(safe-area-inset-bottom)); box-shadow:0 -10px 30px rgba(0,0,0,.18); max-height:78vh; overflow-y:auto; animation:popSheetUp .22s cubic-bezier(.3,0,0,1); }
	html.isMobile .pop.popSheet.on::before { content:''; display:block; width:38px; height:4px; border-radius:2px; background:#d7d7dd; margin:4px auto 12px; }
	@keyframes popSheetUp { from { transform:translateY(100%); } to { transform:translateY(0); } }
	/* PC 가운데 팝업 — 장소 상세의 '저장하기/일정에 담기'는 앵커 드롭다운 대신 모달(소유자 2026-07-27 "팝업으로, 드롭오버 말고").
	   모바일은 기존 popSheet(바텀시트) 그대로. z-index 는 #popScrim(56)보다 위여야 가려지지 않는다(.pop 기본 30). */
	html:not(.isMobile) .pop.popModal.on { left:50%; top:50%; transform:translate(-50%,-50%); z-index:57;
		min-width:340px; max-width:min(480px, calc(100vw - 32px)); max-height:min(70vh, 620px); overflow-y:auto;
		padding:14px 16px 12px; border-radius:16px; border-color:transparent;
		box-shadow:0 24px 60px rgba(15,23,42,.22), 0 2px 8px rgba(15,23,42,.10);
		animation:popModalIn .16s cubic-bezier(.3,0,0,1); }
	@keyframes popModalIn { from { opacity:0; transform:translate(-50%,-50%) scale(.97); } to { opacity:1; transform:translate(-50%,-50%) scale(1); } }
	html:not(.isMobile) .pop.popModal.on .opt { padding:11px 12px; font-size:14.5px; border-radius:10px; }
	html:not(.isMobile) .pop.popModal.on .imHd { font-size:15px; font-weight:700; color:var(--ink); padding:6px 6px 10px; }
	/* ── 찜 모달 헤더·행 — MT 'Save to a collection' 정합(소유자 2026-07-27 "MT 참고") ──
	   주의: chat02.myContent.css 는 place.apsl/상세에 로드되지 않는다(assets·placeDetail·map만) → 찜 픽커 스타일은 반드시 여기 둘 것. */
	.favPickC { font-size:11.5px; color:var(--sub); font-weight:400; margin-left:6px; } /* myContent.css 미로드 표면에서도 이름과 카운트가 붙지 않게 */
	.pop.popModal .mdTop,
	.pop.popModal.favPick .favPickTop { position:relative; text-align:center; padding:2px 34px 12px; border-bottom:1px solid var(--line-soft); margin-bottom:6px; }
	.pop.popModal .mdHd,
	.pop.popModal.favPick .favPickHd { font-size:17px; font-weight:700; color:var(--ink); padding:0; }
	.pop.popModal .mdSub,
	.pop.popModal.favPick .favPickSub { margin-top:4px; font-size:12.5px; color:var(--sub); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } /* 무엇을 저장하는지 — MT가 장소명을 부제로 보여줌 */
	.pop.popModal .mdX,
	.pop.popModal.favPick .favPickX { position:absolute; left:-4px; top:-4px; width:30px; height:30px; display:inline-flex; align-items:center; justify-content:center;
		border:0; background:transparent; color:var(--sub); cursor:pointer; border-radius:9px; padding:0; }
	.pop.popModal .mdX:hover,
	.pop.popModal.favPick .favPickX:hover { background:var(--surface); color:var(--ink); }
	.pop.popModal .mdX svg,
	.pop.popModal.favPick .favPickX svg { width:17px; height:17px; }

	/* ── 조건칩 픽커 모달(여행지·날짜·인원·예산) — 소유자 2026-07-28 "팝업이 뜨게, MT 참고" ──
	   본문은 종전 팝오버 마크업 그대로. 폭만 내용에 맞춘다(MT 실측: Who 348px / When 690px). */
	html:not(.isMobile) .pop.popModal.pickModal.on { min-width:0; width:360px; max-width:calc(100vw - 32px); padding:16px 18px 14px; }
	html:not(.isMobile) .pop.popModal.pickModal.cal.on { width:auto; min-width:396px; } /* 달력은 그리드 폭이 내용으로 정해진다 */
	html:not(.isMobile) .pop.popModal.pickModal .destRow { margin-top:2px; }
	html:not(.isMobile) .pop.popModal.pickModal .calHd { margin-top:2px; }

	/* 행 = 썸네일 + 2줄 텍스트. 찜(favPick)·일정 담기 팝업 공용 — MT가 양쪽 다 썸네일을 보여줌 */
	.pop.popModal .opt.favRow { display:flex; align-items:center; gap:11px; }
	.pop.popModal .favRowT { display:flex; flex-direction:column; gap:2px; min-width:0; }
	.pop.popModal .favRowT b { font-weight:600; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
	.pop.popModal .favRowT .favPickC { margin-left:0; } /* 2줄 — 이름 아래로 내려 붙어 읽히던 것 해소 */
	.pop.popModal .pkThumb { flex:0 0 44px; width:44px; height:44px; border-radius:10px; overflow:hidden; background:var(--surface2); display:block; position:relative; }
	.pop.popModal .pkThumb img { width:100%; height:100%; object-fit:cover; display:block; }
	.pop.popModal .pkThumb.pkThumbPh::after { content:''; position:absolute; inset:0; background:
		linear-gradient(135deg, var(--surface2), var(--line-soft)); } /* 사진 없거나 깨진 경우 — 빈 칸으로 두면 행 높이가 흔들림 */
	.pop.popModal.favPick .opt.favPickNew { display:flex; align-items:center; gap:10px; color:var(--ink); font-weight:600; border-top:1px solid var(--line-soft); margin-top:4px; padding-top:12px; border-radius:0; }
	.pop.popModal.favPick .favNewIco { width:26px; height:26px; flex:0 0 26px; display:inline-flex; align-items:center; justify-content:center; border-radius:50%; background:var(--ink); color:#fff; font-size:15px; line-height:1; }
	html.isMobile .pop.popSheet .opt { padding:14px 12px; font-size:15px; border-radius:12px; }
	html.isMobile .pop.popSheet .favPickHd, html.isMobile .pop.popSheet .imHd { font-size:15px; font-weight:700; color:var(--ink); padding:6px 4px 12px; }
	/* 대중교통 대안 펼침 탭 타깃 — PC 폰트 그대로면 행높이 ~16px라 못 누름 */
	html.isMobile .itDist .itMove { padding:6px 0; gap:5px 8px; }
	html.isMobile .itDist .itMove b { font-size:12.5px; }
	html.isMobile .itDist .itMove em { font-size:12px; }
	html.isMobile .itDist .itMove .mvCaret { width:14px; height:14px; }
	/* Day 헤더 — daylist 패딩 18px에 맞춰 오버플로 제거 */
	html.isMobile .dayhd { margin:0 -18px 12px; padding:7px 18px; }
	/* 터치엔 호버 없음 — 상시 노출 */
	html.isMobile .prow[data-pi] .prThumb .prFav, html.isMobile .prow[data-pi] .prThumb .prAdd { opacity:1; visibility:visible; }
	/* 동선 최적화는 PC 전용 */
	html.isMobile .dayRouteStatus { display:none; }
	html.isMobile .daylist { padding:60px 18px 40px; }                 /* canvasTop(그랩+토글) 공간 확보 */
	html.isMobile #empty { padding:60px 24px 32px; }

	html.isMobile .navFlyout { width:86%; max-width:340px; }
	/* 채팅 하단 '일정/지도 보기' 바(트립·핀 있을 때만 JS가 노출) */
	html.isMobile .mItinBar:not([hidden]) { display:flex; width:fit-content; max-width:100%; margin:0 auto 10px; padding:9px 18px; border:none; border-radius:999px; background:linear-gradient(180deg, #202a3f, #0a0f1a); color:#fff; font-family:inherit; font-size:13px; font-weight:600; letter-spacing:.2px; cursor:pointer; align-items:center; justify-content:center; gap:7px; box-shadow:0 6px 18px rgba(6,27,49,.34), 0 1px 2px rgba(6,27,49,.3), inset 0 1px 0 rgba(255,255,255,.12); max-height:56px; opacity:1; transform:none; overflow:hidden; transition:opacity .22s ease, transform .26s cubic-bezier(.2,.8,.3,1), max-height .28s cubic-bezier(.2,.8,.3,1), margin .28s ease, padding .28s ease; } /* 글래스 블랙 펄(소유자 "있어보이게"): 그라데이션+인너하이라이트+깊은섀도+지도아이콘. 퍼플 아님. 스크롤 사라짐은 부드럽게(페이드+collapse) */
	html.isMobile .mItinBar svg { width:15px; height:15px; opacity:.92; }
	/* ── 강제 모바일을 넓은 화면(PC)에서 — 가운데 폰 폭 컬럼. .app transform이 fixed 자식(하단네비·바텀시트·시트백)을 컬럼 안에 가둠 ── */
	@media (min-width:769px) {
		html.isMobile body { background:#fff; } /* 홈(앱)과 동일: 흰 배경 — 회색 여백 제거 */
		html.isMobile .app { position:relative; transform:translateZ(0); width:430px; max-width:100%; margin:0 auto; height:100dvh; overflow:hidden; } /* 홈 .wrapper(430px 가운데)와 동일 — 보더·그림자 없음 */
	}

	/* 활성 가이드(크리에이터 페르소나) 뱃지 — chatHd 아래 한 줄 바. var 토큰으로 스킨(퍼플/코발트) 자동 상속 */
	.guideBadge { display:flex; align-items:center; gap:9px; padding:9px 18px; border-bottom:1px solid var(--line); background:var(--tint); color:var(--ink); font-size:13px; }
	.guideBadge[hidden] { display:none; }
	.guideBadge .gbEmoji { font-size:15px; line-height:1; flex-shrink:0; }
	.guideBadge .gbTxt { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--sub); }
	.guideBadge .gbTxt b { color:var(--accent); font-weight:700; }
	.guideBadge .gbClear { flex-shrink:0; border:1px solid var(--ctrl-line); background:var(--bg); color:var(--sub); border-radius:8px; padding:4px 10px; font-size:12px; font-family:inherit; cursor:pointer; transition:border-color .15s ease, color .15s ease; }
	.guideBadge .gbClear:hover { border-color:var(--accent); color:var(--accent); }
	html.isMobile .guideBadge { padding:8px 14px; }

	/* '이 가이드가 콕 집은 곳' 섹션 — 활성 가이드 실장소 픽(답변 아래 별도 버블) */
	.guidePicks .gpHd { display:flex; align-items:center; gap:7px; background:var(--tint); border-radius:10px; padding:9px 12px; margin-bottom:10px; color:var(--accent); font-weight:700; }
	.guidePicks .gpHd .hotelCatEmoji { font-size:15px; }


/* ===== chat02 기본 스킨 — 구 chat02.test.css(Channel Talk/Bezier 목업) 승격, 2026-07-14 =====
   구 html.test 테스트 스코프를 폐기하고 chat02 기본으로 적용. 액센트=앱 메인 퍼플 #533afd(코발트로 되돌리지 말 것).
   선두 접두사 html:root = 특이도 (0,1,1)로 구 html.test 와 동일 — 런타임 주입 청크(chat02.map/timetable/placeDetail…css)가
   나중에 로드되며 같은 셀렉터를 덮어쓰지 못하게 하는 의도적 부스트. 접두사를 떼지 말 것.
   토큰은 아래 :root 가 위쪽 기본 :root 를 소스순서로 오버라이드. 참조 원본=design-pc-test.md. ===== */
/* ── 1. 토큰 ── */
:root {
	--accent:#533afd; --accent-strong:#4434d4; --tint:rgba(83,58,253,.10);
	--ink:#242428; --text:rgba(0,0,0,.85); --sub:rgba(0,0,0,.6); --muted:#767676; /* 4.5:1 충족(구 #A7A7AA=2.4:1, WCAG 미달 58곳) — 되돌리지 말 것 */
	--line:#EFEFF0; --line-soft:#F3F3F4;
	--ctrl-line:#d8d8dd; /* 컨트롤(버튼·입력) 테두리 — 구분선(--line)보다 진하게, design-pc.md §5 */
	--surface:#F7F7F8; --surface2:#EFEFF0; --bg:#ffffff;
	--answer-bg:#FCFCFC; --answer-warm:#FCFCFC; --answer-line:#EFEFF0;
	--star:#EDBC40; --open:#31A552; --closed:#E94E58;
	--shadow-soft:0 0 0 1px rgba(0,0,0,.05);
	--shadow-card:0 0 0 1px rgba(0,0,0,.05);
	--pc-shadow:0 0 0 1px rgba(0,0,0,.05);
}
/* 이징 통일 — Bezier 단일 커브 */
html:root .chip, html:root .iconBtn, html:root .vtBtn, html:root .lsBtn, html:root .sbItem, html:root .dfCard, html:root .dfPlace, html:root .prow .prThumb, html:root .inbar, html:root .item, html:root .nfRow, html:root .nbCard, html:root .pdTab, html:root .mcCard { transition-timing-function:cubic-bezier(.3,0,0,1); }
/* 스크롤바 썸 — 중립 알파 */
html:root .msgs::-webkit-scrollbar-thumb, html:root .daylist::-webkit-scrollbar-thumb, html:root #tt::-webkit-scrollbar-thumb, html:root .placeDetail::-webkit-scrollbar-thumb, html:root .dfWrap::-webkit-scrollbar-thumb, html:root .tpBody::-webkit-scrollbar-thumb, html:root .nfList::-webkit-scrollbar-thumb { background:rgba(0,0,0,.28); background-clip:content-box; border:3px solid transparent; }

/* ── 1b. 타이포 — 웨이트 재배분(완화)·트래킹 ── */
/* 조용한 컨트롤 라벨 = 400 (CT 내비 15/400 문법), 활성·주요 = 700 */
/* 카테고리 칩(.nbCat/.mcCat/.pmChip)은 이 재배분에서 뺐다(소유자 2026-08-11 "일정 추가 아이디어 이거 기준으로 다 맞춰라")
   — 기준 .addChip 이 12.5/500 이라 스킨이 400/700 으로 되덮으면 같은 화면 안에서 칩 두께가 갈린다 */
html:root .vtBtn, html:root .lsBtn, html:root .chip, html:root .pdTab, html:root .chatSub .tsEdit, html:root .param, html:root .pmFchip, html:root .pmTab, html:root .hoursToggle, html:root .loadOlder, html:root .footNote { font-weight:400; }
html:root .vtBtn.on, html:root .lsBtn.on, html:root .pdTab.on, html:root .pmTab.on { font-weight:700; }
/* 제목·이름·헤딩 = 700 + -0.4px */
html:root .chatTitle b, html:root .dayhd b, html:root .prName, html:root .item .nm, html:root .dfHd h3, html:root .pdHeadTxt b, html:root .pdSecHd, html:root .tpCard .tt, html:root .nbCb .nm, html:root .mcNm, html:root #empty b, html:root .moreHd, html:root .nbGroupHd .t, html:root .nbIntroTitle { font-weight:700; letter-spacing:-0.4px; }
html:root .bot .bubble h3, html:root .bot .bubble h4, html:root .bot .bubble h5 { font-weight:700; letter-spacing:-0.4px; }
/* 본문 — CT 16px/1.5, -0.1px */
html:root .bot .bubble { line-height:1.55; letter-spacing:-0.1px; }
html:root .prDesc, html:root .prMeta, html:root .pdSummary, html:root .rvSummary { letter-spacing:-0.1px; }
/* 과중 웨이트(750/800) 정리 */
html:root .nbIntroKicker, html:root .pop.timeEdit .teWheelTitle b, html:root .pop.timeEdit .teWheelIt, html:root .pop.timeEdit .teWheelValue, html:root .pop.timeEdit .teClear, html:root .pop.timeEdit .teCancel, html:root .nbThumb .nbDist, html:root .pdGalBtn { font-weight:700; }

/* ── 2. 대화 표면 ── */
/* 사용자 말풍선 = cobalt-10 틴트 + 잉크(AA) — CT 알파 사다리 문법 */
html:root .me .bubble { background:#533afd1A; color:var(--ink); border-radius:20px; border-top-right-radius:8px; }
/* 제안 칩 = 8px 사각 칩 + Black-5 필 */
html:root .chip { border-radius:8px; border-color:transparent; background:rgba(0,0,0,.05); }
html:root .chip:hover { background:rgba(0,0,0,.08); }
/* 컴포저 — 8px 입력 문법 + 코발트 포커스 링, 송신 12px */
html:root .inbar { border-radius:16px; border:1px solid rgba(0,0,0,.08); box-shadow:none; }
html:root .inbar:focus-within { border-color:transparent; box-shadow:0 0 0 3px #533afd4D; }
html:root .inbar button { border-radius:12px; }
html:root .inbar .inAdd:hover { background:rgba(0,0,0,.05); color:var(--ink); }
html:root .composer { border-radius:12px; box-shadow:none; border:1px solid rgba(0,0,0,.08); }
/* 장소 카드 */
html:root .prThumb { border-radius:12px; }
html:root .prow.pmini .pmThumb { border-radius:8px; }
html:root .prow.pmini.pmNoimg .pmBody { border-radius:8px; border-color:rgba(0,0,0,.08); }
html:root .placeList .prow + .prow, html:root .bot .bubble > .prow + .prow { border-top-color:#EFEFF0; }
html:root .bot .bubble hr { border-top-color:#EFEFF0; }
html:root .bot .bubble .moreHd { border-top-color:#EFEFF0; }
html:root .bot .bubble .pMention { border-bottom-color:rgba(0,0,0,.30); }
/* 딜 카드(항공·호텔)·저장노트 */
html:root .fcard { border-radius:12px; box-shadow:none; border-color:rgba(0,0,0,.08); }
html:root a.fcard:hover { box-shadow:0 0 0 1px rgba(0,0,0,.12); }
html:root .savedNote { border-radius:8px; background:#F7F7F8; border-color:transparent; }
html:root .savedNote:hover { background:#EFEFF0; }
html:root .quoteChip { border-radius:8px; background:#F7F7F8; border-color:transparent; }
html:root .quoteChip .qcX:hover { background:rgba(0,0,0,.08); }
/* 로딩 — 큐·경로 시그널을 코발트 계열로(하드코딩 퍼플 이스케이프) */
html:root .thinkCue { background:#F7F7F8; border-color:transparent; box-shadow:none; border-radius:12px; }
html:root .routeSig::before { background:linear-gradient(90deg, rgba(83,58,253,.12), rgba(83,58,253,.46), rgba(15,179,163,.35), rgba(83,58,253,.12)); }
html:root .routeSig i { background:#D6CEFC; box-shadow:0 0 0 3px rgba(83,58,253,.08); }
html:root .routeSig .pulse { background:linear-gradient(135deg, #533afd, #0FB3A3); box-shadow:0 0 0 5px rgba(83,58,253,.10); }

/* ── 3. 셸·캔버스 크롬 ── */
/* 동선 최적화(왼쪽 헤더) 버튼은 토큰 기반이라 스킨 토큰으로 자동 적응 */
html:root .sidebar { border-right-color:#EFEFF0; }
html:root .sbItem, html:root .sbNew, html:root .sbLogo { border-radius:8px; }
html:root .chatHd { border-bottom-color:#EFEFF0; }
html:root .trippane { border-radius:20px 0 0 20px; }
html:root .viewToggle { border-radius:12px; box-shadow:none; border-color:var(--ctrl-line); }
html:root .vtBtn { border-radius:8px; }
html:root .vtBtn.on { background:#242428; box-shadow:none; }
html:root .iconBtn { border-radius:12px; box-shadow:none; border-color:var(--ctrl-line); }
html:root .iconBtn:hover { transform:none; box-shadow:0 0 0 1px rgba(0,0,0,.12); }
html:root .canvasTop .iconBtn { border-color:rgba(0,0,0,.10); box-shadow:0 1px 2px rgba(0,0,0,.08); }
html:root .leftSeg { border-radius:12px; box-shadow:none; border-color:var(--ctrl-line); }
html:root .lsBtn { border-radius:8px; }
html:root .loadOlder { border-radius:8px; }
html:root .createBtn { border-radius:12px; box-shadow:none; }
html:root .top .logo { border-radius:8px; }
html:root .tab.on { color:var(--accent); border-bottom-color:var(--accent); }

/* ── 4. 일정 목록(캔버스) ── */
html:root .item { border-radius:12px; box-shadow:none; border-color:rgba(0,0,0,.08); }
html:root .item .thumb, html:root .item .thumb img { border-radius:8px; }
html:root .itGhost { border-radius:12px; box-shadow:0 8px 24px rgba(0,0,0,.14), 0 0 0 1px rgba(0,0,0,.05); }
html:root .dayhd { border-bottom-color:#F3F3F4; }
/* 숙소 배지·구간(teal 기능색) → 코발트 틴트 단색화 */
html:root .dayhd .dayStay { background:#533afd1A; color:#4434d4; }
html:root .dayhd .dayStayTag { background:#533afd; color:#fff; }
html:root .dayhd .dayStayTag.out { color:#4434d4; background:transparent; box-shadow:inset 0 0 0 1px #533afd4D; }
html:root .lodgeTag { background:#533afd1A; color:#4434d4; }
/* 시간표 */
html:root #tt .ttCol .h { border-bottom-color:#E3E4E6; }
html:root #tt .ttHd.ttHdHi { background:#533afd1A; }
html:root #tt .ttBlk { box-shadow:none; border-radius:4px; } /* 퍼플 링 제거 — 블록 보더=카테고리색 인라인(2026-07-24 캘린더 정합) */
html:root #tt .ttStayBand { background:#533afd1A; color:#4434d4; }
html:root #tt .ttStayBand .ttTag { background:#533afd; }
html:root #tt .ttStayBand .ttStayExt { border-color:#533afd4D; color:#4434d4; }
html:root #tt .ttStayBand .ttStayExt:hover { background:#533afd1A; }
html:root #tt .ttStayIO { border-top-color:#533afd4D; }
html:root #tt .ttStayIO span { color:#4434d4; }
html:root #tt .ttStayIO.ttIODrag span { box-shadow:inset 0 0 0 1px #533afd4D, 0 1px 3px rgba(0,0,0,.10); }
html:root #tt .ttUtChip { border-radius:8px; }
html:root .ttGhost { border-radius:8px; box-shadow:0 8px 24px rgba(0,0,0,.16), 0 0 0 1px rgba(0,0,0,.06); }
/* 동선 편집·Day 팝 — 하드코딩 퍼플 틴트 이스케이프 */
html:root .routeEdit { border-radius:12px; border-color:#EFEFF0; }
html:root .routeEdit .reOptBar.prev { background:#533afd1A; border-color:#533afd33; border-radius:12px; }
html:root .routeEdit .reBtn { border-radius:8px; }
html:root .routeEdit .reBtn.opt:hover { background:rgba(83,58,253,.14); }
html:root .routeEdit .reRow { border-radius:8px; }
html:root .routeEdit .reRow.reDragging { box-shadow:0 6px 18px rgba(0,0,0,.14); }
html:root .pop.routeDayPop .rePopPreview { border-color:#533afd33; background:#533afd1A; border-radius:8px; }
html:root .pop.routeDayPop .rePopBtn { border-radius:8px; }
/* 지도 오버레이 — 플로팅 그림자 플랫화 */
html:root .mapFilter .mfToggle { box-shadow:0 1px 2px rgba(0,0,0,.10), 0 0 0 1px rgba(0,0,0,.05); border-color:rgba(0,0,0,.08); }
html:root .mapFilter .mfPanel { border-radius:12px; box-shadow:0 4px 16px rgba(0,0,0,.10), 0 0 0 1px rgba(0,0,0,.05); border-color:transparent; }
html:root .mapFilter .mfPill { border-radius:8px; }
html:root .mapFilter .mfCbx { border-radius:4px; }
html:root .mapLegend { box-shadow:0 1px 2px rgba(0,0,0,.10), 0 0 0 1px rgba(0,0,0,.05); border-color:rgba(0,0,0,.08); }
html:root .mkPreview { border-radius:12px; box-shadow:0 4px 16px rgba(0,0,0,.10), 0 0 0 1px rgba(0,0,0,.05); border-color:transparent; }
html:root .mkPreview .rt, html:root .mkPreview .rtR .st { color:var(--star); }
/* 이동 수단 줄·시간 편집칩 등은 var 상속 — 별도 지정 불필요 */

/* ── 5. 장소 상세 ── */
html:root .placeDetail { border-radius:20px 0 0 20px; border-left:none; box-shadow:-1px 0 0 rgba(0,0,0,.06); }
html:root .pdHero { border-radius:20px 0 0 0; }
html:root .pdHero .hcar, html:root .pdHero .pdGridLayer, html:root .pdHero .pdHeroPh { border-radius:16px; border-color:#EFEFF0; box-shadow:none; }
html:root .pdHero .pdCell { border-radius:8px; }
html:root .pdTabs { background:#F7F7F8; border-color:transparent; border-radius:12px; box-shadow:none; }
html:root .pdTab { border-radius:8px; }
html:root .pdTab.on { box-shadow:0 0 0 1px rgba(0,0,0,.06); }
html:root .pdBack { border-radius:12px; border-color:rgba(0,0,0,.10); box-shadow:0 1px 2px rgba(0,0,0,.08); }
html:root .pdHeadTxt b { color:var(--ink); }
html:root .pdHeadActs .pdAdd, html:root .pdHeadActs .pdFavBtn, html:root .pdHeadActs .pdMapLink { border-color:var(--ctrl-line); color:var(--sub); }
html:root .pdHeadActs .pdFavBtn:hover, html:root .pdHeadActs .pdMapLink:hover { background:#F7F7F8; color:var(--ink); }
html:root .pdActions .pdBook { border-radius:8px; }
html:root .pdRow > svg, html:root .pdRow .rl, html:root .pdRow .rv, html:root .pdRow a.rv { color:var(--text); }
html:root .openBadge { border-radius:6px; }
html:root .openBadge.on { color:#31A552; background:#31A5521A; }
html:root .openBadge.off { color:#E94E58; background:#E94E581A; }
html:root #pdMap { border-radius:12px; }
html:root .nbMapBox #nbMap { border-radius:12px; border-color:#EFEFF0; box-shadow:none; }
html:root .pdAskRow:hover .pdAskQ, html:root .pdAskRow:hover .pdAskChev { color:var(--accent); }
html:root .rvNote { border-radius:8px; border-color:#EFEFF0; }
html:root .rvEmpty { border-radius:8px; }
/* 주변 카드 */
html:root .nbCard { border-radius:12px; border-color:rgba(0,0,0,.08); box-shadow:none; }
html:root .nbCard:hover { transform:none; box-shadow:0 0 0 1px rgba(0,0,0,.12); border-color:rgba(0,0,0,.12); }
html:root .nbThumb { border-radius:8px; }
/* .nbCat r8 되덮기 제거(2026-08-11) — 카테고리 칩은 기준(.addChip) 999 알약 하나로 간다 */
html:root .nbAct:hover { color:var(--accent); }
/* 스켈레톤 — 시머 제거, 정적 Grey-100(Bezier 플랫 시그니처) */
html:root .skAni { animation:none; background:#F7F7F8; }
html:root .pdHero .pdHeroPh.loading { animation:none; background:#F7F7F8; }
html:root .reelCard, html:root .skelCard { border-radius:8px; }

/* ── 6. 팝·모달·패널 ── */
html:root .pop { border-radius:12px; box-shadow:0 4px 16px rgba(0,0,0,.10), 0 0 0 1px rgba(0,0,0,.05); border-color:#EFEFF0; }
html:root .pop .opt.sel { background:#533afd1A; }
html:root .pop.timeEdit { border-radius:12px; border-color:#EFEFF0; box-shadow:0 8px 24px rgba(0,0,0,.12), 0 0 0 1px rgba(0,0,0,.05); }
html:root .pop.timeEdit .teWheelBand { border-radius:8px; }
html:root .pop.timeEdit .teClose, html:root .pop.timeEdit .teSave { border-radius:8px; }
html:root .pop.lodgePick .ldHotel { background:#533afd1A; color:#4434d4; }
html:root .pop.lodgePick .ldNote.on { color:#4434d4; }
html:root .pop.lodgePick .ldCk { border-radius:4px; }
html:root .pop.lodgePick .ldGo { border-radius:8px; }
html:root .pop.insertPick .ipSlot:hover, html:root .pop.insertPick .ipSlot:focus-visible { border-color:#533afd4D; }
html:root .placeModal { background:rgba(0,0,0,.3); }
html:root .placeModal .pmBox { border-radius:20px; box-shadow:0 24px 64px rgba(15,23,42,.28); } /* 공용 place-add 판(2026-08-05 전면 전환) — 스킨 12px 가 scheduleEdit 20px 를 덮던 것 */
html:root .placeModal .pmSearch input { border-radius:999px; border-color:var(--ctrl-line); } /* 알약(2026-08-05 전면 전환) — scheduleEdit.css 의 새 999px 를 스킨이 8px 로 되돌리던 것 */
html:root .placeModal .pmSearch input:focus { border-color:#c8cdd6; box-shadow:none; background:#fff; } /* 조용한 포커스 — 공용 place-add 문법 */
html:root .placeModal .pmOpt { border-radius:8px; }
html:root .placeModal .pmThumb { border-radius:8px; }
html:root .placeModal .pmFchip { border-radius:8px; } /* .pmChip 제외(2026-08-11) — 카테고리 칩은 기준(.addChip) 999 알약 */
html:root .placeModal .pmNote { background:#533afd1A; color:#4434d4; border-radius:8px; }
html:root .placeModal .pmAdded { background:#533afd1A; color:#4434d4; border-radius:6px; }
html:root .placeModal .pmFld { border-radius:6px; }
html:root .confirmModal, html:root .shareModal { background:rgba(0,0,0,.3); }
html:root .confirmModal .cmBox, html:root .shareModal .smBox { border-radius:12px; box-shadow:0 8px 24px rgba(0,0,0,.12), 0 0 0 1px rgba(0,0,0,.05); }
html:root .confirmModal .cmBtn { border-radius:8px; }
html:root .shareModal .smLinkInp, html:root .shareModal .smCopy, html:root .shareModal .smClose { border-radius:8px; }
html:root .navFlyout { border-radius:20px; box-shadow:0 8px 24px rgba(0,0,0,.10), 0 0 0 1px rgba(0,0,0,.05); border-color:transparent; }
html:root .nfSearch { border-radius:12px; box-shadow:none; border-color:var(--ctrl-line); }
html:root .nfAction, html:root .nfRow { border-radius:12px; }
html:root .nfRow .th { border-radius:8px; }
html:root .chatHoverPreview.mkPreview { border-radius:12px; box-shadow:0 4px 16px rgba(0,0,0,.10), 0 0 0 1px rgba(0,0,0,.05); }
html:root .pcToast { border-radius:8px; }
html:root .dragTip { border-radius:6px; box-shadow:0 4px 12px rgba(0,0,0,.16); }
/* 트립스 패널 */
html:root .tpCard { border-radius:12px; box-shadow:none; border-color:rgba(0,0,0,.08); }
html:root .tpCard:hover { transform:none; box-shadow:0 0 0 1px rgba(0,0,0,.12); }
html:root .tpCount { background:#F7F7F8; }

/* ── 7. 디스커버리 피드·좌측 패널 ── */
html:root #empty .dfCard { border-radius:20px; border-color:rgba(0,0,0,.05); }
html:root #empty .dfCard.chat { border-color:rgba(0,0,0,.08); }
html:root #empty .dfCard .tag { border-radius:6px; }
html:root #empty .dfPlace { border-radius:20px; border-color:rgba(0,0,0,.05); }
html:root #empty .dfPlace:hover { box-shadow:0 0 0 1px rgba(0,0,0,.12); transform:none; }
html:root #empty .dfPlace .ph { border-radius:0; }
html:root #empty .dfReel { border-radius:12px; }
html:root #empty .dfFallback b { font-weight:700; }
/* 내 콘텐츠(좌측) */
html:root .mcSearchRow { border-radius:8px; border-color:var(--ctrl-line); }
/* .mcCat r8 되덮기 제거(2026-08-11) — 카테고리 칩은 기준(.addChip) 999 알약 하나로 간다 */
html:root .mcCard { border-radius:12px; border-color:rgba(0,0,0,.08); }
html:root .mcCard:hover { box-shadow:0 0 0 1px rgba(0,0,0,.12); }
html:root .mcSrc { border-radius:6px; }
html:root .day.dropOver { border-radius:12px; }
/* 파라미터 칩 */
html:root .param { border-radius:8px; border-color:var(--ctrl-line); }
html:root .param.pick:hover { background:#533afd1A; border-color:#533afd4D; }

/* ── 장소 단독 페이지(place.apsl → html.pdOnly, 소유자 2026-07-24 MT 장소 페이지 대응) ──
   chat02 셸(사이드바·채팅 컬럼)을 숨기고 .trippane 위 .placeDetail만 풀페이지로. 닫기(뒤로)는 JS가 history.back 처리 */
html.pdOnly .sidebar, html.pdOnly .chatpane { display:none; }
/* tripDetail 상세 서브 드로어 iframe(place.apsl?embed=pd, 2026-08-02) — 뒤로·접기는 iframe 밖으로 나가려 하므로 숨김. 닫기는 부모 드로어의 ← 가 한다 */
html.pdEmbed .pdBack, html.pdEmbed .pdCollapse { display:none !important; }
html.pdEmbed .appBar { display:none !important; } /* 단독 페이지의 46px 장소명 바 — 드로어 안에선 부모가 이미 창 크롬이고 이름은 본문 pdName 에 있어 이중 표시. 임베드는 사진부터(소유자 2026-08-04 "또 나왔어") */
html.pdOnly .trippane > :not(.placeDetail) { display:none !important; } /* 부팅 중 캔버스(#empty 디스커버리 등)가 잠깐 비치던 플래시 차단(소유자 2026-07-24) — ID 특이도(#empty display:flex)를 이겨야 해서 !important, 상세만 첫 페인트부터 */
html.pdOnly:not(.isMobile) .trippane { margin:0; border-left:0; border-radius:0; }
html:root.pdOnly:not(.isMobile) .trippane { border-radius:0; } /* 스킨 html:root 라운드 규칙 오버라이드 */
/* 본문 폭 제한(소유자 2026-07-27 "폭 차이부터 맞추자") — MT 장소 페이지가 1152px 가운데 정렬인데
   우리는 1430px 풀블리드라 한 줄이 너무 길어 읽기 흐름이 끊겼음. **단독 페이지에서만** 적용:
   드로어(chat01/chat02)의 .placeDetail 은 패널 폭에 꽉 차야 하므로 절대 건드리지 않는다.
   .pdSticky 는 반투명+블러 배경이 뷰포트를 덮어야 해서 폭은 그대로 두고 '안쪽'만 제한(좁히면 양옆으로 본문이 비침). */
html.pdOnly:not(.isMobile) { --pd-max:1152px; }
/* .pdPane > * — .pdBody 만 잡으면 '주변' 탭의 .nbMapBox(지도)가 형제로 빠져 혼자 풀블리드로 남는다
   (소유자 2026-07-27 "주변 탭 지도가 확장되어있어"). 판 전체를 같은 폭으로 맞춘다. */
html.pdOnly:not(.isMobile) .pdHero,
html.pdOnly:not(.isMobile) .pdPane > *,
html.pdOnly:not(.isMobile) .pdHeadTxt { max-width:var(--pd-max); margin-inline:auto; width:100%; }
html.pdOnly:not(.isMobile) .pdBack { margin-left:max(36px, calc((100% - var(--pd-max)) / 2)); } /* 뒤로 버튼도 본문 좌측선에 맞춤 — 36px에 두면 가운데 정렬된 본문과 따로 놀아 보임 */
/* .pdTabs 는 display:inline-flex; width:auto 인 '내용폭 알약'이라 margin-inline:auto 로는 안 옮겨진다
   (게다가 placeDetail.css 의 margin 단축속성이 나중 로드로 이김) → 좌측선 + 원래 24px 인셋으로 직접 이동 */
html.pdOnly:not(.isMobile) .pdTabs { margin-left:max(24px, calc((100% - var(--pd-max)) / 2 + 24px)); } /* max 클램프 — 드로어 임베드(929px 등 pd-max 미만)에서 음수 마진으로 탭이 왼쪽 밖으로 잘리던 것(2026-08-04) */
/* 접기 버튼 — 단독 페이지(펼침)에서만. 드로어에선 이미 접힌 상태라 의미가 없어 숨긴다.
   pdBack 과 같은 줄에 나란히: pdBack 이 sticky+음수 margin-bottom 으로 히어로 위에 떠 있어서, 같은 방식으로 겹쳐 올리고 좌측만 버튼 하나 폭(38)+간격(8)만큼 민다 */
.pdCollapse { display:none; }
html.pdOnly:not(.isMobile) .pdCollapse { display:inline-flex; position:sticky; top:18px; align-self:flex-start; flex-shrink:0; z-index:30;
	margin:30px 0 -68px calc(max(36px, (100% - var(--pd-max)) / 2) + 46px);
	width:38px; height:38px; align-items:center; justify-content:center;
	border:1px solid rgba(10,22,49,.12); border-radius:14px; background:rgba(255,255,255,.92);
	box-shadow:0 4px 14px rgba(15,23,42,.13); color:var(--ink); cursor:pointer;
	-webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }
html.pdOnly:not(.isMobile) .pdCollapse svg { width:18px; height:18px; }
html.pdOnly:not(.isMobile) .pdCollapse:hover { background:var(--surface); }

/* 확장 버튼 — 드로어(접힘)에서만. 단독 페이지에선 이미 펼친 상태라 의미가 없어 숨긴다.
   .pdBack 과 같은 줄에 나란히 — pdBack 이 sticky+음수 margin-bottom 으로 히어로 위에 떠 있으므로 같은 방식으로 겹쳐 올리고
   버튼 하나 폭(38)+간격(8)만큼 민다. pdOnly 의 .pdCollapse 가 쓰는 계산과 같은 문법.
   MT 도 Close 바로 옆(패널 좌상단)에 둔다 — 나란히 두는 배치까지 같다. */
.pdExpand { display:none; }
html:not(.pdOnly):not(.isMobile) .pdExpand { display:inline-flex; position:sticky; top:18px; align-self:flex-start; flex-shrink:0; z-index:30;
	margin:30px 0 -68px 82px; /* .pdBack 의 margin-left:36px + 38 + 8 */
	width:38px; height:38px; align-items:center; justify-content:center;
	border:1px solid rgba(10,22,49,.12); border-radius:14px; background:rgba(255,255,255,.92);
	box-shadow:0 4px 14px rgba(15,23,42,.13); color:var(--ink); cursor:pointer;
	-webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }
html:not(.pdOnly):not(.isMobile) .pdExpand svg { width:18px; height:18px; }
html:not(.pdOnly):not(.isMobile) .pdExpand:hover { background:var(--surface); }

/* 넓게 보기 — MT 실측(2026-07-29): 페이지 이동이 아니라 **그 자리에서** 패널이 전체 폭이 되고, 사이드바만 남는다(URL 불변).
   .placeDetail 은 .trippane 안의 absolute inset:0 이라, 채팅 판을 접으면 트립판이 전부 차지하며 상세도 따라 넓어진다
   — 상세 자체의 위치 규칙을 건드리지 않아도 되는 게 이 방식의 이점. */
html:not(.pdOnly):not(.isMobile) .app.pdWide .chatpane { display:none; }
html:not(.pdOnly):not(.isMobile) .app.pdWide .trippane { border-left:none; border-radius:0; }
html:not(.pdOnly):not(.isMobile) .app.pdWide .placeDetail { border-left:none; border-radius:0; box-shadow:none; }

/* 넓게 보기의 본문 폭 — 1584~1593의 단독 페이지 규칙과 같은 것을 확장 상태에도 적용한다(소유자 2026-07-29 "너무 넓대대해").
   2026-07-27에 같은 판단을 단독 페이지에만 걸어뒀는데, 그 뒤 생긴 '드로어 확장'이 폭은 같으면서 규칙에서 빠져 풀블리드로 남아 있었다.
   MT 실측(2026-07-29, 뷰포트 1600): 확장 상태 히어로 x=252 / w=**1152** — 사이드바 오른쪽 영역에 1152px 가운데 정렬. 값까지 --pd-max 와 일치. */
html:not(.pdOnly):not(.isMobile) .app.pdWide { --pd-max:1152px; }
html:not(.pdOnly):not(.isMobile) .app.pdWide .pdHero,
html:not(.pdOnly):not(.isMobile) .app.pdWide .pdPane > *,
html:not(.pdOnly):not(.isMobile) .app.pdWide .pdHeadTxt { max-width:var(--pd-max); margin-inline:auto; width:100%; }
/* 확장 상태의 뒤로·확장 버튼(소유자 2026-07-29 "어색해" → "tripDetail ?wide=1 참고해서 만들어놔").
   좁은 드로어에선 세로 공간이 아까워 히어로 사진 위에 '떠 있는 알약'으로 얹지만, 확장에선 폭이 넓어
   사진 모서리에 얹힌 게 겉돌아 보인다. 참고 표면 두 곳이 같은 답을 낸다:
     · tripDetail `.drawer.wide .drawerBar` = 풀폭 한 줄, `padding:8px 22px`, `.drawerClose` 고스트 원형 34×34(테두리·배경 없음)
     · MT 확장 = Close·Collapse 가 **패널 좌측 끝**(본문 1152 좌측선이 아니라)에 같은 모양으로
   → sticky·그림자·블러를 풀고, 패널 좌측 22px 에 고스트 원형 한 줄로 내린다.
   .placeDetail 이 세로 flex 라 두 버튼이 그냥 static 이면 위아래로 쌓인다 → 둘째 버튼을 버튼 높이만큼
   음수 margin-top 으로 끌어올려 같은 줄에 세운다(래퍼를 새로 만들면 pdOnly 의 syncAppBar 가 옮기는 노드까지 바뀐다). */
html:not(.pdOnly):not(.isMobile) .app.pdWide .pdBack,
html:not(.pdOnly):not(.isMobile) .app.pdWide .pdExpand {
	position:static; align-self:flex-start; width:34px; height:34px; border:0; border-radius:999px;
	background:transparent; color:var(--ink); box-shadow:none;
	-webkit-backdrop-filter:none; backdrop-filter:none;
}
html:not(.pdOnly):not(.isMobile) .app.pdWide .pdBack svg,
html:not(.pdOnly):not(.isMobile) .app.pdWide .pdExpand svg { width:18px; height:18px; }
/* 좌측선 = 썸네일(히어로) 열에 맞춘다(소유자 2026-07-29 "썸네일이 있는 위쪽으로 해줘").
   패널 좌측 22px 에 두면 본문이 1152 가운데 정렬이라 버튼만 왼쪽 끝에 홀로 떨어져 썸네일과 따로 논다. */
html:not(.pdOnly):not(.isMobile) .app.pdWide .pdBack { margin:8px 0 0 max(36px, calc((100% - var(--pd-max)) / 2)); }
html:not(.pdOnly):not(.isMobile) .app.pdWide .pdExpand { margin:-34px 0 8px calc(max(36px, (100% - var(--pd-max)) / 2) + 42px); } /* 34(버튼) + 8(gap) */
html:not(.pdOnly):not(.isMobile) .app.pdWide .pdBack:hover,
html:not(.pdOnly):not(.isMobile) .app.pdWide .pdBack:focus-visible,
html:not(.pdOnly):not(.isMobile) .app.pdWide .pdExpand:hover,
html:not(.pdOnly):not(.isMobile) .app.pdWide .pdExpand:focus-visible { background:var(--surface); outline:0; }
/* 아이콘은 하나만 두고 펼침일 때 좌우 반전 — tripDetail `#drawerExpand[aria-pressed="true"] svg` 와 같은 방식 */
#pdExpand[aria-pressed="true"] svg { transform:scaleX(-1); }
html:not(.pdOnly):not(.isMobile) .app.pdWide .pdTabs { margin-left:max(24px, calc((100% - var(--pd-max)) / 2 + 24px)); } /* 내용폭 알약이라 margin-inline:auto 로는 안 옮겨진다. max 클램프=pd-max 미만 폭 음수 마진 방지(2026-08-04) */

/* ── 단독 장소 페이지 상단 바 — chat02 와 같은 48px 한 줄(소유자 2026-07-28 "여기도 위에 레이아웃 맞춰야함") ──
   바가 생기면 히어로가 y=48부터 시작하고, .pdSticky(top:0)는 .placeDetail 기준이라 자동으로 바 아래에 붙는다.
   바 안의 뒤로·접기는 위 '떠 있는 알약' 규칙(sticky/음수 margin/그림자)을 전부 되돌려 chat02 .ctOptBtn 과 같은 모양으로 맞춘다. */
html.pdOnly:not(.isMobile) .appBar { padding:0 max(36px, calc((100% - var(--pd-max)) / 2)); gap:10px; } /* 본문(1152px 가운데) 좌측선에 맞춤 — .pdBack 이 쓰던 계산 그대로 */
html.pdOnly:not(.isMobile) .appBar .pdBack,
html.pdOnly:not(.isMobile) .appBar .pdCollapse {
	position:static; margin:0; align-self:auto; width:34px; height:32px; border-radius:8px;
	border:1px solid var(--ctrl-line); background:#fff; color:var(--sub); box-shadow:none;
	-webkit-backdrop-filter:none; backdrop-filter:none;
	display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; cursor:pointer;
}
html.pdOnly:not(.isMobile) .appBar .pdBack svg,
html.pdOnly:not(.isMobile) .appBar .pdCollapse svg { width:16px; height:16px; }
html.pdOnly:not(.isMobile) .appBar .pdBack:hover,
html.pdOnly:not(.isMobile) .appBar .pdCollapse:hover { background:var(--surface); color:var(--ink); }
html.pdOnly:not(.isMobile) .abPdName { font-size:15px; font-weight:600; letter-spacing:normal; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
/* --pd-back-space 는 '히어로 위에 뜬 뒤로 버튼을 제목이 피하는 폭'이다. 버튼이 바로 올라갔으니 피할 게 없다
   → 본문 기본 인셋(24px, .pdTabs 와 같은 좌측선)으로 낮춘다. 토큰 하나로 .pdHeadTxt 관련 4개 규칙이 함께 정리된다. */
html.pdOnly:not(.isMobile) .placeDetail { --pd-back-space:24px; }

/* 저장 메모 = 카드 밑면 상시 블록(MT 코멘트 정합, 2026-08-02) — 마진·밀착은 렌더 후 JS 가 행에서 복제 */
.noteShow { display:flex; align-items:flex-start; margin:0 0 8px; padding:8px 11px; border:1px solid var(--line, #EFEFF0); border-top:0; border-radius:0 0 12px 12px; background:#fff; box-shadow:inset 0 1px 0 rgba(0,0,0,.045); color:var(--ink, #242428); font-size:12.5px; line-height:1.55; white-space:pre-wrap; word-break:break-word; cursor:pointer; }
.noteShow:hover { background:var(--surface, #F7F7F8); }
.noteShow[hidden] { display:none; }
/* 접힌 메모 줄(2개 이상) — 얼굴 겹침 + 최신 한 줄 + 개수. 누르면 펼쳐지고, 편집은 펼친 줄에서(소유자 2026-08-11 B안) */
.noteSum { display:flex; align-items:center; gap:8px; margin:0 0 8px; padding:8px 11px; border:1px solid var(--line, #EFEFF0); border-top:0; border-radius:0 0 12px 12px; background:#fff; box-shadow:inset 0 1px 0 rgba(0,0,0,.045); color:var(--ink, #242428); font-size:12.5px; line-height:1.55; cursor:pointer; }
.noteSum:hover { background:var(--surface, #F7F7F8); }
.noteSum .nsAvs { display:inline-flex; flex-shrink:0; }
/* 얼굴 크기 규칙은 .noteShow 하위에만 있어 여기선 다시 준다 — 안 주면 원본 이미지가 그대로 터진다 */
.noteSum .nsBy { flex:0 0 auto; width:20px; height:20px; margin:0 0 0 -7px; border-radius:999px; overflow:hidden; display:inline-flex; align-items:center; justify-content:center; background:#EFEFF0; color:rgba(0,0,0,.55); font-size:10px; font-weight:700; box-shadow:0 0 0 2px #fff; }
.noteSum .nsBy:first-child { margin-left:0; }
.noteSum .nsBy img { width:100%; height:100%; object-fit:cover; display:block; }
.noteSum .nsTx { min-width:0; flex:0 1 auto; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } /* flex:1 이면 개수 배지가 오른쪽 끝으로 밀린다 — 글 바로 뒤에 붙인다(소유자 2026-08-11) */
.noteSum .nsCnt { flex-shrink:0; display:inline-flex; align-items:center; gap:3px; padding:2px 8px; border-radius:999px; background:var(--surface2, #EFEFF0); color:var(--ink, #242428); font-size:11px; font-weight:800; font-variant-numeric:tabular-nums; }
.noteSum .nsCnt svg { width:11px; height:11px; }
.noteShow .nsBy { flex:0 0 auto; width:20px; height:20px; margin-right:8px; border-radius:999px; overflow:hidden; display:inline-flex; align-items:center; justify-content:center; background:#EFEFF0; color:rgba(0,0,0,.55); font-size:10px; font-weight:700; }
.noteShow .nsBy img { width:100%; height:100%; object-fit:cover; display:block; }
/* 메모 스레드 스택(2026-08-02) — 중간 블록 모서리·간격 0, 남의 메모는 보기 전용 */
.noteShow:has(+ .noteShow) { border-radius:0; margin-bottom:0; }
.noteShow:has(+ .noteGhost) { margin-bottom:0; }
.noteShow.ghostOn { border-bottom-left-radius:0 !important; border-bottom-right-radius:0 !important; margin-bottom:0 !important; }
.noteShow[data-spn]:not(.mine) { cursor:default; }
.noteShow[data-spn]:not(.mine):hover { background:#fff; }
/* 메모 진입 고스트 라인(목업 2안, 2026-08-02) — 접힘 고스트가 행 아래 8px 간격 스페이서를 겸한다 */
.item:has(+ .noteGhost) { margin-bottom:0 !important; } /* leftItinMode 폭 규칙(margin:0 auto 8px)보다 우선 */
.noteGhost { display:flex; align-items:center; gap:6px; margin:0 auto 8px; padding:0 11px; height:8px; opacity:0; overflow:hidden; border:1px solid transparent; border-top:0; border-radius:0 0 12px 12px; background:#fff; color:#a7a7aa; font-size:12.5px; cursor:pointer; transition:height .16s ease, padding .16s ease, opacity .14s ease, border-color .16s ease; }
/* 펼침은 JS(.on/.ghostOn) — :hover + 형제 체인 불안정 회피(2026-08-02) */
.noteGhost.on, .noteGhost:focus-visible { height:34px !important; padding:7px 11px; opacity:1; border-color:var(--line, #EFEFF0); box-shadow:inset 0 1px 0 rgba(0,0,0,.045); }
.item.ghostOn { border-bottom-left-radius:0; border-bottom-right-radius:0; }
.noteGhost:hover { color:#8a8a8f; }
.noteGhost svg { width:13px; height:13px; flex:0 0 auto; }
@media (prefers-reduced-motion:reduce) { .noteGhost { transition:none; } }

/* ── 토글 슬라이딩 썸(대화/일정 · 일정/시간표/지도) — 활성 알약이 미끄러져 이동(소유자 2026-08-02).
   썸이 배경을 전담하므로 .on 버튼의 자체 배경은 PC에서 끈다(모바일은 기존 그대로). 파일 끝 배치 = html:root 스킨 규칙을 이긴다 */
html:not(.isMobile) .segTh { position:absolute; top:3px; left:0; height:calc(100% - 6px); width:0; border-radius:8px; opacity:0; pointer-events:none; will-change:transform,width; }
html:not(.isMobile) .segTh.set { opacity:1; }
html:not(.isMobile) .segTh.ready { transition:transform .28s cubic-bezier(.34,1.4,.44,1), width .28s cubic-bezier(.34,1.4,.44,1); }
html.isMobile .segTh { display:none; }
html:not(.isMobile) .leftSeg .segTh { background:#fff; box-shadow:0 1px 3px rgba(15,23,42,.08); }
html:not(.isMobile) .viewToggle .segTh { background:#242428; }
html:not(.isMobile) .appBar #leftSeg { position:relative; } /* appBar 배치는 static — 썸(absolute)의 기준을 되찾는다 */
html:not(.isMobile) .lsBtn, html:not(.isMobile) .vtBtn { position:relative; z-index:1; }
html:not(.isMobile) .lsBtn.on { background:none; box-shadow:none; }
html:not(.isMobile) .vtBtn.on { background:none; box-shadow:none; }
@media (prefers-reduced-motion:reduce) { html:not(.isMobile) .segTh.ready { transition:none; } }
