:root {
    height: 100vh;
    margin: 0;
    padding: 0;
    background-color: #000000;
}

::selection {
    background-color: white;
    color: #1f1f1f;
}

::-moz-selection {
    background-color: white;
    color: #1f1f1f;
}

body {
    color: #fff;
    font-size: 20px;
    line-height: 1.2;
    scrollbar-gutter: stable;
    font-family: Consolas, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, "Courier New", monospace;

    /* Center everything */
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

body:has(#freaky:checked) {
    font-family: Papyrus, Comic Sans MS, cursive;
    line-height: 1.3;
    font-weight: bold;
}

.freakedUp {
    display: none;
    pointer-events: none;
    user-select: none;
}

#freaky:checked ~ .freakedUp {
    display: block;
}

.freakLevel {
    position: fixed;
    top: 40%;
    left: 50%;

    transform: translate(-50%, -50%);
    font-size: 2em;
    z-index: 1000;
    color: #ff5f57;
    background-color: rgba(255, 255, 255, 0.8);
}

.freakyTongue {
    left: 50%;
    bottom: 0;
    transform: translate(-50%, -10%);
    position: absolute;
    max-width: 90%;
    z-index: 999;
    opacity: 0.9;
}

.freakyLevel {
    color: black;
}

#freaky {
    display: none;
}

.freaky-label {
    cursor: pointer;
}

a {
    color: var(--links);
}

a:hover {
    color: var(--links-hover);
}

#welcomeText {
    color: var(--highlight);
    font-family: Consolas, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, "Courier New", monospace;
    font-weight: normal;
    line-height: normal;
}

.wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    max-width: 1100px;
    width: 80%;
}

.secret {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    align-items: center;
    justify-content: center;
    text-align: center;
    display: none;
}

.show-again {
    border: 1px solid rgba(0, 0, 0, 0.2);
    background-color: #1f1f1f;
    padding: 8px 14px;
    font-size: 12px;
    cursor: pointer;
}

.show-again:hover {
    background-color: #2f2f2f;
    border: 1px solid #fff;
}

.terminal-wrapper {
    width: 100%;
    max-width: 100%;
    position: relative;
}

.terminal {
    background-color: #090909;
    color: white;
    font-size: medium;
    border: 1px solid #fff;
    box-shadow: 0 0 10px gray;
}

.terminal .content {
    padding: 0 10px 10px;
}

#show-terminal:checked ~ .terminal {
    visibility: hidden;
}

#show-terminal:checked ~ .secret {
    display: block;

}

#show-terminal {
    display: none;
}

.terminal pre {
    color: white;
    font-size: medium;
    font-family: inherit;
    margin: 0;
    padding: 0;
    overflow: auto;
    white-space: pre-wrap;
    word-wrap: break-word;
}

.terminal ::-moz-selection {
    background: #fff;
    color: #1f1f1f;
}

.terminal ::selection {
    background: #fff;
    color: #1f1f1f;
}

.content-wrapper {
    display: flex;
    justify-content: space-between;
}

.about-image-separate {
    height: auto;
    max-width: 220px;
    margin-right: 1rem;
    object-fit: cover;
}

.text-content {
    flex: 1;
    overflow-wrap: break-word;
}

.about-image-inline {
    display: none;
    position: relative;
    float: left;
    height: auto;
    width: 100%;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    max-width: 200px;
    margin-right: 1rem;
    margin-top: 0.5rem;
    border: 1px solid #fff;
}

.about-image-inline img {
    width: 100%;
    height: fit-content;
    object-fit: cover;
    margin-bottom: -4px;
}

.about-image-topbar {
    padding: 4px 8px 0;
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.about-image-topbar span {
    color: #b5b5b5;
    font-size: 0.8em;
}

.about-image-topbar .close {
    position: absolute;
    display: flex;
    margin-top: 4px;
    margin-right: 4px;
}

.about-image-topbar .close:hover {
    border: 1px solid white;
    margin: 3px 3px -1px;
}

@media (max-width: 1300px) {
    .about-image-separate {
        display: none;
    }

    .about-image-inline {
        display: block;
    }

    #showImage:checked ~ .about-image-inline {
        display: none;
    }

}

