/* BOVET コンシェルジュ */
.cg-sec{ padding:110px 0 120px; text-align:center; background:var(--paper,#FBFAF8); }
.cg-sec .eyebrow{ font-size:.85rem; color:var(--ink-soft,#5B6167); margin-bottom:18px; letter-spacing:.08em; }
#contact.cg-sec h2 span{ display:block; }
#contact.cg-sec h2{ font-size:clamp(1.6rem,3.4vw,2.4rem); max-width:none; }
.cg-sec h2{ font-size:clamp(1.7rem,3.6vw,2.6rem); font-style:italic; font-weight:400; max-width:22ch; margin:0 auto 40px; line-height:1.5; }
.cg{ max-width:640px; margin:0 auto; text-align:left; background:#fff; border:1px solid rgba(22,41,74,.1); position:relative;
     box-shadow:0 30px 60px -40px rgba(22,41,74,.35); }
.cg::before{ content:""; position:absolute; left:50%; top:-1px; width:56px; height:2px; background:#9C7B4F; transform:translateX(-50%); }
.cg-log{ height:min(460px,58vh); overflow-y:auto; padding:34px 30px 18px; scroll-behavior:smooth; -webkit-overflow-scrolling:touch; }
.cg-msg{ margin:0 0 22px; display:flex; gap:12px; animation:cgIn .6s cubic-bezier(.16,1,.3,1) both; }
@keyframes cgIn{ from{ opacity:0; transform:translateY(6px);} to{ opacity:1; transform:none;} }
.cg-msg.bot .cg-mark{ flex:0 0 22px; width:22px; height:22px; margin-top:3px; opacity:.9; }
.cg-msg.bot .cg-text{ font-family:'Noto Serif JP','Cormorant Garamond',Georgia,serif; font-size:.95rem; line-height:1.95; color:#16294A; }
.cg-msg.bot .cg-text p{ margin:0 0 .6em; } .cg-msg.bot .cg-text p:last-child{ margin:0; }
.cg-msg.bot .cg-text ul{ margin:.2em 0 .6em; padding-left:1.1em; } .cg-msg.bot .cg-text li{ margin:.15em 0; }
.cg-msg.bot .cg-text a{ color:#8A6A3E; text-decoration:none; border-bottom:1px solid rgba(138,106,62,.4); }
.cg-msg.me{ justify-content:flex-end; }
.cg-msg.me .cg-text{ max-width:82%; background:#E4EFF6; color:#16294A; padding:11px 16px; border-radius:16px 16px 3px 16px;
     font-size:.9rem; line-height:1.75; font-family:'Noto Sans JP',system-ui,sans-serif; white-space:pre-wrap; word-break:break-word; }
.cg-dots{ display:inline-flex; gap:5px; padding:10px 0; } .cg-dots i{ width:5px; height:5px; border-radius:50%; background:#9C7B4F; opacity:.3; animation:cgDot 1.2s infinite; }
.cg-dots i:nth-child(2){ animation-delay:.2s; } .cg-dots i:nth-child(3){ animation-delay:.4s; }
@keyframes cgDot{ 0%,100%{ opacity:.25; transform:none;} 40%{ opacity:1; transform:translateY(-2px);} }
.cg-chips{ display:flex; flex-wrap:wrap; gap:8px; padding:0 30px 18px; }
.cg-chips button{ font:inherit; font-size:.8rem; color:#16294A; background:transparent; border:1px solid rgba(22,41,74,.18); border-radius:999px;
     padding:7px 14px; cursor:pointer; transition:border-color .3s, color .3s; }
.cg-chips button:hover{ border-color:#9C7B4F; color:#8A6A3E; }
.cg-form{ display:flex; align-items:flex-end; gap:12px; border-top:1px solid rgba(22,41,74,.1); padding:14px 16px 14px 30px; }
.cg-form textarea{ flex:1; border:0; outline:0; resize:none; background:transparent; font:inherit; font-size:16px; line-height:1.6; color:#16294A;
     max-height:120px; padding:8px 0; font-family:'Noto Sans JP',system-ui,sans-serif; }
.cg-form textarea::placeholder{ color:#9AA3AD; }
.cg-send{ flex:0 0 42px; width:42px; height:42px; border-radius:50%; border:0; background:#16294A; color:#fff; cursor:pointer; display:grid; place-items:center;
     transition:background .3s, opacity .3s; }
.cg-send:hover{ background:#8A6A3E; } .cg-send:disabled{ opacity:.35; cursor:default; }
.cg-send svg{ width:16px; height:16px; }
.cg-foot{ max-width:640px; margin:18px auto 0; display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap;
     font-size:.74rem; color:#8A9098; text-align:left; }
.cg-foot a{ color:#16294A; text-decoration:none; border-bottom:1px solid rgba(22,41,74,.3); font-size:.8rem; margin-left:14px; }
[dir="rtl"] .cg, [dir="rtl"] .cg-foot{ text-align:right; }
@media(max-width:640px){
  .cg-sec{ padding:72px 0 80px; } #contact.cg-sec h2 span{ display:block; }
#contact.cg-sec h2{ font-size:clamp(1.6rem,3.4vw,2.4rem); max-width:none; }
.cg-sec h2{ margin-bottom:28px; }
  .cg-log{ padding:26px 20px 12px; } .cg-chips{ padding:0 20px 14px; } .cg-form{ padding:12px 12px 12px 20px; }
  .cg-foot{ padding:0 4px; }
}

/* ===== 浮遊コンシェルジュ（エドゥアール） ===== */
.cz{ position:fixed; left:0; top:0; z-index:64; width:70px; height:70px; touch-action:none; user-select:none; -webkit-user-select:none;
  -webkit-tap-highlight-color:transparent; cursor:grab; will-change:transform; transition:opacity .5s ease; }
.cz:active{ cursor:grabbing; }
.cz.away{ opacity:0; pointer-events:none; }
.cz-body{ position:absolute; inset:0; border-radius:50%; transition:transform .5s cubic-bezier(.16,1,.3,1); animation:czFloat 5.2s ease-in-out infinite; }
.cz.dragging .cz-body{ animation-play-state:paused; transform:scale(1.08); }
@keyframes czFloat{ 0%,100%{ translate:0 0; } 50%{ translate:0 -4px; } }
.cz-halo{ position:absolute; inset:-9px; border-radius:50%; background:radial-gradient(closest-side, rgba(184,160,116,.28), rgba(184,160,116,0) 70%);
  animation:czHalo 3.6s ease-in-out infinite; pointer-events:none; }
@keyframes czHalo{ 0%,100%{ opacity:.45; transform:scale(.92);} 50%{ opacity:1; transform:scale(1.06);} }
.cz-disc{ position:absolute; inset:0; border-radius:50%; overflow:hidden; background:#F3EBDD;
  box-shadow:0 14px 30px -10px rgba(14,27,51,.55), 0 3px 8px rgba(14,27,51,.25); }
.cz-art{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; border-radius:50%; display:block; -webkit-user-drag:none; pointer-events:none; }
.cz-ring{ position:absolute; inset:0; border-radius:50%; box-shadow:inset 0 0 0 2px #C9A96A, inset 0 0 0 3px rgba(255,255,255,.6); }
.cz-sheen{ position:absolute; inset:-40%; background:conic-gradient(from 0deg, transparent 0 70%, rgba(255,236,196,.35) 78%, transparent 86% 100%);
  animation:czSpin 7s linear infinite; mix-blend-mode:soft-light; opacity:.7; pointer-events:none; }
@keyframes czSpin{ to{ transform:rotate(360deg);} }
.cz-dot{ position:absolute; right:3px; top:4px; width:11px; height:11px; border-radius:50%; background:#C9A96A; border:2px solid #FBFAF8; }
.cz-bubble{ position:absolute; bottom:80px; width:max-content; max-width:min(360px, calc(100vw - 28px)); background:#fff; color:#16294A;
  font-family:'Noto Serif JP','Cormorant Garamond',Georgia,serif; font-size:.82rem; line-height:1.6; padding:10px 15px; border-radius:14px;
  box-shadow:0 12px 28px -12px rgba(22,41,74,.35); border:1px solid rgba(22,41,74,.08);
  opacity:0; transform:translateY(6px); transition:opacity .6s ease, transform .6s cubic-bezier(.16,1,.3,1); pointer-events:none; }
.cz-bubble.show{ opacity:1; transform:none; }
.cz.left .cz-bubble{ left:0; } .cz.right .cz-bubble{ right:0; }
.cz-bubble::after{ content:""; position:absolute; bottom:-6px; width:12px; height:12px; background:#fff; transform:rotate(45deg);
  border-right:1px solid rgba(22,41,74,.08); border-bottom:1px solid rgba(22,41,74,.08); }
.cz.left .cz-bubble::after{ left:28px; } .cz.right .cz-bubble::after{ right:28px; }
.czp{ position:fixed; inset:0; z-index:90; background:var(--paper,#FBFAF8); display:flex; flex-direction:column;
  clip-path:circle(0px at var(--ox,50%) var(--oy,50%)); transition:clip-path .75s cubic-bezier(.7,0,.2,1); visibility:hidden; }
.czp.open{ clip-path:circle(150% at var(--ox,50%) var(--oy,50%)); visibility:visible; }
.czp.closing{ visibility:visible; }
.czp-top{ display:flex; align-items:center; justify-content:space-between; padding:calc(14px + env(safe-area-inset-top,0px)) 18px 12px;
  border-bottom:1px solid rgba(22,41,74,.07); }
.czp-logo{ width:112px; height:auto; display:block; }
.czp-x{ width:40px; height:40px; border-radius:50%; border:1px solid rgba(22,41,74,.15); background:transparent; color:#16294A; font-size:20px; line-height:1; cursor:pointer; }
.czp-body{ flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch; }
.czp .czp-chat.cg-sec{ padding:34px 0 calc(40px + env(safe-area-inset-bottom,0px)); background:transparent; }
.czp .czp-chat .wrap{ padding:0 18px; max-width:680px; margin:0 auto; }
.czp .czp-chat h2 span{ display:block; }
.czp .czp-chat h2{ font-size:clamp(1.5rem,3.4vw,2.2rem); margin-bottom:26px; }
.czp .cg-log{ height:min(52vh,460px); }
.cg-msg.bot .cg-mark{ border-radius:50%; object-fit:cover; }
.czp .cg-msg.bot .cg-mark, #contact .cg-msg.bot .cg-mark{ width:30px; height:30px; flex-basis:30px; box-shadow:0 0 0 1px #C9A96A; }
html.cz-lock, html.cz-lock body{ overflow:hidden; }
@media (prefers-reduced-motion: reduce){ .cz-body,.cz-halo,.cz-sheen{ animation:none; } .czp{ transition:none; } }
@media print{ .cz,.czp{ display:none !important; } }
.czp .cg-sec h2{ font-size:clamp(1.3rem,5.4vw,1.9rem) !important; }

/* 上半分にいるときは、ひと声をアイコンの下に出す */
.cz.bb .cz-bubble{ bottom:auto; top:82px; transform:translateY(-6px); }
.cz.bb .cz-bubble.show{ transform:none; }
.cz.bb .cz-bubble::after{ bottom:auto; top:-6px; transform:rotate(225deg); }

/* コンシェルジュのページでも、右下の言語・メニューボタンを使えるように */
html.cz-lock .mobile-fab-nav{ z-index:95 !important; opacity:1 !important; pointer-events:auto !important; }
html.cz-lock .sheet-scrim{ z-index:96 !important; }
html.cz-lock .bottom-sheet{ z-index:97 !important; }
@media (max-width:900px){ .czp-body{ padding-bottom:calc(200px + env(safe-area-inset-bottom,0px)); } }
.czp .cg-sec h2{ font-size:clamp(1.2rem,4.8vw,1.9rem) !important; letter-spacing:.02em !important; }

/* スマホ：右下のボタンと、会話の文末・送信ボタンが重ならないように */
@media (max-width:900px){
  .czp .cg-log{ padding-bottom:84px; }
  .czp .cg-form{ padding-right:72px !important; }
  .czp .cg-chips{ padding-right:64px; }
}

/* 見出しは1行に収める（日本語） */
html[lang="ja"] .cg-sec h2{ white-space:nowrap; font-size:min(2.3rem, 6.4vw) !important; }
html[lang="ja"] .czp .cg-sec h2{ font-size:min(1.9rem, 5.6vw) !important; }

/* コンシェルジュ画面：ロゴを中央に（タップでトップへ）、会話欄を広く */
.czp-top{ display:grid; grid-template-columns:40px 1fr 40px; align-items:center; padding:calc(10px + env(safe-area-inset-top,0px)) 18px 8px; }
.czp-home{ justify-self:center; display:block; line-height:0; border-radius:4px; }
.czp-home:focus-visible{ outline:2px solid #9C7B4F; outline-offset:4px; }
.czp-home .czp-logo{ width:108px; }
.czp .czp-chat.cg-sec{ padding-top:14px; }
.czp .czp-chat .eyebrow{ margin-bottom:6px; }
.czp .czp-chat h2{ margin-bottom:14px !important; line-height:1.35; }
.czp .cg-log{ height:max(340px, calc(100vh - 322px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))); height:max(340px, calc(100dvh - 322px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))); }
@media (min-width:901px){ .czp .cg-log{ height:max(380px, calc(100vh - 340px)); height:max(380px, calc(100dvh - 340px)); } }

/* 入力欄をひと目でわかるように：枠つきの入力ボックス＋最初に一度だけやさしく光らせる */
.cg-form{ align-items:center; background:#F3F6F9; border-top:1px solid rgba(22,41,74,.1); padding:12px 14px 12px 16px; }
.cg-form textarea{ background:#fff; border:1px solid rgba(22,41,74,.28); border-radius:22px; padding:10px 16px; min-height:46px; box-sizing:border-box;
  transition:border-color .2s ease, box-shadow .2s ease; }
.cg-form textarea::placeholder{ color:#6F7780; opacity:1; }
.cg-form textarea:focus{ border-color:#9C7B4F; box-shadow:0 0 0 3px rgba(156,123,79,.18); }
.cg-send{ flex:0 0 46px; width:46px; height:46px; }
@keyframes cgHint{ 0%,100%{ box-shadow:0 0 0 0 rgba(156,123,79,0); border-color:rgba(22,41,74,.28); } 50%{ box-shadow:0 0 0 5px rgba(156,123,79,.22); border-color:#9C7B4F; } }
.czp.open .cg-form textarea:placeholder-shown:not(:focus){ animation:cgHint 1.6s ease .9s 2; }
@media (max-width:900px){ .czp .cg-form{ padding:12px 72px 12px 12px !important; } }
@media (prefers-reduced-motion: reduce){ .czp.open .cg-form textarea{ animation:none; } }

/* 候補ボタンが出ていても入力欄が画面内に収まるよう、枠全体の高さを固定して会話部分を伸縮させる */
.czp .cg{ display:flex; flex-direction:column; height:max(420px, calc(100vh - 233px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))); height:max(420px, calc(100dvh - 233px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))); }
.czp .cg .cg-log{ flex:1 1 auto; height:auto; min-height:0; }
.czp .cg .cg-chips, .czp .cg .cg-form{ flex:0 0 auto; }
@media (min-width:901px){ .czp .cg{ height:max(460px, calc(100vh - 270px)); height:max(460px, calc(100dvh - 270px)); } }
