Hackage Haddock Restyler

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

Versión del día 13/11/2021. Echa un vistazo a la versión más reciente.

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Necesitará instalar una extensión como Tampermonkey para instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==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.3
// @license BSD2
// @grant none
// @include https://hackage.haskell.org/*
// @namespace https://greatest.deepsurf.us/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 Hackage package <https://github.com/haskell/hackage>, 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 */
`);
});