/* ------------------- */
/* Custom Properties   */
/* ------------------- */
:root {
    --clr-body-bg: #08031A;
    --clr-body-txt: #fceaff;
    --clr-content-bg: #3d2163;

    --clr-top-btn-bg: #FFD05A;
    --clr-top-btn-txt: #08031A;

    --clr-main-heading: #ED64F5;
    --clr-sub-heading: #e8b86f;
    --clr-title-border: #d3aad5;
    --clr-bold-txt: #ff9933;
    --clr-link: #ED64F5;
    --clr-link-hover: #c355c9;
    --clr-quote-bg: #13092D;
    --clr-quote-border: #999999;

    --clr-code-bg: #241445;
    --clr-code-border: #82668f;
    --clr-dates: rgb(121, 184, 255);

    --clr-link-btn-bg: #873eb5;
    --clr-link-btn-txt: white;
    --clr-link-btn-hover: #241445;

    --clr-hero-bg: black;
    --clr-navbar-bg: #222;
    --clr-navbar-link: white;

    --clr-main-footer-bg: #13092D;

    --clr-mod-entry-bg: #241445;

    --ff-primary: 'Noto Sans';

    --sz-paragraph-margin: 1.15em;
}

/* ------------------- */
/* CSS Reset           */
/* ------------------- */

/* Box sizing rules */
*,
*::before,
*::after {
    box-sizing: border-box;
}

/* Prevent font size inflation */
html {
    -moz-text-size-adjust: none;
    -webkit-text-size-adjust: none;
    text-size-adjust: none;
}

/* Remove default margin in favour of better control in authored CSS */
body, h1, h2, h3, h4, p,
figure, blockquote, dl, dd {
    margin: 0;
}

/* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */
ul[role='list'],
ol[role='list'] {
    list-style: none;
}

/* Set core body defaults */
body {
    min-height: 100vh;
    line-height: 1.5;
}

/* Set shorter line heights on headings and interactive elements */
h1, h2, h3, h4,
button, input, label {
    line-height: 1.1;
}

/* Balance text wrapping on headings */
h1, h2,
h3, h4 {
    text-wrap: balance;
}

/* A elements that don't have a class get default styles */
a:not([class]) {
    text-decoration-skip-ink: auto;
}

/* Make images easier to work with */
img,
picture {
    max-width: 100%;
    display: block;
}

/* Inherit fonts for inputs and buttons */
input, button,
textarea, select {
    font: inherit;
}

/* Make sure textareas without a rows attribute are not tiny */
textarea:not([rows]) {
    min-height: 10em;
}

/* Anything that has been anchored to should have extra scroll margin */
:target {
    scroll-margin-block: 5ex;
}

/* ------------------- */
/* STYLING BEGINS      */
/* ------------------- */

/* General Styles */
html {
    scroll-behavior: smooth;
}

body {
    display: flex;
    align-items: center;
    flex-direction: column;
    font-family: var(--ff-primary), Arial, Helvetica, sans-serif;
    color: var(--clr-body-txt);
    background-color: var(--clr-body-bg);
}

h1 {
    color: var(--clr-main-heading);
    font-size: clamp(2rem, 1rem + 5vw, 3rem);
    border-bottom: 0.18rem solid var(--clr-title-border);
    padding-bottom: 0.3em;
    margin-bottom: 0.5em;
}

h2, h3, h4, h5, h6 {
    color: var(--clr-sub-heading);
}

h1, h2, h3 {
    line-height: 1.2;
}

h2, .h2 {
    font-size: clamp(1.55rem, 1rem + 3vw, 2.15rem);
}

h3, .h3 {
    font-size: clamp(1.55rem, 1rem + 3vw, 1.8rem);
}

h2:has(+ *[class]), .h2:has(+ *[class]),
h3:has(+ *[class]), .h3:has(+ *[class]) {
    margin-bottom: 0.5em;
}

hr {
    border: 0.05rem solid var(--clr-title-border);
}

strong {
    color: var(--clr-bold-txt);
}

:focus {
    outline: 0.15em solid var(--clr-body-txt);
}

a {
    font-weight: 700;
    color: var(--clr-link);
}

a:hover {
    color: var(--clr-link-hover);
}

a:not([class]):focus {
    outline: 0.15rem solid var(--clr-link);
}

a:focus img {
    outline: 0.2em solid var(--clr-body-txt);
}

blockquote {
	padding: 1em 1.4em 1.4em;
	border-inline-start: 0.1em solid var(--clr-main-heading);
    background-color: var(--clr-quote-bg);
    margin-bottom: 1em;
}

blockquote > * + :not([class]) {
    margin-top: var(--sz-paragraph-margin);
}

button:hover {
    cursor: pointer;
}

