body { margin-left: 0; margin-right: 0; margin-top: 0; margin-bottom: 0; font-family: sans-serif; background-color: black; color: white; } a { color: white; text-decoration-color: white; } #header-bg1 { animation: color-change-1 30s linear .5s infinite normal none; } #header-bg2 { background-color: #29BDBD; /* fall-back */ animation: color-change-2 30s linear .5s infinite normal none; } .header-bg { position: fixed; width: 100%; height: 100%; top:0; left:0; z-index: -1; } .header-section { animation: fly-down .5s ease-out 0s 1 normal none; display: flex; flex-direction: row; align-items: center; /* align-content: center; */ justify-content: center; flex-wrap: wrap-reverse; min-height: 25vh; width: 100%; } .header-picture { align-self: end; } .header-picture img { width: calc(165200px/596); min-width: 277px; height: 200px; margin-top: 30px; vertical-align: middle; } .blank-item { width: calc(165200px/596); min-width: 277px; } .title-thingy { flex-basis: content; text-align: center; margin: 30px; } .title-thingy h2 { font-family: monospace; } .general-content { background-color: #171717; overflow: auto; padding-left: 50px; padding-right: 50px; padding-bottom: 60px; padding-top: 20px; } .general-content h2 { margin-top: 50px; } .general-content h3 { margin-top: 25px; margin-bottom: 20px; } .projects-section { /* empty for now */ } .project details { margin-top: 16px; margin-bottom: 16px; } .project details summary { cursor: pointer; } .spam-manifesto { text-align: center; border-style: groove; padding-left: 5%; padding-right: 5%; padding-top: 2%; padding-bottom: 2%; border-color: red; } .spam-manifesto a { color: red; text-decoration: none; } .poem { text-align: start; } .poem p { width:fit-content; margin-left: auto; margin-right: auto; } .spam-sandwich { display: none; } .text-section { margin-left: auto; margin-right: auto; max-width: 900px; } .sub-section details p { animation: fly-down .5s ease-out 0s 1 normal none; } footer { background-color: black; display: flex; flex-direction: column; align-items: center; align-content: center; justify-content: center; min-height: 20vh; width: 100%; } h1 { font-size: xx-large; } h2 { font-size: xx-large; } h3 { font-size: x-large; } .filler-div { min-height: 90vh; } .screenshot-collection { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; } .screenshot-collection input { display: none; } .project-image .thumbnail { display: flex; align-items: center; justify-content: center; width: 444px; max-width: calc(min(450px,calc(100vw - 100px))); max-height: 253.125px; overflow: hidden; margin: 3px; cursor: pointer; } .screenshot-collection .thumbnail img { min-width: calc(min(450px,calc(100vw - 100px))); } .screenshot-collection .no-crop img { min-width: auto; max-width: calc(min(450px,calc(100vw - 100px))); min-height: auto; max-height: 253.125px; } .project-image { max-width: 100%; } .project-image input { display: none; } .modal { display: none; } input:checked + .modal { animation: fly-forward .5s ease-out 0s 1 normal none; display: flex; justify-content: safe center; align-items: safe center; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: #000000CC; overflow: auto; } .lazy-image { display: block; --ratioH: calc(var(--height) / var(--width)); --ratioW: calc(var(--width) / var(--height)); width: calc(min(90vw, 90vh * var(--ratioW))); height: calc(min(90vh, 90vw * var(--ratioH))); background-size: contain; background-repeat: no-repeat; background-position: center; cursor: zoom-in; } input:checked + .lazy-image { cursor: zoom-out; --zwidth: calc(min(200vw, 200vh * var(--ratioW))*2); --zheight: calc(min(200vh, 200vw * var(--ratioH))*2); width: var(--zwidth); height: var(--zheight); scroll-snap-align: center; } input:checked + .lazy-image:active { cursor: grabbing; } body:has(.project-image > input:checked) { overflow: hidden; } .modal .close { cursor: pointer; position: fixed; top: 0; right: 0; margin: 20px; width: 60px; height: 60px; background-image: url('/img/modal-close.svg'); background-size: 30px 30px; background-position: center; background-repeat: no-repeat; } .modal-bg { position: fixed; z-index: -1; top: 0; left: 0; width: 100%; height: 100%; } .text-section > * { animation: fly-up .5s ease-out 0s 1 normal none; } .footer-logo { width: 50px; height: 50px; } #cursor-thing { position: static; cursor: pointer; width: 50px; height: 50px; background-image: url('/img/duck-sprite.webp'); z-index: 1; } @keyframes fly-up { 0% { transform: translateY(70%); opacity: 0%; } 40% { transform: translateY(0%); opacity: 70%; } 100% { opacity: 100%; } } @keyframes fly-down { 0% { transform: translateY(-70%); opacity: 0%; } 20% { transform: translateY(0%); opacity: 70%; } 100% { opacity: 100%; } } @keyframes fly-forward { 0% { transform: scale(0); opacity: 0%; } 20% { transform: scale(1); opacity: 70%; } 100% { opacity: 100%; } } @keyframes color-change-1 { 0% { background-color: #29BDBD; } 25% { background-color: #197293; } 75% { background-color: #197293; } 100% { background-color: #29BDBD; } } @keyframes color-change-2 { 0% { background: linear-gradient(90deg, #00000000 0%, #29BDBD 100%); } 25% { opacity: 100%; } 49% { background: linear-gradient(90deg, #00000000 0%, #29BDBD 100%); opacity: 0%; } 50% { background: linear-gradient(90deg, #29BDBD 0%, #00000000 100%); opacity: 0%; } 75% { opacity: 100%; } 100% { background: linear-gradient(90deg, #29BDBD 0%, #00000000 100%); } } /* full-res images */ #oscp-fr { background-image: url(/img/osc-pairing.png); --width: 1260; --height: 798; } #oscc-fr { background-image: url(/img/osc-clicker.png); --width: 1551; --height: 3284; } #lpcl-fr { background-image: url(/img/peercord-login.png); --width: 2004; --height: 1262; } #lpcc-fr { background-image: url(/img/peercord-chat.png); --width: 2004; --height: 1262; } #lio-fr { background-image: url(/img/ilo-overview.jpg); --width: 1913; --height: 921; } #lit-fr { background-image: url(/img/ilo-temperatures.jpg); --width: 1907; --height: 923; } #lid-fr { background-image: url(/img/ilo-drives.jpg); --width: 1916; --height: 917; } #lifci-fr { background-image: url(/img/ilo-fan-and-cpu-info.jpg); --width: 1188; --height: 823; } #sma-fr { background-image: url(/img/smbus-mitm-arduino.jpg); --width: 1920; --height: 1440; } #smw-fr { background-image: url(/img/smbus-mitm-wiring.jpg); --width: 1920; --height: 1440; } #scst-fr { background-image: url(/img/security-camera-stream.jpg); --width: 1764; --height: 1004; } #scsc-fr { background-image: url(/img/security-camera-screenshot.png); --width: 1440; --height: 3120; } #r-fr { background-image: url(/img/roomba.jpg); --width: 1233; --height: 925; } #rc-fr { background-image: url(/img/roomba-control.jpg); --width: 1185; --height: 655; }