{{ define "head" }}
<style type="text/css">
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	font: inherit;
	vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
	display: block;
}
body {
	line-height: 1;
}
ol, ul {
	list-style: none;
}
blockquote, q {
	quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
	content: '';
	content: none;
}
table {
	border-collapse: collapse;
	border-spacing: 0;
}

body {
    font-size: 14px;
    line-height: 1.25em;
    background-color: #f0f0f0;
}

.wrapper {
    display: flex;
    flex-direction: row;
    justify-content: center;
    width: 100%;
}

.column {
    width: 80em;
    padding: 1rem 0 1rem 0;
}

.page {
    background-color: #fefefe;
    padding: 0.5rem 2rem 3rem 2rem;
}

.header {
    font-size: 1.2em;
    font-family: Consolas, monospace;
    margin-top: 1rem;
    padding: 0.5em 0 0.5em 0;
    display: inline-flex;
}

.header a {
    text-decoration: none;
}
.header a:hover {
    text-decoration: underline;
}

.header span.red {
    color: #b30014;
}

.header span.part {
    color: #666;
    padding-left: 0.2em;
}

.header span.part a {
    color: rgb(27, 106, 203);
}
.header span.part a:visited {
    color: rgb(27, 106, 203);
}

.footer {
    font-size: 0.8em;
    color: #ccc;
    font-weight: 800;
    font-family: helvetica, arial, sans-serif;
    padding: 0.5em 1em 1em;
    text-align: right;
}

.footer .left {
    float: left;
}

.footer .right {
    float: right;
}

.footer a {
    color: #bbb;
}

h1,h2,h3,h4 {
    font-family: helvetica, arial, sans-serif;
}

.content h1 {
    font-size: 1.6em;
    padding: 1em 0 0 0;
    font-weight: 800;
}

.content h2 {
    font-size: 1.3em;
    padding: 0.8em 0 0 0;
    color: #333;
    font-weight: 800;
}

.content h3 {
    font-size: 1.2em;
    padding: 0.4em 0 0 0;
    color: #444;
}

.content h4 {
    font-size: 1.0em;
    color: #555;
}

.content strong {
    font-weight: 600;
}

.content code {
    font-family: Consolas, monospace;
    background-color: #f8f8f8;
}

.content pre {
    background-color: #f8f8f8;
    border: 1px solid #d8d8d8;
    margin: 1em;
    padding: 0.5em;
    overflow: auto;
}

.content p {
    margin-top: 0.8em;
    line-height: 1.5em;
}

.content :not(li) > ul {
    padding-top: 0.5em;
    line-height: 1.5em;
}

.content ul li {
    padding-left: 1em;
}

.content :not(li) > ul > li::before {
    content: "•";
    color: #333;;
    display: inline-block;
    width: 1em;
    margin-left: -0.5em;
}

.content li > ul > li::before {
    content: "◦";
    color: #333;;
    display: inline-block;
    width: 1em;
    margin-left: -0.5em;
}

.content img {
    max-width: 90%;
    margin: 1em auto 1em auto;
    display: block;
}

.toc {
    padding: .5em;
    border: 1px solid #ddd;
    background-color: #f8f8f8;
    margin: 2em;
    max-width: 30%;
    font-size: 1em;
    font-family: sans-serif;
}

.toc a {
    text-decoration: none;
}

</style>
{{ end }}
{{ define "body" }}
<div class="wrapper">
    <div class="column">
        <div class="page">
            <div class="header">
                <span class="red">hackdoc:</span>
                {{ range .PathParts }}
                    {{ if ne .Path "" }}
                        <span class="part"><a href="{{ .Path }}">{{ .Label }}</a></span>
                    {{ else }}
                        <span class="part">{{ .Label }}</span>
                    {{ end }}
                {{ end }}
                <span class="red" style="margin-left: 1em;">shortcuts:</span> <a href="/">root</a>, <a href="/cluster/doc">cluster docs</a>, <a href="/doc/codelabs">codelabs</a>
            </div>
            {{ .Rendered }}
        </div>
        <div class="footer">
            <div class="left">
                View in:
                {{ range .WebLinks }}
                <span class="muted">[{{ .Kind }} <a href="{{ .LinkURL }}">{{ .LinkLabel }}</a>]</span>
                {{ end }}
            </div>
            <div class="right">Generated by <a href="{{ .HackdocURL }}/devtools/hackdoc">hackdoc</a>.</div>
        </div>
    </div>
</div>
{{ end }}