#pgp {
    display: none;
    /* Smaller font size */
    font-size: 0.8em;
}
#showPgp:checked ~ #pgp {
    display: block;
}

#blinking_cursor::after {
    /* Blinking square */
    animation: typing 1.5s steps(1, end) infinite;
    content: "\a0";
    background-color: #fff;
}

@keyframes typing {
    50% {
        visibility: hidden;
    }
}

#showPgpLabel {
    cursor: pointer;
    position: relative;
    padding-left: 30px;
    user-select: none;
}

#showPgpLabel svg {
    position: absolute;
    left: 0;
    top: 0;
    transform: translateY(-50%);
    fill: #fff;
}

#downloadPgp {
    /* Align to the right side of the terminal */
    float: right;
    margin-top: -0.5em;
    user-select: none;
}

#downloadPgp img {
    width: 24px;
    height: 24px;
    fill: #fff;
    transform: translateY(25%);
}

#downloadPgpText {
    color: #fff;
    text-decoration: underline;
}

/* Make the icon jump up and down if it isn't checked */
#showPgp:not(:checked) ~ #showPgpLabel #showPgpSvg {
    animation: bounce 4s ease infinite;
}

@keyframes bounce {
    90% {
        transform: translateY(0%);
    }
    95% {
        transform: translateY(-30%);
    }
    96% {
        transform: translateY(0%);
    }
    97% {
        transform: translateY(-15%);
    }
    98% {
        transform: translateY(0%);
    }
    99% {
        transform: translateY(-7%);
    }
    100% {
        transform: translateY(0);
    }
}

/* Make the SVG icon rotate when the checkbox is checked */
#showPgp:checked ~ #showPgpLabel #showPgpSvg {
    transition: transform 0.3s;
}

#showPgp:checked ~ #showPgpLabel #showPgpSvg {
    transform: rotate(180deg);
}

/* Make the SVG icon rotate back when the checkbox is unchecked */
#showPgp:not(:checked) ~ #showPgpLabel #showPgpSvg {
    transition: transform 0.3s;
}

#showPgp:not(:checked) ~ #showPgpLabel #showPgpSvg {
    transform: rotate(0deg);
}

#showPgp {
    display: none;
}

.terminal ::-webkit-scrollbar {
    width: 10px;
}

.terminal ::-webkit-scrollbar-track {
    background: #1f1f1f;
}

.terminal ::-webkit-scrollbar-thumb {
    background: #fff;
}

/* Make it so when you double click a command, it only selects the command and not the prefix */
.terminal .prefix {
    user-select: none;
}

table {
    font-size: 0.8em;
    display: flex;
}

table td a {
    color: var(--links) !important;
}

table td a:hover {
    color: var(--links-hover) !important;
}

table td img {
    padding-right: 0.5em;
    vertical-align: middle;
    width: 19px;
}

#badges {
    image-rendering: pixelated;
    image-rendering: -moz-crisp-edges;
    margin-top: 1em;
    text-align: center;
    display: flex;
    padding: 10px;
    width: 100%;
    max-width: 100%;
    font-family: serif; /* this somehow fixes spacing issues in freakmode */
    flex-wrap: wrap;
    justify-content: center;
    gap: 5px;
}

#badges img {
    display: inline-flex;
    width: 88px;
    height: 31px;
    text-indent: 100%;
    white-space: nowrap;
    overflow: hidden;
}

#badges img:hover {
    filter: brightness(1.1);
    border: 1px solid #fff;
    margin: -1px;
}

#alternativePgpCommand {
    display: none;
}

section {
    margin-bottom: 1em;
}

.nomargin {
    margin: 0;
}

.shortServername {
    display: none;
}

@media (max-width: 734px) {
    #welcome {
        display: none;
    }
}

