Input mais submit na mesma linha ocupando a largura total

Essa semana eu tive um pequeno impasse ao desenvolver um layout responsivo. Eu queria um campo input ao lado de um botão submit e que ocupasse o tamanho total da div externa.

Mas para que isso? Ora, se o site é responsivo o tamanho da div vai variar conforme a tela, certo? Então o campo input e o botão deveriam seguir essa mesma linha de flexibilidade.

A primeira idéia foi alinhar o botão à direita, o campo input a esquerda e fixar a sua largura. Até um certo pronto ficou legal, mas quando abre um determinado tipo de dispositivo o espaçamento entre o campo input e o botão fica muito grande deixando o layout feio. Então a solução foi pesquisar mais até encontrar uma forma mais ideal, vamos lá para o código.

Primeiro o html

    
        <form action="" method="">
            <input class="button" name="OK" type="submit" value="OK" />
            <div class="input"><input name="search" type="text" /></div>
        </form>
    

Agora o CSS

    
        .button {
            float: right;
        }
        .input {
            overflow: hidden;
            padding: 0 3px 0 0;
        }
        .input input {
            width: 100%
        }
    

Perceba que o botão continuou flutuando a direita, mas criei uma div extra para armazenar o campo input e nesta div dei um overflow: hidden para que ambos os elementos permaneçam sempre na mesma linha. A partir daí foi só fixar a largura do input como 100%.

Fácil não?