* { margin: 0; padding: 0; box-sizing: border-box; position: relative; outline-style: none; } html, body { width: 100%; height: 100%; } html { scrollbar-color: #4a3650 #111; } pre, code { font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; } .hidden { display: none !important; visibility: hidden !important; } .invisible { opacity: 0; } /* an attempt to replicate scrollbar-color for chromosome */ ::-webkit-scrollbar { width: 6px; background-color: #111; } ::-webkit-scrollbar-thumb { background-color: #4a3650; } ::-webkit-scrollbar-thumb:hover { background-color: #5b4761; } ::-webkit-scrollbar-thumb:active { background-color: #6c5872; } body { background-color: #111; color: #fff; font: 12px/20px Tahoma, Geneva, 'Dejavu Sans', Arial, Helvetica, sans-serif; display: flex; flex-direction: column; } .header, .footer { flex: 0 0 auto; } .container { flex: 1 1 auto; } .header { width: 100%; height: 200px; overflow: hidden; transition: height .5s; } .header-minimal .header { height: auto; } @media (max-width: 700px) { .header { height: auto; } } .index .header { height: 50vh; } .fullscreen-header .header { height: 100%; } .header-background { position: absolute; top: 0; bottom: 0; right: 0; left: 0; overflow: hidden; } .header-background img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; filter: blur(20px) brightness(80%); transform: scale(1.2); opacity: 1; transition: opacity .5s; } .header-foreground { width: 100%; height: 100%; display: flex; max-width: 1200px; margin: 0 auto; justify-content: space-between; align-items: flex-end; padding: 10px; } .header-minimal .header-foreground { align-items: center; } @media (max-width: 700px) { .header-foreground { justify-content: center; align-items: center; flex-direction: column; } } .index .header-foreground { align-items: center; justify-content: flex-end; flex-direction: column; } .header-logo { font-family: 'Electrolize', Verdana, 'Dejavu Sans', Arial, Helvetica, sans-serif; font-size: 3em; line-height: 1.2em; filter: drop-shadow(0 1px 5px #000); color: transparent; text-decoration: none; display: flex; flex: 0 0 auto; } .index .header-logo { font-size: 5em; } .header-flash { background-image: linear-gradient(180deg, #eee 0%, #ddd 50%, #ccc 50%, #aaa 100%); background-clip: text; -webkit-background-clip: text; } .header-wave { background-image: linear-gradient(0deg, #281430 0%, #392540 50%, #4a3650 50%, #6c5871 100%); -webkit-background-clip: text; } .header-right { display: flex; flex-direction: column; align-items: flex-end; } .header-menu { display: flex; justify-content: center; flex: 0 0 auto; margin-top: 10px; } .header-minimal .header-menu { margin-top: 0; } .index .header-menu, .fullscreen-header .header-menu, .now-playing .header-menu { display: none; } .header-menu a { display: block; color: #fff; text-decoration: none; font-size: 1.5em; line-height: 1.2em; margin: 0 2px; padding: 5px 10px; border-radius: 5px; text-shadow: 0 1px 5px #000; transition: background-color .1s; } .header-menu a:hover, .header-menu a:focus { background-color: rgba(255, 255, 255, .1); } .header-menu a:active { background-color: rgba(127, 127, 127, .1); } @media (max-width: 800px) { .header-menu { display: grid; grid-template-columns: 1fr 1fr 1fr; } .header-menu a { text-align: center; min-width: 150px; margin: 2px; padding: 10px 0; } .header-menu :first-child { display: none; } } @media (max-width: 480px) { .header-menu { grid-template-columns: 1fr 1fr; } } @media (max-width: 320px) { .header-menu { grid-template-columns: 1fr; } } .footer {} .index .footer, .fullscreen-header .footer, .now-playing .footer { display: none; } .footer-text { opacity: .2; font-size: .9em; text-align: center; max-width: 1200px; margin: 5px auto; } .index { display: flex; flex-direction: column; height: 100%; max-height: 100vh; overflow: hidden; } @media(max-width: 900px) { .index { max-height: initial; overflow: auto; } } .index-menu { width: 100%; display: flex; justify-content: center; background-image: linear-gradient(0deg, #111 0%, #222 50%, #333 50%, #555 100%); flex: 0 0 auto; box-shadow: 0 0 1em rgba(0, 0, 0, .8); } .index-menu a { display: block; color: #fff; text-decoration: none; font-size: 1.5em; line-height: 1.2em; padding: 5px 10px; transition: background-color .1s; } .index-menu a:hover, .index-menu a:focus { background-color: rgba(255, 255, 255, .1); } .index-menu a:active { background-color: rgba(127, 127, 127, .1); } @media (max-width: 600px) { .index-menu { flex-wrap: wrap; } .index-menu a { min-width: 200px; margin: 2px; padding: 10px; text-align: center; } } .socials { max-width: 1100px; width: 100%; margin: 10px auto; padding: 0 15px; display: grid; grid-template-columns: 1fr 1fr 1fr; justify-content: space-evenly; column-gap: 10px; } @media(max-width: 980px) { .socials { grid-template-columns: 1fr 1fr; } } @media(max-width: 640px) { .socials { grid-template-columns: 1fr; } } .social { width: 100%; margin: 5px 0; filter: drop-shadow(0 1px 5px #000); cursor: pointer; display: flex; align-items: center; padding: 5px; } .index-contact .social { margin: 10px 0; } .social-background { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: linear-gradient(0deg, #1118 0%, #2228 50%, #3338 50%, #5558 100%); transform: skew(-15deg); background-color: var(--social-colour); } .social:active .social-background { background-image: linear-gradient(0deg, #1118 0%, #2228 50%, #3338 50%, #3338 100%); } .social-icon { width: 25px; height: 25px; margin: 3px 4px 2px 8px; pointer-events: none; } .social-content { margin: 2px 5px; pointer-events: none; } .social-name { font-size: .9em; line-height: 1.5em; } .social-handle { font-size: 1.5em; line-height: 1.3em; font-family: 'Electrolize', Verdana, 'Dejavu Sans', Arial, Helvetica, sans-serif; } .index-featured { display: grid; grid-template-columns: 1fr 1fr; flex: 1 1 auto; overflow: hidden; margin: 5px auto; padding: 0 10px; margin-bottom: 0; column-gap: 10px; row-gap: 10px; width: 100%; max-width: 1000px; } @media(max-width: 900px) { .index-featured { grid-template-columns: 1fr; overflow: visible; } } .index-feature { overflow: auto; scrollbar-width: thin; } .index-feature-header { border-bottom: 1px solid #333; display: flex; align-items: center; } .index-feature-header-link { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .index-feature-header-title { font-family: 'Electrolize', Verdana, 'Dejavu Sans', Arial, Helvetica, sans-serif; font-size: 2em; line-height: 1.5em; pointer-events: none; flex: 1 1 auto; } .index-feature-header-more { pointer-events: none; flex: 0 0 auto; margin: 0 5px; padding: 2px 8px; border-radius: 2em; font-size: .9em; line-height: 1.5em; background-color: #1a1a1a; transition: background-color .2s; } .index-feature-header-more::after { content: " ยป"; } .index-feature-header:focus-within .index-feature-header-more, .index-feature-header:hover .index-feature-header-more, .index-feature-header-more:focus { background-color: #2a2a2a; } .index-feature-header:active .index-feature-header-more, .index-feature-header-more:active { background-color: #222; } .index-contact { padding: 5px 15px; overflow: auto; } .index-blog {} .index-blog-post { margin: 5px; padding: 2px 5px; background: #222; box-shadow: 0 2px 5px #000; } .index-blog-post-link { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .index-blog-post-header { display: flex; align-items: center; pointer-events: none; border-bottom: 1px solid #333; } .index-blog-post-title { font-family: 'Electrolize', Verdana, 'Dejavu Sans', Arial, Helvetica, sans-serif; flex: 1 1 auto; font-size: 1.5em; line-height: 1.5em; } .index-blog-post-published { flex: 0 1 auto; font-size: .9em; line-height: 1.5em; opacity: .5; padding-bottom: 2px; } .index-blog-post-content { pointer-events: none; max-height: 70px; overflow: hidden; } .index-blog-post-content a { pointer-events: initial; color: inherit; text-decoration: underline; } .header-now-playing { max-height: 60px; min-width: 300px; max-width: 500px; height: 100%; background-image: linear-gradient(0deg, #111c 0%, #222c 50%, #333c 50%, #555c 100%); box-shadow: 0 2px 1em #000; border-radius: 5px; overflow: hidden; align-items: center; bottom: 0; padding: 5px; display: grid; grid-template-columns: 25px 50px 1fr; column-gap: 5px; transition: bottom .5s, width .2s, max-height .5s, padding .2s; } .header-now-playing-hidden { bottom: -80px; max-height: 0; padding: 0; } .header-now-playing-icon img { vertical-align: middle; } .header-now-playing-cover { width: 50px; height: 50px; } .header-now-playing-cover img { width: 100%; height: 100%; vertical-align: middle; object-fit: cover; } .header-now-playing-details { overflow: hidden; white-space: nowrap; } .header-now-playing-details a { color: #fff; text-decoration: none; transition: width .2s; } .header-now-playing-details a:hover, .header-now-playing-details a:focus { text-decoration: underline; } .header-now-playing-title { font-size: 1.2em; } .header-now-playing-title, .header-now-playing-artist { overflow: hidden; text-overflow: ellipsis; } .index-project { margin: 5px; background-image: linear-gradient(180deg, #555c 0, #333c 32px, #222c 32px, #111c 100%); box-shadow: 0 2px 5px #000; border-radius: 5px; overflow: hidden; } .index-project-anchor { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .index-project-content { margin: 5px 8px; margin-bottom: 0; pointer-events: none; } .index-project-name { font-family: 'Electrolize', Verdana, 'Dejavu Sans', Arial, Helvetica, sans-serif; flex: 1 1 auto; font-size: 1.5em; line-height: 1.5em; } .index-project-summary { margin-top: 2px; } .index-project-links { display: flex; pointer-events: none; margin: 0 3px; } .index-project-link { pointer-events: initial; margin: 4px 1px; color: #fff; text-decoration: none; min-width: 100px; padding: 2px 8px; border-radius: 4px; transition: background-color .2s; } .index-project-link:hover, .index-project-link:focus { background-color: #fff2; } .index-project-link:active { background-color: #fff1; } .section { padding: 0 15px; } .section:not(:first-child) { margin-top: 30px; } .section-content { max-width: 1100px; margin: 10px auto; padding: 10px 20px; filter: drop-shadow(0 1px 5px #000); } .section-background { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: linear-gradient(0deg, #111 0%, #222 50%, #333 50%, #555 100%); transform: skew(-15deg); } .section-content h1 { font-family: 'Electrolize', Verdana, 'Dejavu Sans', Arial, Helvetica, sans-serif; font-size: 2em; line-height: 1em; font-weight: 400; } .project { padding: 0 10px; /*background-color: var(--project-colour); background-image: linear-gradient(#111e, #111e); overflow: hidden;*/ } .project-content { max-width: 1100px; width: 100%; margin: 1em auto; overflow: hidden; background-color: var(--project-colour); background-image: linear-gradient(180deg, #555c 0, #333c 38px, #222c 38px, #111c 100%); box-shadow: 0 2px 1em #000; border-radius: 5px; } .project-languages { font-size: 0; line-height: 0; display: inline-block; font-family: Tahoma, Geneva, 'Dejavu Sans', Arial, Helvetica, sans-serif; margin-left: 4px; } .project-language { font-size: 11px; line-height: 18px; display: inline-block; border-left: 4px solid var(--language-colour); background-color: var(--language-colour); background-image: linear-gradient(90deg, #1118, #111a); border-radius: 4px; overflow: hidden; padding: 0 4px; margin: 0 4px; box-shadow: 0 0 1px var(--language-colour); } .project-details { margin: 10px; margin-bottom: 0; } .project-details h2 { font-family: 'Electrolize', Verdana, 'Dejavu Sans', Arial, Helvetica, sans-serif; font-size: 2em; line-height: 1em; font-weight: 400; margin-bottom: 5px; } .project-details p { font-size: .9em; line-height: 1.8em; } .project-details .project-details-summary { font-size: 1.2em; line-height: 1.5em; } .project-links { display: flex; margin: 0 3px; } .project-link { margin: 4px 1px; color: #fff; text-decoration: none; min-width: 100px; padding: 2px 8px; border-radius: 4px; transition: background-color .2s; } .project-link:hover, .project-link:active { background-color: #fff2; } .project-link:focus { background-color: #fff1; } .etcetera-item { max-width: 1100px; margin: 10px auto; padding: 0 15px; filter: drop-shadow(0 1px 5px #000); } .etcetera-item-link { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: #393939; background-image: linear-gradient(0deg, #1118 0%, #2228 50%, #3338 50%, #5558 100%); border-radius: 5px; overflow: hidden; transition: background-color .2s; } .etcetera-item-link:hover, .etcetera-item-link:focus { background-color: #555; } .etcetera-item-link:active { background-color: #222; } .etcetera-item-content { max-width: 1100px; margin: 0 auto; padding: 10px 12px; } .etcetera-item-content h2 { font-family: 'Electrolize', Verdana, 'Dejavu Sans', Arial, Helvetica, sans-serif; font-size: 1.5em; line-height: 1.2em; font-weight: 400; pointer-events: none; } .etcetera-item-content p { font-size: .9em; line-height: 1.4em; pointer-events: none; } .http-error { text-align: center; } .http-error-head { font-family: 'Electrolize', Verdana, 'Dejavu Sans', Arial, Helvetica, sans-serif; font-size: 2.5em; line-height: 2em; font-weight: 400; } .related-site { max-width: 1100px; margin: 10px auto; padding: 0 15px; filter: drop-shadow(0 1px 5px #000); } .related-site-link { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: #393939; background-image: linear-gradient(0deg, #1118 0%, #2228 50%, #3338 50%, #5558 100%); border-radius: 5px; overflow: hidden; transition: background-color .2s; } .related-site-link:hover, .related-site-link:focus { background-color: #555; } .related-site-link:active { background-color: #222; } .related-site-content { max-width: 1100px; margin: 0 auto; padding: 10px 12px; } .related-site-content h2 { font-family: 'Electrolize', Verdana, 'Dejavu Sans', Arial, Helvetica, sans-serif; font-size: 1.5em; line-height: 1.2em; font-weight: 400; pointer-events: none; } .related-site-content p { font-size: .9em; line-height: 1.4em; pointer-events: none; } .php { position: fixed; top: 0; left: 0; right: 0; bottom: 0; width: 100%; height: 100%; z-index: 177; display: flex; justify-content: center; align-items: center; flex-direction: column; pointer-events: none; } .php-search { max-width: 600px; width: 100%; pointer-events: initial; } .php-search-input { border: 1px solid #999; background-color: #fff; opacity: .5; box-shadow: 0 2px .5em #000a, inset 0 1px 2px #000a; transition: opacity .5s, box-shadow .5s; } .php-search-input:hover, .php-search-input:focus, .php-search-input:focus-within { opacity: 1; box-shadow: 0 2px 1em #000, inset 0 1px 2px #000a; } .php-search-input input { border-width: 0; background-color: transparent; color: #000; font-family: Tahoma, Geneva, 'Dejavu Sans', Arial, Helvetica, sans-serif; font-size: 24px; line-height: 35px; width: 100%; height: 100%; padding: 2px 5px; } .php-time { display: flex; justify-content: center; align-items: center; margin: 20px auto; width: 100%; } .php-time-analog { flex: 0 0 auto; } .php-time-alter { flex: 0 0 auto; display: flex; justify-content: center; align-items: center; flex-direction: column; width: 300px; font-family: 'Electrolize', Verdana, 'Dejavu Sans', Arial, Helvetica, sans-serif; filter: drop-shadow(0 1px 5px #000); color: transparent; } .php-time-digital { font-size: 7em; line-height: 1.5em; display: flex; flex: 0 0 auto; max-width: 300px; width: 100%; align-items: center; justify-content: center; } .php-time-date { font-size: 2em; } .php-time-digital-separator { margin-top: -4px; } .php-time-digital-separator-hidden { visibility: hidden; } .php-time-digital-hours, .php-time-digital-separator, .php-date-label { background-image: linear-gradient(180deg, #eee 0%, #ddd 50%, #ccc 50%, #aaa 100%); background-clip: text; -webkit-background-clip: text; } .php-time-digital-minutes, .php-date-week, .php-date-day, .php-date-month, .php-date-year { background-image: linear-gradient(0deg, #281430 0%, #392540 50%, #4a3650 50%, #6c5871 100%); background-clip: text; -webkit-background-clip: text; } .clock { width: 200px; height: 200px; border-radius: 100%; border: 4px solid #c0c0c0; overflow: hidden; box-sizing: content-box; filter: drop-shadow(0 1px 5px #000); } .clock-background { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: #fffd; filter: blur(20px); } .clock-center { position: absolute; top: 96px; left: 96px; width: 8px; height: 8px; background-color: #000; border-radius: 100%; z-index: 1000; } .clock-hand { --hand-rotation: 0deg; position: absolute; top: 0; left: 0; width: 100%; height: 100%; transform: rotate(var(--hand-rotation)); z-index: 900; } .clock-hand-display { position: absolute; width: 2px; left: 99px; height: 99px; background-color: #000; } .clock-hand-hours { z-index: 910; } .clock-hand-minutes { z-index: 920; } .clock-hand-seconds { z-index: 930; } .clock-hand-hours .clock-hand-display { height: 70px; margin-top: 30px; filter: drop-shadow(0 1px 2px #000); } .clock-hand-minutes .clock-hand-display { height: 80px; margin-top: 20px; filter: drop-shadow(0 1px 3px #000); } .clock-hand-seconds .clock-hand-display { height: 100px; margin-top: 15px; opacity: .6; background-color: #f00; filter: drop-shadow(0 1px 4px #000); } .clock-number { position: absolute; top: 0; left: 0; z-index: 500; width: 100px; height: 100px; } .clock-number-display { position: absolute; width: 2px; height: 10px; background-color: #000; } .clock-number-9 .clock-number-display, .clock-number-3 .clock-number-display { width: 10px; height: 2px; } .clock-number-6 .clock-number-display { bottom: 0; } .clock-number-12 .clock-number-display { right: 0; height: 15px; } .clock-number-3 .clock-number-display { right: 0; bottom: 0; } .clock-number-12 { left: 1px; } .clock-number-9 { top: 99px; } .clock-number-6 { top: 100px; left: 99px; } .clock-number-3 { top: 1px; left: 100px; } .ob-wrapper h1 { font-family: Verdana, 'Dejavu Sans', Arial, Helvetica, sans-serif; font-size: 20px; line-height: 24px; } .ob-wrapper { padding-top: 1px; max-width: 1000px; margin: 0 auto; display: flex; } @media(max-width: 700px) { .ob-wrapper { flex-direction: column; } } .ob-blog { margin: 10px; } .ob-blog h1 a { color: #fff; text-decoration: none; } .ob-blog p { font-size: 14px; line-height: 22px; } .ob-blog p a { color: #55c; text-decoration: none; } .ob-blog p a:hover, .ob-blog p a:focus { text-decoration: underline; } .ob-blog p a:active { color: #c22; } .ob-blog time { font-size: 11px; } .ob-blog.ob-preview p { color: #ccc; margin: .2em 0; font-size: 12px; line-height: 20px; } .ob-blogs .ob-blog:not(:last-child) { margin-bottom: 1.5em; } .ob-blog .ob-continue { display: block; text-align: center; color: #fff; text-decoration: none; padding: 5px; margin: 3px 0; background-color: #161616; border-radius: 5px; transition: background-color .2s; } .ob-blog .ob-continue:hover, .ob-blog .ob-continue:focus { background-color: #1f1f1f; } .ob-blog .ob-continue:active { background-color: #191919; } .ascii-wrap { margin-bottom: calc(100vh - 70px); } .ascii-chars { text-align: center; max-width: 1200px; margin: 0 auto; } .ascii-char { display: inline-flex; flex-direction: column; border: 2px solid #4a3650; border-radius: 5px; overflow: hidden; width: 200px; text-align: left; margin: 2px; background-color: #333; cursor: pointer !important; transition: background-color .1s; } .ascii-char:hover, .ascii-char:focus { background-color: #444; } .ascii-char:active { background-color: #222; } .ascii-char-print { white-space: pre; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 2.5em; text-align: center; padding: 10px; pointer-events: none; } .ascii-char-desc { text-align: center; font-size: 1.2em; padding: 0 5px 5px; pointer-events: none; } .ascii-char-misc { display: flex; justify-content: space-evenly; border-top: 1px solid #4a3650; } .ascii-char-misc-item { flex: 1 1 auto; padding: 2px 5px; transition: background-color .1s; background-color: #444; } .ascii-char-misc-item:not(:last-child) { border-right: 1px solid #4a3650; } .ascii-char-misc-item:hover, .ascii-char-misc-item:focus { background-color: #666; } .ascii-char-misc-item:active { background-color: #555; } .ascii-char-misc-item-head { font-variant: small-caps; } .ascii-char-misc-item-value { font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; text-align: right; } .ascii-search { padding-top: 10px; position: sticky; top: 0; z-index: 1000; background-image: linear-gradient(180deg, #4a3650 51px, transparent); } .ascii-search-box { border: 1px solid #000; border-radius: 5px; overflow: hidden; max-width: 1200px; margin: 0 auto; } .ascii-search-box input { border-width: 0; background-color: #111; color: #fff; width: 100%; height: 100%; font-size: 2em; padding: 5px; } .ascii-search-hint { font-size: .9em; padding: 0 5px; transition: opacity .2s; max-width: 1200px; margin: 0 auto; } .whois-container { max-width: 1200px; margin: 0 auto; } .whois-lookup-form { display: flex; border-radius: 5px; margin: 10px; overflow: hidden; box-shadow: 0 1px 5px #222; transition: opacity .2s; } .whois-locked .whois-lookup-form { opacity: .5; } .whois-lookup-form-input { display: block; flex: 1 1 auto; padding: 10px; background-color: #212121; background-image: linear-gradient(0deg, #262626, #202020); border-width: 0; color: #fff; font-family: Tahoma, Geneva, 'Dejavu Sans', Arial, Helvetica, sans-serif; } .whois-lookup-form-submit { flex: 0 0 auto; background-color: #333333; background-image: linear-gradient(0deg, transparent, #404040); color: #fff; border-width: 0; padding: 10px; cursor: pointer; border-radius: 0; transition: background-color .2s; } .whois-lookup-form-submit:focus, .whois-lookup-form-submit:hover { background-color: #3F3F3F; } .whois-lookup-form-submit:active { background-color: #393939; } .whois-result { margin: 10px; padding: 6px 10px; white-space: pre-wrap; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 14px; transition: opacity .2s; background-color: #202020; border-radius: 5px; box-shadow: 0 1px 5px #222; overflow: auto; } .whois-locked .whois-result { opacity: .5; }