/* SCHMATZ · companion chat dock — shared across pages (load with companion.js).
   Self-contained styles for the collapsed buddy fab + pop-open conversation panel. */

/* ── dock shell ── */
.dock { position: fixed; left: 0; right: 0; bottom: 0; z-index: 60; padding: 0 56px 22px; pointer-events: none; }
.dock > * { pointer-events: auto; }
.dock.open::before { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 220px; z-index: -1; pointer-events: none;
  background: linear-gradient(180deg, rgba(5,7,11,0) 0%, rgba(5,7,11,0.82) 60%, rgba(5,7,11,0.95) 100%); }
[data-theme="light"] .dock.open::before { background: linear-gradient(180deg, rgba(243,246,251,0) 0%, rgba(243,246,251,0.82) 60%, rgba(243,246,251,0.96) 100%); }

/* ── the buddy orb — ambient, alive ── */
.buddy { position: relative; width: 30px; height: 30px; flex-shrink: 0; display: inline-block; }
.buddy::before, .buddy::after { content: ""; position: absolute; inset: 0; border-radius: 50%; pointer-events: none;
  border: 1px solid rgba(96,165,250,0.5); animation: buddy-ripple 4.2s var(--ease) infinite; }
.buddy::after { animation-delay: 2.1s; }
@keyframes buddy-ripple { 0% { transform: scale(0.66); opacity: 0; } 16% { opacity: 0.55; } 100% { transform: scale(2.2); opacity: 0; } }
.buddy-core { position: absolute; inset: 0; border-radius: 50%;
  background: radial-gradient(circle at 36% 30%, #CFE6FF 0%, #5A93E8 40%, #2336C9 74%, #101A6E 100%);
  box-shadow: 0 0 14px rgba(96,165,250,0.55), inset 0 0 7px rgba(255,255,255,0.35);
  animation: buddy-live 7.5s ease-in-out infinite, buddy-glow 3.6s ease-in-out infinite; will-change: transform; }
.buddy-core::after { content: ""; position: absolute; left: 26%; top: 20%; width: 30%; height: 24%; border-radius: 50%; background: rgba(255,255,255,0.88); filter: blur(0.6px); animation: buddy-spec 6.2s ease-in-out infinite; }
.buddy-ring { position: absolute; inset: -6px; border-radius: 50%; pointer-events: none;
  background: radial-gradient(circle, rgba(96,165,250,0.30) 0%, rgba(96,165,250,0) 68%); animation: buddy-halo 5s ease-in-out infinite; }
@keyframes buddy-live { 0% { transform: translate(0,0) scale(1); } 22% { transform: translate(0.7px,-0.9px) scale(1.06); } 44% { transform: translate(-0.6px,0.5px) scale(0.97); } 68% { transform: translate(0.5px,0.8px) scale(1.05); } 100% { transform: translate(0,0) scale(1); } }
@keyframes buddy-glow { 0%, 100% { box-shadow: 0 0 11px rgba(96,165,250,0.42), inset 0 0 7px rgba(255,255,255,0.30); } 50% { box-shadow: 0 0 22px rgba(96,165,250,0.78), inset 0 0 10px rgba(255,255,255,0.46); } }
@keyframes buddy-halo { 0%, 100% { transform: scale(1); opacity: 0.55; } 50% { transform: scale(1.28); opacity: 0.95; } }
@keyframes buddy-spec { 0%, 100% { transform: translate(0,0); opacity: 0.88; } 50% { transform: translate(26%,22%); opacity: 0.5; } }
.buddy-core.kick { animation: buddy-excite 0.46s var(--ease); }
@keyframes buddy-excite { 0% { transform: scale(1); } 38% { transform: scale(1.28); } 70% { transform: scale(0.95); } 100% { transform: scale(1); } }

/* ── collapsed buddy button ── */
.dock-fab { position: absolute; right: 56px; bottom: 22px; display: inline-flex; align-items: center; gap: 12px; padding: 9px 20px 9px 11px;
  background: linear-gradient(180deg, rgba(20,28,46,0.96), rgba(10,14,23,0.97)); border: 1px solid var(--line-2); border-radius: 999px; cursor: pointer;
  box-shadow: 0 12px 34px rgba(0,0,0,0.5); transition: transform 240ms var(--ease), box-shadow 240ms var(--ease), opacity 240ms var(--ease), border-color 240ms var(--ease); }
[data-theme="light"] .dock-fab { background: linear-gradient(180deg, #FFFFFF, #F2F6FC); box-shadow: 0 12px 30px rgba(20,32,60,0.16); }
.dock-fab:hover { transform: translateY(-3px); border-color: rgba(96,165,250,0.55); box-shadow: 0 18px 44px rgba(35,53,201,0.42); }
.dock-fab:hover .buddy-core { animation: buddy-excite 0.5s var(--ease); }
.dock-fab .fab-tx { display: flex; flex-direction: column; line-height: 1.15; text-align: left; font-family: 'IBM Plex Sans', sans-serif; font-weight: 500; font-size: 13.5px; color: var(--white); letter-spacing: 0.01em; }
.dock-fab .fab-sub { font-family: 'IBM Plex Mono', monospace; font-weight: 400; font-size: 9px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--silver-2); margin-top: 3px; }
.dock-fab .fab-sub b { color: var(--blue-2); font-weight: 500; }
.dock.open .dock-fab { opacity: 0; pointer-events: none; transform: translateY(10px) scale(0.94); }

/* ── open conversation panel ── */
.dock-panel { max-width: 1180px; margin: 0 auto; opacity: 0; transform: translateY(20px); pointer-events: none; transition: opacity 280ms var(--ease), transform 320ms var(--ease); }
.dock.open .dock-panel { opacity: 1; transform: none; pointer-events: auto; }
.dock-inner { max-width: 1180px; margin: 0 auto; }
.dock-chips { display: flex; gap: 8px; align-items: center; margin-bottom: 11px; flex-wrap: wrap; }
.dock-chips .lbl { display: inline-flex; align-items: center; gap: 8px; font-family: 'IBM Plex Mono', monospace; font-size: 9px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--silver-2); margin-right: 4px; text-shadow: 0 1px 6px rgba(5,7,11,0.9); }
[data-theme="light"] .dock-chips .lbl { text-shadow: none; }
.dock-chips .try-ic { width: 19px; height: 19px; flex-shrink: 0; filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5)); transform-origin: center; transition: transform 520ms var(--ease), filter 320ms var(--ease); }
.dock-chips:hover .try-ic { transform: rotate(180deg) scale(1.22); filter: drop-shadow(0 3px 7px rgba(96,165,250,0.6)) brightness(1.18); }
.dock-min { margin-left: auto; background: none; border: 0; cursor: pointer; font-family: 'IBM Plex Mono', monospace; font-size: 9px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--muted);
  display: inline-flex; align-items: center; gap: 6px; transition: color 180ms ease; }
