Index: setup.py
===================================================================
--- setup.py	(revision 5204)
+++ setup.py	(working copy)
@@ -85,5 +85,6 @@
         trac.web.auth = trac.web.auth
         trac.wiki.macros = trac.wiki.macros
         trac.wiki.web_ui = trac.wiki.web_ui
+        trac.themes = trac.web.theming
     """,
 )
Index: trac/htdocs/css/admin.css
===================================================================
--- trac/htdocs/css/admin.css	(revision 5204)
+++ trac/htdocs/css/admin.css	(working copy)
@@ -1,62 +0,0 @@
-#content.admin h1 { float: left; }
-
-#tabs { background: #f7f7f0; border: 1px solid black;
-  border-color: #ccc #666 #666 #ccc; clear: left;
-  margin: 1em 0 2em; padding: .5em 0 0; float: left; width: 12em;
-}
-#tabs ul { list-style: none; margin: 0 0 .5em; padding: 0; }
-#tabs li { color: #999; font-size: 90%; font-weight: bold; margin: 0;
-  padding: 0.1em 5px;
-}
-#tabs li li { color: #000; font-size: 110%; font-weight: normal;
-  margin: 0 -3px; padding: 1px 0 1px 10px;
-}
-#tabs li li.active { background: #ddc; border: 1px solid;
-  border-color: #ccc #000 #666 #ccc; padding: 0 0 0 9px;
-}
-#tabs :link, #tabs :visited { border: none; display: block }
-#tabs :link:hover, #tabs :visited:hover { background: transparent;
-  color: #000;
-}
-
-#tabcontent { padding: 0.4em 2em; margin-left: 12em; min-height: 300px; }
-#tabcontent h2 { color: #333; margin-top: 0; }
-p.help { color: #666; font-size: 90%; margin: 1em .5em .5em; }
-
-#enumlist tbody td { vertical-align: middle; }
-
-form.addnew { clear: right; float: right; margin: -2em 0 4em; width: 33% }
-form.mod { margin-top: 1em; }
-form.mod .field { margin: .5em 0; }
-form .field em { color: #888; font-size: smaller }
-form .field .disabled em { color: #d7d7d7 }
-
-table.listing { clear: none; width: 64% }
-table.listing .sel, table.listing .default { text-align: center; width: 1% }
-
-/* Plugins panel */
-form#addplug { width: 35% }
-.plugin { background: #f7f7f7; border: 1px solid #d7d7d7; margin: 0 0 2em;
-  padding: 2px .5em; text-align: left; width: 60%;
-}
-.plugin h3 { background: url(../expanded.png) 0 50% no-repeat;
-  margin: .5em 0 0; padding-left: 16px;
-}
-.collapsed h3 { background-image: url(../collapsed.png); }
-.plugin .buttons { margin-top: 0; text-align: right }
-.plugin .uninstall { margin-top: -2em; padding: 0 }
-.plugin .summary, .plugin .info { color: #999; font-size: 80%;
-  padding-left: 16px;
-}
-.plugin .summary { margin: -.5em 0 .5em }
-.plugin .info { margin: 1em 0 .5em; }
-.plugin .info dt { float: left; width: 7em; }
-.plugin .info dd { padding: 0; margin: 0; }
-.plugin .listing { width: 100% }
-.collapsed .info, .collapsed .listing, .collapsed .update { display: none }
-.plugin .listing td { background: #fff }
-.plugin .listing .name p { color: #999; font-size: 80%; margin: 0 }
-
-/* Perm Panel */
-#permlist div { width: 13em; float: left; }
-fieldset tr.field th { text-align: right; }
Index: trac/htdocs/css/trac.css
===================================================================
--- trac/htdocs/css/trac.css	(revision 5204)
+++ trac/htdocs/css/trac.css	(working copy)
@@ -1,526 +1,17 @@
-body { background: #fff; color: #000; margin: 10px; padding: 0; }
-body, th, td {
- font: normal 13px Verdana,Arial,'Bitstream Vera Sans',Helvetica,sans-serif;
+/* anchor links */
+#x-trac .anchor:link, #x-trac .anchor:visited {
+    border: none;
+    font-size: .8em;
+    vertical-align: text-top;
 }
-h1, h2, h3, h4 {
- font-family: Arial,Verdana,'Bitstream Vera Sans',Helvetica,sans-serif;
- font-weight: bold;
- letter-spacing: -0.018em;
- page-break-after: avoid;
+#x-trac * > .anchor:link, * > #x-trac .anchor:visited {
+    visibility: hidden;
 }
-h1 { font-size: 19px; margin: .15em 1em 0.5em 0 }
-h2 { font-size: 16px }
-h3 { font-size: 14px }
-hr { border: none;  border-top: 1px solid #ccb; margin: 2em 0 }
-address { font-style: normal }
-img { border: none }
-tt { white-space: pre }
-
-.underline { text-decoration: underline }
-ol.loweralpha { list-style-type: lower-alpha }
-ol.upperalpha { list-style-type: upper-alpha }
-ol.lowerroman { list-style-type: lower-roman }
-ol.upperroman { list-style-type: upper-roman }
-ol.arabic     { list-style-type: decimal }
-
-/* Link styles */
-:link, :visited {
- text-decoration: none;
- color: #b00;
- border-bottom: 1px dotted #bbb;
+#x-trac h1:hover .anchor, #x-trac h2:hover .anchor, #x-trac h3:hover .anchor,
+#x-trac h4:hover .anchor, #x-trac h5:hover .anchor, #x-trac h6:hover .anchor {
+    visibility: visible;
 }
-:link:hover, :visited:hover { background-color: #eee; color: #555 }
-h1 :link, h1 :visited ,h2 :link, h2 :visited, h3 :link, h3 :visited,
-h4 :link, h4 :visited, h5 :link, h5 :visited, h6 :link, h6 :visited {
- color: inherit;
-}
 
-/* Heading anchors */
-.anchor:link, .anchor:visited {
- border: none;
- color: #d7d7d7;
- font-size: .8em;
- vertical-align: text-top;
-}
-* > .anchor:link, * > .anchor:visited {
- visibility: hidden;
-}
-h1:hover .anchor, h2:hover .anchor, h3:hover .anchor,
-h4:hover .anchor, h5:hover .anchor, h6:hover .anchor {
- visibility: visible;
-}
-
-@media screen {
- a.ext-link .icon {
-  background: url(../extlink.gif) left center no-repeat;
-  padding-left: 16px;
- }
- * html a.ext-link .icon { display: inline-block; }
-}
-
-/* Forms */
-input, textarea, select { margin: 2px }
-input, select { vertical-align: middle }
-input[type=button], input[type=submit], input[type=reset] {
- background: #eee;
- color: #222;
- border: 1px outset #ccc;
- padding: .1em .5em;
-}
-input[type=button]:hover, input[type=submit]:hover, input[type=reset]:hover {
- background: #ccb;
-}
-input[type=button][disabled], input[type=submit][disabled],
-input[type=reset][disabled] {
- background: #f6f6f6;
- border-style: solid;
- color: #999;
-}
-input[type=text], input.textwidget, textarea { border: 1px solid #d7d7d7 }
-input[type=text], input.textwidget { padding: .25em .5em }
-input[type=text]:focus, input.textwidget:focus, textarea:focus {
- border: 1px solid #886;
-}
-option { border-bottom: 1px dotted #d7d7d7 }
-fieldset { border: 1px solid #d7d7d7; padding: .5em; margin: 1em 0 }
-form p.hint { color: #666; font-size: 85%; font-style: italic; margin: .5em 0;
-  padding-left: 1em;
-}
-fieldset.iefix {
-  background: transparent;
-  border: none;
-  padding: 0;
-  margin: 0;
-}
-* html fieldset.iefix { width: 98% }
-fieldset.iefix p { margin: 0 }
-legend { color: #999; padding: 0 .25em; font-size: 90%; font-weight: bold }
-label.disabled { color: #d7d7d7 }
-.buttons { margin: .5em .5em .5em 0 }
-.buttons form, .buttons form div { display: inline }
-.buttons input { margin: 1em .5em .1em 0 }
-.inlinebuttons input { 
- font-size: 70%;
- border-width: 1px;
- border-style: dotted;
- margin: 0;
- padding: 0.1em;
- background: none;
-}
-
-/* Header */
-#header hr { display: none }
-#header h1 { margin: 1.5em 0 -1.5em; }
-#header img { border: none; margin: 0 0 -3em }
-#header :link, #header :visited, #header :link:hover, #header :visited:hover {
- background: transparent;
- color: #555;
- margin-bottom: 2px;
- border: none;
-}
-#header h1 :link:hover, #header h1 :visited:hover { color: #000 }
-
-/* Quick search */
-#search {
- clear: both;
- font-size: 10px;
- height: 2.2em;
- margin: 0 0 1em;
- text-align: right;
-}
-#search input { font-size: 10px }
-#search label { display: none }
-
-/* Navigation */
-.nav h2, .nav hr { display: none }
-.nav ul { font-size: 10px; list-style: none; margin: 0; text-align: right }
-.nav li {
- border-right: 1px solid #d7d7d7;
- display: inline;
- padding: 0 .75em;
- white-space: nowrap;
-}
-.nav li.last { border-right: none }
-
-/* Main navigation bar */
-#mainnav {
- background: #f7f7f7 url(../topbar_gradient.png) 0 0;
- border: 1px solid #000;
- font: normal 10px verdana,'Bitstream Vera Sans',helvetica,arial,sans-serif;
- margin: .66em 0 .33em;
- padding: .2em 0;
-}
-#mainnav li { border-right: none; padding: .25em 0 }
-#mainnav :link, #mainnav :visited {
- background: url(../dots.gif) 0 0 no-repeat;
- border-right: 1px solid #fff;
- border-bottom: none;
- border-left: 1px solid #555;
- color: #000;
- padding: .2em 20px;
-}
-* html #mainnav :link, * html #mainnav :visited { background-position: 1px 0 }
-#mainnav :link:hover, #mainnav :visited:hover {
- background-color: #ccc;
- border-right: 1px solid #ddd;
-}
-#mainnav .active :link, #mainnav .active :visited {
- background: #333 url(../topbar_gradient2.png) 0 0 repeat-x;
- border-top: none;
- border-right: 1px solid #000;
- color: #eee;
- font-weight: bold;
-}
-#mainnav .active :link:hover, #mainnav .active :visited:hover {
- border-right: 1px solid #000;
-}
-
-/* Context-dependent navigation links */
-#ctxtnav { height: 1em }
-#ctxtnav li ul {
- background: #f7f7f7;
- color: #ccc;
- border: 1px solid;
- padding: 0;
- display: inline;
- margin: 0;
-}
-#ctxtnav li li { padding: 0; }
-#ctxtnav li li :link, #ctxtnav li li :visited { padding: 0 1em }
-#ctxtnav li li :link:hover, #ctxtnav li li :visited:hover {
- background: #bba;
- color: #fff;
-}
-
-/* Alternate links */
-#altlinks { clear: both; text-align: center }
-#altlinks h3 { font-size: 12px; letter-spacing: normal; margin: 0 }
-#altlinks ul { list-style: none; margin: 0; padding: 0 0 1em }
-#altlinks li {
- border-right: 1px solid #d7d7d7;
- display: inline;
- font-size: 11px;
- line-height: 1.5;
- padding: 0 1em;
- white-space: nowrap;
-}
-#altlinks li.last { border-right: none }
-#altlinks li :link, #altlinks li :visited {
- background-repeat: no-repeat;
- color: #666;
- border: none;
- padding: 0 0 2px;
-}
-#altlinks li a.ics { background-image: url(../ics.png); padding-left: 22px }
-#altlinks li a.rss { background-image: url(../feed.png); padding-left: 20px }
-
-/* Footer */
-#footer {
-  clear: both;
-  color: #bbb;
-  font-size: 10px;
-  border-top: 1px solid;
-  height: 31px;
-  padding: .25em 0;
-}
-#footer :link, #footer :visited { color: #bbb; }
-#footer hr { display: none }
-#footer #tracpowered { border: 0; float: left }
-#footer #tracpowered:hover { background: transparent }
-#footer p { margin: 0 }
-#footer p.left {
-  float: left;
-  margin-left: 1em;
-  padding: 0 1em;
-  border-left: 1px solid #d7d7d7;
-  border-right: 1px solid #d7d7d7;
-}
-#footer p.right {
-  float: right;
-  text-align: right;
-}
-
-#content { padding-bottom: 2em; position: relative }
-
-#help {
- clear: both;
- color: #999;
- font-size: 90%;
- margin: 1em;
- text-align: right;
-}
-#help :link, #help :visited { cursor: help }
-#help hr { display: none }
-
-/* Page preferences form */
-#prefs {
- background: #f7f7f0;
- border: 1px outset #998;
- float: right;
- font-size: 9px;
- padding: .8em;
- position: relative;
- margin: 0 1em 1em;
-}
-* html #prefs { width: 26em } /* Set width only for IE */
-#prefs input, #prefs select { font-size: 9px; vertical-align: middle }
-#prefs fieldset {
- background: transparent;
- border: none;
- margin: .5em;
- padding: 0;
-}
-#prefs fieldset legend {
- background: transparent;
- color: #000;
- font-size: 9px;
- font-weight: normal;
- margin: 0 0 0 -1.5em;
- padding: 0;
-}
-#prefs .buttons { text-align: right }
-
-/* Version information (browser, wiki, attachments) */
-#info {
- margin: 1em 0 0 0;
- background: #f7f7f0;
- border: 1px solid #d7d7d7;
- border-collapse: collapse;
- border-spacing: 0;
- clear: both;
- width: 100%;
-}
-#info th, #info td { font-size: 85%; padding: 2px .5em; vertical-align: top }
-#info th { font-weight: bold; text-align: left; white-space: nowrap }
-#info td.message { width: 100% }
-#info .message ul { padding: 0; margin: 0 2em }
-#info .message p { margin: 0; padding: 0 }
-
-/* Wiki */
-.wikipage { padding-left: 18px }
-.wikipage h1, .wikipage h2, .wikipage h3 { margin-left: -18px }
-
-a.missing:link, a.missing:visited, span.missing { color: #998 }
-a.missing:link, a.missing:visited { background: #fafaf0 }
-a.missing:hover { color: #000 }
-a.closed:link, a.closed:visited { text-decoration: line-through }
-span.closed { text-decoration: line-through }
-
-dl.wiki dt { font-weight: bold }
-dl.compact dt { float: left; padding-right: .5em }
-dl.compact dd { margin: 0; padding: 0 }
-
-pre.wiki, pre.literal-block {
- background: #f7f7f7;
- border: 1px solid #d7d7d7;
- margin: 1em 1.75em;
- padding: .25em;
- overflow: auto;
-}
-
-blockquote.citation { 
- margin: -0.6em 0;
- border-style: solid; 
- border-width: 0 0 0 2px; 
- padding-left: .5em;
- border-color: #b44; 
-}
-.citation blockquote.citation { border-color: #4b4; }
-.citation .citation blockquote.citation { border-color: #44b; }
-.citation .citation .citation blockquote.citation { border-color: #c55; }
-
-table.wiki {
- border: 2px solid #ccc;
- border-collapse: collapse;
- border-spacing: 0;
-}
-table.wiki td { border: 1px solid #ccc;  padding: .1em .25em; }
-
-.wikitoolbar {
- border: solid #d7d7d7;
- border-width: 1px 1px 1px 0;
- height: 18px;
- width: 234px;
-}
-.wikitoolbar :link, .wikitoolbar :visited {
- background: transparent url(../edit_toolbar.png) no-repeat;
- border: 1px solid #fff;
- border-left-color: #d7d7d7;
- cursor: default;
- display: block;
- float: left;
- width: 24px;
- height: 16px;
-}
-.wikitoolbar :link:hover, .wikitoolbar :visited:hover {
- background-color: transparent;
- border: 1px solid #fb2;
-}
-.wikitoolbar a#em { background-position: 0 0 }
-.wikitoolbar a#strong { background-position: 0 -16px }
-.wikitoolbar a#heading { background-position: 0 -32px }
-.wikitoolbar a#link { background-position: 0 -48px }
-.wikitoolbar a#code { background-position: 0 -64px }
-.wikitoolbar a#hr { background-position: 0 -80px }
-.wikitoolbar a#np { background-position: 0 -96px }
-.wikitoolbar a#br { background-position: 0 -112px }
-.wikitoolbar a#img { background-position: 0 -128px }
-
-/* Styles for the form for adding attachments. */
-#attachment .field { margin-top: 1.3em }
-#attachment label { padding-left: .2em }
-#attachment fieldset { margin-top: 2em }
-#attachment fieldset .field { float: left; margin: 0 1em .5em 0 }
-#attachment .options { float: left; padding: 0 0 1em 1em }
-#attachment br { clear: left }
-.attachment #preview { margin-top: 1em }
-
-/* Styles for the list of attachments. */
-#attachments { border: 1px outset #996; padding: 1em }
-#attachments .attachments { margin-left: 2em; padding: 0 }
-#attachments dt { display: list-item; list-style: square; }
-#attachments dd { font-style: italic; margin-left: 0; padding-left: 0; }
-
-/* Styles for tabular listings such as those used for displaying directory
-   contents and report results. */
-table.listing {
- clear: both;
- border-bottom: 1px solid #d7d7d7;
- border-collapse: collapse;
- border-spacing: 0;
- margin-top: 1em;
- width: 100%;
-}
-table.listing th { text-align: left; padding: 0 1em .1em 0; font-size: 12px }
-table.listing thead { background: #f7f7f0 }
-table.listing thead th {
- border: 1px solid #d7d7d7;
- border-bottom-color: #999;
- font-size: 11px;
- font-weight: bold;
- padding: 2px .5em;
- vertical-align: bottom;
-}
-table.listing thead th :link:hover, table.listing thead th :visited:hover {
- background-color: transparent;
-}
-table.listing thead th a { border: none; padding-right: 12px }
-table.listing th.asc a, table.listing th.desc a { font-weight: bold }
-table.listing th.asc a, table.listing th.desc a {
- background-position: 100% 50%;
- background-repeat: no-repeat;
-}
-table.listing th.asc a { background-image: url(../asc.png) }
-table.listing th.desc a { background-image: url(../desc.png) }
-table.listing tbody td, table.listing tbody th {
- border: 1px dotted #ddd;
- padding: .33em .5em;
- vertical-align: top;
-}
-table.listing tbody td a:hover, table.listing tbody th a:hover {
- background-color: transparent;
-}
-table.listing tbody tr { border-top: 1px solid #ddd }
-table.listing tbody tr.even { background-color: #fcfcfc }
-table.listing tbody tr.odd { background-color: #f7f7f7 }
-table.listing tbody tr:hover { background: #eed !important }
-
-/* Styles for the page history table
-   (extends the styles for "table.listing") */
-#fieldhist td { padding: 0 .5em }
-#fieldhist td.date, #fieldhist td.diff, #fieldhist td.version,
-#fieldhist td.author {
- white-space: nowrap;
-}
-#fieldhist td.version { text-align: center }
-#fieldhist td.comment { width: 100% }
-
-/* Auto-completion interface */
-.suggestions { background: #fff; border: 1px solid #886; color: #222; }
-.suggestions ul {
-  font-family: sans-serif;
-  max-height: 20em;
-  min-height: 3em;
-  list-style: none;
-  margin: 0;
-  overflow: auto;
-  padding: 0;
-  width: 440px;
-}
-* html .suggestions ul { height: 10em; }
-.suggestions li { background: #fff; cursor: pointer; padding: 2px 5px }
-.suggestions li.selected { background: #b9b9b9 }
-
-/* Styles for the error page (and rst errors) */
-#content.error .message, div.system-message {
- background: #fdc;
- border: 2px solid #d00;
- color: #500;
- padding: .5em;
- margin: 1em 0;
-}
-#content.error pre, div.system-message pre {
-  margin-left: 1em;
-  overflow: auto;
-}
-div.system-message p { margin: 0; }
-div.system-message p.system-message-title { font-weight: bold; }
-
-#content.error #newticket form { display: inline; }
-#content.error #newticket textarea { display: none; }
-
-#content.error #systeminfo { margin: 1em; width: auto; }
-#content.error #systeminfo th { font-weight: bold; text-align: right; }
-
-#content.error #traceback { margin-left: 1em; }
-#content.error #traceback :link, #content.error #traceback :visited {
-  border: none;
-}
-#content.error #tbtoggle { font-size: 80%; }
-#content.error #traceback div { margin-left: 1em; }
-#content.error #traceback h3 { font-size: 95%; margin: .5em 0 0; }
-#content.error #traceback :link var, #content.error #traceback :visited var {
-  font-family: monospace;
-  font-style: normal;
-  font-weight: bold;
-}
-#content.error #traceback span.file { color: #666; font-size: 85%; }
-#content.error #traceback ul { list-style: none; margin: .5em 0; padding: 0; }
-#content.error #traceback ol {
-  border: 1px dotted #d7d7d7;
-  color: #999;
-  font-size: 85%;
-  line-height: 1;
-  margin: .5em 0;
-}
-#content.error #traceback ol li { white-space: pre; }
-#content.error #traceback ol li.current { background: #e6e6e6; color: #333; }
-#content.error #traceback ol li code { color: #666; }
-#content.error #traceback ol li.current code { color: #000; }
-#content.error #traceback table { margin: .5em 0 1em;  }
-#content.error #traceback th, #content.error #traceback td {
-  font-size: 85%; padding: 1px;
-}
-#content.error #traceback th var {
-  font-family: monospace;
-  font-style: normal;
-}
-#content.error #traceback td code { white-space: pre; }
-#content.error #traceback pre { font-size: 95%; }
-
-/* Styles for search word highlighting */
-@media screen {
- .searchword0 { background: #ff9 }
- .searchword1 { background: #cfc }
- .searchword2 { background: #cff }
- .searchword3 { background: #ccf }
- .searchword4 { background: #fcf }
-}
-
-@media print {
- #header, #altlinks, #footer, #help { display: none }
- .nav, form, .buttons form, form .buttons, form .inlinebuttons {
-   display: none;
- }
- form.printableform { display: block }
-}
+/* alternative link icons */
+#x-trac #altlinks li a.ics { background-image: url(../ics.png); padding-left: 22px }
+#x-trac #altlinks li a.rss { background-image: url(../feed.png); padding-left: 20px }
Index: trac/htdocs/css/changeset.css
===================================================================
--- trac/htdocs/css/changeset.css	(revision 5204)
+++ trac/htdocs/css/changeset.css	(working copy)
@@ -1,42 +0,0 @@
-/* Changeset overview */
-#overview .files { padding-top: 1em }
-#overview .files ul { margin: 0; padding: 0 }
-#overview .files li { list-style-type: none }
-#overview .files li .comment { display: none }
-#overview .files li div {
- border: 1px solid #999;
- float: left;
- margin: .2em .5em 0 0;
- overflow: hidden;
- width: .8em; height: .8em;
-}
-#overview div.add div, #overview div.cp div, #overview div.mv div {
- border: 0;
- margin: 0;
- float: right;
- width: .35em; 
-}
-
-#overview .changeset { padding: 0 0 1px }
-#overview dd.changeset p {
- margin-bottom: 0;
- margin-top: 0;
-}
-#overview .files { padding: 1px 0 }
-
-.diff ul.props {
- font-size: 90%;
- list-style: disc;
- margin: .5em 0 0;
- padding: 0 .5em 1em 2em;
-}
-.diff ul.props li { margin: 0; padding: 0 }
-
-#title dl { display: inline; font-size: 110% }
-#title dt { 
- display: inline; 
- font-size: 110%;
- font-weight: bold;
- margin-left: 3em;
-}
-#title dd { display: inline; margin-left: 0.4em }
Index: trac/htdocs/css/wiki.css
===================================================================
--- trac/htdocs/css/wiki.css	(revision 5204)
+++ trac/htdocs/css/wiki.css	(working copy)
@@ -1,44 +0,0 @@
-@import url(code.css);
-
-/* Styles for the page editing form */
-#edit #rows { float: right; font-size: 80% }
-#edit #rows select { font-size: 90% }
-#edit #text { clear: both; width: 100% }
-#edit .wikitoolbar { float: left; }
-#changeinfo { padding: .5em }
-#changeinfo .field { float: left; margin: 0 1em .5em 0 }
-#changeinfo br { clear: left }
-#changeinfo .options { padding: 0 0 1em 1em }
-#changeinfo .options, #changeinfo .buttons { clear: left }
-#delete, #save { margin-left: 6em }
-#preview {
- background: #f4f4f4 url(../draft.png);
- margin: 1em 0 2em;
- overflow: auto;
-}
-#template { vertical-align: middle; padding-top: 1em; }
-
-/* Diff view */
-#overview .multi { color: #999 }
-#overview .ipnr { color: #999; font-size: 80% }
-#overview .comment { padding: 1em 0 0 }
-
-@media print { 
- th.diff, td.diff { display: none }
-}
-
-/* Styles for the TracGuideToc wikimacro */
-.wiki-toc {
- padding: .5em 1em;
- margin: 0 0 2em 1em;
- float: right;
- border: 1px outset #ddc;
- background: #ffd;
- font-size: 85%;
- position: relative;
-}
-.wiki-toc h4 { font-size: 12px; margin: 0 }
-.wiki-toc ul, .wiki-toc ol { list-style: none; padding: 0; margin: 0 }
-.wiki-toc ul ul, .wiki-toc ol ol { padding-left: 1.2em }
-.wiki-toc li { margin: 0; padding: 0 }
-.wiki-toc .active { background: #ff9; position: relative; }
Index: trac/htdocs/css/search.css
===================================================================
--- trac/htdocs/css/search.css	(revision 5204)
+++ trac/htdocs/css/search.css	(working copy)
@@ -1,39 +0,0 @@
-#content.search .filters { color: #333; font-size: 85%; }
-
-#content.search form { margin: 1em 0 0 }
-#content.search form p { margin: .5em 0 }
-#content.search hr { clear: left; margin-bottom: 0 }
-#content.search #notfound { margin: 2em; font-size: 110% }
-
-#content.search h2 .numresults { color: #666; font-size: 90%; }
-#content.search #results { margin-right: 3em }
-#content.search #results dt { margin: 1.5em 0 0 }
-#content.search #results dt a { color: #33c }
-#content.search #results dd { font-size: 80%; margin: 0; padding: 0 }
-#content.search #results .author, #results .date { color: #090; }
-
-#content.search #quickjump { font-style: italic; font-weight: bold; }
-
-#content.search .paging { margin: 0 0 2em; padding: .5em 0 0;
-  font-size: 85%; line-height: 2em; text-align: center;
-}
-#content.search .paging span { color: #666; padding: 0; }
-#content.search .paging :link, #content.search .paging :visited {
-  background: #999; border: 1px solid #666; color: #fff; padding: .1em .3em;
-}
-#content.search .paging :link:hover, #content.search .paging :visited:hover {
-  background: #666; border-color: #333;
-}
-#content.search .paging .previous :link,
-#content.search .paging .previous :visited,
-#content.search .paging .next :link,
-#content.search .paging .next :visited {
-  background: transparent; border: none; color: #666; font-size: 150%;
-  font-weight: bold;
-}
-#content.search .paging .previous :link:hover,
-#content.search .paging .previous :visited:hover,
-#content.search .paging .next :link:hover,
-#content.search .paging .next :visited:hover {
-  background: transparent; color: #000;
-}
Index: trac/htdocs/css/timeline.css
===================================================================
--- trac/htdocs/css/timeline.css	(revision 5204)
+++ trac/htdocs/css/timeline.css	(working copy)
@@ -1,77 +0,0 @@
-/* Timeline */
-
-* html #prefs { width: 34em } /* Set width only for IE */
-#prefs fieldset label { display: block }
-#prefs .buttons { margin-top: -1.6em }
-
-h2 {
- background: #f7f7f7;
- border-bottom: 1px solid #d7d7d7;
- font-size: 105%;
- margin: 2em 0 .5em;
-}
-dl { line-height: 1.3em; margin-left: 1em }
-dt { background: 3px 4px no-repeat; padding: 0 }
-dt :link, dt :visited {
- background: 3px 3px no-repeat;
- border: none;
- color: #000;
- padding: 0 4px 2px 22px;
-}
-dt>:link, dt>:visited {
- /* Hide from IE/Win */
- background-position: 3px 4px;
- display: block;
-}
-dt :link:hover, dt :visited:hover { background-color: #eed; color: #000 }
-dt em {
- border-bottom: 1px dotted #bbb;
- color: #b00;
- font-style: normal;
- text-decoration: none;
-}
-dt .time { color: #999; font-size: 80%; }
-dt .author { color: #666; }
-dt.highlight { background-color: #ffa; } 
-dd { 
- font-size: 80%;
- margin: 0 0 .75em 5.5em;
- padding: 0;
- color: #776;
-}
-
-/* Apply icon background-image twice to avoid hover-flicker in IE/Win */
-dt.changeset, dt.changeset a { background-image: url(../changeset.png) !important }
-dt.newticket, dt.newticket a { background-image: url(../newticket.png) !important }
-dt.editedticket, dt.editedticket a { background-image: url(../editedticket.png) !important }
-dt.closedticket, dt.closedticket a { background-image: url(../closedticket.png) !important }
-dt.wiki, dt.wiki a { background-image: url(../wiki.png) !important }
-dt.milestone, dt.milestone a { background-image: url(../milestone.png) !important }
-dt.attachment, dt.attachment a { background-image: url(../attachment.png) !important }
-
-/* styles for the 'changeset_long_messages' option */
-dd.changeset p { margin: 0; padding: 0 }
-dd.changeset ul { padding-left: 15px; }
-
-/* Styles for the 'changeset_show_files' option */
-dd.changeset .changes { color: #aaa; font-size: 90%; }
-dd.changeset ul.changes { 
- padding-left: 0;
- list-style-type: none;
-}
-dd.changeset .changes li div {
- border: 1px solid #999;
- float: left;
- margin: .5em .5em 0 0;
- overflow: hidden;
- width: .8em; height: .8em;
-}
-dd.changeset .changes li span { 
- float: left;
- margin-right: .8em;
-}
-dd.changeset .changes .add     { background: #bfb }
-dd.changeset .changes .delete  { background: #f88 }
-dd.changeset .changes .edit    { background: #fd8 }
-dd.changeset .changes .copy    { background: #88f }
-dd.changeset .changes .move    { background: #ccc }
Index: trac/htdocs/css/diff.css
===================================================================
--- trac/htdocs/css/diff.css	(revision 5204)
+++ trac/htdocs/css/diff.css	(working copy)
@@ -1,186 +0,0 @@
-/* Diff preferences */
-#prefs fieldset { margin: 1em .5em .5em; padding: .5em 1em 0 }
-
-/* Diff/change overview */
-#overview { line-height: 130%; margin-top: 1em; padding: .5em }
-#overview dt.property {
- font-weight: bold;
- padding-right: .25em;
- position: absolute;
- left: 0;
- text-align: right;
- width: 7.75em;
-}
-#overview dd { margin-left: 8em }
-
-#overview .message { padding: 1em 0 1px }
-#overview dd.message p, #overview dd.message ul, #overview dd.message ol,
-#overview dd.message pre { margin-bottom: 1em; margin-top: 0; }
-
-/* Colors for change types */
-#chglist .edit, #overview .mod, .diff .legend .mod { background: #fd8 }
-#chglist .delete, #overview .rem, .diff .legend .rem { background: #f88 }
-#chglist .add, #overview .add, .diff .legend .add { background: #bfb }
-#chglist .copy, #overview .cp, .diff .legend .cp { background: #88f }
-#chglist .move, #overview .mv, .diff .legend .mv { background: #ccc }
-#chglist .unknown { background: #fff }
-
-/* Legend for diff and file colors */
-.legend {
- font-size: 9px;
- line-height: 1em;
- padding: .5em 0;
-}
-.legend h3 { display: none; }
-.legend dt {
- background: #fff;
- border: 1px solid #999;
- float: left;
- margin: .1em .5em .1em 0;
- overflow: hidden;
- width: .8em; height: .8em;
-}
-.legend dl {
- display: inline;
- padding: 0;
- margin: 0;
- margin-right: .5em;
-}
-.legend dd {
- display: inline;
- float: left;
- padding: 0;
- margin: 0;
- margin-right: 2em;
-}
-
-#diff-legend {
- float: left;
- clear: right;
- margin: 1em .5em;
-}
-
-#file-legend dd { margin-left: 0; }
-
-/* Styles for the list of diffs */
-.diff ul.entries { clear: both; margin: 0; padding: 0 }
-
-.diff li.entry {
- background: #f7f7f7;
- border: 1px solid #d7d7d7;
- list-style-type: none;
- margin: 0 0 2em;
- padding: 2px;
- position: relative;
- width: 100%;
-}
-.diff h2 {
- color: #333;
- font-size: 14px;
- letter-spacing: normal;
- margin: 0 auto;
- padding: .1em 0 .25em .5em;
-}
-.diff h2 .switch { color: #999; float: right; font-size: 75%;
-  line-height: 1.6;
-}
-.diff h2 .switch span { border-left: 1px solid #ccc; cursor: pointer;
-  padding: 0 1em;
-}
-.diff h2 .switch span:first-child { border: none; }
-.diff h2 .switch span.active { color: #333; cursor: default; }
-
-/* Styles for the actual diff tables (side-by-side and inline) */
-.diff table {
- border: 1px solid #ddd;
- border-spacing: 0;
- border-top: 0;
- empty-cells: show;
- font-size: 12px;
- line-height: 130%;
- padding: 0;
- margin: 0 auto;
- table-layout: fixed;
- width: 100%;
-}
-.diff table col.lineno { width: 4em }
-.diff table th {
- border-right: 1px solid #d7d7d7;
- border-bottom: 1px solid #998;
- font-size: 11px;
-}
-.diff table thead th {
- background: #eee;
- border-top: 1px solid #d7d7d7;
- color: #999;
- padding: 0 .25em;
- text-align: center;
- white-space: nowrap;
-}
-.diff table tbody th {
- background: #eed;
- color: #886;
- font-weight: normal;
- padding: 0 .5em;
- text-align: right;
- vertical-align: top;
-}
-.diff table tbody td {
- background: #fff;
- font: normal 11px monospace;
- overflow: visible;
- padding: 1px 2px;
- vertical-align: top;
-}
-.diff table tbody.skipped td {
- background: #f7f7f7;
- border: 1px solid #d7d7d7;
-}
-.diff td ins, .diff td del {text-decoration: none;}
-
-/* Styles for the inline diff */
-.diff table.inline tbody.mod td.l, .diff table.inline tbody.rem td.l {
- background: #fdd;
- border-color: #c00;
- border-style: solid;
- border-width: 0 1px 0 1px;
-}
-.diff table.inline tbody.mod td.r, .diff table.inline tbody.add td.r {
- background: #dfd;
- border-color: #0a0;
- border-style: solid;
- border-width: 0 1px 0 1px;
-}
-.diff table.inline tbody.mod tr.first td.l,
-.diff table.inline tbody.rem tr.first td.l { border-top-width: 1px }
-.diff table.inline tbody.mod tr.last td.l,
-.diff table.inline tbody.rem tr.last td.l { border-bottom-width: 1px }
-.diff table.inline tbody.mod tr.first td.r,
-.diff table.inline tbody.add tr.first td.r { border-top-width: 1px }
-.diff table.inline tbody.mod tr.last td.r,
-.diff table.inline tbody.add tr.last td.r { border-bottom-width: 1px }
-.diff table.inline tbody.mod td del { 
- background: #e99; 
- color: #000;
-}
-.diff table.inline tbody.mod td ins { 
- background: #9e9; 
- color: #000;
-}
-
-/* Styles for the side-by-side diff */
-.diff table.sidebyside colgroup.content { width: 50% }
-.diff table.sidebyside tbody.mod td.l { background: #fe9 }
-.diff table.sidebyside tbody.mod td.r { background: #fd8 }
-.diff table.sidebyside tbody.add td.l { background: #dfd }
-.diff table.sidebyside tbody.add td.r { background: #cfc }
-.diff table.sidebyside tbody.rem td.l { background: #f88 }
-.diff table.sidebyside tbody.rem td.r { background: #faa }
-.diff table.sidebyside tbody.mod del, .diff table.sidebyside tbody.mod ins {
- background: #fc0; 
-}
-
-/* Styles for the plain-text diff view */
-.diff pre { background: #fff; border: 1px solid #ddd; font-size: 85%;
-  margin: 0;
-}
Index: trac/htdocs/css/tracstyle.css
===================================================================
--- trac/htdocs/css/tracstyle.css	(revision 0)
+++ trac/htdocs/css/tracstyle.css	(revision 0)
@@ -0,0 +1,226 @@
+/**
+ * Colors / Backgrounds for the default design
+ */
+
+/* Global Styles */
+body, th, td {
+    font: normal 13px 'Verdana', 'Arial', 'Bitstream Vera Sans', 'Helvetica', sans-serif;
+}
+h1, h2, h3, h4 {
+    font-family: 'Arial', 'Verdana', 'Bitstream Vera Sans', 'Helvetica', sans-serif;
+    font-weight: bold;
+    letter-spacing: -0.018em;
+    page-break-after: avoid;
+}
+
+h1 { font-size: 19px; margin: .15em 1em 0.5em 0 }
+h2 { font-size: 16px }
+h3 { font-size: 14px }
+hr { border: none;  border-top: 1px solid #ccb; margin: 2em 0 }
+
+address { font-style: normal }
+
+img { border: none }
+
+tt { white-space: pre }
+
+.underline { text-decoration: underline }
+ol.loweralpha { list-style-type: lower-alpha }
+ol.upperalpha { list-style-type: upper-alpha }
+ol.lowerroman { list-style-type: lower-roman }
+ol.upperroman { list-style-type: upper-roman }
+ol.arabic     { list-style-type: decimal }
+
+:link, :visited {
+    text-decoration: none;
+    color: #b00;
+    border-bottom: 1px dotted #bbb;
+}
+:link:hover, :visited:hover { background-color: #eee; color: #555 }
+h1 :link, h1 :visited ,h2 :link, h2 :visited, h3 :link, h3 :visited,
+h4 :link, h4 :visited, h5 :link, h5 :visited, h6 :link, h6 :visited {
+    color: inherit;
+}
+
+a.ext-link .icon {
+    background: url(../extlink.gif) left center no-repeat;
+    padding-left: 16px;
+}
+
+* html a.ext-link .icon { display: inline-block; }
+
+/* Anchors */
+.anchor:link, .anchor:visited {
+    color: #d7d7d7;
+}
+
+/* Forms */
+input, textarea, select { margin: 2px }
+input, select { vertical-align: middle }
+input[type=button], input[type=submit], input[type=reset] {
+    background: #eee;
+    color: #222;
+    border: 1px outset #ccc;
+    padding: .1em .5em;
+}
+input[type=button]:hover, input[type=submit]:hover, input[type=reset]:hover {
+    background: #ccb;
+}
+input[type=button][disabled], input[type=submit][disabled],
+input[type=reset][disabled] {
+    background: #f6f6f6;
+    border-style: solid;
+    color: #999;
+}
+input[type=text], input.textwidget, textarea { border: 1px solid #d7d7d7 }
+input[type=text], input.textwidget { padding: .25em .5em }
+input[type=text]:focus, input.textwidget:focus, textarea:focus {
+    border: 1px solid #886;
+}
+option { border-bottom: 1px dotted #d7d7d7 }
+fieldset { border: 1px solid #d7d7d7; padding: .5em; margin: 1em 0 }
+form p.hint { color: #666; font-size: 85%; font-style: italic; margin: .5em 0;
+    padding-left: 1em;
+}
+fieldset.iefix {
+    background: transparent;
+    border: none;
+    padding: 0;
+    margin: 0;
+}
+* html fieldset.iefix { width: 98% }
+fieldset.iefix p { margin: 0 }
+legend { color: #999; padding: 0 .25em; font-size: 90%; font-weight: bold }
+label.disabled { color: #d7d7d7 }
+.buttons { margin: .5em .5em .5em 0 }
+.buttons form, .buttons form div { display: inline }
+.buttons input { margin: 1em .5em .1em 0 }
+.inlinebuttons input { 
+    font-size: 70%;
+    border-width: 1px;
+    border-style: dotted;
+    margin: 0;
+    padding: 0.1em;
+    background: none;
+}
+
+/* Header */
+#header hr { display: none }
+#header h1 { margin: 1.5em 0 -1.5em; }
+#header img { border: none; margin: 0 0 -3em }
+#header :link, #header :visited, #header :link:hover, #header :visited:hover {
+    background: transparent;
+    color: #555;
+    margin-bottom: 2px;
+    border: none;
+}
+#header h1 :link:hover, #header h1 :visited:hover { color: #000 }
+
+/* Footer */
+#footer {
+    clear: both;
+    color: #bbb;
+    font-size: 10px;
+    border-top: 1px solid;
+    height: 31px;
+    padding: .25em 0;
+}
+#footer :link, #footer :visited { color: #bbb; }
+#footer hr { display: none }
+#footer #tracpowered { border: 0; float: left }
+#footer #tracpowered:hover { background: transparent }
+#footer p { margin: 0 }
+#footer p.left {
+    float: left;
+    margin-left: 1em;
+    padding: 0 1em;
+    border-left: 1px solid #d7d7d7;
+    border-right: 1px solid #d7d7d7;
+}
+#footer p.right {
+    float: right;
+    text-align: right;
+}
+
+/* Search Form */
+#search {
+    clear: both;
+    font-size: 10px;
+    height: 2.2em;
+    margin: 0 0 1em;
+    text-align: right;
+}
+#search input { font-size: 10px }
+#search label { display: none }
+
+/* Navigation Bars */
+.nav h2, .nav hr {
+    display: none;
+}
+.nav ul {
+    font-size: 10px;
+    list-style: none;
+    margin: 0;
+    text-align: right;
+}
+.nav li {
+    border-right: 1px solid #d7d7d7;
+    display: inline;
+    padding: 0 .75em;
+    white-space: nowrap;
+}
+.nav li.last {
+    border-right: none;
+}
+
+#mainnav {
+    background: #f7f7f7 url(../topbar_gradient.png) 0 0;
+    border: 1px solid #000;
+    font: normal 10px verdana,'Bitstream Vera Sans',helvetica,arial,sans-serif;
+    margin: .66em 0 .33em;
+    padding: .2em 0;
+}
+#mainnav li { border-right: none; padding: .25em 0 }
+#mainnav :link, #mainnav :visited {
+    background: url(../dots.gif) 0 0 no-repeat;
+    border-right: 1px solid #fff;
+    border-bottom: none;
+    border-left: 1px solid #555;
+    color: #000;
+    padding: .2em 20px;
+}
+* html #mainnav :link, * html #mainnav :visited { background-position: 1px 0 }
+#mainnav :link:hover, #mainnav :visited:hover {
+    background-color: #ccc;
+    border-right: 1px solid #ddd;
+}
+#mainnav .active :link, #mainnav .active :visited {
+    background: #333 url(../topbar_gradient2.png) 0 0 repeat-x;
+    border-top: none;
+    border-right: 1px solid #000;
+    color: #eee;
+    font-weight: bold;
+}
+#mainnav .active :link:hover, #mainnav .active :visited:hover {
+    border-right: 1px solid #000;
+}
+
+/* alternative formats */
+#altlinks { clear: both; text-align: center }
+#altlinks h3 { font-size: 12px; letter-spacing: normal; margin: 0 }
+#altlinks ul { list-style: none; margin: 0; padding: 0 0 1em }
+#altlinks li {
+    border-right: 1px solid #d7d7d7;
+    display: inline;
+    font-size: 11px;
+    line-height: 1.5;
+    padding: 0 1em;
+    white-space: nowrap;
+}
+#altlinks li.last { border-right: none }
+#altlinks li :link, #altlinks li :visited {
+    background-repeat: no-repeat;
+    color: #666;
+    border: none;
+    padding: 0 0 2px;
+}
Index: trac/htdocs/css/code.css
===================================================================
--- trac/htdocs/css/code.css	(revision 5204)
+++ trac/htdocs/css/code.css	(working copy)
@@ -1,163 +0,0 @@
-div.code {
- background: #f7f7f7;
- border: 1px solid #d7d7d7;
- margin: 1em 1.75em;
- padding: .25em;
- overflow: auto
-}
-
-div.code pre { margin: 0; }
-
-table.code {
- border: 1px solid #ddd;
- border-spacing: 0;
- border-top: 0;
- empty-cells: show;
- font-size: 12px;
- line-height: 130%;
- padding: 0;
- margin: 0 auto;
- table-layout: fixed;
- width: 100%;
-}
-table.code th {
- border-right: 1px solid #d7d7d7;
- border-bottom: 1px solid #998;
- font-size: 11px;
-}
-table.code th.lineno { width: 4em }
-table.code thead th {
- background: #eee;
- border-top: 1px solid #d7d7d7;
- color: #999;
- padding: 0 .25em;
- text-align: center;
- white-space: nowrap;
-}
-table.code tbody th {
- background: #eed;
- color: #886;
- font-weight: normal;
- padding: 0 .5em;
- text-align: right;
- vertical-align: top;
-}
-table.code tbody th :link, table.code tbody th :visited {
- border: none;
- color: #886;
- text-decoration: none;
-}
-table.code tbody th :link:hover, table.code tbody th :visited:hover {
- color: #000;
-}
-table.code td {
- font: normal 11px monospace;
- overflow: hidden;
- padding: 1px 2px;
- vertical-align: top;
-}
-table.code tr.hilite th {
- background: #ccf;
-}
-table.code tr.hilite td {
- background: #ddf;
-}
-.image-file { background: #eee; padding: .3em }
-.image-file img { background: url(../imggrid.png) }
-
-/* Default */
-.code-block span { font-family: monospace; }
-
-/* Comments */
-.code-comment, .css_comment, .c_comment, .c_commentdoc, .c_commentline,
-.c_commentlinedoc, .h_comment,.pl_commentline, .p_commentblock,
-.p_commentline, .hphp_comment, .hphp_commentblock, .hphp_commentline,
-.yaml_comment {
- color: #998; 
- font-style: italic;
-}
-
-/* Language keyword */
-.code-keyword, .pl_word  { color: #789; font-weight: bold }
-
-/* Type */
-.code-type, .c_word, .c_word2, .p_classname, .hphp_classname{
- color: #468;
- font-weight: bold;
-}
-
-/* Function */
-.code-func, .p_defname {
- color: #900;
- font-weight: bold;
- border-bottom: none;
-}
-
-/* Pre-processor */
-.code-prep, .c_preprocessor, .pl_preprocessor, .yaml_identifier {
- color: #999;
- font-weight: bold;
-}
-
-/* Language construct */
-.code-lang, .p_word { color: #000; font-weight: bold }
-
-/* String */
-.code-string, .c_string, .c_stringeol, .css_doublestring, .css_singlestring,
-.h_singlestring, .h_doublestring, .pl_string, .pl_string_q, .pl_string_qq,
-.pl_string_qr, .pl_string_qw, .pl_string_qx, .pl_backticks, .pl_character,
-.p_string, .p_stringeol, .hphp_string, .hphp_stringeol, .hphp_triple,
-.hphp_tripledouble, .p_character, .p_triple, .p_tripledouble {
- color: #b84;
- font-weight: normal;
-}
-
-/* Variable name */
-.code-var { color: #f9f }
-
-/* SilverCity-specific styles */
-.css_id, .css_class, .css_pseudoclass, .css_tag { color: #900000 }
-.css_directive { color: #009000; font-weight: bold }
-.css_important { color: blue }
-.css_operator { color: #000090; font-weight: bold }
-.css_tag { font-weight: bold }
-.css_unknown_identifier, .css_unknown_pseudoclass { color: red }
-.css_value { color: navy }
-.c_commentdockeyword { color: navy; font-weight: bold }
-.c_commentdockeyworderror { color: red; font-weight: bold }
-.c_character, .c_regex, .c_uuid, .c_verbatim { color: olive }
-.c_number { color: #099 }
-.h_asp { color: #ff0 }
-.h_aspat { color: #ffdf00 }
-.h_attribute { color: teal }
-.h_attributeunknown { color: red }
-.h_cdata { color: #373 }
-.h_entity { color: purple }
-.h_number { color: #099 }
-.h_other { color: purple }
-.h_script, .h_tag, .h_tagend { color: navy }
-.h_tagunknown { color: red }
-.h_xmlend, .h_xmlstart { color: blue }
-.pl_datasection { color: olive }
-.pl_error { color: red; font-weight: bold }
-.pl_hash { color: #000 }
-.pl_here_delim, .pl_here_q, .pl_here_qq, .pl_here_qx, .pl_longquote { color: olive }
-.pl_number { color: #099 }
-.pl_pod { font-style: italic }
-.pl_regex, .pl_regsubst { color: olive }
-.p_number { color: #099 }
-.hphp_character { color: olive }
-.hphp_defname { color: #099; font-weight: bold }
-.hphp_number { color: #099 }
-.hphp_word { color: navy; font-weight: bold }
-.yaml_document { color: gray; font-style: italic }
-.yaml_keyword { color: #808 }
-.yaml_number { color: #800 }
-.yaml_reference { color: #088 }
-.v_comment { color: gray; font-style: italic }
-.v_commentline, .v_commentlinebang { color: red; font-style: italic }
-.v_number, .v_preprocessor { color: #099 }
-.v_string, .v_stringeol { color: olive }
-.v_user{ color: blue; font-weight: bold }
-.v_word, .v_word3 { color: navy; font-weight: bold }
-.v_word2 { color: green; font-weight: bold }
Index: trac/htdocs/css/about.css
===================================================================
--- trac/htdocs/css/about.css	(revision 5204)
+++ trac/htdocs/css/about.css	(working copy)
@@ -1,18 +1,22 @@
 /* About page */
-#content.about p.copyright { color: #999; font-size: 90%; }
-#content.about h2 { margin-top: 2em; }
-#content.about table { margin-top: 0; width: auto; }
-#content.about table th, #content.about table td { font-size: 90%; }
+#x-trac #content.about p.copyright { color: #999; font-size: 90%; }
+#x-trac #content.about h2 { margin-top: 2em; }
+#x-trac #content.about table { margin-top: 0; width: auto; }
+#x-trac #content.about table th, #x-trac #content.about table td { font-size: 90%; }
 
-#content.about th { background: #f7f7f0; font-weight: bold; text-align: right;
-  vertical-align: top;
+#x-trac #content.about th {
+    background: #f7f7f0;
+    font-weight: bold;
+    text-align: right;
+    vertical-align: top;
 }
 
-#content.about #config th { text-align: left; }
-#content.about #config th.section { text-align: right; }
-#content.about #config th, #content.about #config td { border: 1px solid #ddd;
-  padding: 3px;
+#x-trac #content.about #config th { text-align: left; }
+#x-trac #content.about #config th.section { text-align: right; }
+#x-trac #content.about #config th, #x-trac #content.about #config td {
+    border: 1px solid #ddd;
+    padding: 3px;
 }
-#content.about #config td.value { font-family: monospace; }
-#content.about #config tr.modified td.value { font-weight: bold; }
-#content.about #config td.doc { padding: 3px 1em; }
+#x-trac #content.about #config td.value { font-family: monospace; }
+#x-trac #content.about #config tr.modified td.value { font-weight: bold; }
+#x-trac #content.about #config td.doc { padding: 3px 1em; }
Index: trac/htdocs/css/report.css
===================================================================
--- trac/htdocs/css/report.css	(revision 5204)
+++ trac/htdocs/css/report.css	(working copy)
@@ -1,92 +0,0 @@
-@import url(code.css);
-
-h1 .numrows, h2 .numrows {
- margin-left: 1em;
- color: #999; 
- font-size: 65%; 
- font-weight: normal; 
-}
-h2 {
- background: #f7f7f7;
- border-bottom: 1px solid #d7d7d7;
- margin: 2em 0 0;
- padding: 0 .33em;
-}
-#report-descr { margin: 0 2em; font-size: 90% }
-#report-notfound { margin: 2em; font-size: 110% }
-#content.report .field { margin: 1em 0; }
-#content.report .field label { padding-bottom: .3em; }
-
-#query { clear: right }
-#query fieldset, #query fieldset input, #query fieldset select { font-size: 11px }
-#query fieldset { margin-top: 1em }
-#query .option, #query .option input, #query .option select { font-size: 11px }
-#query .option { float: left; line-height: 2em; margin: .9em 2.5em 0 .5em; padding: 0 0 .1em }
-#query .buttons { float: right; margin-top: .5em }
-#query .buttons input { margin: .5em }
-#query hr { clear: both; margin: 0; visibility: hidden }
-
-#filters table { width: 100% }
-#filters tr { height: 2em }
-#filters th, #filters td { padding: 0 .2em; vertical-align: middle }
-#filters th { font-size: 11px; text-align: right; white-space: nowrap; }
-#filters td label { font-size: 11px }
-#filters td.mode { text-align: right }
-#filters td.filter { width: 100% }
-#filters td.filter label { padding-right: 1em }
-#filters td.actions { text-align: right; white-space: nowrap }
-
-/* Styles for the report list and the report results table
-   (extends the styles for "table.listing") */
-.reports td.title { width: 100% }
-.reports tbody td :link, .reports tbody td :visited,
-.tickets tbody td :link, .tickets tbody td :visited { display: block }
-.tickets { border-bottom: none }
-.tickets thead th { text-transform: capitalize; white-space: nowrap; }
-.tickets tbody td, .reports tbody td { padding: .1em .5em !important }
-.tickets tbody td a, .reports tbody td a { border-bottom: none }
-.tickets tbody td.id :link, .tickets tbody td.id :visited {
- font-weight: bold;
-}
-.tickets tbody tr:hover { background: #eed; color: #000 }
-.tickets tr.color1-odd  { background: #fdc; border-color: #e88; color: #a22 }
-.tickets tr.color1-even { background: #fed; border-color: #e99; color: #a22 }
-.tickets tr.color2-odd  { background: #ffb; border-color: #eea; color: #880 }
-.tickets tr.color2-even { background: #ffd; border-color: #dd8; color: #880 }
-.tickets tr.color3-odd  { background: #fbfbfb; border-color: #ddd; color: #444 }
-.tickets tr.color3-even { background: #f6f6f6; border-color: #ccc; color: #333 }
-.tickets tr.color4-odd { background: #e7ffff; border-color: #cee; color: #099 }
-.tickets tr.color4-even { background: #dff; border-color: #bee; color: #099 }
-.tickets tr.color5-odd { background: #e7eeff; border-color: #cde; color: #469 }
-.tickets tr.color5-even { background: #dde7ff; border-color: #cde; color: #469 }
-.tickets tr.color6-odd  { background: #f0f0f0; border-color: #ddd; color: #888 }
-.tickets tr.color6-even { background: #f7f7f7; border-color: #ddd; color: #888 }
-.tickets tr.color6-odd a, .color6-even a { color: #b66 }
-.tickets tbody tr.fullrow td, .tickets tbody td.fullrow {
- border: none;
- color: #333;
- background: transparent;
- padding: 0 1em 2em 2em !important;
- font-size: 85%;
-}
-.tickets tbody tr.fullrow:hover { background: transparent !important }
-.tickets .fullrow :link, .tickets .fullrow :visited { display: inline }
-.tickets .fullrow .meta { color: #999; margin-bottom: -.5em; margin-left: -1em }
-.tickets .fullrow hr { display: none }
-
-/* Query results table */
-table.tickets tbody tr.added td { font-weight: bold }
-table.tickets tbody tr.changed td { font-style: italic }
-table.tickets tbody tr.removed td { color: #999 }
-table.tickets tbody tr.prio1 { background: #fdc; border-color: #e88 }
-table.tickets tbody tr.even.prio1 { background: #fed; border-color: #e99 }
-table.tickets tbody tr.prio2 { background: #ffb; border-color: #eea }
-table.tickets tbody tr.even.prio2 { background: #ffd; border-color: #dd8 }
-table.tickets tbody tr.prio3  { background: #fbfbfb; border-color: #ddd }
-table.tickets tbody tr.even.prio3 { background: #f6f6f6; border-color: #ccc }
-table.tickets tbody tr.prio4 { background: #e7ffff; border-color: #cee }
-table.tickets tbody tr.even.prio4 { background: #dff; border-color: #bee }
-table.tickets tbody tr.prio5 { background: #e7eeff; border-color: #cde }
-table.tickets tbody tr.even.prio5 { background: #dde7ff }
-table.tickets tbody tr.prio6 { background: #f0f0f0; border-color: #ddd }
-table.tickets tbody tr.even.prio6 { background: #f7f7f7 }
Index: trac/htdocs/css/jinjastyle.css
===================================================================
--- trac/htdocs/css/jinjastyle.css	(revision 0)
+++ trac/htdocs/css/jinjastyle.css	(revision 0)
@@ -0,0 +1,125 @@
+/**
+ * Colors / Backgrounds for the default design
+ */
+
+/* Global Styles */
+
+a.ext-link .icon {
+    background: url(../extlink.gif) left center no-repeat;
+    padding-left: 16px;
+}
+
+* html a.ext-link .icon { display: inline-block; }
+
+/* Anchors */
+.anchor:link, .anchor:visited {
+    color: #d7d7d7;
+    text-decoration: none;
+}
+.anchor:hover {
+    background-color: #eee;
+}
+
+/* Forms */
+input, textarea, select { margin: 2px }
+input, select { vertical-align: middle }
+input[type=button], input[type=submit], input[type=reset] {
+    background: #eee;
+    color: #222;
+    border: 1px outset #ccc;
+    padding: .1em .5em;
+}
+input[type=button]:hover, input[type=submit]:hover, input[type=reset]:hover {
+    background: #ccb;
+}
+input[type=button][disabled], input[type=submit][disabled],
+input[type=reset][disabled] {
+    background: #f6f6f6;
+    border-style: solid;
+    color: #999;
+}
+input[type=text], input.textwidget, textarea { border: 1px solid #d7d7d7 }
+input[type=text], input.textwidget { padding: .25em .5em }
+input[type=text]:focus, input.textwidget:focus, textarea:focus {
+    border: 1px solid #886;
+}
+option { border-bottom: 1px dotted #d7d7d7 }
+fieldset { border: 1px solid #d7d7d7; padding: .5em; margin: 1em 0 }
+form p.hint { color: #666; font-size: 85%; font-style: italic; margin: .5em 0;
+    padding-left: 1em;
+}
+fieldset.iefix {
+    background: transparent;
+    border: none;
+    padding: 0;
+    margin: 0;
+}
+* html fieldset.iefix { width: 98% }
+fieldset.iefix p { margin: 0 }
+legend { color: #999; padding: 0 .25em; font-size: 90%; font-weight: bold }
+label.disabled { color: #d7d7d7 }
+.buttons { margin: .5em .5em .5em 0 }
+.buttons form, .buttons form div { display: inline }
+.buttons input { margin: 1em .5em .1em 0 }
+.inlinebuttons input { 
+    font-size: 70%;
+    border-width: 1px;
+    border-style: dotted;
+    margin: 0;
+    padding: 0.1em;
+    background: none;
+}
+
+/* Navigation Bars */
+.nav h2, .nav hr {
+    display: none;
+}
+#mainnav ul {
+    font-size: 13px;
+    list-style: none;
+    margin: 0;
+    text-align: right;
+}
+#mainnav li {
+    border-right: 1px solid #d7d7d7;
+    display: inline;
+    padding: 0 .75em;
+    white-space: nowrap;
+}
+#mainnav li.last {
+    border-right: none;
+}
+
+#ctxtnav ul {
+    float: right;
+    font-size: 12px;
+    margin: 40px 0 0 30px;
+    padding: 10px 10px 10px 20px;
+    border: 1px solid #ccc;
+    background-color: #f2f2f2;
+}
+
+#ctxtnav li {
+    padding: 0;
+    margin: 0;
+}
+
+/* alternative formats */
+#altlinks { clear: both; text-align: center }
+#altlinks h3 { font-size: 12px; letter-spacing: normal; margin: 0 }
+#altlinks ul { list-style: none; margin: 0; padding: 0 0 1em }
+#altlinks li {
+    border-right: 1px solid #d7d7d7;
+    display: inline;
+    font-size: 11px;
+    line-height: 1.5;
+    padding: 0 1em;
+    white-space: nowrap;
+}
+#altlinks li.last { border-right: none }
+#altlinks li :link, #altlinks li :visited {
+    background-repeat: no-repeat;
+    color: #666;
+    border: none;
+    padding: 0 0 2px;
+}
Index: trac/htdocs/css/prefs.css
===================================================================
--- trac/htdocs/css/prefs.css	(revision 5204)
+++ trac/htdocs/css/prefs.css	(working copy)
@@ -1,25 +0,0 @@
-#content.prefs #tabs { list-style: none; margin: 2em 1em 0; padding: 1px; }
-#content.prefs #tabs li { background: #e6e6e6; border: 1px solid;
-  border-color: #ccc #666 #ccc #ccc; color: #666; position: relative;
-  bottom: -1px; float: left; font-size: 90%; margin: 0 .5em;
-  padding: .2em 1em .3em;
-}
-#content.prefs #tabs :link, #content.prefs #tabs :visited {
-  border: none; color: #999;
-}
-#content.prefs #tabs :link:hover, #content.prefs #tabs :visited:hover {
-  background: transparent; color: #333;
-}
-#content.prefs #tabs li.active { background: #fff;
-  border-bottom: 1px solid #fff;
-}
-#content.prefs #tabs #tab_advanced { float: right; }
-#content.prefs #tabcontent { background: url(../vgradient.png) 0 1px repeat-x;
-  border-top: 1px solid #ccc; clear: left; padding: 20px 5px;
-}
-* html #content.prefs #tabcontent { padding-top: 0; }
-
-#content.prefs div.field { margin-bottom: 1em; }
-#content.prefs tr.field th { text-align: right; vertical-align: middle;
-  white-space: nowrap;
-}
Index: trac/htdocs/css/roadmap.css
===================================================================
--- trac/htdocs/css/roadmap.css	(revision 5204)
+++ trac/htdocs/css/roadmap.css	(working copy)
@@ -1,83 +0,0 @@
-/* General styles for the progress bars */
-table.progress {
- border: 1px solid #d7d7d7;
- border-collapse: collapse;
- border-spacing: 0;
- float: left;
- margin: 0;
- padding: 0;
- empty-cells: show;
-}
-table.progress a, table.progress :link, table.progress :visited,
-table.progress :link:hover, table.progress :visited:hover {
- border: none;
- display: block;
- width: 100%;
- height: 1.2em;
- padding: 0;
- margin: 0;
- text-decoration: none
-}
-table.progress td { background: #fff; padding: 0 }
-table.progress td.closed { background: #bae0ba }
-table.progress td :hover { background: none }
-p.percent { font-size: 10px; line-height: 2.4em; margin: 0.9em 0 0 }
-
-/* Styles for the roadmap view */
-ul.milestones { margin: 2em 0 0; padding: 0 }
-li.milestone { list-style: none; margin-bottom: 4em }
-.milestone .info { white-space: nowrap }
-.milestone .info h2 {
- background: #f7f7f7;
- border-bottom: 1px solid #d7d7d7;
- margin: 0;
-}
-.milestone .info h2 :link, .milestone .info h2 :visited {
- color: #000;
- display: block;
- border-bottom: none;
-}
-.milestone .info h2 :link:hover, .milestone .info h2 :visited:hover {
- color: #000;
-}
-.milestone .info h2 em { color: #b00; font-style: normal }
-.milestone .info .date {
- color: #888;
- font-size: 11px;
- font-style: italic;
- margin: 0;
-}
-.milestone .info .progress { margin: 1em 1em 0; width: 40em; max-width: 70% }
-.milestone .info dl {
- font-size: 10px;
- font-style: italic;
- margin: 0 1em 2em;
- white-space: nowrap;
-}
-.milestone .info dt { display: inline; margin-left: .5em }
-.milestone .info dd { display: inline; margin: 0 1em 0 .5em }
-.milestone .description { margin-left: 1em }
-
-/* Styles for the milestone view */
-.milestone .date { color: #888; font-style: italic; margin: 0 }
-.milestone .description { margin: 1em 0 2em }
-
-/* Styles for the milestone statistics table */
-#stats { float: right; margin: 0 0 2em 2em; width: 400px; max-width: 40% }
-#stats legend { white-space: nowrap }
-#stats table { border-collapse: collapse; width: 100% }
-#stats th, #stats td { font-size: 10px; padding: 0; white-space: nowrap }
-#stats th { text-align: right; }
-#stats th :link, #stats th :visited { border: none }
-#stats td { padding-left: 0.5em; width: 100% }
-#stats td table.progress { margin: 3px 4px 3px 0 }
-#stats td table.progress td { padding: 0 }
-#stats td p.percent { line-height: 1.2em; margin-top: 3px }
-
-/* Styles for the milestone edit form */
-#edit fieldset { margin: 1em 0 }
-#edit em { color: #888; font-size: smaller }
-#edit .disabled em { color: #d7d7d7 }
-#edit .field { margin-top: 1.3em }
-#edit label { padding-left: .2em }
-#edit textarea#description { width: 97% }
Index: trac/htdocs/css/browser.css
===================================================================
--- trac/htdocs/css/browser.css	(revision 5204)
+++ trac/htdocs/css/browser.css	(working copy)
@@ -1,155 +0,0 @@
-#prefs { margin-top: -0.6em }
-* html #prefs { width: 34em } /* Set width only for IE */
-#prefs fieldset { margin: 0; }
-#prefs fieldset label { display: block }
-#prefs .buttons { margin-top: -2.3em }
-#prefs .choice { 
- float: left; 
- margin: 0 .6em 0 .3em;
- border-right: 1px dotted #d7d7d7;
-}
-
-#file-legend { margin-top: 3em; }
-
-/* Browser */
-h1 { margin: 0; padding: 0 0 .5em }
-h1 :link, h1 :visited, h1 .filename { border: none; padding: 0 .2em }
-h1 :link, h1 :visited { color: #b00 }
-h1 .first:link, h1 .first:visited { color: #998 }
-h1 .sep { color: #666; padding: 0 .1em }
-
-#jumprev, #jumploc { float: right; font-size: 10px; margin: 0 0 0.6em }
-#jumprev form, #jumploc form { margin: 0 }
-#jumprev input, #jumploc select, #jumploc input { 
-  font-size: 10px; 
-  margin: 0; 
-}
-#jumploc div.buttons { margin: 0;}
-#jumploc { margin-right: 2em;}
-
-/* Browser file annotations */
-table.code { border-collapse: collapse; }
-table.code th.blame { width: 5em; }
-table.code th.blame a { color: #ddd; }
-
-div.message { 
-  background: #ccf;
-  border: 2px ridge #999;
-  margin: 0;
-  padding: 8px; 
-  /* Note: border width and padding must be compensated for in the placement */
-}
-
-/* Styles for the directory entries table
-   (extends the styles for "table.listing") */
-#dirlist { margin-top: 0 }
-#dirlist td.rev, #dirlist td.age, #dirlist td.change {
- color: #888;
- white-space: nowrap;
- vertical-align: baseline;
-}
-#dirlist td.rev {
- font-family: monospace;
- letter-spacing: -0.08em;
- font-size: 90%;
- text-align: right;
-}
-#dirlist td.size {  
- color: #888;
- white-space: nowrap;
- text-align: right;
- vertical-align: middle;
- font-size: 70%;
-}
-#dirlist td.age {
- border-width: 0 0 2px 0;
- border-style: solid;
- font-size: 85%;
-}
-#dirlist td.name { width: 100% }
-#dirlist td.name a, #dirlist td.name span {
- background-position: 0% 50%;
- background-repeat: no-repeat;
- padding-left: 20px;
-}
-#dirlist td.name a.parent { background-image: url(../parent.png) }
-#dirlist td.name a.dir { background-image: url(../folder.png) }
-#dirlist td.name a.file { background-image: url(../file.png) }
-#dirlist td.name a, #dirlist td.rev a { border-bottom: none; display: block }
-#dirlist td.rev { text-align: right }
-#dirlist td.change { font-size: 85%; vertical-align: middle; white-space: nowrap }
-
-/* Style for the ''View Changes'' button and the diff preparation form */
-#anydiff { margin: 0 0 1em; float: left }
-#anydiff form, #anydiff div, #anydiff h2 { display: inline }
-#anydiff form th { text-align: right }
-#anydiff input {  vertical-align: baseline; margin: 0 -0.5em 0 1em }
-@media print {
- #anydiff form { display:  none }
-}
-
-/* Log */
-tr.diff input { padding: 0 1em; margin: 0 }
-
-@media print { 
- th.diff, td.diff { display: none }
-}
-
-/* Styles for the revision log table (extends the styles for "table.listing") */
-#chglist { margin-top: 0 }
-#chglist td.change span { 
- border: 1px solid #999;
- display: block;
- margin: .2em .5em 0 0;
- width: .8em; height: .8em;
-}
-#chglist td.diff { white-space: nowrap }
-#chglist td.change .comment { display: none }
-#chglist td.old_path { font-style: italic }
-#chglist td.date {
- font-size: 85%;
- vertical-align: top;
- padding-top: 0.55em;
- white-space: nowrap;
-}
-#chglist td.author { font-size: 85%; vertical-align: top; padding-top: 0.55em }
-#chglist td.rev, #chglist td.chgset { 
- font-family: monospace;  
- letter-spacing: -0.08em;
- font-size: 90%;
- text-align: right; 
-}
-#chglist td.rev a, #chglist td.chgset a { border-bottom: none }
-#chglist td.summary { 
- width: 100%; 
- font-size: 85%; 
- vertical-align: middle; 
- white-space: nowrap 
-}
-#chglist .verbose td.summary {
- border: none;
- color: #333;
- padding: .5em 1em 1em 2em;
- font-size: 90%; 
- white-space: normal 
-}
-
-#chglist td.summary * { margin-top: 0; margin-bottom: 0 }
-
-#paging { margin: 1em 0 }
-
-/* Styles for the revision info in the file view (see also trac.css) */
-#info { margin: 0; }
-#info .props {
- color: #666;
- list-style: square;
- margin: 0 0 .4em 1.6em;
- padding: 0;
-}
-#info .props li { padding: 0; overflow: auto; }
-
-/* Styles for the HTML preview */
-#preview { background: #fff; clear: both; margin: 0 }
-#preview .code-block { border-top: 1px solid #999; margin: 0 }
-#preview .image-file { overflow: hidden }
-#preview .image-file img { max-width: 100% }
Index: trac/htdocs/css/ticket.css
===================================================================
--- trac/htdocs/css/ticket.css	(revision 5204)
+++ trac/htdocs/css/ticket.css	(working copy)
@@ -1,108 +0,0 @@
-@import url(code.css);
-
-#content.ticket { width: 700px; max-width: 100% }
-
-#newticket #field-description { width: 100% }
-#newticket #properties { width: 100% }
-
-#ticket {
- background: #ffd;
- border: 1px outset #996;
- margin-top: 1em;
- padding: .5em 1em;
- position: relative;
-}
-
-div#ticket.ticketdraft {
- background: #f4f4f4 url(../draft.png);
-}
-.ticketdraft {
- background: #f4f4f4 url(../draft.png);
- border: 1px outset #996;
- padding: 0 .2em;
-}
-
-h1 .status { color: #444; text-transform: lowercase; }
-#ticket h2.summary { margin: 0 0 .8em 0 }
-#ticket .date { color: #996; float: right; font-size: 85%; position: relative }
-#ticket .date p { margin: 0 }
-
-#ticket table.properties {
- border-top: 1px solid #dd9;
- border-collapse: collapse;
- table-layout: fixed;
- width: 100%;
-}
-#ticket table.properties tr { border-bottom: 1px dotted #eed }
-#ticket table.properties td, #ticket table.properties th {
- font-size: 80%;
- padding: .5em 1em;
- vertical-align: top;
-}
-#ticket table.properties th {
- color: #663;
- font-weight: normal;
- text-align: left;
- width: 20%;
-}
-#ticket table.properties td { width: 30% }
-#ticket table.properties .description { border-top: 1px solid #dd9 }
-
-
-#ticket .description h3 {
- border-bottom: 1px solid #dd9;
- color: #663;
- font-size: 100%;
- font-weight: normal;
-}
-#ticket .description h3 .lastmod {
- font-size: 90%;
-}
-#ticket .inlinebuttons { 
- float: right;
- position: relative;
- bottom: 0.3em;
-}
-
-#changelog { border: 1px outset #996; padding: 1em }
-#changelog h3 {
- border-bottom: 1px solid #d7d7d7;
- color: #999;
- font-size: 100%;
- font-weight: normal;
-}
-#changelog .threading, #changelog .inlinebuttons {
- float: right;
- position: relative;
- bottom: 0.3em;
-}
-
-#changelog .changes { list-style: square; margin-left: 2em; padding: 0 }
-#changelog .comment { margin-left: 2em }
-
-form .field { margin-top: .75em; width: 100% }
-form #comment { width: 100% }
-
-#properties { white-space: nowrap; line-height: 160%; padding: .5em }
-#properties table { border-spacing: 0; width: 100%; }
-#properties table th {
- padding: .4em;
- text-align: right;
- width: 20%;
- vertical-align: top;
-}
-#properties table th.col2 { border-left: 1px dotted #d7d7d7 }
-#properties table td { vertical-align: middle; width: 30% }
-#properties table td.fullrow { vertical-align: middle; width: 80% }
-
-#action { line-height: 2em }
-
-fieldset.radio { border: none; margin: 0; padding: 0 }
-fieldset.radio legend {
- color: #000;
- float: left;
- font-size: 100%;
- font-weight: normal;
- padding: 0 1em 0 0;
-}
-fieldset.radio label { padding-right: 1em }
Index: trac/templates/trac_site.html
===================================================================
--- trac/templates/trac_site.html	(revision 0)
+++ trac/templates/trac_site.html	(revision 0)
@@ -0,0 +1,29 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:py="http://genshi.edgewall.org/"
+      xmlns:xi="http://www.w3.org/2001/XInclude" py:strip="">
+  <head py:match="head">
+    ${select('*')}
+    <link rel="stylesheet" href="${trac.theme.get_chrome_url('css/tracstyle.css')}" />
+  </head>
+  <body py:match="body">
+    <div id="banner">
+      <div id="header" py:choose="">
+        <a py:when="chrome.logo.src" id="logo" href="${chrome.logo.link}"><img
+          src="${chrome.logo.src}" alt="${chrome.logo.alt}" /></a>
+        <h1 py:otherwise=""><a href="${chrome.logo.link}">${project.name}</a></h1>
+      </div>
+      ${select('form[@id="search"]')}
+      ${select('div[@id="metanav"]')}
+    </div>
+    ${select('div[@id="mainnav"]')}
+
+    <div id="main">
+      <div id="x-trac">
+        ${select('div[@id="main"]/*')}
+        ${select('div[@id="altlinks"]')}
+      </div>
+    </div>
+
+    ${select('div[@id="footer"]')}
+  </body>
+</html>
Index: trac/templates/layout.html
===================================================================
--- trac/templates/layout.html	(revision 5204)
+++ trac/templates/layout.html	(working copy)
@@ -36,23 +36,18 @@
   </div>
 
   <body py:match="body">
-    <div id="banner">
-      <div id="header" py:choose="">
-        <a py:when="chrome.logo.src" id="logo" href="${chrome.logo.link}"><img
-          src="${chrome.logo.src}" alt="${chrome.logo.alt}" /></a>
-        <h1 py:otherwise=""><a href="${chrome.logo.link}">${project.name}</a></h1>
-      </div>
-      <form py:if="'SEARCH_VIEW' in perm" id="search"
-            action="${href.search()}" method="get"><div>
-        <label for="proj-search">Search:</label>
-        <input type="text" id="proj-search" name="q" size="18" accesskey="f" value="" />
-        <input type="submit" value="Search" />
-        <input type="hidden" name="wiki" value="on" />
-        <input type="hidden" name="changeset" value="on" />
-        <input type="hidden" name="ticket" value="on" />
-      </div></form>
-      ${navigation('metanav')}
-    </div>
+    
+    <form py:if="'SEARCH_VIEW' in perm" id="search"
+          action="${href.search()}" method="get"><div>
+      <label for="proj-search">Search:</label>
+      <input type="text" id="proj-search" name="q" size="18" accesskey="f" value="" />
+      <input type="submit" value="Search" />
+      <input type="hidden" name="wiki" value="on" />
+      <input type="hidden" name="changeset" value="on" />
+      <input type="hidden" name="ticket" value="on" />
+    </div></form>
+    
+    ${navigation('metanav')}
     ${navigation('mainnav')}
 
     <div id="main">
@@ -65,17 +60,17 @@
       </script>
       <script py:for="script in chrome.late_scripts"
               type="${script.type}" src="${script.href}"></script>
+    </div>
 
-      <div id="altlinks" py:if="'alternate' in chrome.links">
-        <h3>Download in other formats:</h3>
-        <ul>
-          <li py:for="idx, link in enumerate(chrome.links.alternate)"
-              class="${first_last(idx, chrome.links.alternate)}">
-            <a rel="nofollow" href="${link.href}" class="${link['class']}"
-               py:content="link.title" />
-          </li>
-        </ul>
-      </div>
+    <div id="altlinks" py:if="'alternate' in chrome.links">
+      <h3>Download in other formats:</h3>
+      <ul>
+        <li py:for="idx, link in enumerate(chrome.links.alternate)"
+            class="${first_last(idx, chrome.links.alternate)}">
+          <a rel="nofollow" href="${link.href}" class="${link['class']}"
+             py:content="link.title" />
+        </li>
+      </ul>
     </div>
 
     <div id="footer"><hr/>
@@ -90,6 +85,6 @@
     </div>
   </body>
 
-  <xi:include href="site.html"><xi:fallback /></xi:include>
+  <xi:include href="${trac.theme.get_theme_site_template()}"><xi:fallback /></xi:include>
 
 </html>
Index: trac/templates/jinja_site.html
===================================================================
--- trac/templates/jinja_site.html	(revision 0)
+++ trac/templates/jinja_site.html	(revision 0)
@@ -0,0 +1,34 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:py="http://genshi.edgewall.org/"
+      xmlns:xi="http://www.w3.org/2001/XInclude" py:strip="">
+  <head py:match="head">
+    ${select('*')}
+    <link rel="stylesheet" href="http://jinja.pocoo.org/static/style.css" type="text/css" />
+    <link rel="stylesheet" href="${trac.theme.get_chrome_url('css/jinjastyle.css')}" type="text/css" />
+  </head>
+  <body py:match="body">
+    <div id="header">
+      <h1><span>Jinja</span></h1>
+    </div>
+    <ul id="navigation">
+      <li><a href="/">Index</a></li>
+      <li><a href="/faq">FAQ</a></li>
+      <li><a href="/documentation/">Documentation</a></li>
+      <li><a href="/download">Download</a></li>
+      <li><a href="/contribute">Contribute</a></li>
+      <li class="active"><a href="/trac/">Trac</a></li>
+    </ul>
+    <div id="content">
+      <div id="contentwrapper">
+        ${select('div[@id="mainnav"]')}
+        <div id="x-trac">
+          ${select('div[@id="main"]/*')}
+          ${select('div[@id="altlinks"]')}
+        </div>
+      </div>
+    </div>
+    <div id="footer">
+      &copy; Copyright 2007 by the <a href="http://www.pocoo.org/">Pocoo</a> Team.
+    </div>
+  </body>
+</html>
Index: trac/web/theming.py
===================================================================
--- trac/web/theming.py	(revision 0)
+++ trac/web/theming.py	(revision 0)
@@ -0,0 +1,92 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2004-2007 Edgewall Software
+# Copyright (C) 2007 Armin Ronacher <armin.ronacher@active-4.com>
+# All rights reserved.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://trac.edgewall.org/wiki/TracLicense.
+#
+# This software consists of voluntary contributions made by many
+# individuals. For the exact contribution history, see the revision
+# history and logs, available at http://trac.edgewall.org/log/.
+#
+# Author: Armin Ronacher <armin.ronacher@active-4.com>
+
+from trac.core import Interface, Component, implements
+
+
+class IThemeProvider(Interface):
+    """
+    The interface for all theme providers. Pretty basic,
+    just provides the most important things
+    """
+
+    def get_theme_htdocs_name():
+        """
+        Return the name of the htdocs folder. Every theme
+        can implement the `ITemplateProvider` in order to
+        get it's own theme folder, however there are two
+        special ones:
+
+        - `common`      the trac htdocs folder
+        - `site`        the htdocs folder in the trac instance
+        """
+
+    def get_theme_site_template():
+        """
+        Return the name of the theme site template that is
+        used. The site template places the interface
+        elements and overrides them.
+        """
+
+
+class CustomTheme(Component):
+    implements(IThemeProvider)
+
+    # IThemeProvider
+    def get_theme_htdocs_id(self):
+        return 'site'
+
+    def get_theme_site_template(self):
+        return 'site.html'
+
+
+class TracTheme(Component):
+    implements(IThemeProvider)
+
+    # IThemeProvider
+    def get_theme_htdocs_id(self):
+        return 'common'
+
+    def get_theme_site_template(self):
+        return 'trac_site.html'
+
+
+class JinjaTheme(Component):
+    implements(IThemeProvider)
+    #XXX: temporary, just too lazy to create a plugin
+
+    def get_theme_htdocs_id(self):
+        return 'common'
+
+    def get_theme_site_template(self):
+        return 'jinja_site.html'
+
+
+class ThemeController(object):
+    """
+    Class passed to the templates in order to help the
+    designer.
+    """
+
+    def __init__(self, req, theme):
+        self.req = req
+        self.theme = theme
+
+    def get_chrome_url(self, *files):
+        return self.req.href.chrome(self.theme.get_theme_htdocs_id(), *files)
+
+    def get_theme_site_template(self):
+        return self.theme.get_theme_site_template()
Index: trac/web/chrome.py
===================================================================
--- trac/web/chrome.py	(revision 5204)
+++ trac/web/chrome.py	(working copy)
@@ -43,6 +43,7 @@
 from trac.web.href import Href
 from trac.wiki import IWikiSyntaxProvider
 from trac.wiki.formatter import format_to_html, format_to_oneliner
+from trac.web.theming import ThemeController, IThemeProvider
 
 
 def add_link(req, rel, href, title=None, mimetype=None, classname=None):
@@ -165,6 +166,10 @@
         
         (''since 0.11'')""")
 
+    theme = ExtensionOption('trac', 'theme',
+                            IThemeProvider, 'TracTheme',
+        """Name of the theme trac should use.""")
+
     auto_reload = Option('trac', 'auto_reload', False,
         """Automatically reload template files after modification.""")
 
@@ -253,7 +258,9 @@
             try:
                 fileobj.write("""<html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:py="http://genshi.edgewall.org/" py:strip="">
-  <!-- Custom match templates go here -->
+  <!-- Custom match templates go here
+       If you modify this template you have to set `trac.theme` to
+       `CustomTheme` in your trac.ini -->
 </html>""")
             finally:
                 fileobj.close()
@@ -363,6 +370,7 @@
             add_link(fakereq, 'icon', src, mimetype=mimetype)
             add_link(fakereq, 'shortcut icon', src, mimetype=mimetype)
 
+
         # Logo image
         chrome['logo'] = self.get_logo_data(req.href)
 
@@ -460,6 +468,7 @@
             'version': VERSION,
             'homepage': 'http://trac.edgewall.org/', # FIXME: use setup data
             'systeminfo': self.env.systeminfo,
+            'theme': ThemeController(req, self.theme)
         }
         d['project'] = {
             'name': self.env.project_name,

