.touch-keyboard { flex-shrink: 0; padding: 8px 12px 12px; background: var(--outer); border-top: 1px solid var(--line); }
.keyboard-toolbar { display: flex; align-items: center; justify-content: space-between; min-height: 44px; gap: 12px; margin-bottom: 8px; }
.keyboard-toolbar p { color: var(--ink); font-size: 14px; font-weight: 500; }
.keyboard-toolbar > button { display: flex; align-items: center; justify-content: center; gap: 4px; min-width: 64px; min-height: 44px; padding: 4px 8px; border: 0; background: transparent; color: var(--secondary); font-size: 13px; }
.keyboard-toolbar svg { width: 18px; height: 18px; }
.keyboard-row { display: grid; grid-template-columns: repeat(var(--keys), minmax(0, 1fr)); gap: 6px; margin-top: 6px; }
.keyboard-key { min-width: 0; min-height: clamp(44px, 5dvh, 64px); padding: 6px 2px; border: 0; border-radius: 8px; color: var(--ink); background: var(--white); box-shadow: 0 2px 0 rgba(23,44,72,.08); font-size: clamp(17px, 2.5vw, 24px); line-height: 1.25; }
.keyboard-key:hover { background: var(--ivory); }
.keyboard-key svg { width: 20px; height: 20px; margin-inline: auto; }
.keyboard-key[data-key=erase], .keyboard-key[data-key=shift], .keyboard-bottom .keyboard-key { font-size: clamp(11px, 1.7vw, 16px); }
.keyboard-key[aria-pressed=true] { color: var(--white); background: var(--accent); }
.keyboard-bottom { margin-top: 10px; }
.keyboard-bottom:has(.keyboard-space) { grid-template-columns: 1fr 1fr 1.6fr 1.4fr 1.2fr; }
.keyboard-bottom .keyboard-done { color: var(--white); background: var(--accent); font-weight: 500; }
.keyboard-bottom .keyboard-done:hover { background: var(--accent-hover); }
@media (max-width: 380px) { .touch-keyboard { padding-inline: 8px; } .keyboard-row { gap: 4px; } .keyboard-key { border-radius: 6px; } }
