.cb-fab{
  position:fixed;
  bottom:calc(100px + env(safe-area-inset-bottom, 0px));
  right:12px;
  left:auto;
  width:62px;
  height:62px;
  background:#009eaa;
  border-radius:50%;
  border:none;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:9000;
  box-shadow:0 4px 20px rgba(0,158,170,.5);
  transition:transform .2s,background .2s;
  box-sizing:border-box;
}
.cb-fab:hover{
  background:#007f8a;
  transform:scale(1.07);
}
.cb-fab:active{
  transform:scale(.95);
}
.cb-fab__badge{
  position:absolute;
  top:0;
  right:0;
  width:22px;
  height:22px;
  background:#c0392b;
  border-radius:50%;
  font-size:12px;
  font-weight:700;
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  border:2px solid #fff;
  animation:cbBadge 2s ease-in-out infinite;
  box-sizing:border-box;
}
@keyframes cbBadge{
  0%,100%{box-shadow:0 0 0 0 rgba(192,57,43,.5)}
  50%{box-shadow:0 0 0 6px rgba(192,57,43,0)}
}

.cb-win,
.cb-msgs,
.cb-confirm,
.cb-confirm__row,
.cb-confirm__lbl,
.cb-confirm__val,
.cb-edit-wrap,
.cb-edit-trigger,
.cb-edit-dd,
.cb-edit-opt,
.cb-edit-opt__lbl,
.cb-edit-opt__val,
.cb-sel-wrap,
.cb-sel,
.cb-sel-ok,
.cb-inp,
.cb-ta,
.cb-submit,
.cb-restart,
.cb-ch,
.cb-bubble{
  box-sizing:border-box;
}

/* ── オーバーレイ（背景透け防止・スクロール固定） ── */
.cb-overlay{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,0.6);
  z-index:8999;
  opacity:0;
  pointer-events:none;
  transition:opacity .25s ease;
}
.cb-overlay--visible{
  opacity:1;
  pointer-events:auto;
}

/* ── bodyスクロールロック ── */
body.cb-scroll-locked{
  overflow:hidden;
  position:fixed;
  width:100%;
  /* スクロール位置はJSでtopを使って保持 */
}

.cb-win{
  position:fixed;
  top:60px;
  left:0;
  right:0;
  bottom:0;
  width:100%;
  background:#fff;
  display:flex;
  flex-direction:column;
  z-index:9000;
  overflow:hidden;
  font-family:"Zen Kaku Gothic New",sans-serif;
  border-radius:0;
  box-shadow:none;
  transform-origin:center center;
  transition:transform .3s cubic-bezier(.34,1.4,.64,1),opacity .22s;
}
.cb-win.cb-hidden{
  transform:scale(.7);
  opacity:0;
  pointer-events:none;
}

.cb-hdr{
  background:#1b455f;
  padding:13px 15px;
  display:flex;
  align-items:center;
  gap:10px;
  flex-shrink:0;
}
.cb-hdr__av{
  width:36px;
  height:36px;
  background:rgba(255,255,255,.15);
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:18px;
  flex-shrink:0;
}
.cb-hdr__info{
  flex:1;
  min-width:0;
}
.cb-hdr__name{
  font-size:15px;
  font-weight:700;
  color:#fff;
}
.cb-hdr__status{
  font-size:11px;
  color:rgba(255,255,255,.7);
}
.cb-hdr__remaining{
  background:#009eaa;
  color:#fff;
  font-size:11px;
  font-weight:700;
  padding:3px 10px;
  border-radius:20px;
  white-space:nowrap;
  flex-shrink:0;
  transition:background .3s;
}
.cb-hdr__remaining.done{
  background:#2e7d32;
}
.cb-hdr__close{
  background:none;
  border:none;
  color:rgba(255,255,255,.8);
  font-size:20px;
  cursor:pointer;
  line-height:1;
  padding:2px;
  margin-left:4px;
  flex-shrink:0;
}
.cb-hdr__close:hover{
  color:#fff;
}

