// NOTE: Please use this file to perform modifications on default style sheets.
//
// You need to install a few Ruby gems to generate extra.css from this file:
// gem install less therubyracer
//
// Run this command to regenerate extra.css after you're finished with changes:
// lessc --compress extra.less > extra.css
//
// Alternatively you can use online services to regenerate extra.css.


// Default text color for page contents
@default-text-color: hsl(0,0%,30%);

// Page header, footer, table rows, inline codes and definition lists
@header-footer-background-color: hsl(0,0%,95%);

// Page header, footer links and navigation bar background
@header-footer-link-color: hsl(0,0%,40%);

// Doxygen navigation bar links
@navbar-link-color: @header-footer-background-color;

// Page content background color
@content-background-color: hsl(0,0%,100%);

// Bold, italic, h1, h2, ... and table of contents
@heading-color: hsl(0,0%,10%);

// Function, enum and macro definition separator
@def-separator-color: @header-footer-background-color;

// Base color hue
@base-hue: 24;

// Default color used for links
@default-link-color: hsl(@base-hue,100%,50%);

// Doxygen navigation bar active tab
@tab-text-color: hsl(0,0%,100%);
@tab-background-color1: @default-link-color;
@tab-background-color2: lighten(spin(@tab-background-color1, 10), 10%);

// Table borders
@default-border-color: @default-link-color;

// Table header
@table-text-color: @tab-text-color;
@table-background-color1: @tab-background-color1;
@table-background-color2: @tab-background-color2;

// Table of contents, data structure index and prototypes
@toc-background-color1: hsl(0,0%,90%);
@toc-background-color2: lighten(@toc-background-color1, 5%);

// Function prototype parameters color
@prototype-param-color: darken(@default-link-color, 25%);

// Message box color: note, pre, post and invariant
@box-note-color: hsl(103,80%,85%);

// Message box color: warning and attention
@box-warning-color: hsl(34,80%,85%);

// Message box color: deprecated and bug
@box-bug-color: hsl(333,80%,85%);

// Message box color: todo and test
@box-todo-color: hsl(200,80%,85%);

// Message box helper function
.message-box(@base-color) {
	background:linear-gradient(to bottom,lighten(@base-color, 5%) 0%,@base-color 100%);
	box-shadow:inset 0 0 32px darken(@base-color, 5%);
	color:darken(@base-color, 67%);
	border:2px solid desaturate(darken(@base-color, 10%), 20%);
}


#navrow1,#navrow2,#navrow3,#navrow4,.tablist a,.tablist a:visited,.tablist a:hover,.tablist li,.tablist li.current a,.memdoc,dl.reflist dd,div.toc li,.ah,span.lineno,span.lineno a,span.lineno a:hover,.note code,.pre code,.post code,.invariant code,.warning code,.attention code,.deprecated code,.bug code,.todo code,.test code,.doxtable code {
	background:none;
}

#titlearea,.footer,.contents,div.header,.memdoc,table.doxtable td,table.doxtable th,hr,.memSeparator {
	border:none;
}

.tablist a,.tablist a:visited,.tablist a:hover,.tablist li,.tablist li.current a,.reflist dt a.el,.levels span,.directory .levels span {
	text-shadow:none;
}

.memdoc,dl.reflist dd {
	box-shadow:none;
}

div.headertitle,.note code,.pre code,.post code,.invariant code,.warning code,.attention code,.deprecated code,.bug code,.todo code,.test code,table.doxtable code {
	padding:0;
}

#nav-path,.directory .levels,span.lineno {
	display:none;
}

html,#titlearea,.footer,tr.even,.directory tr.even,.doxtable tr:nth-child(even),.mdescLeft,.mdescRight,.memItemLeft,.memItemRight,code {
	background:@header-footer-background-color;
}

body {
	color:@default-text-color;
}

h1,h2,h2.groupheader,h3,div.toc h3,h4,h5,h6,strong,em {
	color:@heading-color;
	border-bottom:none;
}

h1 {
  padding-top:0.5em;
  font-size:180%;
}

h2 {
  padding-top:0.5em;
  margin-bottom:0;
  font-size:140%;
}

h3 {
  padding-top:0.5em;
  margin-bottom:0;
  font-size:110%;
}

.glfwheader {
	font-size:16px;
	height:64px;
	max-width:920px;
	min-width:800px;
	padding:0 32px;
	margin:0 auto;
}

#glfwhome {
	line-height:64px;
	padding-right:48px;
	color:@header-footer-link-color;
	font-size:2.5em;
	background:url("http://www.glfw.org/css/arrow.png") no-repeat right;
}

.glfwnavbar {
	list-style-type:none;
	margin:0 auto;
	float:right;
}

#glfwhome,.glfwnavbar li {
	float:left;
}

.glfwnavbar a,.glfwnavbar a:visited {
	line-height:64px;
	margin-left:2em;
	display:block;
	color:@header-footer-link-color;
}

#glfwhome,.glfwnavbar a,.glfwnavbar a:visited {
	transition:.35s ease;
}

