.contact-rail{position:fixed;right:20px;bottom:24px;z-index:45;display:flex;flex-direction:column;gap:10px;align-items:center}.contact-tool{position:relative;display:grid;place-items:center;width:48px;height:48px;flex:0 0 48px;padding:12px;border:1px solid #dce7ef;border-radius:50%;background:white;color:var(--blue);box-shadow:0 4px 18px #12324a16;text-decoration:none;transition:background .2s,color .2s,border-color .2s}.contact-tool svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.contact-tool--phone{background:var(--blue);border-color:var(--blue);color:white}.contact-tool:hover,.contact-tool:focus-visible{background:#eaf2f7;border-color:#9fbed5}.contact-tool--phone:hover,.contact-tool--phone:focus-visible{background:var(--deep);border-color:var(--deep)}.contact-tool:focus-visible,.contact-chat-menu button:focus-visible{outline:3px solid var(--green);outline-offset:4px}.contact-zalo-mark{font:700 12px/1 Inter,sans-serif;letter-spacing:-.7px}
.contact-tool-label{position:absolute;right:calc(100% + 12px);top:50%;padding:9px 13px;border-radius:5px;background:#12324a;color:white;font:400 13px/1.4 Inter,sans-serif;white-space:nowrap;pointer-events:none;opacity:0;transform:translate(5px,-50%);transition:opacity .18s,transform .18s}.contact-tool:is(:hover,:focus-visible) .contact-tool-label{opacity:1;transform:translate(0,-50%)}
.contact-chat-menu{position:absolute;right:64px;bottom:0;width:250px;padding:20px;border:1px solid #dce7ef;border-radius:10px;background:white;box-shadow:0 10px 40px #12324a24;color:var(--ink)}.contact-chat-menu[hidden]{display:none}.contact-chat-menu p{margin:0 0 14px;font:500 15px/1.4 Inter,sans-serif}.contact-chat-menu button{display:flex;align-items:center;gap:12px;width:100%;padding:10px 6px;border:0;background:none;color:var(--ink);text-align:left;font:400 14px/1.4 Inter,sans-serif;border-radius:5px}.contact-chat-menu button:hover{background:#f2f7fa}.contact-chat-mark{display:grid;place-items:center;width:32px;height:32px;flex:0 0 32px;border-radius:50%;font:600 10px/1 Inter,sans-serif}.contact-chat-mark--wechat,.contact-chat-mark--line{color:#167a36;background:#e8f6ec}.contact-chat-mark--kakao{color:#49391a;background:#fff4bb}
.channel-dialog{position:fixed;inset:0;margin:auto;width:min(470px,calc(100% - 32px));max-height:calc(100dvh - 40px);padding:38px;border:0;border-radius:10px;background:white;color:var(--ink);overflow:auto;box-shadow:0 20px 80px #12324a24}.channel-dialog::backdrop{background:#082a426b;backdrop-filter:blur(5px)}.channel-dialog .channel-close{position:absolute;right:14px;top:14px;display:grid;place-items:center;width:30px;height:30px;padding:6px;border:0;border-radius:50%;background:#f2f7fa;color:var(--text)}.channel-close svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7}.channel-dialog .eyebrow{font-size:12px;margin:0 0 14px;color:var(--blue)}.channel-dialog h2{margin:0 0 16px;font:500 30px/1.2 Geist,Inter,sans-serif;letter-spacing:-.7px}.channel-dialog p:not(.eyebrow){margin:0 0 24px;font:400 16px/1.65 Inter,sans-serif;color:var(--text)}.channel-dialog .channel-contact-links{display:grid;gap:13px;padding-top:20px;border-top:1px solid var(--line)}.channel-contact-links a{font:500 15px/1.5 Inter,sans-serif;color:var(--blue);overflow-wrap:anywhere}body:has(dialog[open]) .contact-rail{visibility:hidden}
.contact-tool--phone{border-color:#ffffff66}
.contact-rail .chat-app-logo{width:25px;height:25px;object-fit:contain}.contact-chat-menu .chat-app-logo{width:32px;height:32px;object-fit:contain}.contact-chat-menu button[data-contact-channel=kakao] .chat-app-logo{background:#fee500;border-radius:8px;padding:4px}

body:has(dialog[open]) .contact-rail{visibility:hidden}
.channel-dialog .channel-close{position:absolute;right:14px;top:14px;display:grid;place-items:center;width:32px;height:32px;margin:0;padding:6px;border:0;border-radius:50%;background:#f2f7fa;color:var(--text);transform:none;line-height:1}
.channel-dialog .channel-close::before,.channel-dialog .channel-close::after{display:none}
.channel-dialog .channel-close svg{position:static;width:18px;height:18px;transform:none;fill:none;stroke:currentColor;stroke-width:1.7}
.contact-rail .world-chat-icon{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:760px){.contact-rail{right:16px;bottom:16px;flex-direction:row;gap:8px}.contact-tool{width:44px;height:44px;flex-basis:44px;padding:10px}.contact-tool-label{display:none}.contact-chat-menu{right:0;bottom:58px;max-width:calc(100vw - 32px)}.home-footer{padding-bottom:90px}.channel-dialog{padding:35px 25px}.channel-dialog h2{font-size:27px}}
@media(prefers-reduced-motion:reduce){.contact-tool,.contact-tool-label{transition:none}}


/* Horizontal contact dock. */
.contact-rail.contact-rail--dock{right:24px;bottom:24px;display:flex;flex-direction:row-reverse;align-items:center;gap:12px;width:max-content;height:56px;max-width:calc(100% - 32px)}
.contact-rail--dock .contact-hub-toggle{position:relative;display:grid;place-items:center;flex:0 0 56px;width:56px;height:56px;padding:15px;border:1px solid #ffffff99;border-radius:50%;background:linear-gradient(145deg,#2b9fe7,#1772b8);color:#fff;box-shadow:inset 0 2px 3px #ffffff30,0 6px 20px #0f4e8833;transition:background .25s,box-shadow .25s}
.contact-hub-toggle svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform .36s cubic-bezier(.22,1,.36,1)}
.contact-hub-toggle[aria-expanded=true] svg{transform:rotate(135deg)}
.contact-rail--dock .contact-hub-toggle:hover{box-shadow:inset 0 2px 3px #ffffff40,0 8px 24px #0f4e8845}
.contact-rail--dock .contact-hub-panel{position:relative;inset:auto;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;width:320px;max-width:none;height:60px;max-height:none;padding:7px;border:1px solid #ffffffd9;border-radius:999px;background:#fffffff2;backdrop-filter:blur(18px);box-shadow:0 8px 30px #12324a21;overflow:visible;transform-origin:right center;animation:contact-dock-open .38s cubic-bezier(.22,1,.36,1) both}
.contact-rail--dock .contact-hub-panel[hidden]{display:none}
.contact-rail--dock .contact-hub-panel .contact-dock-item{position:relative;display:grid;place-items:center;align-self:center;width:100%;height:44px;min-height:44px;min-width:0;padding:10px;margin:0;border:0;border-radius:50%;color:var(--blue);background:transparent;transition:background .2s,transform .24s cubic-bezier(.22,1,.36,1);animation:contact-icon-in .36s cubic-bezier(.22,1,.36,1) both}
.contact-rail--dock .contact-dock-item:nth-child(1){animation-delay:100ms}.contact-rail--dock .contact-dock-item:nth-child(2){animation-delay:80ms}.contact-rail--dock .contact-dock-item:nth-child(3){animation-delay:60ms}.contact-rail--dock .contact-dock-item:nth-child(4){animation-delay:40ms}.contact-rail--dock .contact-dock-item:nth-child(5){animation-delay:20ms}
.contact-rail--dock .contact-hub-panel .contact-dock-item:hover{background:#eaf5fc;transform:none}
.contact-rail--dock .contact-hub-panel .contact-dock-phone{background:#e8f8ef;color:#18a05d}
.contact-rail--dock .contact-hub-panel .contact-dock-brochure{color:#168ada;background:#eaf5ff}
.contact-rail--dock .contact-dock-item svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.contact-rail--dock .contact-dock-item img{display:block;width:26px;height:26px;object-fit:contain}
.contact-rail--dock .contact-hub-panel .contact-dock-kakao img{padding:3px;background:#fee500;border-radius:8px}
.contact-dock-tip{position:absolute;bottom:calc(100% + 14px);left:50%;padding:6px 9px;border:1px solid #e3edf4;border-radius:7px;background:white;box-shadow:0 4px 14px #12324a10;color:var(--ink);font:500 12px/1.4 var(--font,Inter,sans-serif);white-space:nowrap;opacity:0;visibility:hidden;transform:translate(-50%,4px);transition:opacity .18s,transform .18s,visibility .18s;pointer-events:none}
.contact-dock-item:is(:hover,:focus-visible) .contact-dock-tip{opacity:1;visibility:visible;transform:translate(-50%,0)}
.contact-hub-toggle:focus-visible,.contact-dock-item:focus-visible{outline:2px solid var(--green);outline-offset:3px}
@keyframes contact-dock-open{from{opacity:0;transform:translateX(16px) scaleX(.88)}to{opacity:1;transform:none}}
@keyframes contact-icon-in{from{opacity:0;translate:10px 0}to{opacity:1;translate:0 0}}
@media(max-width:760px){
 .contact-rail.contact-rail--dock{right:12px;bottom:max(16px,env(safe-area-inset-bottom));gap:8px;height:48px;max-width:calc(100% - 24px)}
 .contact-rail--dock .contact-hub-toggle{flex-basis:48px;width:48px;height:48px;padding:12px}
 .contact-rail--dock .contact-hub-panel{width:min(290px,calc(100vw - 104px));height:48px;gap:2px;padding:5px}
 .contact-rail--dock .contact-hub-panel .contact-dock-item{height:36px;min-height:36px;padding:5px}
 .contact-rail--dock .contact-dock-item img{width:24px;height:24px}
 .contact-rail--dock .contact-dock-item svg{width:22px;height:22px}
 .contact-dock-tip{font-size:11px;bottom:calc(100% + 10px)}
 .contact-dock-item:first-child .contact-dock-tip{left:0;transform:translate(0,4px)}
 .contact-dock-item:first-child:is(:hover,:focus-visible) .contact-dock-tip{transform:translate(0,0)}
}
@media(prefers-reduced-motion:reduce){.contact-rail--dock .contact-hub-panel,.contact-rail--dock .contact-dock-item{animation:none!important}.contact-hub-toggle svg,.contact-rail--dock .contact-dock-item{transition:none}}

/* Chat launcher: soft square, brand blue and a clear conversation icon. */
.contact-rail--dock .contact-hub-toggle{border-radius:18px;border:1px solid #ffffff80;background:linear-gradient(145deg,#239add 0%,#1772b8 70%);box-shadow:inset 0 1px 1px #ffffff40,0 5px 16px #0f4e8833;overflow:hidden}
.contact-rail--dock .contact-hub-toggle:hover{background:linear-gradient(145deg,#29a5e9,#1269aa);box-shadow:inset 0 1px 1px #ffffff40,0 7px 20px #0f4e8840}
.contact-hub-toggle .hub-icon-chat,.contact-hub-toggle .hub-icon-close{position:absolute;inset:0;margin:auto;width:27px;height:27px;display:block;transition:opacity .22s ease,transform .32s cubic-bezier(.22,1,.36,1)}
.contact-hub-toggle .hub-icon-chat{opacity:1;transform:scale(1)}
.contact-hub-toggle .hub-chat-bubble{fill:none;stroke:currentColor;stroke-width:1.6}
.contact-hub-toggle .hub-icon-chat circle{fill:currentColor;stroke:none}
.contact-hub-toggle .hub-icon-close{opacity:0;transform:rotate(-60deg) scale(.65)}
.contact-hub-toggle[aria-expanded=true] .hub-icon-chat{display:block;opacity:0;transform:scale(.65)}
.contact-hub-toggle[aria-expanded=true] .hub-icon-close{display:block;opacity:1;transform:rotate(0) scale(1)}
@media(max-width:760px){.contact-rail--dock .contact-hub-toggle{border-radius:16px}.contact-hub-toggle .hub-icon-chat,.contact-hub-toggle .hub-icon-close{width:25px;height:25px}}
@media(prefers-reduced-motion:reduce){.contact-hub-toggle .hub-icon-chat,.contact-hub-toggle .hub-icon-close{transition:none}}

/* Flat solid icons with a soft blue-to-green brand gradient. */
.contact-rail--dock .contact-hub-toggle{border-radius:50%;border:0;background:linear-gradient(135deg,#188de0 5%,#168ac4 45%,#64bd69 100%);box-shadow:0 4px 14px #126c9b29}
.contact-rail--dock .contact-hub-toggle:hover{background:linear-gradient(135deg,#229be9 5%,#1696c4 45%,#75c877 100%);box-shadow:0 6px 18px #126c9b33}
.contact-hub-toggle .hub-icon-chat{width:29px;height:29px;fill:none;stroke:none}
.contact-hub-toggle .hub-chat-solid{fill:#fff;stroke:none}
.contact-hub-toggle .hub-chat-dots{fill:#218fc0;stroke:none}
.contact-rail--dock .contact-dock-item .dock-solid-icon{width:25px;height:25px;fill:currentColor;stroke:none}
.contact-rail--dock .contact-hub-panel .contact-dock-phone{background:#e9f9ef;color:#20ad65}
.contact-rail--dock .contact-hub-panel .contact-dock-brochure{background:#eaf5ff;color:#258fdf}
@media(max-width:760px){.contact-rail--dock .contact-hub-toggle{border-radius:50%}.contact-hub-toggle .hub-icon-chat{width:27px;height:27px}.contact-rail--dock .contact-dock-item .dock-solid-icon{width:23px;height:23px}}

/* Phone and brochure icons use the same plain surface as the app marks. */
.contact-rail--dock .contact-hub-panel :is(.contact-dock-phone,.contact-dock-brochure),.contact-rail--dock .contact-hub-panel :is(.contact-dock-phone,.contact-dock-brochure):hover{background:transparent}

/* Brand-tinted hover circles, with a restrained lift. */
.contact-rail--dock .contact-dock-phone{--dock-hover:#e6f7ed}
.contact-rail--dock .contact-dock-brochure{--dock-hover:#e7f3ff}
.contact-rail--dock .contact-dock-zalo{--dock-hover:#e7efff}
.contact-rail--dock .contact-dock-wechat{--dock-hover:#e5f8ea}
.contact-rail--dock .contact-dock-line{--dock-hover:#e1f8ec}
.contact-rail--dock .contact-dock-kakao{--dock-hover:#fff5c7}
@media(hover:hover) and (pointer:fine){
 .contact-rail--dock .contact-hub-panel .contact-dock-item:hover{background:var(--dock-hover);transform:none}
}
.contact-rail--dock .contact-hub-panel .contact-dock-item:focus-visible{background:var(--dock-hover)}
@media(prefers-reduced-motion:reduce){.contact-rail--dock .contact-hub-panel .contact-dock-item:hover{transform:none}}

/* Clear labels for each contact action on hover and keyboard focus. */
.contact-rail--dock .contact-hub-panel .contact-dock-tip{display:block;z-index:5;bottom:calc(100% + 12px);padding:7px 11px;border:1px solid #e1eaf1;border-radius:8px;background:#fff;color:var(--ink);box-shadow:0 5px 18px #12324a14;font:500 12px/1.4 var(--font,Inter,sans-serif);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .18s ease,transform .18s ease,visibility .18s ease}
.contact-rail--dock .contact-hub-panel .contact-dock-item:is(:hover,:focus-visible) .contact-dock-tip{opacity:1;visibility:visible;transform:translate(-50%,0);transition-delay:80ms}
@media(max-width:760px){.contact-rail--dock .contact-hub-panel .contact-dock-item:first-child:is(:hover,:focus-visible) .contact-dock-tip{transform:translate(0,0)}}
@media(prefers-reduced-motion:reduce){.contact-rail--dock .contact-hub-panel .contact-dock-tip{transition:none}}

/* Allow action labels to extend above the circular icon buttons. */
.contact-rail--dock .contact-hub-panel .contact-dock-item{overflow:visible!important}

/* A soft recurring brand glow draws attention to the closed chat launcher. */
.contact-rail--dock .contact-hub-toggle[aria-expanded="false"]{background-size:180% 180%;animation:contact-launcher-beacon 3.6s ease-in-out infinite}
@keyframes contact-launcher-beacon{
 0%,100%{background-position:0% 50%;box-shadow:0 4px 14px #126c9b29,0 0 0 0 #2499da00,0 0 0 0 #75c87700}
 22%{background-position:60% 50%;box-shadow:0 5px 19px #126c9b38,0 0 0 5px #2499da1f,0 0 0 0 #75c87712}
 55%{background-position:100% 50%;box-shadow:0 5px 21px #126c9b33,0 0 0 14px #2499da00,0 0 0 8px #75c87714}
 82%{background-position:30% 50%;box-shadow:0 4px 16px #126c9b29,0 0 0 18px #2499da00,0 0 0 17px #75c87700}
}
@media(prefers-reduced-motion:reduce){.contact-rail--dock .contact-hub-toggle[aria-expanded="false"]{animation:none}}