.dock-min:hover { color: var(--white); }
.dock-min .mn-chev { font-size: 13px; line-height: 1; }
.dock.open .dock-chips button:not(.dock-min) { animation: chip-pop 360ms var(--ease) backwards; }
.dock.open .dock-chips button:not(.dock-min):nth-of-type(1) { animation-delay: 60ms; }
.dock.open .dock-chips button:not(.dock-min):nth-of-type(2) { animation-delay: 110ms; }
.dock.open .dock-chips button:not(.dock-min):nth-of-type(3) { animation-delay: 160ms; }
.dock.open .dock-chips button:not(.dock-min):nth-of-type(4) { animation-delay: 210ms; }
.dock.open .dock-chips button:not(.dock-min):nth-of-type(5) { animation-delay: 260ms; }
@keyframes chip-pop { 0% { opacity: 0; transform: translateY(8px) scale(0.94); } 100% { opacity: 1; transform: none; } }
.dock-chips button:not(.dock-min) { font-family: 'IBM Plex Mono', monospace; font-size: 11px; color: var(--silver-2);
  background: rgba(10,15,26,0.82); border: 1px solid var(--line); border-radius: 999px; padding: 8px 13px; cursor: pointer; line-height: 1; white-space: nowrap;
  transition: border-color 160ms ease, color 160ms ease, background 160ms ease, transform 160ms ease; }
[data-theme="light"] .dock-chips button:not(.dock-min) { background: rgba(255,255,255,0.9); }
.dock-chips button:not(.dock-min):hover { border-color: rgba(96,165,250,0.5); color: var(--white); background: rgba(59,130,246,0.12); transform: translateY(-2px); }
[data-theme="light"] .dock-chips button:not(.dock-min):hover { color: var(--blue-2); }

/* ── input bar ── */
.dock-bar { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 11px;
  background: rgba(255,255,255,0.04); border: 1px solid var(--line-2); border-radius: 13px; padding: 5px 5px 5px 13px;
  box-shadow: 0 1px 0 rgba(255,255,255,0.04) inset, 0 14px 40px rgba(0,0,0,0.4); transition: border-color 200ms var(--ease), box-shadow 200ms var(--ease), background 200ms var(--ease); }
[data-theme="light"] .dock-bar { background: #FFFFFF; box-shadow: 0 10px 34px rgba(20,32,60,0.14); }
.dock-bar .bar-buddy { width: 26px; height: 26px; }
.dock-bar:focus-within { border-color: rgba(96,165,250,0.85); background: rgba(96,165,250,0.07); box-shadow: 0 0 0 1px rgba(96,165,250,0.28) inset; }
.dock-bar input { width: 100%; background: none; border: 0; outline: none; color: var(--white); font-family: 'IBM Plex Sans', sans-serif; font-weight: 300; font-size: 15px; padding: 10px 0; }
.dock-bar input::placeholder { color: var(--silver-2); }
.dock-bar .go { width: 40px; height: 40px; border-radius: 50%; flex-shrink: 0; padding: 0; display: flex; align-items: center; justify-content: center;
  color: var(--white); background: linear-gradient(160deg, #1E40AF, #2323FF); border: 1px solid rgba(96,165,250,0.6); cursor: pointer;
  transition: box-shadow 200ms var(--ease), transform 200ms var(--ease); }
.dock-bar .go svg { width: 18px; height: 18px; }
.dock-bar .go:hover { box-shadow: 0 0 0 1px rgba(96,165,250,0.5), 0 10px 32px rgba(35,35,255,0.5); transform: translateY(-1px); }

@media (max-width: 980px) { .dock { padding: 18px 24px; } }
