Hai un vuoto molto profondo ....
E stai confondendo linguaggi diversi.
Il $ nei CSS non esiste. E non esistono neppure le graffe innestate (salvo casi particolari che al momento non interessano).
Quindi cancella tutto e ricomincia.
Parti da una pagina con un solo CSS, che funziona a video:
codice:
<!DOCTYPE ...>
<html ...>
<head>
<title ...>
<link rel="stylesheet" type="text/css" href="miostile.css" media="screen">
</head>
<body>
...
</body>
</html>
Naturalmente ci sara` allegato il file CSS di nome
miostile.css
che contiene le istruzioni per la formattazione a video.
Poi aggiungi il link per il CSS di stampa:
codice:
<!DOCTYPE ...>
<html ...>
<head>
<title ...>
<link rel="stylesheet" type="text/css" href="miostile.css" media="screen">
<link rel="stylesheet" type="text/css" href="stampa.css" media="print">
</head>
<body>
...
</body>
</html>
E nella pagina HTML non aggiungi altro, solo aggiungi la classe noprint agli elmeenti che non saranno stampati.
Il CSS di stampa sara` contenuto nel file
stampa.css
e sara` molto simile all'altro.
In particolare gli elementi che dovranno esser stampati possono essere formattati allo stesso modo dello screen (in prima approssimazione), mentre ci dovra` essere la direttiva:
.noprint { display: none; }
(nota il punto prima del noprint). E questo ti elimina tutti i blocchi da nascondere in stampa.
A questopunto puoi procedere a rivedere gli altri blocchi (probabilmente occorre sistemare le larghezze, dato che alcuni blocchi mancanti lasceranno dei buchi.).