/** Direct contact stays nearest the bottom edge; Back to Top sits above it. */
.tm-contact-dock{
  position:fixed;
  right:22px;
  bottom:calc(22px + env(safe-area-inset-bottom,0px));
  z-index:905;
}
.tm-contact-dock__toggle{
  display:inline-grid;
  place-items:center;
  width:48px;
  height:48px;
  padding:0;
  border:1px solid #e4efe0;
  border-radius:14px;
  background:var(--tm-matcha);
  color:#fff;
  box-shadow:0 12px 30px rgba(18,59,44,.18);
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
  touch-action:manipulation;
  transition:background-color .18s ease,box-shadow .18s ease,transform .18s ease;
}
.tm-contact-dock__toggle svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tm-contact-dock__toggle svg circle{fill:currentColor;stroke:none}
.tm-contact-dock__toggle:focus:not(:focus-visible),.tm-contact-dock__close:focus:not(:focus-visible),.tm-contact-dock__method:focus:not(:focus-visible){outline:0}
.tm-contact-dock__toggle:focus-visible,.tm-contact-dock__close:focus-visible,.tm-contact-dock__method:focus-visible{outline:2px solid var(--tm-lime);outline-offset:3px}
.tm-contact-dock__toggle:focus-visible{background:#526f28;color:#fff}
.tm-contact-dock__panel{
  position:absolute;
  right:0;
  bottom:62px;
  width:min(356px,calc(100vw - 36px));
  max-height:calc(100dvh - 112px);
  overflow:auto;
  padding:20px;
  border:1px solid var(--tm-line);
  border-radius:18px;
  background:#fff;
  box-shadow:0 20px 54px rgba(18,59,44,.16);
  overscroll-behavior:contain;
}
.tm-contact-dock__panel[hidden]{display:none!important}
.tm-contact-dock__head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}
.tm-contact-dock__title{margin:0;color:var(--tm-forest);font-size:1.13rem;font-weight:var(--tm-font-heavy);line-height:1.22;letter-spacing:-.02em}
.tm-contact-dock__intro{max-width:270px;margin:7px 0 0;color:var(--tm-muted);font-size:.88rem;line-height:1.55}
.tm-contact-dock__close{display:grid;place-items:center;flex:0 0 32px;width:32px;height:32px;padding:0;border:1px solid var(--tm-line);border-radius:50%;background:#fff;color:var(--tm-muted);cursor:pointer;transition:background-color .18s ease,border-color .18s ease,color .18s ease}
.tm-contact-dock__close svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.tm-contact-dock__methods{display:grid;gap:12px}
.tm-contact-dock__method{display:block;padding:14px;border:1px solid #d7e6d3;border-radius:14px;background:#f5f9f2;color:inherit;text-decoration:none;transition:border-color .18s ease,background-color .18s ease,box-shadow .18s ease}
.tm-contact-dock__method-head{display:flex;align-items:center;gap:11px;min-width:0}
.tm-contact-dock__icon{display:grid;place-items:center;flex:0 0 38px;width:38px;height:38px;border:1px solid #d5e5d0;border-radius:11px;background:#edf5e8;color:var(--tm-matcha)}
.tm-contact-dock__icon svg{display:block;width:20px;height:20px;fill:currentColor}
.tm-contact-dock__method-copy{display:block;min-width:0}
.tm-contact-dock__label{display:block;color:var(--tm-link);font-size:.65rem;font-weight:var(--tm-font-heavy);letter-spacing:.1em;text-transform:uppercase;line-height:1.3}
.tm-contact-dock__value{display:block;margin-top:3px;color:var(--tm-forest);font-size:.93rem;font-weight:var(--tm-font-heavy);line-height:1.34}
.tm-contact-dock__hint{display:block;margin-top:3px;color:var(--tm-muted);font-size:.76rem;line-height:1.4}
.tm-contact-dock__qr-row{display:grid;grid-template-columns:94px minmax(0,1fr);gap:13px;align-items:center;margin-top:13px;padding-top:13px;border-top:1px solid #dce8d8}
.tm-contact-dock__qr{display:block;width:94px;height:94px;object-fit:contain;border:1px solid #d7e6d3;border-radius:10px;background:#fff}
.tm-contact-dock__qr-copy{display:block;min-width:0}
.tm-contact-dock__qr-copy strong{display:block;color:var(--tm-forest);font-size:.82rem;line-height:1.35}
.tm-contact-dock__qr-copy span{display:block;margin-top:4px;color:var(--tm-muted);font-size:.74rem;line-height:1.42}
.tm-contact-dock__method--email .tm-contact-dock__value{white-space:nowrap;font-size:.86rem}
@media(hover:hover) and (pointer:fine){
  .tm-contact-dock__toggle:hover{background:#526f28;color:#fff;box-shadow:0 14px 32px rgba(18,59,44,.24);transform:translateY(-1px)}
  .tm-contact-dock__close:hover{border-color:#c7d8c1;background:var(--tm-sage);color:var(--tm-forest)}
  .tm-contact-dock__method:hover{border-color:#c2d9bb;background:#f1f7ee;box-shadow:0 8px 20px rgba(18,59,44,.06)}
}
@media(max-width:767px){
  .tm-contact-dock{right:max(16px,env(safe-area-inset-right,0px));bottom:calc(18px + env(safe-area-inset-bottom,0px))}
  .tm-contact-dock__toggle{width:46px;height:46px;border-radius:13px}
  .tm-contact-dock__toggle svg{width:22px;height:22px}
  .tm-contact-dock__panel{right:0;bottom:58px;width:min(344px,calc(100vw - 28px));max-height:calc(100dvh - 100px);padding:18px}
}
@media(max-width:420px){
  .tm-contact-dock__panel{width:min(344px,calc(100vw - 20px));padding:16px}
  .tm-contact-dock__qr-row{grid-template-columns:88px minmax(0,1fr)}
  .tm-contact-dock__qr{width:88px;height:88px}
  .tm-contact-dock__method--email .tm-contact-dock__value{font-size:.8rem}
}
@media(prefers-reduced-motion:reduce){.tm-contact-dock__toggle,.tm-contact-dock__close,.tm-contact-dock__method{transition:none}}
