@font-face { font-family: "Stratum"; src: url("/fonts/Stratum2-Black.otf") format("opentype"); font-weight: 900; } @font-face { font-family: "Stratum"; src: url("/fonts/Stratum2-Medium.otf") format("opentype"); font-weight: 500; } @font-face { font-family: "Kievit"; src: url("/fonts/KievitOffc.ttf") format("truetype"); font-weight: 400; } @font-face { font-family: "Kievit"; src: url("/fonts/KievitOffc-Bold.ttf") format("truetype"); font-weight: 700; } /* Colors */ :root { --primary: #d73f09; --primary-hover: #c83a08; --contrast: #373737; --contrast-hover: #202020; --on-contrast: #ffffff; --foreground: #000000; --background: #ffffff; --background-surface-high: #e5e2dd; --background-surface: #d2d2d2; --background-surface-low: #2a2a2a; --background-surface-lowest: #1c1c1c; } html { font-size: 112.5%; } body { font-family: "Kievit", sans-serif; margin: 0; } main { display: block flow-root; padding-left: 85px; padding-right: 85px; margin-top: 0.5rem; margin-bottom: 100px; } h1, h2, h3, h4, h5, h6 { color: var(--primary); font-family: "Stratum", sans-serif; margin-top: 1.25rem; margin-bottom: 1.25rem; } h1 { font-size: 2rem; } h2 { font-size: 1.5rem; } h3 { font-size: 1.25rem; } h4 { font-size: 1.125rem; } h5 { font-size: 1rem; } h6 { font-size: 1rem; } a { color: var(--primary); } hr { border: 0; border-top: 2px solid var(--background-surface); margin-top: 1rem; margin-bottom: 1rem; } ul { list-style-type: "\203A "; padding-inline-start: 1rem; } ul li { margin-bottom: 6px; } button { font-size: 100%; vertical-align: middle; cursor: pointer; } textarea { overflow: auto; vertical-align: top; height: auto; } pre { border-radius: 4px; padding: 0.5rem 0.75rem; white-space: pre-wrap; word-break: break-all; word-wrap: break-word; } .layout-container { min-height: 100vh; display: flex; flex-direction: column; } #content { flex: 1 1 auto; } .mobile-menu-container { display: none; } .header { display: block; } .header-container { display: flex; flex-direction: row; justify-content: space-between; background: var(--primary); } .logo-container { margin: 0.5rem; } .logo-container a, .logo-container img { display: block; width: 100%; } .logo { max-height: 100px; } .subheader-container { padding: 10px; } .subheader-container, .subheader-container a { background: black; color: white; text-decoration: none; font-size: 20px; } .logo-divider { font-size: 15px; } .osl-logo-link { font-weight: bold; } .search-modal { display: none; } .search-modal.show { display: flex; flex-direction: column; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); z-index: 1000; align-items: center; justify-content: center; } .search-modal.hide { display: none; } .search-headers { display: flex; justify-content: space-between; align-items: center; } .close-search { height: fit-content; border: none; background: var(--background); } .close-search i { font-size: x-large; } .search-modal-container { background: var(--background); width: 56rem; height: 90vh; overflow: scroll; margin: 50px; padding: 20px; } .open-search { border-style: none; padding: 0.75rem; margin: 5px; cursor: pointer; color: var(--on-contrast); background: none; } .open-search i { display: block; } .open-search:hover { background: var(--contrast); } /* Main menu source: Hugo mainroad theme */ .mobile-menu { display: none; } .menu__list { list-style: none; position: relative; margin-bottom: 10px; margin-top: 10px; display: flex; padding: 0; } .menu__item:hover { background-color: var(--background-surface-low); } .menu__item:first-child { border: 0; } .menu__link { display: flex; flex-direction: row; justify-content: space-between; padding: 5px 10px; padding: 0.4rem 0.9375rem; color: var(--foreground); text-transform: uppercase; text-decoration: none; } .dropdown__arrow { position: absolute; right: 0; margin-right: 15px; } .dropdown__content { display: none; position: absolute; background-color: var(--background-surface-low); color: var(--on-contrast); min-width: 250px; max-width: 160px; box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); z-index: 1; } .submenu__text { color: var(--on-contrast); text-transform: none; padding: 0; font-size: 14px; display: block; width: 100%; } .thirdmenu__text { color: var(--on-contrast); text-transform: none; padding: 0; font-size: 14px; } .submenu__link { margin: 1px; } .thirdmenu__link { margin: 0px; margin-left: 15px; } .submenu__list { list-style: none; padding: 0; } .thirdmenu__list { list-style: none; padding: 0; } .menu__item:hover .dropdown__content { display: flex; flex-direction: column; } .submenu__item:hover .third__dropdown { display: flex; flex-direction: column; } .menu__link:hover { background-color: var(--background-surface-lowest); color: var(--on-contrast); } .menu__item:hover .menu__link { color: var(--on-contrast); } .js .menu__list { position: absolute; z-index: 1; width: 100%; visibility: hidden; -webkit-transform: scaleY(0); transform: scaleY(0); -webkit-transform-origin: top left; transform-origin: top left; } .js .menu__list--active { visibility: visible; border-top: 1px solid rgba(255, 255, 255, 0.1); border-bottom: 1px solid rgba(255, 255, 255, 0.1); -webkit-transform: scaleY(1); transform: scaleY(1); } .menu__list--transition { transition: visibility 0.15s ease, transform 0.15s ease, -webkit-transform 0.15s ease; } .main-menu { display: block flow-root; padding-left: 85px; padding-right: 85px; box-shadow: 0 0 4px var(--background-surface); } .menu__item { margin: 0; } /* Images */ img[src$="#center"] { display: block; margin: auto; } img[src$="#center-white"] { display: block; margin: auto; background: grey; } img[src$="#right"] { float: right; } img[src$="#right-people"] { float: right; width: 110px; margin-left: 0.5rem; } img[src$="#right-barcamp"] { float: right; width: 200px; } img[src$="#right-bootcamp"] { float: right; height: 200px; margin-left: 10px; margin-right: 10px; } img[src$="#right-hosting"] { float: right; height: 221px; width: 358.5px; margin: 5px; } img[src$="#sponsors"] { width: 200px; } img[src$="#right-faq"] { float: right; height: 250px; } img[src$="#blog"] { width: 400px; } /* Blog image float classes: use #blog-right or #blog-left as a URL fragment on markdown images, or class="blog-right"/"blog-left" on Hugo figure shortcodes, to float images alongside text in blog posts at a fixed 400px width. */ /* Markdown image: fills its parent
container */ img[src$="#blog-right"] { width: 100%; height: auto; display: block; } /* Hugo wraps standalone markdown images in
tags, so we float the parent */ p:has(> img[src$="#blog-right"]) { float: right; width: 400px; margin: 0 0 1rem 1rem; } /* Hugo figure shortcode: float the figure element directly */ figure.blog-right { float: right; width: 400px; margin: 0 0 1rem 1rem; } figure.blog-right img { width: 100%; height: auto; display: block; } figure.blog-right figcaption { font-size: 0.85rem; color: #666; text-align: center; margin-top: 0.25rem; } /* Mirror of blog-right for left-floated images */ img[src$="#blog-left"] { width: 100%; height: auto; display: block; } p:has(> img[src$="#blog-left"]) { float: left; width: 400px; margin: 0 1rem 1rem 0; } figure.blog-left { float: left; width: 400px; margin: 0 1rem 1rem 0; } figure.blog-left img { width: 100%; height: auto; display: block; } figure.blog-left figcaption { font-size: 0.85rem; color: #666; text-align: center; margin-top: 0.25rem; } /* Prevent floated images from bleeding into the next section */ h2:has(~ p > img[src$="#blog-right"]), h2:has(~ p > img[src$="#blog-left"]), .main_content h2 { clear: both; } /* Multi-column project list for use with the raw shortcode */ .project-list { column-count: 3; column-gap: 2rem; margin-bottom: 1rem; } .project-list ul { margin: 0; padding-left: 1.2rem; } /* Mobile: disable floats and reduce project list columns */ @media (max-width: 767px) { p:has(> img[src$="#blog-right"]), p:has(> img[src$="#blog-left"]) { float: none; width: 100%; margin: 0 0 1rem 0; } figure.blog-right, figure.blog-left { float: none; width: 100%; margin: 0 0 1rem 0; } .project-list { column-count: 2; } } img[src$="#blog-center"] { width: 500px; display: block; margin-left: auto; margin-right: auto; } .clearfix::after { content: ""; clear: both; display: table; } .page-content { margin-bottom: 20px; } /* Table */ table { width: 100%; margin: 0; margin-bottom: 20px; margin-bottom: 1.25rem; border-spacing: 0; border-collapse: collapse; border: 2px solid #fff; } td, th { padding: 5px 10px; border-right: 2px solid #fff; border-bottom: 2px solid #fff; } th { background-color: #f5f2ed; font-weight: 400; padding: 5px; text-align: left; } tr:nth-child(odd) { background-color: #f5f2ed; } .hosted_projects_table_name { width: 300px; } /* Forms */ input { padding: 5px; font-size: 12px; border: 1px solid #d7d7d7; border-radius: 5px; margin-bottom: 20px; width: 20rem; height: 20px; } select { padding: 5px; font-size: 12px; border: 1px solid #d7d7d7; border-radius: 5px; margin-bottom: 20px; width: 20rem; } textarea { padding: 5px; font-size: 12px; border: 1px solid #d7d7d7; border-radius: 5px; margin-bottom: 20px; width: 20rem; height: 20px; } .form-item { display: flex; flex-direction: column; margin-bottom: 15px; } .form-required { color: var(--primary); } .form-item label { margin-bottom: 5px; } .form-submit { background-color: black; color: white; margin-top: 20px; margin-bottom: 20px; width: fit-content; height: auto; padding: 12px; font-size: 16px; line-height: 22px; cursor: pointer; box-shadow: none; border: medium none; border-radius: 4px; } .form-submit:hover { background-color: var(--primary); } /* Blog */ .post__title { margin-top: 0; margin-bottom: 0; } .hover-link { text-decoration: none; } .hover-link:hover { text-decoration: underline; } .post__content { margin-bottom: 20px; margin-top: 10px; } .pagination { display: flex; justify-content: center; padding-inline-start: 0; font-size: 1.25rem; list-style: none; } .page-item { margin: 0; } .page-item a:hover { background-color: var(--background-surface-high); text-decoration: underline; } .page-item.active { font-weight: bold; } /* Link boxes */ .page-item a { display: inline-block; border-top: 1px solid var(--background-surface); border-bottom: 1px solid var(--background-surface); padding: 0.5rem; line-height: 1; text-decoration: none; } .page-item + .page-item a { border-left: 1px solid var(--background-surface); } .page-item:first-child a { border-top-left-radius: 0.5rem; border-bottom-left-radius: 0.5rem; border-left: 1px solid var(--background-surface); } .page-item:last-child a { border-top-right-radius: 0.5rem; border-bottom-right-radius: 0.5rem; border-right: 1px solid var(--background-surface); } /* Make the page numbers not jump around in size */ .page-number a { text-align: center; min-width: 2ch; } .metadata { display: flex; align-items: center; flex-wrap: wrap; gap: 1.5ch; margin-top: 0.25rem; margin-bottom: 0.5rem; font-size: 0.85em; } .metadata p { margin-top: 0; margin-bottom: 0; } .metadata .tag-list { padding-inline-start: 0; margin-top: 0; margin-bottom: 0; list-style: none; } .metadata li { margin: 0; } .tag { font-weight: bold; } /* Footer */ .footer { padding: 1rem 0 2rem; font-size: 0.85rem; color: var(--on-contrast); background: var(--background-surface-low); border-top: 5px solid var(--primary); } .footer__container { -webkit-flex-flow: row wrap; flex-flow: row wrap; -webkit-justify-content: space-between; justify-content: space-between; padding-left: 85px; padding-right: 85px; } .footer__links { -webkit-order: 1; order: 1; } .footer a { color: var(--on-contrast); } .footer a:hover { text-decoration: underline; } .footer_headers { display: flex; flex-direction: row; margin: auto; margin-top: 20px; } .footer_links { margin-right: 20px; font-weight: bold; text-decoration: none; } .footer_contact_header { margin: 0px; font-size: 1rem; } .footer_link_container { display: flex; flex-direction: column; justify-content: center; max-width: 12em; margin-top: 1rem; } .footer_link_container a { text-decoration: none; margin-bottom: 5px; } .footer_map_container { margin-bottom: 10px; } .footer_menu_container { display: flex; flex-wrap: wrap; flex-direction: row; gap: 1rem; margin-left: 1rem; margin-right: 1rem; } /* Home Page */ .hero-container { display: flex; align-items: center; justify-content: center; background-image: url("/images/zachary_homepage.jpg"); background-repeat: no-repeat; background-position: 60% 50%; background-size: cover; height: 500px; } .hero-text { background-color: rgba(255, 255, 255, 0.85); display: flex; flex-direction: column; justify-content: center; padding: 1em; margin: 1em; } .hero-text h1 { padding: 0; margin: 0; margin-bottom: 10px; } .hero-text p { margin-top: 0; } .hero-links { display: flex; font-size: 1.25rem; gap: 1ch; margin: 0; } .hero-links i { font-size: 0.8em; margin-right: 0.25ch; } .card { padding: 1rem; box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.09), 0 2px 3px 0 rgba(0, 0, 0, 0.14); border-radius: 0.5rem; } .hosting-container { margin-top: 50px; } .hosting-card-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(300px, 90vw), 1fr)); gap: 2rem; } .hosting { display: flex; flex-direction: column; justify-content: space-between; } .hosting h2 { font-size: 1.5rem; margin-top: 0; margin-bottom: 0; text-wrap: balance; } .hosting p { margin-top: 0.5rem; } .hosting-links { display: flex; flex-wrap: wrap; gap: 1ch; } .link-button { display: inline-block; padding: 0.375rem 0.5rem 0.25rem; background-color: var(--primary); color: var(--on-contrast); border-radius: 0.25rem; text-decoration: none; } .link-button:hover { background-color: var(--primary-hover); } .link-button.secondary { border: 1px solid; background: transparent; color: var(--contrast); } .link-button.secondary:hover { color: var(--contrast-hover); } .blog-container { margin-top: 50px; } .blog-split { display: grid; grid-template-columns: 1fr min(30%, 350px); gap: 1rem 2rem; } .tag-cloud { position: sticky; top: 2rem; } .tag-cloud h2 { margin-bottom: 0; } .tag-cloud :first-child { margin-top: 0; } .tag-cloud :last-child { margin-bottom: 0; } .blog-summaries { display: flex; flex-direction: column; gap: 1rem; } .blog-container .read-more { margin-top: 2.5rem; margin-bottom: 0; font-weight: bold; font-size: 1.25rem; } @media (max-width: 979px) { main { padding-left: 15px; padding-right: 15px; } .footer_headers { flex-direction: column; } .footer_menu_container { display: flex; flex-direction: row; } .blog-split { grid-template-columns: 1fr; } .blog-split aside { order: -1; } } @media (max-width: 767px) { body { width: 100%; } main { padding-left: 15px; padding-right: 15px; } .main-menu { display: none; } .mobile-menu.show { display: block; } .logo-container img { max-height: 3rem; } .logo-container { margin: 10px; } .search-container { display: none; } .mobile-menu-container { display: block; } .toggle-mobile-menu { padding: 11px 13px 9px; position: absolute; right: 5px; top: 5px; } a.toggle-mobile-menu { color: white; } .toggle-mobile-menu:hover { background-color: var(--contrast); cursor: pointer; } .menu__list { flex-direction: column; margin: 0; } .menu__text { text-transform: capitalize; color: white; } .menu__item { margin: 0; padding-top: 5px; padding-bottom: 5px; } .footer_menu_container { flex-direction: column; border-radius: 5px; padding-bottom: 15px; } .footer_menu_container a { color: #fff; } .footer_menu_link_container { padding: 0; margin: 0; margin-top: 10px; } .footer_menu_link_container:last-child { padding-bottom: 5px; } .dropdown__content { all: unset; display: block; margin-left: 15px; } .thirdmenu__item { margin-left: 10px; } .submenu_footer_link_container { padding-left: 10px; padding-right: 10px; padding-bottom: 10px; max-width: 100%; } .submenu_footer_link_container a { margin: 0; padding-top: 5px; padding-bottom: 5px; padding-left: 10px; } .footer_links { margin-left: 10px; } .footer__container { margin-bottom: 20px; padding-left: 10px; padding-right: 10px; } .footer_contact_container { margin: 0 auto; } .hosting { max-width: unset; } .blog-container { padding: 10px; } .post__content ul { all: unset; } img[src$="#right-people"] { margin-left: 10px; } }