button:focus,
details:focus {
    outline-offset: 0.2em;
}

figure {
    margin-bottom: var(--sz-paragraph-margin);
    display: grid;
    place-content: center;
    justify-items: center;
}

figcaption {
    text-align: center;
    font-size: 0.9em;
    margin-top: 0.2em;
}

code {
    font-family: monospace;
    border: 0.07rem solid var(--clr-code-border);
    padding: 0.125rem 0.3rem;
    margin: 0 0.125rem;
    background: var(--clr-code-bg);
}

pre {
    white-space: pre-wrap;
    overflow-x: auto;
}

pre code {
    background: var(--clr-code-bg);
    display: block;
    padding: 0.5em 0.8rem;
    overflow-x: auto;
    word-break: keep-all;
}

summary {
    cursor: pointer;
}

dl {
    display: grid;
    gap: 1em;
    grid-template-columns: auto auto;
}

dt {
    font-weight: bold;
}

dd {
    grid-column-start: 2;
}

/* MAIN CONTENT */
main,
.content__wrapper,
.content--divided {
    display: grid;
}

main,
.content__wrapper {
    font-size: 1.2rem;
}

main {
    width: 100%;
}

.content__wrapper,
.content--divided {
    gap: 1rem;
}

.content__wrapper {
    justify-self: center;
}

.article,
.content:not(.content--divided),
.content__section {
    padding: 1.5rem clamp(1rem, 5%, 3rem);
}

.main__header {
    padding: 2.5rem clamp(1rem, 5%, 3rem);
    text-align: center;
    display: grid;
}

.article,
.content:not(.content--divided),
.content__section {
    background-color: var(--clr-content-bg);
}

.article__info {
    text-align: center;
    display: grid;
    gap: 0.2em;
}

.content > * + .h2,
.content__section > * + .h2,
.article > * + .h2 {
    margin-top: 2em;
}

.content > * + :not([class]),
.content__section > * + :not([class]),
.article > * + :not([class]) {
    margin-top: var(--sz-paragraph-margin);
}

.sidebar--sticky {
    position: sticky;
    top: 4rem;
}

/* Desktop main content layout */
@media only screen and (min-width: 60rem) {
    .content__wrapper {
        grid-template-areas: 'leftbar article rightbar';
        grid-template-columns: minmax(0, 15rem) minmax(0, 2.5fr) minmax(0, 15rem);
    }

    .article,
    .content {
        grid-area: article;
    }

    .left-sidebar {
        grid-area: leftbar;
    }

    .right-sidebar {
        grid-area: rightbar;
    }
}

@media only screen and (min-width: 80rem) {
    .content__wrapper {
        max-width: 80rem;
    }
}

/* HEADING WRAPPER AND ANCHOR */
.heading-wrapper {
    display: flex;
    gap: 0.3em;
    margin-top: 1.5rem;
    align-items: baseline;
}

.heading-anchor {
    line-height: 1;
    opacity: 0.8;
    order: -1;
    text-decoration: none;
}

.heading-anchor:hover {
    text-decoration: underline;
    text-underline-offset: 0.1em;
    opacity: 1;
}

.heading-anchor:focus {
    outline: 2px solid currentColor;
    outline-offset: 0.15em;
}

.heading-anchor [hidden] {
    display: block;
}

:not(.heading-wrapper) + .heading-wrapper {
    margin-top: 1.7em;
}

/* SPECIAL ELEMENTS */
.text-box {
    background: var(--clr-quote-bg);
    border: 0.1em solid var(--clr-main-heading);
    padding: 0.8em;
    margin: 0.5em 0;
    display: grid;
    gap: 1em;
}

.mod-entry,
.mod-entry__downloads {
    display: grid;
    align-items: center;
}

.mod-entry {
    gap: 1em;
    background: var(--clr-mod-entry-bg);
    margin: 1em 0;
    padding: 1em;
}

.mod-entry__downloads {
    gap: 0.5em;
}


/* Tablet screen size */
@media only screen and (min-width: 37.5rem) {
    .mod-entry__downloads {
        grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
    }
}

/* Link button */
.link-btn {
    font-size: 1.3rem;
    text-align: center;
    display: inline-block;
    border: 0.15em solid var(--clr-link-btn-bg);
    border-radius: 0.6em;
    padding: 0.5em 1em;
    background: var(--clr-link-btn-bg);
    color: var(--clr-link-btn-txt);
    cursor: pointer;
    font-weight: 700;
    text-transform: uppercase;
}

.link-btn,
.link-btn:hover,
.link-btn:visited {
    text-decoration: none;
}

.link-btn:hover {
    cursor: pointer;
    background: var(--clr-link-btn-hover);
    transition: 0.5s;
}

.link-btn:focus {
    outline: 0.15em solid var(--clr-link-btn-txt);
    outline-offset: -0.25em;
}

