/***
  This file is part of avahi.

  avahi is free software; you can redistribute it and/or modify it under
  the terms of the GNU General Public License as published by the Free
  Software Foundation; either version 2 of the License, or (at your
  option) any later version.

  avahi is distributed in the hope that it will be useful, but WITHOUT
  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
  for more details.

  You should have received a copy of the GNU General Public License
  along with avahi; if not, write to the Free Software Foundation,
  Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 
***/

body { color: black; background-color: white; } 
a:link, a:visited { color: #900000; }       
h1 { text-transform:uppercase; font-size: 18pt; } 
p { margin-left:1cm; margin-right:1cm; } 
.cmd { font-family:monospace; }
.file { font-family:monospace; }
.arg { text-transform:uppercase; font-family:monospace; font-style: italic; }
.opt { font-family:monospace; font-weight: bold;  }
.manref { font-family:monospace; }
.option .optdesc { margin-left:2cm; }
