* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* [theme variables] */
:root {
    --forest-green-light: #003E00;
    --forest-green-dark: #9AC885;
    --text-light: #333333;
    --text-dark: #E8F5E8;
    --bg-light: #FFFFFF;
    --bg-dark: #0A0A0A;
    --border-light: #E0E0E0;
    --border-dark: #2A2A2A;
    --progress-bg-light: #F0F0F0;
    --progress-bg-dark: #1A1A1A;	
}

[data-theme="light"] {
    --text-color: var(--text-light);
    --bg-color: var(--bg-light);
    --border-color: var(--border-light);
    --progress-bg: var(--progress-bg-light);
	--forest-green: var(--forest-green-light);
}

[data-theme="dark"] {
    --text-color: var(--text-dark);
    --bg-color: var(--bg-dark);
    --border-color: var(--border-dark);
    --progress-bg: var(--progress-bg-dark);
	--forest-green: var(--forest-green-dark);
}

/* [typography / container] */
body {
	display: flex;
	flex-direction: column;
	min-height: 100vh;

    font-family: 'Courier New', Courier, monospace;
    line-height: 1.6;
    color: var(--text-color);
    
	background-color: var(--bg-color);
    opacity: 0;

    transform: translateY(20px);
    transition: background-color 0.3s ease, color 0.3s ease;
}

body.loaded {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.6s ease, transform 0.6s ease, background-color 0.3s ease, color 0.3s ease;
}

header {
    top: 0;
    position: sticky;
	padding: 1.5rem 0;
	border-bottom: 1px solid var(--border-color);
    background-color: var(--bg-color);
    z-index: 100;
    transition: border-color 0.3s ease, background-color 0.3s ease;
}

.container {
	max-width: 1200px;
	margin: 0 auto;
	padding: 0 1rem;
}

header img {
	height: 80px;
}

main {
	flex: 1;
    justify-content: center;
    padding-top: 18vh;
}

h1 {
    font-size: 2rem;
    font-weight: bold;
    margin-bottom: 1rem;
    color: var(--forest-green);
    text-align: center;
}

h1::after {
	content: "...";
	animation: dots 3s infinite;
	width: 2em;
	text-align: left;
	display: inline-block;
}

footer {
    padding: 2rem 0;
    border-top: 1px solid var(--border-color);
    text-align: center;
    font-size: 0.875rem;
    opacity: 0.7;
    transition: border-color 0.3s ease;
}

@keyframes dots {	
	25% { 
		content: ""; 
	}
	50% {
		content: ".";
	}
	75% {
		content: "..";
	}
	100% {
		content: "...";
	}
}

/* [mobile] */

@media (min-width: 576px) {
    h1 {
        font-size: 2.25rem;
    } 
}

@media (min-width: 768px) {
    h1 {
        font-size: 2.75rem;
        margin-bottom: 1.5rem;
    }
}

@media (min-width: 1200px) {
    h1 {
        font-size: 3.25rem;
        margin-bottom: 2rem;
    }
}

/* [accessibility] */
@media (prefers-reduced-motion: reduce) {
    * {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
    
    body.loaded {
        transition: background-color 0.3s ease, color 0.3s ease;
    }
}
