:root {
    --html-font-size: 16px;
    --default-spacing: .5rem;

    --default-background: #e6e6e6;
    --default-text-color: #3c3c3c;
    --default-text-shadow: none;
    --default-font-family: "Roboto";
    --default-border-radius: .5rem;
    --default-box-shadow: 0px 0px 4px 1px rgba(0,0,0,.10);

    --heading-font-family: "Roboto Condensed";
    --heading-font-weight: 700;

    --alt-text-color: #ffffff;
    --alt-text-shadow: 2px 2px 0px rgba(0,0,0,.25);

    --primary-color: #43749c;
    /*--primary-color: #117C9C;*/
}

@media screen and (min-width: 500px) {
    :root {
        --html-font-size: 18px;
        --default-spacing: 1rem;
    }
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CSS Reset */

*, *:after, *:before {
    padding: 0;
    margin: 0;
    border: 0;
    outline: 0;
    box-sizing: border-box;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Global Styles */

html {
    font-size: var(--html-font-size, 16px);
    height: 100%;
    scroll-behavior:smooth;
}

body {
    font: normal 400 1rem/1.618 "Roboto";
    color: rgba(60,60,60,1);
    text-align: center;
    background-color: #f6f6f6;
    flex: 0 0 100%;
}

body section {
    padding: var(--default-spacing, .5rem);
}

a {
    color: var(--primary-color, #336699)
}

h1 {
    font: normal 300 1.125rem/1.618 "Roboto";
    color: rgba(255,255,255,1);
    text-transform: uppercase;
    /*text-shadow: .125rem .125rem .125rem rgba(0,0,0,.5);*/
}

h1 span {
    display: block;
    font: normal 700 2rem/1.618 "Roboto";
    text-transform: uppercase;
    color: rgba(255,255,255,1);
}

h2 {
    font: normal 900 1.25rem/1.618 "Roboto";
    text-transform: uppercase;
}

h3 {
    font: normal 300 1.25rem/1.618 "Roboto Condensed";
}

h4 {
    font: normal 900 1.125rem/1.618 "Roboto";
    text-transform: uppercase;
}

h5 {
    font: normal 700 .8rem/1.40625rem Roboto;
    text-transform: uppercase;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Multipurpose Styles */
.button-container {
    flex: 1 1 100%;
    display: flex;
    flex-flow: column nowrap;
    justify-content: flex-start;
    align-items: stretch;
    gap: var(--default-spacing, .5rem);
}

@media screen and (min-width: 500px) {
    .button-container {
        flex-flow: row wrap;
        justify-content: center;
        align-items: center;
    }
}

.scroll-button {
    display: flex;
    flex-flow: column nowrap;
    justify-content: center;
    align-items: stretch;
    max-width: 25rem;
    padding: .3125rem .75rem;
    border: 2px solid var(--primary-color, #336699);
    font: normal 700 .8rem/1.40625rem Roboto;
    text-decoration: none;
    text-transform: uppercase;
    color: var(--primary-color, #336699);
    background-color: transparent;
}

.scroll-button .button-icon {
    color: inherit;
}

.scroll-button:hover, .scroll-button:focus, .scroll-button:focus-visible {
    color: var(--alt-text-color, #ffffff);
    background-color: var(--primary-color, #336699);
    text-shadow: var(--alt-text-shadow, 2px 2px rgba(0,0,0,.25));
}

.card-container {
    --cols: 1;
    display: flex;
    flex-flow: row wrap;
    justify-content: space-between;
    align-items: stretch;
    gap: var(--default-spacing, .5rem);
}

.card-container .card {
    flex: 0 0 calc((100% - (var(--default-spacing) * (var(--cols) - 1))) / var(--cols));
    background: white;
    border-radius: var(--default-border-radius, .5rem);
    box-shadow: var(--default-box-shadow, 2px 2px 2px rgba(0,0,0,.35));
    padding: var(--default-spacing, .5rem);
    display: flex;
    flex-flow: column nowrap;
    justify-content: flex-start;
    align-items: center;
}

.card-container .card .card-icon{
    color: var(--primary-color, #336699);
}

@media screen and (min-width: 650px) {
    .card-container {
        --cols: 2;
    }
}

@media screen and (min-width: 1200px) {
    .card-container {
        --cols: 4;
    }
}

.heading {
    font-family: var(--heading-font-family, 'arial');
    font-weight: var(--heading-font-weight, '700');
    color: var(--primary-color, #336699);
}

.heading-lines {
    display: flex;
    flex-flow: row nowrap;
    justify-content: space-between;
    align-items: center;
    gap: var(--default-spacing, .5rem);
    width: 100%;
    overflow: hidden;
}

.heading-lines:before,
.heading-lines:after {
    flex: 1 1 auto;
    height: 1px;
    content: "";
    background-color: rgba(0,0,0,.2);
}

ul.taglist {
    padding: .125rem;
}

ul.taglist li{
    display: inline;
    margin: .125rem;
    padding: .125rem .25rem;
    border-radius: .1875rem;
    font: normal 400 .75rem/1.618 Roboto Condensed;
    letter-spacing: 1px;
    text-transform: uppercase;
    color: #ffffff;
    background-color: var(--primary-color, #336699);
    text-shadow: var(--alt-text-shadow, 2px 2px 0px rgba(0,0,0,.25));
}



/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Home Page Styles */
#home {
    display: flex;
    flex-flow: column nowrap;
    justify-content: center;
    align-items: center;
    height: 100dvh;
    color: var(--alt-text-color, #ffffff);
    text-shadow: var(--alt-text-shadow, 2px 2px 2px rgba(0,0,0,.25));
    background: url('../images/noisetexture.png'), var(--primary-color, #336699);
}

#logo {
    height: 6rem;
    -webkit-filter: drop-shadow(0px 0px 2px rgba(0, 0, 0, 0.35));
    filter: drop-shadow(0px 0px 2px rgba(0, 0, 0, 0.35));
}

#home .scroll-button {
    border: 2px solid var(--alt-text-color, #ffffff);
    color: var(--alt-text-color, #ffffff);
    background-color: transparent;
    box-shadow: var(--alt-text-shadow, 2px 2px 2px rgba(0,0,0,.25));
}

#home .scroll-button:hover, #home .scroll-button:focus, #home .scroll-button:focus-visible {
    color: var(--primary-color);
    background-color: var(--alt-text-color, #ffffff);
    text-shadow: none;
}

#home .button-container {
    flex: initial;
}

#home .color-change {
    position: absolute;
    top: 0;
    right: 0;
}

#home .color-change .color {
    height: 1.5rem;
    width: 1.5rem;
    background-clip: padding-box;
    border: 2px solid rgba(0,0,0,.25);
}

#home .color-change .color:nth-child(1) {
    background-color: #43749c
}

#home .color-change .color:nth-child(2) {
    background-color: #07b77e;
}

#home .color-change .color:nth-child(3) {
    background-color: #ff7600;
}

#home .color-change .color:nth-child(4) {
    background-color: #b90839;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ About Page Styles*/

#about {
    display: flex;
    flex-flow: row wrap;
    justify-content: center;
    align-items: flex-start;
    background: url('../images/noisetexture.png'), #e6e6e6;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Project Page Styles*/

#projects {
    display: flex;
    flex-flow: column nowrap;
    justify-content: flex-start;
    align-items: center;
    background: url('../images/noisetexture.png'), #f5f5f5;
}

.project {
    display: flex;
    flex-flow: column nowrap;
    justify-content: flex-start;
    align-items: center;
    gap: var(--default-spacing, .5rem);
}

.projectimg {
    flex: 0 0 100%;
    max-width: 200px;
    -webkit-filter: drop-shadow(1px 1px 2px rgba(0, 0, 0, 0.5));
    filter: drop-shadow(1px 1px 2px rgba(0, 0, 0, 0.5));
}

@media screen and (min-width: 700px) {
    .project {
        flex-flow: row nowrap;
    }
    .projectimg {
        flex: 0 0 50%;
        max-width: 400px;
    }
}

.projectlink{
    display: block;
    font: normal 400 1rem/1.618 Roboto;
}

.projectlink:hover {
    text-decoration: underline;
}



/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Contact Page Styles*/

#contact {
    width: 100%;
    background: url('../images/noisetexture.png'), var(--primary-color, #336699);
    color: #ffffff;
}

#contact .heading {
    color: #ffffff;
}

#contact hr {
    height: 1px;
    background-color: rgba(0,0,0,.2);
    margin: .625rem 0 0 0;
}

#contact h4 {
    color: #fff;
}

input, textarea {
    display: block;
    width: 100%;
    padding: .3125rem;
    color: rgba(34, 34, 34, 1);
    border-radius: .3125rem;
}

textarea {
    height: 6rem;
}

label {
    display: block;
    font: normal 700 .8rem/1.40625rem Roboto;
    margin: .625rem 0 0 0;
    text-align: left;
    color: rgba(255,255,255,1);
    text-transform: uppercase;
}

label[for="pokemon"], input[name="pokemon"] {
    position: absolute;
    left: -9999px;
    height:0px;
    width: 0px;
    opacity: 0;
}

#submit {
    display: block;
    width: 100%;
    padding: .3125rem;
    font: normal 700 .8rem/1.40625rem Roboto;
    text-transform: uppercase;
    margin: .9375rem 0 0 0;
    background-color: rgba(255,255,255,.45);
    color: rgba(0,0,0,.5);
    border-radius: .3125rem;
}

.sociallinks {
    display: inline-block;
    height: 2.5rem;
    width: 2.5rem;
    background: rgba(0,0,0,.3);
    border-radius: 1.25rem;
    text-align: center;
    vertical-align: middle;
}

.sociallinks span {
    font-size: 1.25rem;
    line-height: 2.5rem;
    color: rgba(255,255,255,1);
}

.copyright {
    font: normal 400 .8rem/1.40625rem Roboto;
    color: rgba(0,0,0,.3);
}