{{ 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 ul {
    padding-top: 0.5em;
    line-height: 1.5em;
}

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

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

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

.toc {
    float: right;
    padding: 1em 1em 1em 1em;
    border: 1px solid #ddd;
    background-color: #f8f8f8;
    margin: 2em;
    max-width: 30%;
}

.toc h1 {
    font-size: 1.2em;
    padding-bottom: 0.5em;
}

.toc a {
    text-decoration: none;
}

.toc li {
    padding-left: 0.5em;
}

.toc ul {
    list-style-type: disc;
    padding-left: 1em;
}

.toc ul ul {
    list-style-type: circle;
}


</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 }}