.cb-prog{
  height:3px;
  background:rgba(0,158,170,.15);
  flex-shrink:0;
}
.cb-prog__fill{
  height:100%;
  background:linear-gradient(90deg,#009eaa,#1b455f);
  transition:width .5s ease;
}

.cb-msgs{
  flex:1;
  min-height:0;
  width:100%;
  max-width:100%;
  overflow-y:auto;
  overflow-x:hidden;
  padding:14px 16px 14px 12px;
  display:flex;
  flex-direction:column;
  gap:10px;
  scroll-behavior:smooth;
  touch-action:pan-y;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-y:contain;
  overscroll-behavior-x:none;
}
.cb-msgs::-webkit-scrollbar{
  width:3px;
}
.cb-msgs::-webkit-scrollbar-thumb{
  background:#ddd;
  border-radius:2px;
}

.cb-bot{
  background:#f0f4f6;
  border-left:2.5px solid #009eaa;
  color:#1a1a1a;
  border-radius:0 12px 12px 4px;
  padding:10px 13px;
  max-width:92%;
  font-size:15px;
  line-height:1.75;
  white-space:pre-line;
  align-self:flex-start;
  min-width:0;
}
.cb-user{
  background:#1b455f;
  color:#fff;
  border-radius:12px 12px 4px 12px;
  padding:10px 13px;
  max-width:92%;
  font-size:15px;
  line-height:1.75;
  align-self:flex-end;
  white-space:pre-line;
  min-width:0;
}

.cb-typing{
  display:flex;
  gap:5px;
  align-items:center;
  padding:11px 14px;
  background:#f0f4f6;
  border-left:2.5px solid #009eaa;
  border-radius:0 12px 12px 4px;
  width:fit-content;
  align-self:flex-start;
}
.cb-dot{
  width:7px;
  height:7px;
  background:#009eaa;
  border-radius:50%;
  opacity:.7;
}
.cb-dot:nth-child(1){animation:cbB .8s infinite 0s}
.cb-dot:nth-child(2){animation:cbB .8s infinite .16s}
.cb-dot:nth-child(3){animation:cbB .8s infinite .32s}
@keyframes cbB{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-5px)}
}

.cb-choices{
  display:flex;
  flex-wrap:wrap;
  gap:7px;
  align-self:flex-start;
  max-width:100%;
}
.cb-ch{
  background:#fff;
  border:1.5px solid #009eaa;
  color:#009eaa;
  padding:8px 16px;
  border-radius:22px;
  font-size:16px;
  font-weight:700;
  cursor:pointer;
  font-family:"Zen Kaku Gothic New",sans-serif;
  transition:background .15s,color .15s;
  max-width:100%;
}
.cb-ch:hover{
  background:#009eaa;
  color:#fff;
}

.cb-sel-wrap{
  align-self:stretch;
  display:flex;
  flex-direction:column;
  gap:7px;
  width:100%;
  max-width:100%;
  min-width:0;
  overflow:visible;
  position:relative;
  z-index:2;
}
.cb-sel{
  border:1px solid #ccc;
  border-radius:8px;
  padding:9px 10px;
  font-size:16px;
  font-family:"Zen Kaku Gothic New",sans-serif;
  width:100%;
  max-width:100%;
  min-width:0;
  background:#fff;
  color:#1a1a1a;
  outline:none;
  cursor:pointer;
  -webkit-appearance:menulist;
  appearance:menulist;
}
.cb-sel:focus{
  border-color:#009eaa;
}
.cb-sel optgroup{
  font-size:11px;
  color:#888;
  font-weight:700;
}
.cb-sel-ok{
  background:#009eaa;
  color:#fff;
  border:none;
  padding:10px;
  border-radius:8px;
  font-size:16px;
  font-weight:700;
  cursor:pointer;
  font-family:"Zen Kaku Gothic New",sans-serif;
  width:100%;
  max-width:100%;
  min-width:0;
  transition:background .15s;
}
.cb-sel-ok:hover{
  background:#007f8a;
}

.cb-skip{
  font-size:13px;
  color:#888;
  text-decoration:underline;
  background:none;
  border:none;
  cursor:pointer;
  font-family:"Zen Kaku Gothic New",sans-serif;
  align-self:flex-start;
  padding:2px 0;
}
.cb-err{
  background:#fdecea;
  color:#c62828;
  border-radius:8px;
  padding:8px 12px;
  font-size:12px;
  align-self:flex-start;
  max-width:90%;
  border-left:2.5px solid #e53935;
}

