@font-face { font-family: b612; src: url(https://isopod.cool/stuff/fonts/B612/B612-Regular.ttf); } @font-face { font-family: b612; src: url(https://isopod.cool/stuff/fonts/B612/B612-Bold.ttf); font-weight: bold; } @font-face { font-family: b612; src: url(https://isopod.cool/stuff/fonts/B612/B612-Italic.ttf); font-style: italic; } @font-face { font-family: b612; src: url(https://isopod.cool/stuff/fonts/B612/B612-BoldItalic.ttf); font-weight: bold; font-style: italic; } @font-face { font-family: b612_mono; src: url(https://isopod.cool/stuff/fonts/B612_Mono/B612Mono-Regular.ttf); } @font-face { font-family: b612_mono; src: url(https://isopod.cool/stuff/fonts/B612_Mono/B612Mono-Bold.ttf); font-weight: bold; } @font-face { font-family: b612_mono; src: url(https://isopod.cool/stuff/fonts/B612_Mono/B612Mono-Italic.ttf); font-style: italic; } @font-face { font-family: b612_mono; src: url(https://isopod.cool/stuff/fonts/B612_Mono/B612Mono-BoldItalic.ttf); font-weight: bold; font-style: italic; } :root { color-scheme: dark light; /* Trying to define as few specific colours as possible as generically as possible */ --background: light-dark(#fff5eb, #1a1a1d); --foreground: light-dark(#222, #ddd); --accent1: light-dark(#64790a, #ff1159); --accent2: light-dark(#007a70, #00ffd5); --shadow: #000a; --message-red: light-dark(#c00, red); --message-green: light-dark(#007500, lime); --message-yellow: light-dark(#d3b200, yellow); --message-blue: light-dark(#005fbb, dodgerblue); --linkcolor: var(--accent1); --linkhover: var(--accent2); --fg0: var(--foreground); --fg1: color-mix(in srgb, var(--foreground) 85%, var(--background) 15%); --fg2: color-mix(in srgb, var(--foreground) 75%, var(--background) 25%); --fg3: color-mix(in srgb, var(--foreground) 65%, var(--background) 35%); --bg0: var(--background); --bg1: color-mix(in srgb, var(--background) 93%, var(--foreground) 7%); --bg2: color-mix(in srgb, var(--background) 87%, var(--foreground) 13%); --bg3: color-mix(in srgb, var(--background) 80%, var(--foreground) 20%); --bg00: light-dark(white, black); /* ALL colors should be defined here. If there's a color value somewhere else, move it here so it can be responsive */ --stdpadding: 1rem; --idealwidth: calc(80ch + (var(--stdpadding) * 10)); --bodywidth: min(calc(90vw - (4 * var(--stdpadding))), var(--idealwidth)); /*--mobileviewmaxwidth: calc(92ch + 24rem); root variables don't work in media queries, apparently. Keeping this here for reference */ --border-size-x: 1rem; --border-size-y: .33rem; --accentbordercolor: light-dark(var(--accent1), var(--fg0)); --stdaccentborder: .2rem solid var(--accentbordercolor); --stddropshadow: .25rem .25rem .5rem var(--shadow); --blockshadow: drop-shadow(0 0 1.5rem var(--shadow)); --bodyfont: b612_mono, monospace; } html, body { height: 100%; padding: 0; margin: 0; } body { color: var(--fg0); font-family: var(--bodyfont); background: url('https://isopod.cool/bg-dither.png') repeat center/cover fixed, var(--bg0); } body > p:last-child { padding-bottom: var(--stdpadding); } /* Links */ a { color: var(--accent1); } a:hover { color: var(--accent2); } .backlink { border-left: var(--stdpadding) solid var(--accent1); padding: calc(var(--stdpadding) * 0.7) var(--stdpadding); width: fit-content; margin-left: calc(-1 * var(--stdpadding)); } /* Header */ header { position: fixed; top: 0; left: 0; right: 0; filter: var(--blockshadow); pointer-events: none; z-index: 5; } header * { pointer-events: auto; } .headerbar { /* This div represents the top header bar */ display: flex; flex-direction: row; justify-content: space-between; align-items: center; padding: 0 var(--stdpadding); background: var(--bg0); filter: drop-shadow(0 var(--border-size-y) 0 var(--accent1)); } .headerbar > * { flex: 1 1 0; } .headerbar p { text-align: right; } .headerbar > div { /* Center image in the top bar */ display: flex; justify-content: center; align-items: center; height: 5rem; } .headerbar img { max-height: 100%; } .bubblecolumn { position: fixed; left: 4rem; top: 0; width: 29px; height: 100vh; background-image: url(/images/bubblecolumn1.gif); background-repeat: repeat-y; pointer-events: none; z-index: -1; } /* Header nav */ header nav { max-width: fit-content; filter: drop-shadow(var(--border-size-x) 0 0 var(--accent1)); background: var(--bg0); background: linear-gradient(315deg, transparent var(--stdpadding), var(--bg0) 0) bottom right; /* TODO: replace this nonsense once border-shape drops */ padding-bottom: var(--stdpadding); } #header-inside-corner-kludge { /* Janky solution to get an inside bevel where the top bar and nav sidebar meet. */ background: var(--bg0); background: linear-gradient(135deg, var(--bg0) var(--stdpadding), transparent 0) top left; width: calc(var(--stdpadding) * 2); height: calc(var(--stdpadding) * 2); top: 0; right: calc(0px - var(--stdpadding) * 2); position: absolute; } nav ul { list-style: none; padding: 0; margin: 0; } nav li { padding: calc(var(--stdpadding) / 2) calc(var(--stdpadding) * 2); margin-top: 0; margin-bottom: 0; } .burgermenu { display: none; } /* Main */ main { padding: calc(var(--stdpadding) * 5); padding-top: 6rem; padding-bottom: 4rem; margin: auto; max-width: var(--bodywidth); min-height: 100vh; box-sizing: border-box; background-color: var(--bg0); box-shadow: 0 0 2.5rem var(--shadow) inset; line-height: 1.4; } section { margin-bottom: calc(var(--stdpadding) * 3); } .pagenav ul { display: flex; flex-wrap: wrap; list-style: none; padding: 0; gap: var(--stdpadding); justify-content: center; align-items: center; } .pagenav li { padding: 0; } /* Footer */ footer { position: fixed; right: 0; bottom: 0; background: var(--bg0); background: linear-gradient(135deg, transparent var(--stdpadding), var(--bg0) 0) top left; padding: var(--stdpadding); filter: drop-shadow(calc(0px - var(--border-size-x)) 0 0 var(--accent2)) var(--blockshadow); max-width: 85vw; display: flex; gap: var(--stdpadding); align-items: center; flex-wrap: wrap; } footer p { margin: 0; } /* Headings */ h2, h3, h4, h5, h6 { margin-top: calc(var(--stdpadding) * 3); } h2, h3, h4 { border-bottom: .2rem solid; padding-bottom: .2em; width: fit-content; --hbcolor: var(--fg0); border-image: linear-gradient(to right, var(--hbcolor) 50%, transparent 50%) 100% 1; } h2 { font-size: 2.5rem; } h3 { font-size: 1.5rem; --hbcolor: var(--accent1); border-bottom-width: .1rem; } h4 { font-size: 1.25rem; --hbcolor: var(--accent2); border-bottom-width: .1rem; } h5 { font-size: 1rem; } h6 { font-size: .9rem; } .h2caption { margin-top: -2.9rem; margin-bottom: 1.6rem; margin-left: auto; width: 50%; text-align: right; font-style: italic; } h3 + .h2caption, h4 + .h2caption { margin-top: -2.4rem; margin-bottom: 1.1rem; } /* Details/summary */ details { border-left: var(--stdaccentborder); padding-left: var(--stdpadding); } details:open summary { margin-bottom: var(--stdpadding); } summary { padding: var(--stdpadding); margin-left: calc(var(--stdpadding) * -1); background-color: var(--bg1); background: linear-gradient(225deg, transparent var(--stdpadding), var(--bg1) 0) top right; } /* Universal for the next 4 things */ figure, section > blockquote, pre, .codetitle, .aside, .notice { margin: var(--stdpadding) calc(var(--stdpadding) * 3); border-left: var(--stdaccentborder); } /* Interjections */ .aside { background-color: var(--bg1); font-size: 0.9em; min-height: calc(7rem + (var(--stdpadding) * 2)); } .aside-image { height: 100%; max-height: 7rem; width: 7rem; float: left; padding: var(--stdpadding); margin: 0 var(--stdpadding) var(--stdpadding) 0; display: flex; justify-content: center; align-items: center; border-right: .1rem solid var(--accent1); } .aside-image img, .aside-image picture { max-height: 100%; } .aside-content { padding: var(--stdpadding); } .aside-content :first-child { margin-top: 0; } .aside-content :last-child { margin-bottom: 0; } .notice { border-left-color: var(--message-blue); background-color: color-mix(in srgb, var(--bg0) 90%, var(--message-blue) 10%); padding: var(--stdpadding); font-size: 0.9em; } .error { border-left-color: var(--message-red); background-color: color-mix(in srgb, var(--bg0) 90%, var(--message-red) 10%); } .success { border-left-color: var(--message-green); background-color: color-mix(in srgb, var(--bg0) 90%, var(--message-green) 10%); } .warning { border-left-color: var(--message-yellow); background-color: color-mix(in srgb, var(--bg0) 90%, var(--message-yellow) 10%); } /* Blockquotes */ figure.quote, section > blockquote { background-color: var(--bg1); padding: var(--stdpadding); background: linear-gradient(315deg, transparent var(--stdpadding), var(--bg1) 0) bottom right; } /* Code snippets */ pre { height: fit-content; } code { padding: 0.15em .5em; } pre > code { display: block; overflow-x: auto; border-top: .1rem solid var(--accent2); } code { background-color: var(--bg00); } :not(pre) > code { border: .1rem solid var(--fg3); } pre > code, .codetitle { padding: calc(0.7 * var(--stdpadding)); } .codetitle { margin-bottom: 0; border-bottom: none; font-size: .9em; display: block; background-color: var(--bg1); background: linear-gradient(225deg, transparent var(--stdpadding), var(--bg1) 0) top right; } .codetitle + pre { margin-top: 0; } /* Media */ img, picture, video { max-width: 100%; max-height: 50rem; min-width: 0; } :is(main, section, picture, .media) > img, picture, video { margin: auto; display: block; } figure.media { background-color: var(--bg1); background: linear-gradient(315deg, var(--bg1) var(--stdpadding), transparent var(--stdpadding), transparent calc(var(--stdpadding) * 1.3), var(--bg1) 0) bottom right; border-left: var(--stdaccentborder); } figure.media * { margin: 0 auto; } figure.media figcaption { padding: var(--stdpadding); font-size: .9em; } .gallery { display: flex; max-width: 100%; width: max-content; } .gallery > * { flex: 1 1 0; } p img { height: 2em; display: inline; margin: initial; vertical-align: middle; transition: .15s; } p img:hover { transform: scale(1.3); } /* Tables */ table { font-size: .9em; width: fit-content; border-collapse: collapse; border: .1rem solid var(--fg0); } .tablecontainer { overflow-x: scroll; } table, .tablecontainer { margin: var(--stdpadding) 0; } .tablecontainer table { margin: 0 auto; } .tablecontainer caption { text-align: left; } caption { background: var(--bg1); background: linear-gradient(135deg, transparent var(--stdpadding), var(--bg1) 0) top left, linear-gradient(225deg, transparent var(--stdpadding), var(--bg1) 0) top right; padding: var(--stdpadding); background-size: 50% 100%; background-repeat: no-repeat; } thead, tfoot { border-top: .1rem solid var(--accent1); border-collapse: separate; } tbody { border-top: .1rem solid var(--accent2); border-collapse: separate; } td { min-width: 10ch; border: .1rem solid var(--fg1); } td, th { padding: calc(var(--stdpadding) * .4); } thead th, thead td { padding: calc(var(--stdpadding) * .4) var(--stdpadding); } /* Lists */ dl { display: flex; flex-wrap: wrap; --ratio: .333; /* Ratio of dt's width to dd's width. Defaults to 1/3 here. */ } dt, dd { padding: calc(var(--stdpadding) * .5); box-sizing: border-box; } dt { width: calc(100% * var(--ratio)); padding-left: var(--stdpadding); } dd { width: calc(100% - (100% * var(--ratio))); margin-left: 0; padding-right: var(--stdpadding); } :is(dt, dd):nth-of-type(2n) { background-color: var(--bg1); } dt:empty{ width: 0; padding: 0; } dt:empty + dd { width: 100%; padding-left: var(--stdpadding); } /* Forms & Comments */ input, textarea { border: none; background-color: var(--bg00); font-family: var(--bodyfont); margin: 0; } input, textarea, .commentform .notice, .commentform-field label { padding: calc(var(--stdpadding) * 0.5) calc(var(--stdpadding) * 0.8); box-sizing: border-box; font-size: 0.85rem; } input[type="text"], textarea { width: 100%; min-width: 100%; max-width: 100%; border-left: var(--stdaccentborder); } input[type="text"] { border-top: .1rem solid var(--accent1); } textarea { border-bottom: .1rem solid var(--accent2); } input[type="submit"] { border: var(--stdaccentborder); height: min-content; background-color: var(--bg1); } input[type="submit"]:hover { border-color: var(--accent2); color: var(--accent2); background-color: var(--bg2); cursor: pointer; } .commentform-field { flex: 1 1 0; display: flex; flex-direction: column; justify-content: end; } .commentform-field label { background-color: var(--bg1); border-left: var(--stdaccentborder); } #commentform-top, .commentform-top { display: flex; gap: var(--stdpadding); } .commentform { display: flex; flex-direction: column; gap: var(--stdpadding); margin: var(--stdpadding) 0; } #commentform-bottom, .commentform-bottom { display: flex; justify-content: space-between; flex-direction: row-reverse; gap: var(--stdpadding); } .commentform .notice { display: flex; justify-content: center; align-items: center; margin: 0; } .comment { margin: 2rem auto; display: flex; flex-direction: column; } .comment > div { border-left: var(--stdaccentborder); border-left-color: var(--accent1); margin: 0; padding: 0 var(--stdpadding); background: var(--bg1); } .gb-cool/*, .gb-found*/ { word-break: break-all; } .comment > .gb-reply { border-left: none; border-right: var(--stdaccentborder); border-right-color: var(--accent2); border-top: var(--stdaccentborder); padding: 0; } .gb-reply > div { /* Reply contents */ margin: var(--stdpadding); text-align: right; } .gb-reply > p { /* "Reply:" label */ float: left; margin: 0; margin-right: var(--stdpadding); padding: var(--stdpadding); border-right: .1rem solid var(--accent2); } .gb-head { display: flex; justify-content: space-between; align-items: center; border-bottom: .1rem solid var(--fg1); } .gb-head p { flex: 1 1 0; text-align: center; } .gb-head p:first-of-type { text-align: left; } .gb-head p:last-of-type { text-align: right; } /* Misc */ hr { border-bottom: none; border-left: none; border-right: none; color: var(--stdaccentborder); border-top-color: var(--stdaccentborder); } .prefers-contrast-less-message { display: none; } summary:hover { cursor: pointer; } [title] { text-decoration: underline; } [title]:hover { cursor: help; } .webrings { display: flex; flex-wrap: wrap; gap: var(--stdpadding); width: 100%; justify-content: space-around; margin: calc(3 * var(--stdpadding)) 0; } .ring { display: flex; gap: 1ch; } .ring * { text-wrap: nowrap; } .buttons { display: flex; flex-wrap: wrap; justify-content: center; } .buttons > * { width: 88px; max-height: 31px; } /* Music page stuff */ .musicpage section { min-height: 23rem; } .cd { --cdsize: min(20rem, var(--bodywidth)); --clearplastic: color-mix(in srgb, var(--background) 90%, var(--foreground) 10%); width: var(--cdsize); aspect-ratio: 1; border-radius: 50%; border: calc(var(--cdsize) / 50) solid var(--clearplastic); overflow: hidden; line-height: 0; display: flex; justify-content: center; align-items: center; margin-bottom: var(--stdpadding); margin-top: 3rem; box-shadow: 0 0 3rem #0003; transform: scale(1); transition: .2s; box-sizing: border-box; } .cd:hover { transform: scale(1.1); box-shadow: 0 0 8rem #0007; } .cd + h3 { display: inline-block; } .cd img { animation-duration: 100000ms; animation-iteration-count: infinite; animation-timing-function: linear; width: 100%; } .cd:hover img { animation-duration: 300ms; } section:nth-child(2n+1) .cd { float: left; margin-right: 2rem; animation-name: spin; } section:nth-child(2n) .cd { float: right; margin-left: 2rem; animation-name: spin-reverse; } section:nth-child(2n+1) .cd img { animation-name: spin; } section:nth-child(2n) .cd img { animation-name: spin-reverse; } .cd::after { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: calc(var(--cdsize) / 8); height: calc(var(--cdsize) / 8); background-color: var(--bg0); border-radius: 50%; border: calc(var(--cdsize) / 12) solid var(--clearplastic); box-shadow: 0 0 calc(var(--cdsize) / 8) #0003 inset; } /* Blog stuff */ .prevnextnav { display: flex; gap: var(--stdpadding); } .prevlink, .nextlink { padding: var(--stdpadding); flex-grow: 1; } .prevlink { border-left: var(--stdpadding) solid var(--accent1); margin-left: calc(-1 * var(--stdpadding));; } .nextlink { border-right: var(--stdpadding) solid var(--accent1); margin-right: calc(-1 * var(--stdpadding));; text-align: right; } ul#articles { margin: 0; margin-top: 1rem; display: flex; flex-direction: column; padding-left: 0; list-style: none; } .blogentry { max-width: 100%; list-style: none; display: inline-block; margin: calc(var(--stdpadding)) 0; } ul#articles h3 { margin: calc(var(--stdpadding)) 0; } .blogentry > * { display: block; margin: 0.1rem 0; box-sizing: border-box; } .blogentry > div :first-child { margin-top: .1rem; } .blogentry > div :last-child { margin-bottom: .1rem; } .entrysummary { font-size: .9em; } .entrytag { font-size: .9em; color: var(--fg2); font-style: italic; display: inline-block; margin-right: 1ch; } time.entrydate, .entrydate time { font-weight: bold; } .entrytitle { padding-left: initial; border-left: initial; margin-bottom: .25rem; } /* Funsies */ .serif { font-family: serif; } .flipped { display: inline-block; transform: rotate(180deg); } .rainbowtext { animation-name: rainbow-text; animation-duration: 20s; animation-iteration-count: infinite; } .blinking { animation-name: opacityblink; animation-duration: 2s; animation-iteration-count: infinite; } .minecraftsplash { animation-name: growshrink; animation-duration: 1.5s; animation-iteration-count: infinite; color: yellow; float: right; text-shadow: 0 0 1em black, 0 0 2em black, 0 0 3em black, 0 0 4em black; } .house { color: cornflowerblue; } @keyframes growshrink { 0%, 100% { transform: scale(0.9) rotate(-10deg); } 50% { transform: scale(1.1) rotate(-10deg); } } @keyframes opacityblink { 0%, 50% {opacity: 0;} 50.001%, 100% {opacity: 1;} } @keyframes rainbow-text { 100%,0%{color: rgb(255,0,0); text-shadow: 0 0 .25rem rgb(216, 1, 1);} 8%{color: rgb(255,127,0); text-shadow: 0 0 .25rem rgb(211, 105, 0);} 16%{color: rgb(255,255,0); text-shadow: 0 0 .25rem rgb(214, 214, 0);} 25%{color: rgb(127,255,0); text-shadow: 0 0 .25rem rgb(105, 211, 0);} 33%{color: rgb(0,255,0); text-shadow: 0 0 .25rem rgb(0, 204, 0);} 41%{color: rgb(0,255,127); text-shadow: 0 0 .25rem rgb(0, 209, 105);} 50%{color: rgb(0,255,255); text-shadow: 0 0 .25rem rgb(0, 202, 202);} 58%{color: rgb(0,127,255); text-shadow: 0 0 .25rem rgb(0, 103, 206);} 66%{color: rgb(0,0,255); text-shadow: 0 0 .25rem rgb(0, 0, 206);} 75%{color: rgb(127,0,255); text-shadow: 0 0 .25rem rgb(103, 0, 206);} 83%{color: rgb(255,0,255); text-shadow: 0 0 .25rem rgb(211, 0, 211);} 91%{color: rgb(255,0,127); text-shadow: 0 0 .25rem rgb(211, 0, 105);} } @keyframes spin { from { transform:rotate(0deg); } to { transform:rotate(360deg); } } @keyframes spin-reverse { from { transform:rotate(360deg); } to { transform:rotate(0deg); } } /* ads */ #mothvertisement, #johnvertisement { margin-left: auto; display: block; margin-right: auto; width: 100%; max-width: 728px; height: 90px; } /*#johnvertisement { max-width: 732px; max-height: 94px; height: fit-content; } #mothvertisement { max-width: 728px; height: 90px; }*/ @media (max-width: 750px) { #mothvertisement { max-width: 300px; width: 100%; height: 250px; } } /* Responsive Layout */ @media screen and (max-width: calc(92ch + 24rem)) { /* Body stuff */ main { padding: calc((100vw - var(--bodywidth)) / 4); padding-top: calc(8.5rem + var(--stdpadding) + var(--border-size-y)); padding-bottom: calc(var(--stdpadding) * 2); box-sizing: content-box; overflow: hidden; } figure, blockquote, section > blockquote, pre, .codetitle, .aside, :not(.commentform-bottom) > .notice { margin: var(--stdpadding) calc(var(--stdpadding) * 2); } @media (max-width: 100vh) { figure, blockquote, section > blockquote, pre, .codetitle, .aside, :not(.commentform-bottom) > .notice { margin: var(--stdpadding) 0; } } .codetitle { margin-bottom: 0; } .gallery { flex-direction: column; } .aside-image { height: 7rem; } dl { flex-direction: column; } dt, dd { width: 100%; padding: calc(var(--stdpadding) * .5) var(--stdpadding); } dt { padding-top: var(--stdpadding); } dd { padding-bottom: var(--stdpadding); padding-left: calc(var(--stdpadding) * 2); } #commentform-top, .commentform-top { flex-direction: column; } .comment > .gb-head { gap: calc(var(--stdpadding) * 0.4); flex-wrap: wrap; padding: var(--stdpadding); } .gb-head p { flex: initial; margin: 0; text-align: left; } .gb-head .gb-name { width: 100%; } /* Footer stuff */ footer { position: initial; filter: drop-shadow(0 calc(0px - var(--border-size-y)) 0 var(--accent2)) var(--blockshadow); max-width: 100%; } } @media screen and ((max-width: calc(92ch + 24rem)) or (max-height: 38rem)) { /* Header stuff */ .headerbar { max-width: 100vw; box-sizing: border-box; } .headerbar > * { width: 100%; } header h1 { display: none; } .headerbar > div { margin-left: calc((var(--stdpadding) * 2) + 3rem); } .headerbar img { font-size: 2rem; font-weight: bold; max-height: 80%; margin-top: 0; } @media (max-width: 100vh) { .headerbar { flex-direction: column; } } @media (max-height: 100vw) { .headerbar > div { justify-content: initial; } } header nav { transition: .3s; transform: translateX(-100%); position: fixed; top: 0; padding-top: var(--stdpadding); max-height: 100vh; box-sizing: border-box; } #nav-checkbox-hack:checked ~ nav, nav:has(:focus) { transform: translateX(0); } #nav-darkened-background-kludge { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; transform: translateY(-100vh); transition: .3s; background-color: var(--shadow); filter: none; padding: 0; } :is(#nav-checkbox-hack:checked, nav:has(:focus)) ~ #nav-darkened-background-kludge { transform: translateY(0); } #header-inside-corner-kludge { display: none; } .burgermenu { display: flex; justify-content: center; align-items: center; width: 3rem; height: 3rem; } .bm-open { position: fixed; top: var(--stdpadding); left: calc(var(--stdpadding) * 2); } .bm-close { margin-left: calc(var(--stdpadding) * 2); } .bubblecolumn { display: none; } } @media screen and (max-height: 38rem) { /* If the viewport isn't tall enough for the nav */ header nav ul { display: flex; flex-wrap: wrap; } header nav { max-width: calc(100vw - var(--stdpadding)); overflow-y: scroll; } } /* Light theme stuff not covered by colours */ @media screen and (prefers-color-scheme: light) { body { background: url('https://isopod.cool/bg-light-dither.png') repeat center/cover fixed, var(--bg0); } .headerbar img { filter: invert(1); } } /* Accessibility Stuff */ /* https://developer.mozilla.org/en-US/docs/Web/CSS/system-color for colours to use */ @media screen and (prefers-contrast: more) { :root { --background: Canvas; --foreground: CanvasText; --accent1: ActiveText; /* I'm more or less just letting the OS/browser pick colours for me here */ --accent2: AccentColorText; --fg0: var(--foreground); --fg1: var(--foreground); --fg2: var(--foreground); --fg3: var(--foreground); --bg0: var(--background); --bg1: var(--background); --bg2: var(--background); --bg3: var(--background); } figure.quote, section > blockquote, figure.media, .aside { /* TODO: replace this nonsense once border-shape drops */ filter: drop-shadow(.1rem 0 0 var(--fg0)) drop-shadow(0 .1rem 0 var(--fg0)) drop-shadow(-.1rem 0 0 var(--fg0)) drop-shadow(0 -.1rem 0 var(--fg0)); border-left-width: .4rem; } details { border-top: .1rem solid var(--fg0); border-bottom: .1rem solid var(--fg0); border-right: .1rem solid var(--fg0); border-left-width: .4rem; } details:open summary { border-bottom: .1rem solid var(--fg0); margin-right: calc(var(--stdpadding) * -1); } details:open { padding-right: var(--stdpadding); } code { border: .1rem solid var(--fg0); } pre code { border: none; border-top: .1rem solid var(--accent1); } pre { filter: drop-shadow(.1rem 0 0 var(--fg0)) drop-shadow(0 .1rem 0 var(--fg0)); } .codetitle { filter: drop-shadow(.1rem 0 0 var(--fg0)) drop-shadow(0 -.1rem 0 var(--fg0)); } a:hover { background-color: AccentColor; } :is(dt, dd):nth-of-type(2n) { border: .1rem solid var(--fg0); } input[type="text"], textarea { border-left-width: .4rem; } input[type="text"] { border-bottom: .1rem solid var(--fg0); border-right: .1rem solid var(--fg0); } textarea { border-top: .1rem solid var(--fg0); border-right: .1rem solid var(--fg0); border-bottom-color: var(--fg0); } .notice { border: .1rem solid var(--message-blue); } .error { border: .1rem solid var(--message-red); } .success { border: .1rem solid var(--message-green); } .warning { border: .1rem solid var(--message-yellow); } .comment { border-bottom: .1rem solid var(--fg1); border-top: .1rem solid var(--fg1); } .comment > div { border-right: .1rem solid var(--fg1); border-left-width: .4rem; } .comment > .gb-reply { border-left: .1rem solid var(--fg1); border-right-width: .4rem; } .commentform-field label { border-left-width: .4rem; border-top: .1rem solid var(--fg0); border-right: .1rem solid var(--fg0); } .commentform-field textarea ~ label { border-top: none; border-bottom: .1rem solid var(--fg0); } .gb-reply > p { /* "Reply:" label */ border-right: .1rem solid var(--accent2); } pre, .codetitle, .notice { border-left-width: .4rem; } @media (max-width: calc(92ch + 24rem)) { dt:nth-of-type(2n) { border-bottom: none; } dd:nth-of-type(2n) { border-top: none; } } @media (min-width: calc(92ch + 24rem)) { dt:nth-of-type(2n) { border-right: none; } dd:nth-of-type(2n) { border-left: none; } } } @media screen and (prefers-contrast: less) { /* I don't know how to trigger this value in the OS nor do I know how I'm supposed to use it. Doing this until I find a better solution. */ :root { filter: contrast(.7); } .prefers-contrast-less-message { display: initial; } } @media screen and (forced-colors: active) { header nav, footer { background: var(--bg0) !important; /* Forced colors mode deletes backgrounds on anything with a background-image set, like my janky beveled corners solution. This is to restore them, and won't be necessary once border-shape drops */ } figure.quote, section > blockquote, figure.media, pre, .codetitle { /* TODO: once border-shape drops, this is about what the corresponding styling in HC mode should be */ border: .1rem solid var(--fg0); border-left: var(--stdaccentborder); border-left-width: .4em; filter: none; } } @media screen and (prefers-reduced-motion: reduce) { html:focus-within { scroll-behavior: auto; } *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; } .bubblecolumn { display: none; } }