@media (max-width: 1100px) {
    #downloadPgpText {
        display: none;
    }
}

@media (max-width: 627px) {
    /* Replace the curl command with the alternative command */
    #curlPgpCommand {
        display: none;
    }

    #alternativePgpCommand {
        display: inline;
    }
}

@media (max-width: 420px) {
    .servername {
        display: none;
    }

    .shortServername {
        display: inline;
    }
}

.topbar {
    position: relative;
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 12px;
    height: 20px;
    margin-left: 10px;
    margin-right: 10px;
    margin-top: 5px;
    padding: 2px 2px 5px;
    border-bottom: 2px solid rgba(255, 255, 255, 0.2);
}

.topbar a {
    text-decoration: none;
}

.topbar a:hover {
    text-decoration: underline;
}

@media (max-width: 500px) {
    .rss-link {
        display: none;
    }

    .wrapper {
        width: 100%;
        max-width: 100%;
    }
}
@media (max-width: 380px) {
    .tz {
        display: none;
    }
}

@keyframes cycle {
    0% {
        content: "welcome to my website\00A0\00A0\00A0\00A0\00A0\00A0";
    }
    10% {
        content: "welcome to my website.\00A0\00A0\00A0\00A0\00A0";
    }
    20% {
        content: "welcome to my website..\00A0\00A0\00A0\00A0";
    }
    30% {
        content: "welcome to my website...\00A0\00A0\00A0";
    }
    40% {
        opacity: 1;
        content: "welcome to my website...\00A0:\00A0";
    }
    50% {
        content: "welcome to my website...\00A0:3";
    }
}

.cycle::before {
    content: "";
    animation: cycle steps(1) 5s infinite;
}

.close {
    position: absolute;
    right: 0;
    height: 20px;
    width: 20px;
    background-color: #ff5f57;
    fill: #eff0f1;
    justify-content: center;
    align-items: center;
    display: flex;
    cursor: pointer;
}

.close::before, .close::after {
    content: '';
    position: absolute;
    width: 12px;
    height: 2px;
    background-color: #eff0f1;
}

.close::before {
    transform: rotate(45deg);
}

.close::after {
    transform: rotate(-45deg);
}

.close:hover {
    border: 1px solid white;
    margin: -1px;
}

/* Terminal styled input box */
#inputThingy input[type="text"], #inputThingy input[type="text"]:focus {
    background-color: #000000;
    color: #fff;
    font-family: Consolas, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace;
    border: none;
    outline: none;
    font-size: 16px;
    display: inline;
    width: calc(100% - 40ch);
}

#inputThingy form {
    margin: 0 0 0 -2px;
    padding: 0;
    display: inline;
}

#discordInv {
    color: var(--links);
}

#discord_status iframe {
    border: none;
    padding: 0;
    height: 30px;
    align-self: center;
    display: inline;
    position: absolute;
    margin: 0 0 0 10px;
    width: 11ch;
}

#discord_status {
    display: inline;
    position: relative;
}

#status1 {
    z-index: 1;
}

#status2 {
    z-index: 2;
}

#that_one_linebreak {
    display: inline;
}

@media (max-width: 940px) {
    #that_one_linebreak {
        display: none;
    }
}

.glitch-hover {
    color: #00ff00;
    position: relative;
    transition: color 0.3s;
}

.glitch-hover:hover {
    color: white;
}

.glitch-hover:hover::before,
.glitch-hover:hover::after {
    content: attr(aria-label);
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    color: #00ff00;
    background: transparent;
    overflow: hidden;
    clip: rect(0px, 9999px, 0px, 0px);
    animation: glitch 0.3s infinite linear alternate-reverse;
}

.glitch-hover:hover::before {
    content: attr(aria-description) attr(aria-label);
    left: 4px;
    text-shadow: -2px 0 red;
    color: #ff0000;
}

.glitch-hover:hover::after {
    left: -2px;
    text-shadow: -2px 0 blue;
}

.webring-text {
    margin: 0;
}

