145 lines
6.9 KiB
CSS
145 lines
6.9 KiB
CSS
/* werc layout. Palette, type and components: tc.css */
|
|
|
|
html { min-height: 100%; }
|
|
body {
|
|
display: grid;
|
|
grid-template-columns: minmax(16em, max-content) minmax(0, 1200px) minmax(0, 1fr);
|
|
grid-template-rows: auto 1fr auto;
|
|
min-height: 100vh;
|
|
min-height: 100dvh;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
header, footer { grid-column: 1 / -1; }
|
|
body > nav { grid-column: 1; padding: 0; font-family: var(--font-ui); border-right: 3px solid var(--border-primary); }
|
|
article {
|
|
grid-column: 2;
|
|
min-width: 0;
|
|
padding: .5ex 1vw 5vh 1vw;
|
|
backdrop-filter: blur(3px);
|
|
background-color: rgba(0, 0, 0, .6);
|
|
}
|
|
|
|
/* header and top bar */
|
|
nav a, header a { text-decoration: none; color: inherit; }
|
|
header a:hover, nav a:hover { color: inherit; text-shadow: none; }
|
|
header h1 {
|
|
display: flex;
|
|
margin: 0;
|
|
padding: .5ex 0 .5ex .6ex;
|
|
color: var(--text-primary);
|
|
border-bottom: 3px solid var(--border-secondary);
|
|
font-size: 200%;
|
|
font-weight: bold;
|
|
line-height: 1.2;
|
|
}
|
|
header h1 a img { width: 50px; }
|
|
header h1 .headerLink { display: inline-block; margin: .2ex 0 0 .6ex; font-family: var(--font-headers); font-size: xx-large; }
|
|
header h1 #headerSubTitle { display: block; margin-left: 2em; font-size: 40%; color: var(--color-accent); }
|
|
header h1 span:not(.siteTitle) { margin-left: 1em; font-size: 50%; font-style: italic; }
|
|
header nav {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
padding: .3em;
|
|
background-color: var(--header-bg);
|
|
color: var(--header-text);
|
|
border-bottom: 3px solid var(--border-secondary);
|
|
font-family: var(--font-ui);
|
|
font-size: 110%;
|
|
}
|
|
header nav a { padding: .2ex .5ex; }
|
|
header nav a:hover { text-decoration: underline; background-color: rgba(255, 255, 255, .2); }
|
|
header nav .right { font-weight: bold; }
|
|
|
|
/* sidebar */
|
|
nav ul { display: flex; flex-direction: column; list-style: none; padding-left: 0; }
|
|
nav li ul { padding-left: .6em; }
|
|
body > nav > div p { margin: 0 0 .5em 2mm; padding: 1em 0 0; font-weight: bold; }
|
|
body > nav > div .dt { color: var(--text-primary); }
|
|
body > nav > div a:hover .dt { color: var(--text-accent); }
|
|
body > nav > div a, input[type="submit"], .bu {
|
|
display: block;
|
|
padding: .25em 1ex .25em 2mm;
|
|
color: var(--color-accent);
|
|
font-weight: bold;
|
|
font-size: 102%;
|
|
}
|
|
body > nav > div a:hover, input[type="submit"]:hover, .bu:hover {
|
|
color: var(--text-accent) !important;
|
|
background-color: var(--bg-primary);
|
|
border-left: .3em solid var(--color-accent);
|
|
text-decoration: none;
|
|
}
|
|
|
|
/* forms */
|
|
input[type="submit"], .bu { margin-top: 0; background-color: transparent; border: none; font-family: inherit; }
|
|
fieldset { max-width: 1000px; padding: 1em; }
|
|
fieldset input[type="submit"], .bu { margin-top: .6em; border: 2px solid var(--color-accent); }
|
|
fieldset input[type="submit"]:hover, .bu:hover { border: 2px ridge var(--color-accent); border-left: .3em solid var(--color-accent); }
|
|
.bu { width: fit-content; }
|
|
input[type="text"], textarea { width: 100%; padding: 10px; margin-bottom: 10px; box-sizing: border-box; font-size: 12px; font-family: monospace; }
|
|
.log input[type="text"] { width: unset; padding: 2px; }
|
|
textarea#comment_text { max-width: 50em; max-height: 5em; }
|
|
#test-search { padding: 5px; margin: 5px; }
|
|
|
|
/* footer */
|
|
footer { display: flex; flex-wrap: wrap; justify-content: space-between; color: var(--text-primary); background-color: color-mix(in srgb, var(--bg-primary), transparent 40%); border-top: 1px solid color-mix(in srgb, var(--border-primary), transparent 70%); }
|
|
footer div { padding: 1em; }
|
|
|
|
/* sidebar toggle: a shell prompt, only shown on mobile */
|
|
.menu-toggle { position: absolute; opacity: 0; pointer-events: none; }
|
|
.menu-toggle + label { display: none; }
|
|
|
|
@media (max-width: 700px) {
|
|
body { grid-template-columns: minmax(0, 1fr); padding-bottom: 4em; }
|
|
article { grid-column: 1; padding: .5em .8em 3em; }
|
|
|
|
header h1 { font-size: 150%; }
|
|
header h1 { align-items: center; }
|
|
header h1 .headerLink { flex: 1; margin: 0 .4em 0 0; text-align: center; font-size: clamp(1.4rem, 7vw, 2.1rem); line-height: 1.05; }
|
|
header h1 #headerSubTitle { margin: .2em 0 0; font-size: 40%; }
|
|
header nav { flex-direction: column; gap: .2em; padding: .3em 0; font-size: 100%; }
|
|
header nav > div { overflow-x: auto; white-space: nowrap; padding: .1em .5em; scrollbar-width: none; }
|
|
header nav > div::-webkit-scrollbar { display: none; }
|
|
header nav .right { border-top: 1px dashed color-mix(in srgb, var(--header-text), transparent 60%); padding-top: .25em; }
|
|
|
|
body > nav {
|
|
position: fixed; left: 0; right: 0; bottom: 0; z-index: 20;
|
|
display: flex; flex-direction: column-reverse;
|
|
border: 0; border-top: 2px solid var(--color-accent);
|
|
background: color-mix(in srgb, var(--bg-primary), transparent 4%);
|
|
backdrop-filter: blur(6px);
|
|
}
|
|
.menu-toggle + label {
|
|
display: flex; align-items: center; gap: .6em;
|
|
padding: .95em 1em;
|
|
cursor: pointer;
|
|
font-family: var(--font-body);
|
|
font-size: 108%;
|
|
color: var(--text-primary);
|
|
user-select: none;
|
|
}
|
|
.menu-toggle + label .here { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
.menu-toggle + label .here::before { content: 'tc:'; color: var(--color-accent); }
|
|
.menu-toggle + label .here::after { content: '_'; color: var(--color-accent); animation: caret 1.1s steps(1) infinite; }
|
|
.menu-toggle + label .cmd::before { content: '[ menu > ]'; margin-right: .6em; font-family: var(--font-ui); font-size: 90%; color: var(--text-secondary); opacity: .7; }
|
|
.menu-toggle + label .cmd::after {
|
|
content: 'ls ▴';
|
|
padding: .15em .6em;
|
|
border: 1px solid var(--color-accent);
|
|
font-family: var(--font-ui);
|
|
letter-spacing: .08em;
|
|
color: var(--color-accent);
|
|
}
|
|
.menu-toggle:checked + label .cmd::after { content: 'exit ▾'; color: var(--hot); border-color: var(--hot); }
|
|
.menu-toggle:focus-visible + label { outline: 2px solid var(--color-accent); outline-offset: -2px; }
|
|
|
|
.nav-content { display: none; max-height: 70vh; overflow-y: auto; overscroll-behavior: contain; padding: .4em .4em .8em; border-bottom: 1px dashed color-mix(in srgb, var(--color-accent), transparent 50%); }
|
|
.menu-toggle:checked ~ .nav-content { display: block; }
|
|
.nav-content::before { content: '$ ls -R ~ — ~/noumenon/cabin'; display: block; padding: .3em .5em .5em; font-family: var(--font-body); font-size: 85%; color: var(--text-secondary); }
|
|
.nav-content ul { margin: 0; }
|
|
.nav-content li ul { margin-left: 1.1em; padding-left: .5em; border-left: 1px dashed color-mix(in srgb, var(--color-accent), transparent 55%); }
|
|
body > nav > div a { padding: .55em .6em; font-size: 105%; }
|
|
body > nav > div a.thisPage { background: color-mix(in srgb, var(--color-secondary), transparent 82%); border-left: .3em solid var(--color-accent); }
|
|
}
|
|
@keyframes caret { 50% { opacity: 0; } }
|