.composer-footer {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--space-4);
}

.composer-footer > span { color:var(--ink-500); font-size:.75rem; }
.composer-actions { display:flex; align-items:center; gap:var(--space-2); }

.composer-icon-button {
  display:grid;
  flex:0 0 44px;
  width:44px;
  height:44px;
  min-width:44px;
  padding:0;
  place-items:center;
  border:1px solid var(--paper-300);
  border-radius:50%;
  cursor:pointer;
  transition:background-color var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), transform var(--transition-fast);
}
.inquiry-note .composer-icon-button { padding:0; border-radius:50%; }
.composer-icon-button:hover:not(:disabled) { transform:translateY(-1px); }
.composer-icon-button svg { width:21px; height:21px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.composer-icon-button.voice-button { background:var(--paper-50); color:var(--forest-700); }
.composer-icon-button.voice-button:hover:not(:disabled) { border-color:var(--forest-500); background:var(--forest-100); }
.composer-icon-button.submit-button { border-color:var(--forest-700); background:var(--forest-700); color:var(--white); }
.composer-icon-button.submit-button:hover:not(:disabled) { background:var(--forest-900); }
.composer-icon-button.is-listening { border-color:var(--amber-500); background:var(--amber-100); color:var(--amber-700); animation:voice-pulse 1.25s ease-in-out infinite; }
.composer-icon-button:focus-visible { outline:3px solid var(--amber-500); outline-offset:3px; }
.composer-icon-button:disabled { opacity:.48; cursor:not-allowed; }

.floating-composer {
  position:fixed;
  z-index:30;
  right:calc((100vw - min(760px, 100vw - 32px)) / 2);
  bottom:max(var(--space-4), env(safe-area-inset-bottom));
  left:calc((100vw - min(760px, 100vw - 32px)) / 2);
  display:flex;
  align-items:center;
  gap:var(--space-2);
  width:auto;
  max-width:760px;
  padding:var(--space-3);
  border:1px solid var(--forest-500);
  border-radius:var(--radius-lg);
  background:var(--paper-50);
  box-shadow:var(--shadow-soft);
}
.floating-composer:not([hidden]) { animation:floating-composer-enter 180ms ease-out; }
.floating-composer textarea {
  flex:1;
  min-width:0;
  min-height:44px;
  max-height:112px;
  margin:0;
  padding:10px var(--space-3);
  resize:none;
  border:1px solid transparent;
  border-radius:var(--radius-md);
  background:var(--paper-100);
  color:var(--ink-900);
  font:400 .9375rem/1.5 var(--font-body);
}
.inquiry-note textarea:focus-visible, .floating-composer textarea:focus-visible { border-color:var(--forest-700); outline:2px solid var(--amber-500); outline-offset:1px; }

.home-page:has(.floating-composer:not([hidden])) .catalog { padding-bottom:calc(104px + env(safe-area-inset-bottom)); }
@keyframes voice-pulse { 0%, 100% { box-shadow:0 0 0 0 color-mix(in srgb, var(--amber-500) 45%, transparent); } 50% { box-shadow:0 0 0 8px transparent; } }
@keyframes floating-composer-enter { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:translateY(0); } }

@media (max-width: 560px) {
  .composer-footer { align-items:flex-end; }
  .composer-footer > span { max-width:24ch; }
  .floating-composer { right:var(--space-3); bottom:max(var(--space-3), env(safe-area-inset-bottom)); left:var(--space-3); width:auto; padding:var(--space-2); }
  .composer-icon-button { flex-shrink:0; }
}

@media (prefers-reduced-motion: reduce) {
  .floating-composer:not([hidden]), .composer-icon-button { animation:none; transition:none; }
  .resource-card, .thumb img { transition:none; }
}