@keyframes glitch {
    0% {
        clip: rect(0px, 9999px, 100px, 0px);
    }
    10% {
        clip: rect(10px, 9999px, 30px, 0px);
        left: -2px;
    }
    20% {
        clip: rect(20px, 9999px, 50px, 0px);
    }
    30% {
        clip: rect(5px, 9999px, 40px, 0px);
    }
    40% {
        clip: rect(15px, 9999px, 70px, 0px);
    }
    50% {
        clip: rect(0px, 9999px, 80px, 0px);
    }
    60% {
        clip: rect(25px, 9999px, 65px, 0px);
    }
    70% {
        clip: rect(10px, 9999px, 75px, 0px);
    }
    80% {
        clip: rect(30px, 9999px, 90px, 0px);
    }
    90% {
        clip: rect(5px, 9999px, 100px, 0px);
    }
    100% {
        clip: rect(0px, 9999px, 0px, 0px);
    }
}

.notification {
    border: none;
    position: fixed;
    bottom: 10px;
    right: 20px;
    z-index: 1000;
    width: 350px;
    max-width: 100%;
    height: 350px;
}
/* Hide notification if width < 1000px */
@media (max-width: 1000px) {
    .notification {
        display: none;
    }
}

.listening-to {
    pointer-events: all;
    width: 100%;
    height: 100%;
    position: absolute;
    border: none;
}
.listening-wrapper {
    border: none;
    position: fixed;
    display: flex;
    bottom: 10px;
    /* left: -99999px; */
    left: 20px;
    z-index: 1000;
    width: 350px;
    height: 140px;
    /*animation: reappear 5s forwards;*/
}

@keyframes reappear {
    0% {
        left: -99999px;
    }
    99% {
        left: -99999px;
    }
    100% {
        left: 20px;
    }
}

#close-listening:checked ~ .listening-wrapper {
    display: none;
}

.close-listening-btn {
    position: absolute;
    top: 4px;
    right: 11px;
    width: 20px;
    height: 20px;
    background-color: #f1605c;
    border: none;
    cursor: pointer;
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 1001;
}
.close-listening-btn:hover {
    border: 1px solid white;
    margin: -1px;
}

.close-listening-btn::before, .close-listening-btn::after {
    content: '';
    position: absolute;
    width: 12px;
    height: 2px;
    background-color: #eff0f1;
}

.close-listening-btn::before {
    transform: rotate(45deg);
}

.close-listening-btn::after {
    transform: rotate(-45deg);
}

@media (max-width: 700px) {
    .listening-wrapper {
        /* do not display the listening wrapper on mobile */
        display: none;
    }
}


/* freaky mode, stolen from slonk.ing with permission <3 */
:root:has(#freaky:checked)::after {
    content: "";
    z-index: 1000;
    position: fixed;
    top: 0;
    left: 0;
    margin: 0;
    width: 100vw;
    height: 100vh;
    background: rgb(154, 65, 40);
    background: linear-gradient(
            215deg,
            rgba(154, 65, 40, 1) 0%,
            rgba(116, 36, 94, 1) 50%,
            rgba(59, 56, 132, 1) 100%
    );
    background-repeat: no-repeat;
    background-attachment: fixed;
    background-size: 100% 100%;
    opacity: 0.6;
    pointer-events: none;
}

@media (max-width: 420px) {
    #crypto-donations {
        display: none;
    }
}

.donation-item {
    cursor: pointer;
    color: var(--links);
    text-decoration: underline;
}
.donation-item img {
    height: 1em;
    vertical-align: middle;
    margin-right: 0.5em;
}

.donation-item:hover {
    color: var(--links-hover);
}


.crypto-popup {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1000;
}

.overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.7);
}

.popup-content {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: #090909;
    border: 1px solid #fff;
    padding: 10px;
    text-align: center;
    max-width: 500px;
}

.popup-content .close {
    position: absolute;
    top: 6px;
    right: 10px;
    cursor: pointer;
}

.popup-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-bottom: 5px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.2);
    font-size: 12px;
}

