/* 스카이웨어 홈페이지 챗봇 — 2026-10-19 JDONE AI 비서 식으로 재설계: 오른쪽 전체 높이 진남색 서랍, 빛나는 구(오브), 인사 + 추천 질문, 어두운 입력창.
   런처(오른쪽 아래 둥근 버튼)는 작은 오브. 열리면 런처와 '서비스 문의' 버튼은 숨긴다. */
.sw-chat { --c-navy: #0f1b33; --c-blue: #2f6bd8; --c-sky: #5aa8ff; position: fixed; z-index: 9999; right: 24px; bottom: calc(24px + var(--sw-fab-lift, 0px)); font-family: Pretendard, "Noto Sans KR", sans-serif; transition: opacity .35s ease, transform .35s ease, bottom .35s ease; }

/* ── 런처: 빛나는 작은 구 ─────────────────────────────────────── */
.sw-chat-launcher { position: relative; display: grid; place-items: center; width: 64px; height: 64px; padding: 0; border: 0; border-radius: 50%; background: radial-gradient(circle at 36% 30%, #ffffff 0%, #d6ebff 10%, #63b1ff 36%, #1f63d8 64%, #0b2d72 100%); box-shadow: 0 0 0 6px rgba(90, 168, 255, .16), 0 0 28px 6px rgba(72, 150, 255, .5), 0 12px 30px rgba(10, 30, 80, .45), inset 0 -8px 16px rgba(0, 20, 80, .55), inset 0 6px 12px rgba(255, 255, 255, .35); cursor: pointer; transition: transform .25s ease, box-shadow .25s ease; animation: sw-orb-breathe 3.6s ease-in-out infinite; }
.sw-chat-launcher::after { content: ""; position: absolute; inset: 6px; border-radius: 50%; background: conic-gradient(from 120deg, rgba(255, 255, 255, 0) 0, rgba(255, 255, 255, .8) 18%, rgba(255, 255, 255, 0) 36%, rgba(140, 210, 255, .6) 64%, rgba(255, 255, 255, 0) 100%); filter: blur(4px); mix-blend-mode: screen; animation: sw-orb-spin 7s linear infinite; }
.sw-chat-launcher:hover { transform: scale(1.08); }
.sw-chat-launcher:focus-visible { outline: 2px solid var(--c-sky); outline-offset: 3px; }
.sw-chat-ico, .sw-chat-x { display: none; }
.sw-chat.is-open .sw-chat-launcher { display: none; }

/* 말풍선 힌트 */
.sw-chat-hint { position: absolute; right: 76px; bottom: 16px; padding: 9px 14px; border: 1px solid #dfe3ea; border-radius: 999px; background: #fff; box-shadow: 0 6px 18px rgba(16, 47, 103, .14); color: #0f1b33; font-size: 13.5px; font-weight: 700; white-space: nowrap; pointer-events: none; }
.sw-chat-hint::after { content: ""; position: absolute; right: -5px; top: 50%; width: 10px; height: 10px; margin-top: -5px; border-top: 1px solid #dfe3ea; border-right: 1px solid #dfe3ea; background: #fff; transform: rotate(45deg); }
.sw-chat.is-open .sw-chat-hint { display: none; }

/* ── 서랍 패널 ───────────────────────────────────────────────── */
.sw-chat-panel { position: fixed; top: 0; right: 0; bottom: 0; z-index: 10001; display: flex; flex-direction: column; width: min(450px, 100vw); color: #fff; background: radial-gradient(130% 70% at 50% -10%, #1a4494 0%, #0e2a5e 38%, #0a1b3f 70%, #060f2a 100%); box-shadow: -24px 0 70px rgba(0, 0, 0, .5); animation: sw-chat-in .38s cubic-bezier(.2, .8, .2, 1); }
.sw-chat-panel[hidden] { display: none; }
.sw-chat-panel::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(60% 40% at 50% 100%, rgba(50, 110, 255, .22), transparent 70%); }

/* 위 줄: ← 처음으로 · × 닫기 */
.sw-chat-head { position: relative; z-index: 1; display: flex; align-items: center; justify-content: space-between; padding: 14px 14px 0; }
.sw-chat-mark, .sw-chat-head b { display: none; }
.sw-chat-reset, .sw-chat-close { display: grid; place-items: center; width: 40px; height: 40px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: rgba(255, 255, 255, .72); cursor: pointer; transition: background .2s, color .2s; }
.sw-chat-reset:hover, .sw-chat-close:hover { background: rgba(255, 255, 255, .1); color: #fff; }
.sw-chat-log.is-hello ~ * .sw-chat-reset, .sw-chat-panel.is-hello .sw-chat-reset { visibility: hidden; }

/* 로그 */
.sw-chat-log { position: relative; z-index: 1; flex: 1; min-height: 0; overflow-y: auto; padding: 10px 18px 12px; scrollbar-width: thin; scrollbar-color: rgba(255, 255, 255, .2) transparent; }
.sw-chat-log.is-hello { display: flex; flex-direction: column; justify-content: flex-end; }
.sw-chat-date { display: none; }

/* 인사 화면: 오브 + 인사 세 줄 + 추천 질문 */
.sw-chat-hello { padding: 0 2px 10px; }
.sw-chat-orb { position: relative; width: 150px; height: 150px; margin: 0 auto 44px; border-radius: 50%; background: radial-gradient(circle at 36% 30%, #ffffff 0%, #d8ecff 9%, #6fb8ff 32%, #2a6fe0 58%, #0e3a8c 82%, #0a2a6a 100%); box-shadow: 0 0 0 10px rgba(90, 168, 255, .08), 0 0 44px 12px rgba(72, 150, 255, .5), 0 0 130px 40px rgba(40, 90, 220, .3), inset 0 -20px 44px rgba(0, 20, 80, .6), inset 0 12px 30px rgba(255, 255, 255, .38); animation: sw-orb-float 5.5s ease-in-out infinite; }
.sw-chat-orb::before { content: ""; position: absolute; inset: -16px; border-radius: 50%; border: 10px solid rgba(255, 255, 255, .6); filter: blur(7px); -webkit-mask: conic-gradient(from 0deg, transparent 0 42%, #000 58% 100%); mask: conic-gradient(from 0deg, transparent 0 42%, #000 58% 100%); animation: sw-orb-spin 6.5s linear infinite; }
.sw-chat-orb::after { content: ""; position: absolute; inset: 16px; border-radius: 50%; background: conic-gradient(from 110deg, rgba(255, 255, 255, 0) 0, rgba(255, 255, 255, .85) 18%, rgba(255, 255, 255, 0) 38%, rgba(140, 215, 255, .7) 62%, rgba(255, 178, 63, .35) 80%, rgba(255, 255, 255, 0) 100%); filter: blur(7px); mix-blend-mode: screen; animation: sw-orb-spin 9s linear infinite reverse; }
.sw-chat-hello h3 { margin: 0; font-size: 22px; font-weight: 800; line-height: 1.35; letter-spacing: -.01em; }
.sw-chat-hello h3 span { display: block; }
.sw-chat-hello h3 .is-hi { color: var(--c-sky); }
.sw-chat-hello h3 .is-who { color: #fff; font-size: 20px; }
.sw-chat-hello h3 .is-ask { margin-top: 6px; color: rgba(255, 255, 255, .72); font-size: 15px; font-weight: 500; }
.sw-chat-chips { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; margin: 22px 0 8px; }
.sw-chat-chips button, .sw-chat-follow button { padding: 10px 14px; border: 1px solid rgba(255, 255, 255, .1); border-radius: 10px; background: rgba(255, 255, 255, .08); color: #dbe6ff; font: inherit; font-size: 13.5px; font-weight: 600; text-align: left; cursor: pointer; transition: background .2s, border-color .2s, transform .2s; }
.sw-chat-chips button:hover, .sw-chat-follow button:hover { background: rgba(90, 168, 255, .22); border-color: rgba(90, 168, 255, .5); transform: translateX(2px); }

/* 대화: 내 말은 파란 알약(오른쪽), 답변은 작은 오브 + 흰 글 */
.sw-chat-row { display: flex; align-items: flex-start; gap: 10px; margin: 0 0 16px; }
.sw-chat-row.is-me { justify-content: flex-end; }
.sw-chat-av { flex: 0 0 auto; width: 18px; height: 18px; margin-top: 3px; border-radius: 50%; background: radial-gradient(circle at 36% 30%, #ffffff 0%, #cfe6ff 14%, #5aa8ff 44%, #1d5fd6 72%, #0a2a6a 100%); box-shadow: 0 0 10px 3px rgba(72, 150, 255, .55); }
.sw-chat-bubble { max-width: 86%; color: #e6eefc; font-size: 14.5px; line-height: 1.7; word-break: keep-all; }
.sw-chat-row.is-me .sw-chat-bubble { padding: 11px 16px; border-radius: 14px; background: var(--c-blue); color: #fff; font-weight: 700; box-shadow: 0 8px 22px rgba(47, 107, 216, .35); }
.sw-chat-bubble p { margin: 0; }
.sw-chat-bubble p + p { margin-top: 8px; }
.sw-chat-bubble ul { margin: 8px 0 0; padding-left: 18px; }
.sw-chat-bubble li { margin: 3px 0; }
.sw-chat-bubble a { color: #8fc1ff; text-decoration: underline; text-underline-offset: 2px; }
.sw-chat-row.is-me .sw-chat-bubble a { color: #fff; }
.sw-chat-bubble b { font-weight: 800; color: #fff; }
.sw-chat-typing { display: inline-block; color: rgba(255, 255, 255, .85); font-size: 14px; animation: sw-chat-pulse 1.6s ease-in-out infinite; }
.sw-chat-typing i { display: none; }
.sw-chat-row:has(.sw-chat-typing) .sw-chat-av { animation: sw-orb-breathe 1.4s ease-in-out infinite; }
.sw-chat-follow { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; margin: -4px 0 18px 28px; }
.sw-chat-follow p { margin: 0 0 2px; color: rgba(255, 255, 255, .6); font-size: 12.5px; }
.sw-chat-follow button::before { content: ""; }

/* 입력창 */
.sw-chat-form { position: relative; z-index: 1; display: flex; align-items: center; gap: 8px; margin: 10px 16px 0; padding: 7px 7px 7px 16px; border: 1px solid rgba(90, 168, 255, .5); border-radius: 14px; background: rgba(5, 14, 38, .85); box-shadow: 0 0 0 1px rgba(90, 168, 255, .12), 0 0 26px rgba(60, 120, 255, .22); }
.sw-chat-form:focus-within { border-color: rgba(140, 200, 255, .85); box-shadow: 0 0 0 1px rgba(140, 200, 255, .25), 0 0 32px rgba(60, 120, 255, .35); }
.sw-chat-form input { flex: 1; min-width: 0; padding: 10px 0; border: 0; background: transparent; color: #fff; font: inherit; font-size: 14.5px; outline: 0; }
.sw-chat-form input::placeholder { color: rgba(255, 255, 255, .45); }
.sw-chat-form button { display: grid; place-items: center; width: 38px; height: 38px; padding: 0; border: 0; border-radius: 10px; background: rgba(255, 255, 255, .12); color: #fff; cursor: pointer; transition: background .2s, transform .2s; }
.sw-chat-form button:hover { background: var(--c-blue); transform: translateY(-1px); }
.sw-chat-foot { position: relative; z-index: 1; margin: 8px 20px 14px; color: rgba(255, 255, 255, .42); font-size: 11.5px; line-height: 1.5; text-align: center; }

/* 움직임 */
@keyframes sw-chat-in { from { transform: translateX(40px); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes sw-orb-spin { to { transform: rotate(1turn); } }
@keyframes sw-orb-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
@keyframes sw-orb-breathe { 0%, 100% { box-shadow: 0 0 0 6px rgba(90, 168, 255, .16), 0 0 28px 6px rgba(72, 150, 255, .5), 0 12px 30px rgba(10, 30, 80, .45), inset 0 -8px 16px rgba(0, 20, 80, .55), inset 0 6px 12px rgba(255, 255, 255, .35); } 50% { box-shadow: 0 0 0 10px rgba(90, 168, 255, .1), 0 0 40px 12px rgba(72, 150, 255, .65), 0 12px 30px rgba(10, 30, 80, .45), inset 0 -8px 16px rgba(0, 20, 80, .55), inset 0 6px 12px rgba(255, 255, 255, .35); } }
@keyframes sw-chat-pulse { 0%, 100% { opacity: .65; } 50% { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .sw-chat-launcher, .sw-chat-launcher::after, .sw-chat-orb, .sw-chat-orb::before, .sw-chat-orb::after, .sw-chat-typing, .sw-chat-av { animation: none !important; } .sw-chat-panel { animation: none; } }
@media (max-width: 600px) { .sw-chat { right: 16px; } .sw-chat-hint { right: 66px; bottom: 12px; font-size: 12.5px; } .sw-chat-orb { width: 120px; height: 120px; margin-bottom: 30px; } }

/* 떠 있는 요소들과의 관계: 슬로건 고정 화면 · 푸터 SOLUTION SITE 열림 · 인사 카드 */
html.sw-fab-hide .sw-chat:not(.is-open) { opacity: 0; transform: translateY(14px); pointer-events: none; }
body:has(.sw-foot2-family[open]) .sw-chat:not(.is-open) { opacity: 0; pointer-events: none; }
.sw-fab-bubble.is-chat { cursor: pointer; }
.sw-chat.is-open ~ .sw-fab, body:has(.sw-chat.is-open) .sw-fab, body:has(.sw-chat.is-open) .sw-fab-bubble { opacity: 0; pointer-events: none; }

/* CLOUVI 데모 런처(그 페이지에서만 보임)는 원래 다람쥐 모양으로 되돌림 — style.css 2.61.532 의 진남색 원 규칙을 덮음 */
body .sw-clouvi .sw-clouvi-launcher { width: 88px; height: 88px; border: 1px solid #e5e7eb; background: #fff; box-shadow: 0 6px 20px rgba(31, 78, 140, .22); }
body .sw-clouvi .sw-clouvi-launcher:hover { background: #fff; }
body .sw-clouvi .sw-clouvi-launcher-mark { display: block; }

/* 2026-10-19 오브를 생성 영상(검정 바탕 유리구 + 액체 빛 고리)으로 — screen 혼합으로 검정은 사라지고 빛만 남는다. 런처 · 답변 아바타도 같은 그림(포스터) */
.sw-chat-orb { width: 230px; height: 230px; margin: 0 auto 26px; border-radius: 50%; background: none; box-shadow: none; animation: sw-orb-float 6s ease-in-out infinite; overflow: visible; }
.sw-chat-orb::before, .sw-chat-orb::after { display: none; }
.sw-chat-orb video { display: block; width: 100%; height: 100%; object-fit: cover; border-radius: 50%; mix-blend-mode: screen; transform: scale(1.18); }
.sw-chat-launcher { background: #0b1d3f url(../video/chat-orb.jpg) center / 150% no-repeat; box-shadow: 0 0 0 6px rgba(90, 168, 255, .14), 0 0 30px 8px rgba(72, 150, 255, .45), 0 12px 30px rgba(10, 30, 80, .45); animation: sw-orb-breathe 3.6s ease-in-out infinite; }
.sw-chat-launcher::after { display: none; }
.sw-chat-av { background: #0b1d3f url(../video/chat-orb.jpg) center / 170% no-repeat; box-shadow: 0 0 10px 3px rgba(72, 150, 255, .5); }
@media (max-width: 600px) { .sw-chat-orb { width: 170px; height: 170px; } }

/* 2026-10-19 오브 영상 screen 혼합이 패널 바탕까지 닿도록 — 로그가 별도 쌓임 맥락을 만들지 않게(z-index auto) */
.sw-chat-log { z-index: auto; }
.sw-chat-hello { position: relative; }
.sw-chat-orb video { filter: brightness(1.05) contrast(1.05); }

/* 2026-10-19 파란 구슬 오브 — 남색 바탕으로 생성한 영상이라 screen 혼합 대신 가장자리를 둥글게 흐려 패널에 녹인다 */
.sw-chat-orb video { mix-blend-mode: normal; transform: scale(1.06); filter: saturate(1.15) brightness(1.04); -webkit-mask: radial-gradient(circle at 50% 50%, #000 58%, rgba(0, 0, 0, .55) 68%, transparent 76%); mask: radial-gradient(circle at 50% 50%, #000 58%, rgba(0, 0, 0, .55) 68%, transparent 76%); }
.sw-chat-orb { filter: drop-shadow(0 0 28px rgba(72, 150, 255, .45)); }
.sw-chat-launcher { background: #0b1d3f url(../video/chat-orb.jpg) center / 165% no-repeat; }
.sw-chat-av { background: #0b1d3f url(../video/chat-orb.jpg) center / 190% no-repeat; }

/* 2026-10-19 오브 뒤 어두운 후광 — 영상의 남색 바탕(#0a1b3f)이 패널의 밝은 부분 위에서 원판으로 드러나지 않게, 같은 남색의 부드러운 후광을 깔고 마스크를 조금 더 조인다 */
.sw-chat-orb { position: relative; overflow: visible; }
.sw-chat-orb::before { content: ""; display: block; position: absolute; inset: -34%; border-radius: 50%; background: radial-gradient(circle, #0a1b3f 0%, #0a1b3f 42%, rgba(10, 27, 63, .75) 55%, rgba(10, 27, 63, 0) 70%); z-index: 0; }
.sw-chat-orb video { position: relative; z-index: 1; -webkit-mask: radial-gradient(circle at 50% 50%, #000 54%, rgba(0, 0, 0, .6) 64%, transparent 72%); mask: radial-gradient(circle at 50% 50%, #000 54%, rgba(0, 0, 0, .6) 64%, transparent 72%); }

/* 2026-10-19 오브는 계속 빙글빙글 — 영상 자체도 천천히 회전(16초 한 바퀴), 런처 · 답변 아바타의 구슬 그림도 회전 */
.sw-chat-orb video { animation: sw-orb-rotate 16s linear infinite; }
@keyframes sw-orb-rotate { from { transform: scale(1.06) rotate(0deg); } to { transform: scale(1.06) rotate(360deg); } }
.sw-chat-launcher { background: #0b1d3f; overflow: hidden; }
.sw-chat-launcher::after { content: ""; display: block; position: absolute; inset: 0; border-radius: 50%; background: #0b1d3f url(../video/chat-orb.jpg) center / 165% no-repeat; filter: none; mix-blend-mode: normal; animation: sw-orb-rotate-plain 12s linear infinite; }
@keyframes sw-orb-rotate-plain { to { transform: rotate(360deg); } }
.sw-chat-av { animation: sw-orb-rotate-plain 10s linear infinite; }
@media (prefers-reduced-motion: reduce) { .sw-chat-orb video, .sw-chat-launcher::after, .sw-chat-av { animation: none !important; } }

/* 2026-10-19 오브 마무리 — 후광 ::before 제거(패널 밝은 부분 위에서 어두운 원호로 보였음), 구슬 지름에 맞춘 둥근 마스크, 살짝 확대, 넘침 숨김 */
.sw-chat-orb::before { display: none !important; }
.sw-chat-orb { overflow: hidden; border-radius: 50%; filter: none; }
.sw-chat-orb video { -webkit-mask: radial-gradient(circle at 50% 50%, #000 40%, rgba(0, 0, 0, .7) 48%, transparent 56%); mask: radial-gradient(circle at 50% 50%, #000 40%, rgba(0, 0, 0, .7) 48%, transparent 56%); }
@keyframes sw-orb-rotate { from { transform: scale(1.3) rotate(0deg); } to { transform: scale(1.3) rotate(360deg); } }
.sw-chat-log { overflow-x: hidden; }

/* 2026-10-19 오브 완성도 — 구슬 가장자리에 얇은 유리 림(안쪽 흰 빛 · 바깥 파란 블룸, 숨쉬듯 밝아짐), 림을 따라 도는 흰 빛 줄기, 구슬 아래 바닥 빛. 영상 마스크는 림에 정확히 맞춘다 */
.sw-chat-orb { overflow: visible; border-radius: 50%; isolation: isolate; }
.sw-chat-orb video { position: relative; z-index: 1; -webkit-mask: radial-gradient(circle at 50% 50%, #000 43%, rgba(0, 0, 0, .9) 45.5%, transparent 48%); mask: radial-gradient(circle at 50% 50%, #000 43%, rgba(0, 0, 0, .9) 45.5%, transparent 48%); }
@keyframes sw-orb-rotate { from { transform: scale(1.25) rotate(0deg); } to { transform: scale(1.25) rotate(360deg); } }
.sw-chat-orb::before { content: ""; display: block !important; position: absolute; inset: 6.5%; z-index: 2; border-radius: 50%; border: 1.5px solid rgba(200, 230, 255, .6); background: none; pointer-events: none; box-shadow: 0 0 0 1px rgba(90, 168, 255, .22), 0 0 28px 6px rgba(90, 168, 255, .42), 0 0 90px 24px rgba(60, 120, 255, .26), inset 0 0 24px rgba(255, 255, 255, .26), inset 0 -10px 24px rgba(0, 20, 80, .35); animation: sw-orb-glow 3.4s ease-in-out infinite; }
.sw-chat-orb::after { content: ""; display: block; position: absolute; inset: 2.5%; z-index: 3; border-radius: 50%; pointer-events: none; background: conic-gradient(from 0deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, .95) 9%, rgba(255, 255, 255, 0) 20%, rgba(255, 255, 255, 0) 54%, rgba(140, 210, 255, .75) 64%, rgba(255, 255, 255, 0) 76%); -webkit-mask: radial-gradient(circle at 50% 50%, transparent 59%, #000 63%, #000 69%, transparent 73%); mask: radial-gradient(circle at 50% 50%, transparent 59%, #000 63%, #000 69%, transparent 73%); filter: blur(1.6px); animation: sw-orb-rotate-plain 9s linear infinite; }
@keyframes sw-orb-glow { 0%, 100% { box-shadow: 0 0 0 1px rgba(90, 168, 255, .22), 0 0 28px 6px rgba(90, 168, 255, .42), 0 0 90px 24px rgba(60, 120, 255, .26), inset 0 0 24px rgba(255, 255, 255, .26), inset 0 -10px 24px rgba(0, 20, 80, .35); } 50% { box-shadow: 0 0 0 1px rgba(120, 190, 255, .35), 0 0 40px 10px rgba(90, 168, 255, .6), 0 0 120px 34px rgba(60, 120, 255, .34), inset 0 0 30px rgba(255, 255, 255, .36), inset 0 -10px 24px rgba(0, 20, 80, .35); } }
.sw-chat-hello::before { content: ""; position: absolute; left: 50%; top: 150px; z-index: 0; width: 340px; height: 120px; transform: translateX(-50%); border-radius: 50%; background: radial-gradient(ellipse at 50% 50%, rgba(72, 150, 255, .38) 0%, rgba(72, 150, 255, .14) 45%, transparent 72%); filter: blur(10px); pointer-events: none; }
@media (max-width: 600px) { .sw-chat-hello::before { top: 110px; width: 240px; height: 90px; } }
@media (prefers-reduced-motion: reduce) { .sw-chat-orb::before, .sw-chat-orb::after { animation: none !important; } }

/* 2026-10-19 오브 빛 줄기 다듬기 — 두꺼운 회색 호처럼 보이던 것을 얇고 흐린 흰 빛(screen 혼합)으로 */
.sw-chat-orb::after { inset: 3%; background: conic-gradient(from 0deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, .85) 8%, rgba(255, 255, 255, 0) 17%, rgba(255, 255, 255, 0) 56%, rgba(160, 220, 255, .65) 64%, rgba(255, 255, 255, 0) 73%); -webkit-mask: radial-gradient(circle at 50% 50%, transparent 61.5%, #000 64%, #000 67.5%, transparent 70%); mask: radial-gradient(circle at 50% 50%, transparent 61.5%, #000 64%, #000 67.5%, transparent 70%); filter: blur(3px); mix-blend-mode: screen; opacity: .85; }
.sw-chat-orb::before { border-color: rgba(210, 235, 255, .5); }

/* 2026-10-19 오브 — 도는 빛 줄기는 회색 호처럼 보여 제거. 유리 림 + 숨쉬는 블룸만 */
.sw-chat-orb::after { display: none !important; }

/* 2026-10-19 오브 — 영상 통째 회전을 끔(하이라이트가 같이 돌아 어색). 구슬 안 소용돌이는 영상 자체로 계속 돈다. 런처 · 아바타 그림도 고정 */
.sw-chat-orb video { animation: none !important; transform: scale(1.25) !important; }
.sw-chat-launcher::after, .sw-chat-av { animation: none !important; }
.sw-chat-launcher { animation: sw-orb-breathe 3.6s ease-in-out infinite; }

/* 2026-10-19 오브 가장자리 — 영상 속 구슬 테두리의 회색 띠가 보이지 않게 마스크를 더 조이고, 유리 림을 그 경계 위에 올린다 */
.sw-chat-orb video { transform: scale(1.2) !important; -webkit-mask: radial-gradient(circle at 50% 50%, #000 39.5%, rgba(0, 0, 0, .85) 41.5%, transparent 43.5%); mask: radial-gradient(circle at 50% 50%, #000 39.5%, rgba(0, 0, 0, .85) 41.5%, transparent 43.5%); }
.sw-chat-orb::before { inset: 9.5%; border-width: 2px; }

/* 2026-10-19 오브 — 계속 빙글빙글(사용자 요청): 영상 전체를 천천히 회전(24초 한 바퀴) */
.sw-chat-orb video { animation: sw-orb-spin-slow 24s linear infinite !important; }
@keyframes sw-orb-spin-slow { from { transform: scale(1.2) rotate(0deg); } to { transform: scale(1.2) rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .sw-chat-orb video { animation: none !important; } }

/* 2026-10-19 오브 — 마스크 대신 둥근 클립 상자(영상에 마스크가 안 먹는 브라우저 대응). 구슬이 클립 원을 꽉 채우게 1.43배, 24초 회전 */
.sw-chat-orb-clip { position: absolute; inset: 9.5%; z-index: 1; overflow: hidden; border-radius: 50%; background: #0a1b3f; -webkit-mask-image: -webkit-radial-gradient(white, black); }
.sw-chat-orb-clip video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; -webkit-mask: none !important; mask: none !important; animation: sw-orb-spin-clip 24s linear infinite !important; }
@keyframes sw-orb-spin-clip { from { transform: scale(1.43) rotate(0deg); } to { transform: scale(1.43) rotate(360deg); } }
.sw-chat-orb > video { display: none; }
/* 런처도 같은 구슬 영상이 돈다 */
.sw-chat-launcher { overflow: hidden; }
.sw-chat-launcher::after { display: none !important; }
.sw-chat-launcher-v { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border-radius: 50%; transform: scale(1.5); animation: sw-orb-spin-launch 20s linear infinite; pointer-events: none; }
@keyframes sw-orb-spin-launch { from { transform: scale(1.5) rotate(0deg); } to { transform: scale(1.5) rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .sw-chat-orb-clip video, .sw-chat-launcher-v { animation: none !important; } }

/* 2026-10-19 오브 — 영상 속 구슬 가장자리의 회색 띠가 클립 원 안으로 들어오지 않게 더 확대 */
@keyframes sw-orb-spin-clip { from { transform: scale(1.62) rotate(0deg); } to { transform: scale(1.62) rotate(360deg); } }

/* 2026-10-19 오브 회전 확정 — 영상은 고정 확대(1.62, 가장자리 회색 띠 밖으로), 회전은 클립 상자가 24초에 한 바퀴 */
.sw-chat-orb .sw-chat-orb-clip video { transform: scale(1.62) !important; animation: none !important; }
.sw-chat-orb-clip { animation: sw-orb-rotate-plain 24s linear infinite; will-change: transform; }
@media (prefers-reduced-motion: reduce) { .sw-chat-orb-clip { animation: none !important; } }

/* 2026-10-19 챗봇 첫 화면 퀵메뉴 — 2열 8칸: 아이콘(바탕 없음) · 제목 · 한 줄 설명. 누르면 그 질문을 보냄 */
.sw-chat-quick { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 20px 0 6px; }
.sw-chat-quick button { display: grid; grid-template-columns: 24px 1fr; grid-template-rows: auto auto; column-gap: 10px; row-gap: 2px; align-items: center; padding: 12px 12px; border: 1px solid rgba(255, 255, 255, .1); border-radius: 12px; background: rgba(255, 255, 255, .05); color: #fff; font: inherit; text-align: left; cursor: pointer; transition: background .2s, border-color .2s, transform .2s; animation: sw-chat-q-in .45s ease both; }
.sw-chat-quick button:nth-child(2) { animation-delay: .04s; } .sw-chat-quick button:nth-child(3) { animation-delay: .08s; } .sw-chat-quick button:nth-child(4) { animation-delay: .12s; }
.sw-chat-quick button:nth-child(5) { animation-delay: .16s; } .sw-chat-quick button:nth-child(6) { animation-delay: .2s; } .sw-chat-quick button:nth-child(7) { animation-delay: .24s; } .sw-chat-quick button:nth-child(8) { animation-delay: .28s; }
.sw-chat-quick svg { grid-row: 1 / 3; color: #7fb6ff; transition: transform .2s, color .2s; }
.sw-chat-quick b { overflow: hidden; font-size: 14px; font-weight: 800; white-space: nowrap; text-overflow: ellipsis; }
.sw-chat-quick small { overflow: hidden; color: rgba(255, 255, 255, .55); font-size: 12px; white-space: nowrap; text-overflow: ellipsis; }
.sw-chat-quick button:hover, .sw-chat-quick button:focus-visible { border-color: rgba(127, 182, 255, .55); background: rgba(47, 107, 216, .22); transform: translateY(-2px); outline: none; }
.sw-chat-quick button:hover svg { color: #fff; transform: scale(1.1); }
@keyframes sw-chat-q-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@media (max-width: 600px) { .sw-chat-quick button { padding: 10px; } .sw-chat-quick b { font-size: 13px; } }
