.virtual-keyboard{position:fixed;bottom:0;left:0;right:0;background:hsl(var(--card));background-color:#ffffff;border-top:2px solid #e5e7eb;z-index:1000;box-shadow:0 -4px 6px -1px rgba(0,0,0,.1),0 -2px 4px -1px rgba(0,0,0,.06);max-height:50vh;overflow-y:auto;backdrop-filter:blur(8px)}.virtual-keyboard-header{display:flex;justify-content:flex-end;padding:.5rem 1rem;border-bottom:1px solid hsl(var(--border));background:hsl(var(--muted))}.virtual-keyboard-toggle{font-size:.75rem;padding:.25rem .5rem;min-height:32px}.virtual-keyboard-content{padding:.75rem;display:flex;flex-direction:column;gap:.5rem}.keyboard-row{display:flex;justify-content:center;gap:.25rem;flex-wrap:wrap}.keyboard-key{min-width:2rem;min-height:2rem;font-size:.8125rem;font-weight:600;padding:.375rem;border-radius:.375rem;border:1px solid #d1d5db;background:hsl(var(--card));background-color:#ffffff;color:hsl(var(--card-foreground));color:#1f2937;cursor:pointer;user-select:none;transition:all .15s ease;flex:0 0 auto;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.keyboard-key:hover{background:hsl(var(--accent));border-color:hsl(var(--accent-foreground));color:hsl(var(--accent-foreground))}.keyboard-key:active{background:hsl(var(--primary));color:hsl(var(--primary-foreground));border-color:hsl(var(--primary));transform:scale(.95)}.keyboard-key-wide{min-width:2.75rem}.keyboard-key-space{flex:1;max-width:10rem;min-width:6rem}.keyboard-row:last-child{display:flex;align-items:center;gap:.25rem}@media (max-width:640px){.virtual-keyboard{max-height:45vh}.keyboard-key{min-width:1.75rem;min-height:1.75rem;font-size:.75rem;padding:.25rem;font-weight:600}.keyboard-key-wide{min-width:2.5rem}.keyboard-key-space{min-width:4rem;max-width:6rem}.keyboard-row:last-child{gap:.125rem}.keyboard-row{gap:.125rem;justify-content:center}.virtual-keyboard-content{padding:.375rem;gap:.25rem}.virtual-keyboard-header{padding:.375rem .75rem}.virtual-keyboard-toggle{font-size:.6875rem;padding:.1875rem .375rem;min-height:28px}}@media (max-width:375px){.keyboard-key{min-width:1.5rem;min-height:1.5rem;font-size:.6875rem;padding:.1875rem;font-weight:600}.keyboard-key-wide{min-width:2.25rem}.keyboard-key-space{max-width:4rem;min-width:3rem}.keyboard-row,.keyboard-row:last-child{gap:.0625rem}.virtual-keyboard-content{padding:.25rem;gap:.1875rem}}@media (min-width:641px) and (max-width:1024px){.keyboard-key{min-width:2.25rem;min-height:2.25rem;font-size:.875rem}.keyboard-key-wide{min-width:3.25rem}.keyboard-key-space{max-width:14rem;min-width:10rem}}@media (prefers-color-scheme:dark){.virtual-keyboard{box-shadow:0 -4px 6px -1px rgba(0,0,0,.3),0 -2px 4px -1px rgba(0,0,0,.2)}.keyboard-key,.virtual-keyboard{background:hsl(var(--card));background-color:#1f2937}.keyboard-key{border:1px solid #374151;box-shadow:0 1px 2px 0 rgba(0,0,0,.1);color:hsl(var(--card-foreground));color:#f9fafb}}@media (prefers-contrast:high){.keyboard-key{border-width:2px}.keyboard-key:active,.keyboard-key:hover{border-width:3px}}@media (prefers-reduced-motion:reduce){.keyboard-key{transition:none}.keyboard-key:active{transform:none}}.keyboard-key:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.virtual-keyboard{animation:slideUp .3s ease-out}@media (orientation:landscape) and (max-height:500px){.virtual-keyboard{max-height:60vh}.keyboard-key{min-height:2rem}.virtual-keyboard-content{padding:.5rem;gap:.25rem}}