#!/usr/bin/perl -w
use warnings;
use strict;
while(<>)
{
s/\ +/\ /g; # remove extra white space
s/\t+//g; # remove all tabs
s/:\s+/:/g; # remove white space after colons
s/;\s+/;/g; # remove white space after semicolons
s/{\s+/{/g; # remove white space after opening brace
s/\s+}/}/g; # remove white space before closing brace
s/(\w)}/$1;}/g; # make sure there's a semicolon before the closing brace
s/{([-: \(\)#\w\.\/]+);/{\r\t$1;/g; # add line break after selector
s/;/;\r\t/g; # space out the rules
s/:/: /g; # add space after colon;
s/: link/:link/g; # remove space after colon for pseudo-link;
s/: visited/:visited/g; # remove space after colon for pseudo-link;
s/: hover/:hover/g; # remove space after colon for pseudo-link;
s/: active/:active/g; # remove space after colon for pseudo-link;
s/: focus/:focus/g; # remove space after colon for pseudo-link;
s/: lang/:lang/g; # remove space after colon for pseudo-link;
s/: before/:before/g; # remove space after colon for pseudo-link;
s/: after/:after/g; # remove space after colon for pseudo-link;
s/: first-letter/:first-letter/g; # remove space after colon for pseudo-link;
s/: first-line/:first-line/g; # remove space after colon for pseudo-link;
s/: first-child/:first-child/g; # remove space after colon for pseudo-link;
s/}[\s]+/}\r\r/g; # at least 1 return after close of rule
# s/\t}/}/g; # if you like the closing brace flush
print $_;
}