.cb-inp{
  border-top:1px solid #e5e7eb;
  padding:9px 10px calc(9px + env(safe-area-inset-bottom,0px));
  display:flex;
  gap:7px;
  align-items:flex-end;
  flex-shrink:0;
  background:#fff;
  width:100%;
}
.cb-ta{
  flex:1;
  min-width:0;
  border:1px solid #ccc;
  border-radius:20px;
  padding:11px 13px;
  font-size:16px;
  font-family:"Zen Kaku Gothic New",sans-serif;
  resize:none;
  outline:none;
  line-height:1.5;
  color:#1a1a1a;
  background:#f9fafb;
  min-height:44px;
  max-height:84px;
  overflow-y:auto;
  transition:border-color .15s;
  -webkit-text-size-adjust:100%;
}
.cb-ta:focus{
  border-color:#009eaa;
}
.cb-send{
  width:44px;
  height:44px;
  background:#009eaa;
  border:none;
  border-radius:50%;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
  transition:background .15s,transform .1s;
}
.cb-send:hover{
  background:#007f8a;
}
.cb-send:active{
  transform:scale(.93);
}

.cb-confirm{
  width:100%;
  max-width:100%;
  min-width:0;
  padding:14px 18px 24px 14px;
  overflow-x:hidden;
  overflow-y:auto;
  flex:1;
}
.cb-confirm::-webkit-scrollbar{
  width:3px;
}
.cb-confirm::-webkit-scrollbar-thumb{
  background:#ddd;
  border-radius:2px;
}
.cb-confirm__title{
  font-size:13px;
  font-weight:700;
  color:#1a1a1a;
  margin-bottom:10px;
  padding-bottom:9px;
  border-bottom:1px solid #e5e7eb;
}
.cb-confirm__row{
  display:flex;
  align-items:flex-start;
  gap:8px;
  width:100%;
  max-width:100%;
  min-width:0;
  padding:7px 0;
  border-bottom:1px solid #f3f4f6;
  font-size:14px;
}
.cb-confirm__lbl{
  color:#6b7280;
  min-width:96px;
  max-width:96px;
  flex:0 0 96px;
  padding-top:1px;
}
.cb-confirm__val{
  color:#1a1a1a;
  flex:1 1 auto;
  min-width:0;
  max-width:100%;
  line-height:1.6;
  word-break:break-word;
  overflow-wrap:anywhere;
}
.cb-submit{
  width:100%;
  max-width:100%;
  background:#009eaa;
  color:#fff;
  border:none;
  padding:13px;
  border-radius:6px;
  font-size:16px;
  font-weight:700;
  cursor:pointer;
  font-family:"Zen Kaku Gothic New",sans-serif;
  margin-top:12px;
  letter-spacing:.04em;
  transition:background .15s;
}
.cb-submit:hover{
  background:#007f8a;
}
.cb-restart{
  width:100%;
  max-width:100%;
  background:none;
  border:none;
  color:#6b7280;
  font-size:16px;
  margin-top:10px;
  cursor:pointer;
  font-family:"Zen Kaku Gothic New",sans-serif;
  text-decoration:underline;
  display:block;
  text-align:center;
  padding:8px 0;
}