/* Q&A accordion */
.qna-accordion {
    padding: 1rem 0;
}

.qna-accordion__question {
    font-weight: 700;
}

.qna-accordion__answer {
    padding: 0.7em 1.3em 1.5em;
    margin-top: 0.5em;
    background: hsla(0, 0%, 100%, 0.15);
}

.qna-accordion__answer p + p {
    margin-top: 1em;
}

/* Spoiler Accordion */
* + .spoiler-accordion {
    margin-top: var(--sz-paragraph-margin);
}

.spoiler-accordion {
    padding: 0.5em 0;
}

.spoiler-accordion__hint {
    font-weight: 700;
}

.spoiler-accordion__spoiler {
    padding: 0.5em 1em;
}

.spoiler-accordion__spoiler p + p {
    margin-top: 1em;
}

/* Web button lists */
.web-btn-wrapper {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

/* UTILITY CLASSES */
.bold-text {
    font-weight: 700;
}

.center-el {
    display: grid;
    place-content: center;
}

.center-text {
    text-align: center;
}

.indent-text {
    padding: 1em 0 1em 2em;
    display: grid;
    gap: 1em;
}

.date-style {
    font-weight: 700;
    color: var(--clr-dates);
}

.hidden {
    display: none;
}

.content-list {
    display: grid;
    gap: 0.7em;
}

/* Pride flag backgrounds */
.flag-rainbow {
	background: linear-gradient(
		#e40303 0 16.67%,
		#ff8c00 0 33.33%,
		#ffed00 0 50%,
		#008026 0 66.67%,
		#004dff 0 83.33%,
		#750787 0 100%
	);
}

.flag-lesbian {
	background: linear-gradient(
		#d52d00 0 14.29%,
		#ef7627 0 28.57%,
		#ff9a56 0 42.86%,
		#ffffff 0 57.14%,
		#d362a4 0 71.43%,
		#b85490 0 86.71%,
		#a30262 0 100%
	);
}

.flag-bi {
	background: linear-gradient(
		#d60270 0 40%,
		#9b4f97 0 60%,
		#0038a7 0 100%
	);
}

.flag-trans {
	background: linear-gradient(
		#5bcefa 0 20%,
		#f5a9b8 0 40%,
		#ffffff 0 60%,
		#f5a9b8 0 80%,
		#5bcefa 0 100%
	);
}

.flag-intersex {
	background: radial-gradient(closest-side circle at center,
		#ffd800 44%,
		#7902aa 44%,
		#7902aa 56%,
		#ffd800 56%
	);
}

.flag-ace {
	background: linear-gradient(
		#000000 0 25%,
		#a3a3a3 0 50%,
		#ffffff 0 75%,
		#800080 0 100%
	);
}

.flag-aro {
    background: linear-gradient(
        #0a2 20%,
        #7d6 0 40%,
        white 0 60%,
        darkgray 0 80%,
        black 0
    );
}

.flag-non-binary {
	background: linear-gradient(
		#fff430 0 25%,
		#ffffff 0 50%,
		#9c59d1 0 75%,
		#000000 0 100%
	);
}

.flag-pan {
	background: linear-gradient(
		#ff218c 0 33.33%,
		#ffd800 0 66.67%,
		#21b1ff 0 100%
	);
}

.flag-genderfluid {
	background: linear-gradient(
		#ff76a4 0 20%,
		#ffffff 0 40%,
		#c011d7 0 60%,
		#000000 0 80%,
		#2f3cbe 0 100%
	);
}

.flag-agender {
    background: linear-gradient(
        black 0 14.28%,
        silver 0 28.57%,
        white 0 42.85%,
        #a3fa73 0 57.14%,
        white 0 71.42%,
        silver 0 85.71%,
        black 0
    );
}

.flag-demigirl {
    background: linear-gradient(
        #7F7F7F 0 14.28%,
        #C4C4C4 0 28.57%,
        #FDADC8 0 42.85%,
        white 0 57.14%,
        #FDADC8 0 71.42%,
        #C4C4C4 0 85.71%,
        #7F7F7F 0
    );
}

.flag-bigender {
    background: linear-gradient(
        #d074a2 0 14.28%,
        #f8a1cd 0 28.57%,
        #d9c6ea 0 42.85%,
        white 0 57.14%,
        #d9c6ea 0 71.42%,
        #90c8ec 0 85.71%,
        #6583d5 0
    );
}

.flag-gilbert-baker {
    background: linear-gradient(
        #FF6599 12.5%,
        #e40303 0 25%,
        #ff8c00 0 37.5%,
        #ffed00 0 50%,
        #008026 0 62.5%,
        #00C0C0 0 75%,
        #004dff 0 87.5%,
        #750787 0
    );
}

.flag-gilbert-baker-2017 {
    background: linear-gradient(
        #CD66FF 11.1%,
        #FF6599 0 22.2%,
        #e40303 0 33.3%,
        #ff8c00 0 44.4%,
        #ffed00 0 55.5%,
        #008026 0 66.6%,
        #00C0C0 0 77.7%,
        #004dff 0 88.8%,
        #750787 0
    );
}

.flag-progress {
	background:
        conic-gradient(at 14% 50%, #0000 221.25deg, #ffffff 222deg 318deg, #0000 318.25deg),
        conic-gradient(at 23% 50%, #0000 221.25deg, #f5a9b8 222deg 318deg, #0000 318.25deg),
        conic-gradient(at 32% 50%, #0000 221.25deg, #5bcefa 222deg 318deg, #0000 318.25deg),
        conic-gradient(at 41% 50%, #0000 221.25deg, #784F17 222deg 318deg, #0000 318.25deg),
        conic-gradient(at 50% 50%, #0000 221.25deg, black 222deg 318deg, #0000 318.25deg),
        linear-gradient(#e40303 0 16.66%, #ff8c00 0 33.33%, #ffed00 0 50%, #008026 0 66.66%, #004dff 0 83.33%, #750787 0);
}

.flag-progress-intersex {
    background:
        radial-gradient(circle at 9.75% 50%, #0000 6.66%, #7902aa 6.7% 8.33%, #0000 8.4%),
        conic-gradient(at 26.66% 50%, #0000 222.75deg, #ffd800 0 317.25deg, #0000 0),
        conic-gradient(at 33% 50%, #0000 222.75deg, #ffffff 0 317.25deg, #0000 0),
        conic-gradient(at 39% 50%, #0000 222.75deg, #f5a9b8 0 317.25deg, #0000 0),
        conic-gradient(at 45.66% 50%, #0000 222.75deg, #5bcefa 0 317.25deg, #0000 0),
        conic-gradient(at 52% 50%, #0000 222.75deg, #753000 0 317.25deg, #0000 0),
        conic-gradient(at 58.33% 50%, #0000 222.75deg, #000 0 317.25deg, #0000 0),
        linear-gradient(#e40303 0 16.66%, #ff8c00 0 33.33%, #ffed00 0 50%, #008026 0 66.66%, #004dff 0 83.33%, #750787 0);
}

.flag-progress-intersex-lesbian {
    background:
        radial-gradient(circle at 9.75% 50%, #0000 6.66%, #7902aa 6.7% 8.33%, #0000 8.4%),
        conic-gradient(at 26.66% 50%, #0000 222.75deg, #ffd800 0 317.25deg, #0000 0),
        conic-gradient(at 33% 50%, #0000 222.75deg, #ffffff 0 317.25deg, #0000 0),
        conic-gradient(at 39% 50%, #0000 222.75deg, #f5a9b8 0 317.25deg, #0000 0),
        conic-gradient(at 45.66% 50%, #0000 222.75deg, #5bcefa 0 317.25deg, #0000 0),
        conic-gradient(at 52% 50%, #0000 222.75deg, #753000 0 317.25deg, #0000 0),
        conic-gradient(at 58.33% 50%, #0000 222.75deg, #000 0 317.25deg, #0000 0),
        linear-gradient(#d52d00 0 14.29%, #ef7627 0 28.57%, #ff9a56 0 42.86%, #ffffff 0 57.14%, #d362a4 0 71.43%, #b85490 0 86.71%, #a30262 0 100%);
}

.symbol-venus {
	background-image: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='12pt' height='12pt' viewBox='0 0 12 12' version='1.1'%3E%3Cg id='surface1'%3E%3Cpath style='fill:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(35.15%25,0%25,64.85%25);stroke-opacity:1;stroke-miterlimit:10;' d='M 85 85 C 85 98.789062 73.789062 110 60 110 C 46.210938 110 35 98.789062 35 85 C 35 71.210938 46.210938 60 60 60 C 73.789062 60 85 71.210938 85 85 Z M 85 85 ' transform='matrix(0.1,0,0,-0.1,0,12)'/%3E%3Cpath style='fill:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(35.15%25,0%25,64.85%25);stroke-opacity:1;stroke-miterlimit:10;' d='M 60 10 L 60 60 ' transform='matrix(0.1,0,0,-0.1,0,12)'/%3E%3Cpath style='fill:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(35.15%25,0%25,64.85%25);stroke-opacity:1;stroke-miterlimit:10;' d='M 35 35 L 85 35 ' transform='matrix(0.1,0,0,-0.1,0,12)'/%3E%3C/g%3E%3C/svg%3E");
	background-repeat: no-repeat;
    background-size: 100% 100%;
}