#titlearea,.footer {
	color:@header-footer-link-color;
}

address.footer {
	text-align:center;
	padding:2em;
	margin-top:3em;
}

#top {
	background:@header-footer-link-color;
}

#navrow1,#navrow2,#navrow3,#navrow4 {
	max-width:920px;
	min-width:800px;
	margin:0 auto;
	font-size:13px;
}

.tablist {
	height:36px;
	display:block;
	position:relative;
}

.tablist a,.tablist a:visited,.tablist a:hover,.tablist li,.tablist li.current a {
	color:@navbar-link-color;
}

.tablist li.current a {
	background:linear-gradient(to bottom,@tab-background-color2 0%,@tab-background-color1 100%);
	box-shadow:inset 0 0 32px @tab-background-color1;
	text-shadow:0 -1px 1px darken(@tab-background-color1, 15%);
	color:@tab-text-color;
}

.contents {
	min-height:590px;
}

div.contents,div.header {
	max-width:920px;
	margin:0 auto;
	padding:0 32px;
	background:@content-background-color none;
}

table.doxtable th,dl.reflist dt {
	background:linear-gradient(to bottom,@table-background-color2 0%,@table-background-color1 100%);
	box-shadow:inset 0 0 32px @table-background-color1;
	text-shadow:0 -1px 1px darken(@table-background-color1, 15%);
	color:@table-text-color;
}

dl.reflist dt a.el {
	color:@default-link-color;
	padding:.2em;
	border-radius:4px;
	background-color:lighten(@default-link-color, 40%);
}

div.toc {
	float:none;
	width:auto;
}

div.toc h3 {
	font-size:1.17em;
}

div.toc ul {
	padding-left:1.5em;
}

div.toc li {
	font-size:1em;
	padding-left:0;
	list-style-type:disc;
}

div.toc,.memproto,div.qindex,div.ah {
	background:linear-gradient(to bottom,@toc-background-color2 0%,@toc-background-color1 100%);
	box-shadow:inset 0 0 32px @toc-background-color1;
	text-shadow:0 1px 1px lighten(@toc-background-color2, 10%);
	color:@heading-color;
	border:2px solid @toc-background-color1;
	border-radius:4px;
}

.paramname {
	color:@prototype-param-color;
}

dl.reflist dt {
	border:2px solid @default-border-color;
	border-top-left-radius:4px;
	border-top-right-radius:4px;
	border-bottom:none;
}

dl.reflist dd {
	border:2px solid @default-border-color;
	border-bottom-right-radius:4px;
	border-bottom-left-radius:4px;
	border-top:none;
}

table.doxtable {
	border-collapse:inherit;
	border-spacing:0;
	border:2px solid @default-border-color;
	border-radius:4px;
}

a,a:hover,a:visited,a:visited:hover,.contents a:visited,.el,a.el:visited,#glfwhome:hover,.tablist a:hover,span.lineno a:hover {
	color:@default-link-color;
	text-decoration:none;
}

div.directory {
	border-collapse:inherit;
	border-spacing:0;
	border:2px solid @default-border-color;
	border-radius:4px;
}

hr,.memSeparator {
	height:2px;
	background:linear-gradient(to right,@def-separator-color 0%,darken(@def-separator-color, 10%) 50%,@def-separator-color 100%);
}

dl.note,dl.pre,dl.post,dl.invariant {
	.message-box(@box-note-color);
}

dl.warning,dl.attention {
	.message-box(@box-warning-color);
}

dl.deprecated,dl.bug {
	.message-box(@box-bug-color);
}

dl.todo,dl.test {
	.message-box(@box-todo-color);
}

dl.note,dl.pre,dl.post,dl.invariant,dl.warning,dl.attention,dl.deprecated,dl.bug,dl.todo,dl.test {
	border-radius:4px;
	padding:1em;
	text-shadow:0 1px 1px hsl(0,0%,100%);
	margin:1em 0;
}

.note a,.pre a,.post a,.invariant a,.warning a,.attention a,.deprecated a,.bug a,.todo a,.test a,.note a:visited,.pre a:visited,.post a:visited,.invariant a:visited,.warning a:visited,.attention a:visited,.deprecated a:visited,.bug a:visited,.todo a:visited,.test a:visited {
	color:inherit;
}

div.line {
	line-height:inherit;
}

div.fragment,pre.fragment {
	background:hsl(0,0%,95%);
	border-radius:4px;
	border:none;
	padding:1em;
	overflow:auto;
	border-left:4px solid hsl(0,0%,80%);
	margin:1em 0;
}

.lineno a,.lineno a:visited,.line,pre.fragment {
	color:@default-text-color;
}

span.preprocessor,span.comment {
	color:hsl(193,100%,30%);
}

a.code,a.code:visited {
	color:hsl(18,100%,45%);
}

span.keyword,span.keywordtype,span.keywordflow {
	color:darken(@default-text-color, 5%);
	font-weight:bold;
}

span.stringliteral {
	color:hsl(261,100%,30%);
}

code {
	padding:.1em;
	border-radius:4px;
}