.qr-code {
    width: 200px;
    height: auto;
    margin: 20px 0;
}

.crypto-address {
    display: block;
    padding: 10px;
    background: rgba(255, 255, 255, 0.1);
    word-break: break-all;
    font-size: 16px;
}

#show-btc:checked ~ #btc-popup,
#show-xmr:checked ~ #xmr-popup {
    display: block;
}

.hours::before,
.minutes::before,
.seconds::before {
    display: inline-block;
    text-align: right;
    content: "00";
}

.hours::before {
    animation: until-24 86400s steps(1) infinite;
}

.minutes::before {
    animation: until-60 3600s steps(1) infinite;
}

.seconds::before {
    animation: until-60 60s steps(1) infinite;
}

@keyframes until-60 { 0.0000% { content: "00"; } 1.6667% { content: "01"; } 3.3333% { content: "02"; } 5.0000% { content: "03"; } 6.6667% { content: "04"; } 8.3333% { content: "05"; } 10.0000% { content: "06"; } 11.6667% { content: "07"; } 13.3333% { content: "08"; } 15.0000% { content: "09"; } 16.6667% { content: "10"; } 18.3333% { content: "11"; } 20.0000% { content: "12"; } 21.6667% { content: "13"; } 23.3333% { content: "14"; } 25.0000% { content: "15"; } 26.6667% { content: "16"; } 28.3333% { content: "17"; } 30.0000% { content: "18"; } 31.6667% { content: "19"; } 33.3333% { content: "20"; } 35.0000% { content: "21"; } 36.6667% { content: "22"; } 38.3333% { content: "23"; } 40.0000% { content: "24"; } 41.6667% { content: "25"; } 43.3333% { content: "26"; } 45.0000% { content: "27"; } 46.6667% { content: "28"; } 48.3333% { content: "29"; } 50.0000% { content: "30"; } 51.6667% { content: "31"; } 53.3333% { content: "32"; } 55.0000% { content: "33"; } 56.6667% { content: "34"; } 58.3333% { content: "35"; } 60.0000% { content: "36"; } 61.6667% { content: "37"; } 63.3333% { content: "38"; } 65.0000% { content: "39"; } 66.6667% { content: "40"; } 68.3333% { content: "41"; } 70.0000% { content: "42"; } 71.6667% { content: "43"; } 73.3333% { content: "44"; } 75.0000% { content: "45"; } 76.6667% { content: "46"; } 78.3333% { content: "47"; } 80.0000% { content: "48"; } 81.6667% { content: "49"; } 83.3333% { content: "50"; } 85.0000% { content: "51"; } 86.6667% { content: "52"; } 88.3333% { content: "53"; } 90.0000% { content: "54"; } 91.6667% { content: "55"; } 93.3333% { content: "56"; } 95.0000% { content: "57"; } 96.6667% { content: "58"; } 98.3333% { content: "59"; } }

@keyframes until-24 { 0.0000% { content: "00"; } 4.1667% { content: "01"; } 8.3333% { content: "02"; } 12.5000% { content: "03"; } 16.6667% { content: "04"; } 20.8333% { content: "05"; } 25.0000% { content: "06"; } 29.1667% { content: "07"; } 33.3333% { content: "08"; } 37.5000% { content: "09"; } 41.6667% { content: "10"; } 45.8333% { content: "11"; } 50.0000% { content: "12"; } 54.1667% { content: "13"; } 58.3333% { content: "14"; } 62.5000% { content: "15"; } 66.6667% { content: "16"; } 70.8333% { content: "17"; } 75.0000% { content: "18"; } 79.1667% { content: "19"; } 83.3333% { content: "20"; } 87.5000% { content: "21"; } 91.6667% { content: "22"; } 95.8333% { content: "23"; } }

.clock-icon {
    margin-top: -1px;
    width: 14px;
    height: 14px;
    vertical-align: middle;
}

.discordInv {
    margin: 5px 0 10px 0;
    max-width: 350px;
}
