Hackage Haddock Restyler

Switches all Haddock docs on Hackage to an updated, Retina-friendly edition of the old ocean.css for superior information density.

// ==UserScript==
// @name Hackage Haddock Restyler
// @description Switches all Haddock docs on Hackage to an updated, Retina-friendly edition of the old ocean.css for superior information density.
// @version 1.4
// @license BSD2
// @grant none
// @include https://hackage.haskell.org/*
// @namespace https://greasyfork.org/users/833386
// ==/UserScript==

[...document.head.querySelectorAll('link[rel="stylesheet"][title]:not([title="QuickJump"])')].forEach(s => {
  const svguri = (t) => `data:image/svg+xml;base64,${btoa(t)}`;
	const svg = (a, t) => svguri(`<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" ${a}>
${t.split("\n").map(l => `	${l}`).join("\n")}
</svg>
`);
	const button = (extra) => svg('viewBox="0 0 9 9" width="9" height="9"',
`<rect x="0" y="0" width="9" height="9" fill="#828282"/>
<rect x="1" y="1" width="7" height="7" fill="#FFF"/>
<rect x="2" y="4" width="5" height="1" fille="#000"/>${extra}`);
	
	const minus = button('');
	const plus = button(`
<rect x="4" y="2" width="1" height="5" fille="#000"/>
`);
 	const hslogo = svg('width="22.65px" height="16px" viewBox="0 0 204 144"',
`<g fill="#FFF">
	<path d="M 0 144 L 48 72 L 0 0 L 36 0 L 84 72 L 36 144"/>
	<path d="M 164 102 L 148 78 L 204 78 L 204 102"/>
	<path d="M 140 66 L 124 42 L 204 42 L 204 66"/>
</g>
<g fill="#CCC">
	<path d="M 48 144 L 96 72 L 48 0 L 84 0 L 180 144 L 144 144 L 114 99 L 84 144"/>
</g>`);
	const synopsis = svg('xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="104" viewBox="0 0 128 104"',
`<defs>
	<filter id="drop">
		<feOffset result="off" in="SourceAlpha" dx="-1.5" dy="0" />
		<feGaussianBlur result="blur" in="off" stdDeviation="1.5" />
		<feFlood flood-color="#000" flood-opacity="0.7" result="scol" />
		<feComposite in="scol" in2="blur" operator="in" result="shadow" />
		<feBlend in="SourceGraphic" in2="shadow" mode="normal" />
	</filter>
</defs>
<g transform="rotate(-90) translate(-104)">
	<rect id="bg" x="15.5" y="8.5" width="80" height="40" rx="5" filter="url(#drop)" fill="#faf7de" />
	<use xlink:href="#bg" y="64" />
	<path id="Synopsis" transform="translate(18 12)" fill="#4e6272"
		d="M 2.17,6.96
		   C 2.17,6.96 0.03,6.96 0.03,6.96
		     0.02,7.59 0.13,8.13 0.37,8.59
		     0.60,9.05 0.92,9.43 1.31,9.73
		     1.71,10.03 2.17,10.25 2.69,10.40
		     3.21,10.54 3.75,10.61 4.30,10.61
		     4.98,10.61 5.59,10.53 6.11,10.37
		     6.63,10.21 7.06,9.98 7.41,9.70
		     7.76,9.41 8.03,9.07 8.21,8.67
		     8.39,8.27 8.47,7.85 8.47,7.38
		     8.47,6.82 8.35,6.35 8.12,5.99
		     7.88,5.63 7.59,5.34 7.27,5.12
		     6.94,4.90 6.61,4.75 6.28,4.65
		     5.94,4.55 5.68,4.48 5.50,4.44
		     4.87,4.28 4.36,4.15 3.97,4.05
		     3.58,3.94 3.28,3.84 3.06,3.73
		     2.84,3.63 2.69,3.52 2.62,3.39
		     2.54,3.27 2.50,3.11 2.50,2.91
		     2.50,2.70 2.55,2.52 2.64,2.38
		     2.74,2.24 2.86,2.12 3.00,2.02
		     3.15,1.93 3.31,1.86 3.49,1.82
		     3.66,1.79 3.84,1.77 4.02,1.77
		     4.29,1.77 4.54,1.79 4.77,1.84
		     5.00,1.89 5.21,1.97 5.38,2.08
		     5.56,2.20 5.70,2.35 5.81,2.55
		     5.92,2.75 5.98,3.00 6.00,3.31
		     6.00,3.31 8.14,3.31 8.14,3.31
		     8.14,2.72 8.03,2.22 7.81,1.80
		     7.59,1.38 7.29,1.04 6.92,0.77
		     6.54,0.50 6.11,0.30 5.63,0.18
		     5.15,0.06 4.64,0.00 4.12,0.00
		     3.67,0.00 3.22,0.06 2.77,0.18
		     2.32,0.31 1.92,0.49 1.56,0.75
		     1.21,1.00 0.92,1.32 0.70,1.70
		     0.48,2.08 0.37,2.53 0.37,3.05
		     0.37,3.51 0.45,3.90 0.63,4.23
		     0.80,4.55 1.03,4.82 1.31,5.04
		     1.59,5.26 1.91,5.43 2.26,5.57
		     2.62,5.71 2.98,5.82 3.36,5.92
		     3.72,6.02 4.08,6.11 4.44,6.20
		     4.80,6.28 5.12,6.38 5.40,6.50
		     5.68,6.61 5.91,6.75 6.08,6.92
		     6.25,7.09 6.34,7.31 6.34,7.58
		     6.34,7.84 6.27,8.05 6.14,8.21
		     6.01,8.38 5.85,8.51 5.65,8.60
		     5.45,8.69 5.24,8.76 5.02,8.79
		     4.79,8.82 4.58,8.84 4.38,8.84
		     4.09,8.84 3.81,8.81 3.54,8.73
		     3.27,8.66 3.03,8.55 2.83,8.41
		     2.63,8.26 2.47,8.07 2.35,7.83
		     2.23,7.59 2.17,7.30 2.17,6.96 Z
		   M 13.16,11.33
		   C 13.16,11.33 16.20,3.02 16.20,3.02
		     16.20,3.02 14.13,3.02 14.13,3.02
		     14.13,3.02 12.54,8.08 12.54,8.08
		     12.54,8.08 12.52,8.08 12.52,8.08
		     12.52,8.08 10.87,3.02 10.87,3.02
		     10.87,3.02 8.75,3.02 8.75,3.02
		     8.75,3.02 11.29,9.93 11.29,9.93
		     11.35,10.07 11.38,10.23 11.38,10.39
		     11.38,10.61 11.31,10.81 11.19,10.98
		     11.06,11.17 10.87,11.27 10.61,11.30
		     10.41,11.31 10.21,11.30 10.01,11.28
		     9.82,11.27 9.63,11.25 9.44,11.23
		     9.44,11.23 9.44,12.90 9.44,12.90
		     9.65,12.92 9.85,12.95 10.05,12.97
		     10.25,12.99 10.46,13.00 10.66,13.00
		     11.35,13.00 11.88,12.87 12.26,12.61
		     12.65,12.36 12.95,11.93 13.16,11.33 Z
		   M 16.86,2.98
		   C 16.86,2.98 16.86,10.40 16.86,10.40
		     16.86,10.40 18.86,10.40 18.86,10.40
		     18.86,10.40 18.86,6.50 18.86,6.50
		     18.86,5.74 18.98,5.20 19.22,4.87
		     19.47,4.53 19.86,4.37 20.40,4.37
		     20.88,4.37 21.21,4.52 21.40,4.82
		     21.59,5.12 21.68,5.58 21.68,6.20
		     21.68,6.20 21.68,10.40 21.68,10.40
		     21.68,10.40 23.68,10.40 23.68,10.40
		     23.68,10.40 23.68,5.85 23.68,5.85
		     23.68,5.40 23.64,4.98 23.56,4.60
		     23.48,4.23 23.34,3.91 23.14,3.64
		     22.95,3.38 22.68,3.18 22.33,3.03
		     21.99,2.88 21.55,2.81 21.02,2.81
		     20.60,2.81 20.19,2.90 19.78,3.09
		     19.38,3.28 19.05,3.59 18.80,4.01
		     18.80,4.01 18.76,4.01 18.76,4.01
		     18.76,4.01 18.76,2.98 18.76,2.98
		     18.76,2.98 16.86,2.98 16.86,2.98 Z
		   M 26.94,6.71
		   C 26.94,6.42 26.97,6.14 27.02,5.85
		     27.08,5.57 27.18,5.32 27.31,5.10
		     27.45,4.89 27.63,4.71 27.85,4.57
		     28.08,4.44 28.36,4.37 28.70,4.37
		     29.03,4.37 29.32,4.44 29.54,4.57
		     29.77,4.71 29.96,4.89 30.09,5.10
		     30.23,5.32 30.33,5.57 30.38,5.85
		     30.44,6.14 30.47,6.42 30.47,6.71
		     30.47,7.01 30.44,7.29 30.38,7.57
		     30.33,7.85 30.23,8.10 30.09,8.32
		     29.96,8.54 29.77,8.72 29.54,8.85
		     29.32,8.98 29.03,9.05 28.70,9.05
		     28.36,9.05 28.08,8.98 27.85,8.85
		     27.63,8.72 27.45,8.54 27.31,8.32
		     27.18,8.10 27.08,7.85 27.02,7.57
		     26.97,7.29 26.94,7.01 26.94,6.71 Z
		   M 24.94,6.72
		   C 24.94,7.32 25.03,7.85 25.21,8.33
		     25.39,8.81 25.64,9.21 25.97,9.55
		     26.30,9.89 26.69,10.15 27.15,10.34
		     27.61,10.52 28.12,10.61 28.70,10.61
		     29.27,10.61 29.78,10.52 30.25,10.34
		     30.71,10.15 31.11,9.89 31.44,9.55
		     31.76,9.21 32.02,8.81 32.19,8.33
		     32.37,7.85 32.46,7.32 32.46,6.72
		     32.46,6.13 32.37,5.59 32.19,5.11
		     32.02,4.63 31.76,4.22 31.44,3.88
		     31.11,3.54 30.71,3.27 30.25,3.09
		     29.78,2.90 29.27,2.81 28.70,2.81
		     28.12,2.81 27.61,2.90 27.15,3.09
		     26.69,3.27 26.30,3.54 25.97,3.88
		     25.64,4.22 25.39,4.63 25.21,5.11
		     25.03,5.59 24.94,6.13 24.94,6.72 Z
		   M 37.45,9.05
		   C 37.13,9.05 36.86,8.98 36.64,8.85
		     36.41,8.72 36.23,8.55 36.10,8.33
		     35.96,8.12 35.86,7.87 35.80,7.59
		     35.74,7.31 35.71,7.02 35.71,6.73
		     35.71,6.43 35.74,6.14 35.79,5.85
		     35.85,5.57 35.95,5.32 36.08,5.10
		     36.22,4.89 36.40,4.71 36.62,4.57
		     36.84,4.44 37.11,4.37 37.44,4.37
		     37.76,4.37 38.02,4.44 38.25,4.57
		     38.47,4.71 38.65,4.89 38.79,5.11
		     38.93,5.33 39.03,5.58 39.09,5.87
		     39.15,6.15 39.18,6.44 39.18,6.73
		     39.18,7.02 39.15,7.31 39.09,7.59
		     39.04,7.87 38.94,8.12 38.81,8.33
		     38.67,8.55 38.49,8.72 38.27,8.85
		     38.05,8.98 37.78,9.05 37.45,9.05 Z
		   M 33.78,3.03
		   C 33.78,3.03 33.78,13.00 33.78,13.00
		     33.78,13.00 35.78,13.00 35.78,13.00
		     35.78,13.00 35.78,9.48 35.78,9.48
		     35.78,9.48 35.81,9.48 35.81,9.48
		     36.05,9.85 36.36,10.13 36.74,10.32
		     37.12,10.51 37.54,10.61 37.99,10.61
		     38.52,10.61 38.99,10.50 39.38,10.29
		     39.78,10.08 40.11,9.80 40.38,9.45
		     40.65,9.09 40.85,8.69 40.98,8.23
		     41.11,7.77 41.17,7.29 41.17,6.79
		     41.17,6.27 41.11,5.76 40.98,5.28
		     40.85,4.80 40.65,4.38 40.37,4.01
		     40.10,3.65 39.76,3.36 39.35,3.14
		     38.94,2.92 38.44,2.81 37.87,2.81
		     37.42,2.81 37.01,2.90 36.64,3.09
		     36.26,3.27 35.95,3.57 35.71,3.97
		     35.71,3.97 35.68,3.97 35.68,3.97
		     35.68,3.97 35.68,3.03 35.68,3.03
		     35.68,3.03 33.78,3.03 33.78,3.03 Z
		   M 43.95,8.01
		   C 43.95,8.01 42.05,8.01 42.05,8.01
		     42.07,8.51 42.18,8.92 42.38,9.25
		     42.58,9.58 42.84,9.85 43.15,10.05
		     43.46,10.25 43.82,10.39 44.23,10.48
		     44.63,10.56 45.04,10.61 45.46,10.61
		     45.87,10.61 46.28,10.57 46.68,10.49
		     47.08,10.40 47.43,10.26 47.74,10.06
		     48.05,9.86 48.30,9.60 48.49,9.27
		     48.68,8.94 48.78,8.53 48.78,8.04
		     48.78,7.69 48.71,7.40 48.58,7.17
		     48.45,6.93 48.28,6.74 48.06,6.58
		     47.85,6.42 47.60,6.29 47.32,6.20
		     47.05,6.10 46.76,6.02 46.47,5.96
		     46.19,5.89 45.92,5.83 45.65,5.77
		     45.37,5.71 45.13,5.65 44.92,5.58
		     44.71,5.50 44.54,5.41 44.41,5.29
		     44.28,5.18 44.21,5.03 44.21,4.85
		     44.21,4.70 44.25,4.57 44.33,4.48
		     44.40,4.39 44.49,4.32 44.60,4.28
		     44.71,4.23 44.83,4.20 44.96,4.18
		     45.09,4.17 45.21,4.16 45.32,4.16
		     45.68,4.16 45.99,4.23 46.25,4.38
		     46.51,4.52 46.66,4.79 46.69,5.20
		     46.69,5.20 48.58,5.20 48.58,5.20
		     48.54,4.74 48.43,4.35 48.24,4.05
		     48.04,3.74 47.80,3.50 47.51,3.32
		     47.22,3.13 46.89,3.00 46.52,2.93
		     46.15,2.85 45.77,2.81 45.38,2.81
		     44.98,2.81 44.60,2.84 44.23,2.92
		     43.85,2.99 43.51,3.11 43.21,3.29
		     42.91,3.47 42.67,3.71 42.49,4.01
		     42.31,4.32 42.22,4.71 42.22,5.19
		     42.22,5.51 42.28,5.79 42.41,6.01
		     42.54,6.24 42.72,6.42 42.93,6.57
		     43.15,6.72 43.39,6.84 43.67,6.93
		     43.95,7.02 44.23,7.10 44.52,7.16
		     45.23,7.32 45.79,7.47 46.19,7.62
		     46.58,7.78 46.78,8.00 46.78,8.31
		     46.78,8.49 46.74,8.64 46.66,8.76
		     46.57,8.88 46.47,8.98 46.34,9.05
		     46.21,9.12 46.07,9.17 45.92,9.21
		     45.76,9.24 45.62,9.26 45.48,9.26
		     45.28,9.26 45.09,9.23 44.91,9.18
		     44.73,9.14 44.56,9.06 44.42,8.96
		     44.28,8.86 44.17,8.73 44.08,8.58
		     43.99,8.42 43.95,8.23 43.95,8.01 Z
		   M 52.04,1.87
		   C 52.04,1.87 52.04,0.21 52.04,0.21
		     52.04,0.21 50.05,0.21 50.05,0.21
		     50.05,0.21 50.05,1.87 50.05,1.87
		     50.05,1.87 52.04,1.87 52.04,1.87 Z
		   M 50.05,3.03
		   C 50.05,3.03 50.05,10.40 50.05,10.40
		     50.05,10.40 52.04,10.40 52.04,10.40
		     52.04,10.40 52.04,3.03 52.04,3.03
		     52.04,3.03 50.05,3.03 50.05,3.03 Z
		   M 55.12,8.01
		   C 55.12,8.01 53.23,8.01 53.23,8.01
		     53.25,8.51 53.36,8.92 53.56,9.25
		     53.76,9.58 54.02,9.85 54.33,10.05
		     54.64,10.25 55.00,10.39 55.41,10.48
		     55.81,10.56 56.22,10.61 56.64,10.61
		     57.05,10.61 57.46,10.57 57.86,10.49
		     58.26,10.40 58.61,10.26 58.92,10.06
		     59.23,9.86 59.48,9.60 59.67,9.27
		     59.86,8.94 59.96,8.53 59.96,8.04
		     59.96,7.69 59.89,7.40 59.76,7.17
		     59.63,6.93 59.46,6.74 59.24,6.58
		     59.03,6.42 58.78,6.29 58.50,6.20
		     58.23,6.10 57.94,6.02 57.65,5.96
		     57.37,5.89 57.10,5.83 56.83,5.77
		     56.55,5.71 56.31,5.65 56.10,5.58
		     55.89,5.50 55.72,5.41 55.59,5.29
		     55.46,5.18 55.39,5.03 55.39,4.85
		     55.39,4.70 55.43,4.57 55.50,4.48
		     55.58,4.39 55.67,4.32 55.78,4.28
		     55.89,4.23 56.01,4.20 56.14,4.18
		     56.27,4.17 56.39,4.16 56.50,4.16
		     56.86,4.16 57.17,4.23 57.43,4.38
		     57.69,4.52 57.84,4.79 57.87,5.20
		     57.87,5.20 59.76,5.20 59.76,5.20
		     59.72,4.74 59.61,4.35 59.42,4.05
		     59.22,3.74 58.98,3.50 58.69,3.32
		     58.40,3.13 58.07,3.00 57.70,2.93
		     57.33,2.85 56.95,2.81 56.56,2.81
		     56.16,2.81 55.78,2.84 55.41,2.92
		     55.03,2.99 54.69,3.11 54.39,3.29
		     54.09,3.47 53.85,3.71 53.67,4.01
		     53.49,4.32 53.40,4.71 53.40,5.19
		     53.40,5.51 53.46,5.79 53.59,6.01
		     53.72,6.24 53.90,6.42 54.11,6.57
		     54.33,6.72 54.57,6.84 54.85,6.93
		     55.13,7.02 55.41,7.10 55.70,7.16
		     56.41,7.32 56.97,7.47 57.37,7.62
		     57.76,7.78 57.96,8.00 57.96,8.31
		     57.96,8.49 57.92,8.64 57.84,8.76
		     57.75,8.88 57.65,8.98 57.52,9.05
		     57.39,9.12 57.25,9.17 57.10,9.21
		     56.94,9.24 56.80,9.26 56.66,9.26
		     56.46,9.26 56.27,9.23 56.09,9.18
		     55.91,9.14 55.74,9.06 55.60,8.96
		     55.46,8.86 55.35,8.73 55.26,8.58
		     55.17,8.42 55.12,8.23 55.12,8.01 Z" />
	<path id="arrowout" fill="#b0b0b0" d="M 0 0 H 9 V 9 H 6 V 3 H 0 Z" transform="translate(81.5 16.5) rotate(-45) "/>
	<path id="arrowin" fill="#b0b0b0" d="M 9 9 H 0 V 0 H 3 V 6 H 9 Z" transform="translate(81.5 77.5) rotate(-45) "/>
	<use xlink:href="#Synopsis" y="64" />
	<use xlink:href="#arrowout" y="7" />
	<use xlink:href="#arrowin" y="7"/>
</g>`);
	// ocean.css comes from the Haddock package <https://github.com/haskell/haddock>, which is under a BSD 2-clause license and (c) Simon Marlow & contributors.
	s.href = 'data:text/css;charset=UTF-8,'
	       + encodeURIComponent(`:root {
	--img-plus: url('${plus}');
	--img-minus: url('${minus}');
	--img-hslogo: url('${hslogo}');
	--img-synopsis: url('${synopsis}');
}

/* @group Fundamentals */

* { margin: 0; padding: 0 }

/* Is this portable? */
html {
  background-color: white;
  width: 100%;
  height: 100%;
}

body {
  background: white;
  color: black;
  text-align: left;
  min-height: 100%;
  position: relative;
}

p {
  margin: 0.8em 0;
}

ul, ol {
  margin: 0.8em 0 0.8em 2em;
}

dl {
  margin: 0.8em 0;
}

dt {
  font-weight: bold;
}
dd {
  margin-left: 2em;
}

a { text-decoration: none; }
a[href]:link { color: rgb(196,69,29); }
a[href]:visited { color: rgb(171,105,84); }
a[href]:hover { text-decoration:underline; }

a[href].def:link, a[href].def:visited { color: black; }
a[href].def:hover { color: rgb(78, 98, 114); }

/* @end */

/* @group Show and hide with JS */

body.js-enabled .hide-when-js-enabled {
  display: none;
}

/* @end */

/* @group Fonts & Sizes */

/* Basic technique & IE workarounds from YUI 3
   For reasons, see:
      http://yui.yahooapis.com/3.1.1/build/cssfonts/fonts.css
 */

body {
	font:13px/1.4 sans-serif;
	*font-size:small; /* for IE */
	*font:x-small; /* for IE in quirks mode */
}

h1 { font-size: 146.5%; /* 19pt */ }
h2 { font-size: 131%;   /* 17pt */ }
h3 { font-size: 116%;   /* 15pt */ }
h4 { font-size: 100%;   /* 13pt */ }
h5 { font-size: 100%;   /* 13pt */ }

select, input, button, textarea {
	font:99% sans-serif;
}

table {
	font-size:inherit;
	font:100%;
}

pre, code, kbd, samp, tt, .src {
	font-family:monospace;
	*font-size:108%;
	line-height: 124%;
}

.links, .link {
  font-size: 85%; /* 11pt */
}

#module-header .caption {
  font-size: 182%; /* 24pt */
}

#module-header .caption sup {
  font-size: 70%;
  font-weight: normal;
}

.info  {
  font-size: 85%; /* 11pt */
}

#table-of-contents, #synopsis  {
  /* font-size: 85%; /* 11pt */
}


/* @end */

/* @group Common */

.caption, h1, h2, h3, h4, h5, h6, summary {
  font-weight: bold;
  color: rgb(78,98,114);
  margin: 0.8em 0 0.4em;
}

* + h1, * + h2, * + h3, * + h4, * + h5, * + h6 {
  margin-top: 2em;
}

h1 + h2, h2 + h3, h3 + h4, h4 + h5, h5 + h6 {
  margin-top: inherit;
}

ul.links {
  list-style: none;
  text-align: left;
  float: right;
  display: inline-table;
  margin: 0 0 0 1em;
}

ul.links li {
  display: inline;
  border-left: 1px solid #d5d5d5;
  white-space: nowrap;
  padding: 0;
}

ul.links li a {
  padding: 0.2em 0.5em;
}

.hide { display: none; }
.show { display: inherit; }
.clear { clear: both; }

.collapser {
  background-image: var(--img-minus);
  background-repeat: no-repeat;
}
.expander {
  background-image: var(--img-plus);
  background-repeat: no-repeat;
}
.collapser, .expander {
  padding-left: 14px;
  margin-left: -14px;
  cursor: pointer;
}
p.caption.collapser,
p.caption.expander {
  background-position: 0 0.4em;
}

.instance.collapser, .instance.expander {
  margin-left: 0px;
  background-position: left center;
  min-width: 9px;
  min-height: 9px;
}

summary {
  cursor: pointer;
  outline: none;
  list-style-image: var(--img-plus);
  list-style-position: outside;
}

details[open] > summary {
  list-style-image: var(--img-minus);
}

pre {
  padding: 0.25em;
  margin: 0.8em 0;
  background: rgb(229,237,244);
  overflow: auto;
  border-bottom: 0.25em solid white;
  /* white border adds some space below the box to compensate
     for visual extra space that paragraphs have between baseline
     and the bounding box */
}

.src {
  background: #f0f0f0;
  padding: 0.2em 0.5em;
}

.keyword { font-weight: normal; }
.def { font-weight: bold; }

@media print {
  #footer { display: none; }
}

/* @end */

/* @group Page Structure */

#content {
  margin: 0 auto;
  padding: 0 2em 6em;
}

#package-header {
  background: rgb(41,56,69);
  border-top: 5px solid rgb(78,98,114);
  color: #ddd;
  padding: 0.2em;
  position: relative;
  text-align: left;
}

#package-header .caption {
  background: var(--img-hslogo) no-repeat 0em;
  color: white;
  margin: 0 2em;
  font-weight: normal;
  font-style: normal;
  padding-left: 2em;
}

#package-header a:link, #package-header a:visited { color: white; }
#package-header a:hover { background: rgb(78,98,114); }

#module-header .caption {
  color: rgb(78,98,114);
  font-weight: bold;
  border-bottom: 1px solid #ddd;
}

table.info {
  float: right;
  padding: 0.5em 1em;
  border: 1px solid #ddd;
  color: rgb(78,98,114);
  background-color: #fff;
  max-width: 40%;
  border-spacing: 0;
  position: relative;
  top: -0.5em;
  margin: 0 0 0 2em;
}

.info th {
	padding: 0 1em 0 0;
}

div#style-menu-holder {
  position: relative;
  z-index: 2;
  display: inline;
}

#style-menu {
  position: absolute;
  z-index: 1;
  overflow: visible;
  background: #374c5e;
  margin: 0;
  text-align: center;
  right: 0;
  padding: 0;
  top: 1.25em;
}

#style-menu li {
	display: list-item;
	border-style: none;
	margin: 0;
	padding: 0;
	color: #000;
	list-style-type: none;
}

#style-menu li + li {
	border-top: 1px solid #919191;
}

#style-menu a {
  width: 6em;
  padding: 3px;
  display: block;
}

#footer {
  background: #ddd;
  border-top: 1px solid #aaa;
  padding: 0.5em 0;
  color: #666;
  text-align: center;
  position: absolute;
  bottom: 0;
  width: 100%;
  height: 3em;
}

/* @end */

/* @group Front Matter */

#table-of-contents {
  float: right;
  clear: right;
  background: #faf9dc;
  border: 1px solid #d8d7ad;
  padding: 0.5em 1em;
  max-width: 20em;
  margin: 0.5em 0 1em 1em;
}

#table-of-contents .caption {
  text-align: center;
  margin: 0;
}

#table-of-contents ul {
  list-style: none;
  margin: 0;
}

#table-of-contents ul ul {
  margin-left: 2em;
}

#description .caption {
  display: none;
}

#synopsis {
  display: block;
  position: fixed;
  right: 0;
  height: 80%;
  top: 10%;
  padding: 0;
  max-width: 75%;
  /* Ensure that synopsis covers everything (including MathJAX markup) */
  z-index: 1;
}

#synopsis summary {
  display: block;
  float: left;
  width: 29px;
  color: rgba(255,255,255,0);
  height: 110px;
  margin: 0;
  font-size: 1px;
  padding: 0;
  background: var(--img-synopsis) no-repeat 0px -8px;
}

#synopsis details[open] > summary {
  background: var(--img-synopsis) no-repeat -64px -8px;
}

#synopsis ul {
  height: 100%;
  overflow: auto;
  padding: 0.5em;
  margin: 0;
}

#synopsis ul ul {
  overflow: hidden;
}

#synopsis ul,
#synopsis ul li.src {
  background-color: #faf9dc;
  white-space: nowrap;
  list-style: none;
  margin-left: 0;
}

/* @end */

/* @group Main Content */

#interface div.top { margin: 2em 0; }
#interface h1 + div.top,
#interface h2 + div.top,
#interface h3 + div.top,
#interface h4 + div.top,
#interface h5 + div.top {
	margin-top: 1em;
}
#interface .src .selflink,
#interface .src .link {
  float: right;
  color: #919191;
  background: #f0f0f0;
  padding: 0 0.5em 0.2em;
  margin: 0 -0.5em 0 0;
  -moz-user-select: none;
}
#interface .src .selflink {
  border-left: 1px solid #919191;
  margin: 0 -0.5em 0 0.5em;
}

#interface span.fixity {
  color: #919191;
  border-left: 1px solid #919191;
  padding: 0.2em 0.5em 0.2em 0.5em;
  margin: 0 -1em 0 1em;
}

#interface span.rightedge {
  border-left: 1px solid #919191;
  padding: 0.2em 0 0.2em 0;
  margin: 0 0 0 1em;
}

#interface table { border-spacing: 2px; }
#interface td {
  vertical-align: top;
  padding-left: 0.5em;
}

#interface td.doc p {
  margin: 0;
}
#interface td.doc p + p {
  margin-top: 0.8em;
}

.doc table {
  border-collapse: collapse;
  border-spacing: 0px;
}

.doc th,
.doc td {
  padding: 5px;
  border: 1px solid #ddd;
}

.doc th {
  background-color: #f0f0f0;
}

.clearfix:after {
  clear: both;
  content: " ";
  display: block;
  height: 0;
  visibility: hidden;
}

.subs.fields ul {
  list-style: none;
  display: table;
  margin: 0;
}

.subs.fields ul li {
  display: table-row;
}

.subs ul li dfn {
  display: table-cell;
  font-style: normal;
  font-weight: bold;
  margin: 1px 0;
  white-space: nowrap;
}

.subs ul li > .doc {
  display: table-cell;
  padding-left: 0.5em;
  margin-bottom: 0.5em;
}

.subs ul li > .doc p {
  margin: 0;
}

/* Render short-style data instances */
.inst ul {
  height: 100%;
  padding: 0.5em;
  margin: 0;
}

.inst, .inst li {
  list-style: none;
  margin-left: 1em;
}

/* Workaround for bug in Firefox (issue #384) */
.inst-left {
  float: left;
}

.top p.src {
  border-top: 1px solid #ccc;
}

.subs, .doc {
  /* use this selector for one level of indent */
  padding-left: 2em;
}

.warning {
  color: red;
}

.arguments {
  margin-top: -0.4em;
}
.arguments .caption {
  display: none;
}

.fields { padding-left: 1em; }

.fields .caption { display: none; }

.fields p { margin: 0 0; }

/* this seems bulky to me
.methods, .constructors {
  background: #f8f8f8;
  border: 1px solid #eee;
}
*/

/* @end */

/* @group Auxillary Pages */


.extension-list {
    list-style-type: none;
    margin-left: 0;
}

#mini {
  margin: 0 auto;
  padding: 0 1em 1em;
}

#mini > * {
  font-size: 93%; /* 12pt */
}

#mini #module-list .caption,
#mini #module-header .caption {
  font-size: 125%; /* 15pt */
}

#mini #interface h1,
#mini #interface h2,
#mini #interface h3,
#mini #interface h4 {
  font-size: 109%; /* 13pt */
  margin: 1em 0 0;
}

#mini #interface .top,
#mini #interface .src {
  margin: 0;
}

#mini #module-list ul {
  list-style: none;
  margin: 0;
}

#alphabet ul {
	list-style: none;
	padding: 0;
	margin: 0.5em 0 0;
	text-align: center;
}

#alphabet li {
	display: inline;
	margin: 0 0.25em;
}

#alphabet a {
	font-weight: bold;
}

#index .caption,
#module-list .caption { font-size: 131%; /* 17pt */ }

#index table {
  margin-left: 2em;
}

#index .src {
  font-weight: bold;
}
#index .alt {
  font-size: 77%; /* 10pt */
  font-style: italic;
  padding-left: 2em;
}

#index td + td {
  padding-left: 1em;
}

#module-list ul {
  list-style: none;
  margin: 0 0 0 2em;
}

#module-list li {
  clear: right;
}

#module-list span.collapser,
#module-list span.expander {
  background-position: 0 0.3em;
}

#module-list .package {
  float: right;
}

:target {
  background-color: #ffff00;
}

/* @end */
`);
});