.cb-edit-wrap{
  position:relative;
  margin-top:8px;
  width:100%;
  max-width:100%;
  min-width:0;
}
.cb-edit-trigger{
  width:100%;
  max-width:100%;
  min-width:0;
  background:#fff;
  border:1.5px solid #e5e7eb;
  color:#6b7280;
  padding:10px 16px 10px 14px;
  border-radius:8px;
  font-size:16px;
  font-weight:700;
  cursor:pointer;
  font-family:"Zen Kaku Gothic New",sans-serif;
  display:flex;
  align-items:center;
  justify-content:space-between;
  transition:border-color .15s;
}
.cb-edit-trigger:hover{
  border-color:#009eaa;
  color:#009eaa;
}
.cb-edit-arr{
  font-size:10px;
  transition:transform .2s;
  flex-shrink:0;
  margin-left:8px;
}
.cb-edit-trigger.open .cb-edit-arr{
  transform:rotate(180deg);
}
.cb-edit-dd{
  display:none;
  position:absolute;
  bottom:calc(100% + 6px);
  left:0;
  right:0;
  width:100%;
  max-width:100%;
  background:#fff;
  border:1px solid #e5e7eb;
  border-radius:10px;
  box-shadow:0 4px 24px rgba(0,0,0,.12);
  overflow:hidden;
  z-index:10;
}
.cb-edit-dd.open{
  display:block;
  animation:cbDrop .18s ease;
}
@keyframes cbDrop{
  from{opacity:0;transform:translateY(6px)}
  to{opacity:1;transform:translateY(0)}
}
.cb-edit-opt{
  padding:9px 13px;
  font-size:14px;
  cursor:pointer;
  color:#1a1a1a;
  border-bottom:1px solid #f3f4f6;
  display:flex;
  gap:8px;
  align-items:center;
  min-width:0;
  transition:background .12s;
}
.cb-edit-opt:last-child{
  border-bottom:none;
}
.cb-edit-opt:hover{
  background:#e8f7f8;
  color:#007f8a;
}
.cb-edit-opt__lbl{
  color:#6b7280;
  font-size:11px;
  min-width:74px;
  flex:0 0 74px;
}
.cb-edit-opt__val{
  flex:1;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.cb-success{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  min-height:320px;
  gap:12px;
  padding:32px 20px;
  text-align:center;
}

@keyframes cbIn{
  from{opacity:0;transform:translateY(7px)}
  to{opacity:1;transform:translateY(0)}
}
.cb-anim{
  animation:cbIn .22s ease;
}

@keyframes cbPulse{
  0%,100%{transform:scale(1)}
  50%{transform:scale(1.08)}
}
.cb-pulse{
  animation:cbPulse 1.8s ease-in-out infinite;
}

@media(max-width:480px){
  .cb-win{
    top:60px;
    left:0;
    right:0;
    bottom:0;
    width:100%;
    border-radius:0;
  }

  .cb-fab{
    bottom:calc(88px + env(safe-area-inset-bottom, 0px));
    right:12px;
    left:auto;
  }

  .cb-msgs{
    padding:12px 18px 12px 10px;
  }

  .cb-confirm{
    padding:12px 20px 28px 12px;
  }

  .cb-confirm__lbl{
    min-width:88px;
    max-width:88px;
    flex:0 0 88px;
    font-size:13px;
  }

  .cb-confirm__val{
    font-size:13px;
  }

  .cb-submit,
  .cb-edit-trigger,
  .cb-restart,
  .cb-sel,
  .cb-sel-ok,
  .cb-ch,
  .cb-ta{
    font-size:16px;
  }

  .cb-ta{
    min-height:44px;
  }
}

@supports (-webkit-touch-callout: none){
  .cb-ta,
  .cb-sel,
  .cb-sel-ok,
  .cb-submit,
  .cb-edit-trigger,
  .cb-ch,
  .cb-restart{
    font-size:16px !important;
  }
}

/* ── 吹き出し ── */
.cb-bubble{
  position:fixed;
  bottom:calc(172px + env(safe-area-inset-bottom, 0px));
  right:12px;
  left:auto;
  background:#1b455f;
  color:#fff;
  font-size:12px;
  font-weight:700;
  font-family:"Zen Kaku Gothic New",sans-serif;
  padding:9px 14px;
  border-radius:12px 12px 4px 12px;
  z-index:8998;
  box-shadow:0 4px 16px rgba(0,0,0,.2);
  white-space:nowrap;
  display:flex;
  align-items:center;
  gap:8px;
  animation:cbBubbleIn .3s ease;
}
.cb-bubble::after{
  content:"";
  position:absolute;
  bottom:-7px;
  right:18px;
  width:0;
  height:0;
  border-left:7px solid transparent;
  border-right:0 solid transparent;
  border-top:8px solid #1b455f;
}
.cb-bubble__close{
  background:none;
  border:none;
  color:rgba(255,255,255,.7);
  font-size:14px;
  cursor:pointer;
  line-height:1;
  padding:0;
  margin-left:2px;
}
.cb-bubble__close:hover{
  color:#fff;
}
.cb-bubble.cb-bubble--hide{
  animation:cbBubbleOut .3s ease forwards;
}
@keyframes cbBubbleIn{
  from{opacity:0;transform:translateY(8px)}
  to{opacity:1;transform:translateY(0)}
}
@keyframes cbBubbleOut{
  from{opacity:1;transform:translateY(0)}
  to{opacity:0;transform:translateY(8px)}
}
@media(max-width:480px){
  .cb-bubble{
    right:12px;
    left:auto;
    bottom:calc(156px + env(safe-area-inset-bottom, 0px));
  }
}

/* ── テキストサイズ自動調整の無効化（iOS拡大防止） ── */
html {
  -webkit-text-size-adjust: 100%;
}
body {
  -webkit-text-size-adjust: 100%;
}
.cb-ta,
.cb-sel,
.cb-submit,
.cb-sel-ok,
.cb-edit-trigger,
.cb-ch {
  font-size: 16px !important;
}