/* ===============================
 * CREATED BY DAMIAN SLOCOMBE 202O
 * ===============================
 *
 * TODO: Loading Animations
 * TODO: Animations between windows
 * TODO: Responsive Design
 * TODO: Gallery Design
 * TODO: Project Design
*/

/*#region Elements*/


::-webkit-scrollbar {
    width: 3px;
}

::-webkit-scrollbar-thumb {
    border-radius: 4px;
    background-color: rgb(175, 175, 175);
    -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5);
}

* {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;

    user-select: none;
    -moz-user-select: none;
    -webkit-user-select: none;
    -ms-user-select: none;

    box-sizing: border-box;
}

body,
head,
html {
    width: 100%;
    height: 100%;

    font-size: 16px;

    font-family: 'roboto-web', monospace;

    padding: 0 !important;
    margin: 0 !important;

    color: #e0e0e0;

    overflow: hidden;

    touch-action: none;
}

canvas {
    width: 100%;
    height: 100%;

    position: absolute;
    bottom: 0;
    right: 0;

    z-index: -1;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    font-family: 'Monument', monospace;
    font-weight: 400;

    text-transform: uppercase;
}

/* Fonts */
h1 {
    font-family: 'Monument', monospace;

    font-size: 4rem;
    font-weight: 900;
}

h2 {
    font-size: 3rem;
}

h3 {
    font-size: 2.25rem;
}

h4 {
    font-weight: 300;
    font-size: 1.5rem;
}

h5 {
    font-size: 1.25rem;
}

h6 {
    font-size: 0.75rem;
}

p {
    font-family: "Frakiton", monospace;
    font-variation-settings: "wght" 530;

    font-size: 1rem;
}

/*#endregion Elements*/

/*#region General*/

.no-padd-marg {
    padding: 0;
    margin: 0;
}

.hidden {
    display: none;
}

/*#endregion General*/

/*#region Absolute Anchors*/

.absolute-top {
    position: absolute;

    left: 50%;
    top: 0;

    transform: translate(-50%, 0);
}

.absolute-top-right {
    position: absolute;

    right: 0;
    top: 0;

    transform: translate(-50%, 0);
}

.absolute-top-right {
    position: absolute;

    right: 0;
    top: 0;

    transform: translate(50%, 0);
}

/* MIDDLE ALIGNMENT */
.absolute-mid {
    width: auto;

    position: absolute;

    top: 50%;
    left: 50%;

    transform: translate(-50%, -50%);
}

.absolute-mid-left {
    position: absolute;

    top: 50%;
    left: 0;

    transform: translate(50%, -50%);
}

.absolute-mid-right {
    position: absolute;

    top: 50%;
    right: 0;

    transform: translate(-50%, -50%);
}

/* BOTTOM ALIGNMENT */
.absolute-bot {
    position: absolute;

    top: 100%;
    left: 50%;

    transform: translate(-50%, -100%);
}

.absolute-bot-left {
    position: absolute;

    top: 100%;
    left: 0;

    transform: translate(0%, -100%);
}

.absolute-bot-right {
    position: absolute;

    top: 100%;
    right: 0;

    transform: translate(0, -100%);
}

/*#endregion*/

/*#region Fixed Anchors*/

.fixed-mid {
    position: fixed;

    top: 50%;
    left: 50%;

    transform: translate(-50%, -50%);
}

/*#endregion*/

/*#region Backgrounds*/

.bg-site-standard {
    background-color: rgba(24, 24, 24, 0.9);
}

.bg-white {
    background-color: white;
}

.bg-grey {
    background-color: grey;
}

.bg-black {
    background-color: black;
}

.bg-blue {
    background-color: blue;
}

.bg-aqua {
    background-color: aqua;
}

.bg-greenblue {
    background-color: mediumspringgreen;
}

.bg-green {
    background-color: green;
}

.bg-lime {
    background-color: lime;
}

.bg-yellow {
    background-color: yellow;
}

.bg-orange {
    background-color: orange;
}

.bg-red {
    background-color: red;
}

.bg-pink {
    background-color: pink;
}

.bg-purple {
    background-color: purple;
}

.bg-magenta {
    background-color: magenta;
}

.bg-blueviolet {
    background-color: blueviolet;
}

/*#endregion*/

/*#region Text*/

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

.tx-left {
    text-align: left;
}

.tx-right {
    text-align: right;
}

.tx-justify {
    text-align: justify-all;
}

.tx-center-vh {
    text-align: center;
    margin: auto auto;
}

.tx-middle {
    margin: auto 0;
}

.tx-bot-right {
    text-align: right !important;
    margin: auto 0 0 auto !important;
}

.tx-bot-left {
    text-align: left !important;
    margin: auto 0 0 0 !important;
}

.tx-under {
    text-decoration: underline;
}

/* Weight */

.tx-light {
    font-weight: 300;
}

.tx-medium {
    font-weight: 600;
}

.tx-heavy {
    font-weight: 900;
}

/* === Colours === */
.tx-red {
    color: #cd5264;
}

/*#endregion*/

/*#region Sizing*/

.full-width {
    width: 100%;
}

/*#endregion*/

/*#region Grid*/

/* Col */
.gd-col-auto {
    display: grid;
    grid-auto-flow: column !important;
    grid-auto-columns: auto !important;
}

.gd-col-standard {
    display: grid;

    grid-auto-flow: row;
    grid-template-columns: repeat(auto-fit, minmax(0.25rem, 1fr));
    grid-gap: 20px;
}

.gd-col-one {
    grid-template-columns: 1fr;
}

.gd-col-two {
    grid-template-columns: repeat(2, minmax(100px, 1fr)) !important;
}

.gd-col-three {
    grid-template-columns: repeat(3, minmax(100px, 1fr));
}

.gd-col-auto-small {
    grid-template-columns: auto;
    grid-template-rows: repeat(2, 300px);
}

/* Row */
.gd-row-auto {
    display: grid;
    grid-auto-flow: row;
    grid-auto-rows: auto;
}

.gd-row-standard {
    display: grid;
    grid-auto-flow: column;

    grid-template-rows: repeat(3, 1fr);
    grid-template-columns: repeat(3, minmax(100px, 1fr));

    grid-row-gap: 20px;
    grid-column-gap: 20px;
}

.gd-row-one {
    grid-template-rows: repeat(1, minmax(100px, 1fr));
}


.gd-row-two {
    grid-template-rows: repeat(2, minmax(100px, 1fr));
}

/* Spacing */
.gd-gap-small {
    grid-gap: 10px;
}

.gd-gap-medium {
    grid-gap: 20px;
}

.gd-gap-large {
    grid-gap: 10px;
}

/* Alignment */
.gd-child-mid {
    justify-items: center;
    align-items: center;
}

.gd-child-cen-bot {
    justify-items: stretch;
    align-items: center;
}

/* Image Handling */
.gd-col-standard>img {
    object-fit: cover;
    width: 100%;
}

/*#endregion*/

/*#region Flex*/
.flex {
    display: flex;
    flex-wrap: wrap;
}

.flex>* {
    flex: auto;
}

.flex-center {
    justify-content: space-around;
    align-items: stretch;
}

.flex-stretch {
    justify-content: stretch;
    align-items: stretch;
}

.flex-space-around {
    justify-content: space-around;
    align-items: center;
}

/*#endregion*/

/*#region Borders*/
.bd-black {
    border: black solid;
}

.bd-white {
    border: white solid;
}

.bd-grey {
    border: grey solid;
}

.bd-thin {
    border-width: 1px;
}

.bd-light {
    border-width: 2px;
}

.bd-medium {
    border-width: 4px;
}

.bd-heavy {
    border-width: 6px;
}

/*#endregion*/

/*#region Filters*/

.invert {
    filter: invert(1);
}

.invert-back {
    backdrop-filter: invert(0);
}

.invert-all {
    filter: invert(1);
    backdrop-filter: invert(0);
}

/*#endregion*/

/*#region General Classes*/

.background-standard {
    background-color: rgba(24, 24, 24, 0.9);
}

.background-standard-full {
    background-color: rgba(24, 24, 24, 1);
}

.background-light {
    background-color: rgba(95, 95, 95, 0.9);
}

.background-title {
    backdrop-filter: blur(7px);
}

.background-blur {
    backdrop-filter: blur(6px);
}

.icon {
    transition: all 0.1s;


}

.icon:hover {
    filter: brightness(200%);
    transform: scale(1.2, 1.2);
}

.clear-link a,
.clear-link {
    text-decoration: none;
    color: inherit;
}

/* Border Classes */
.vertical-line {
    height: 100%;
    border-right: 1px solid rgba(128, 128, 128, 0.7);
    border-left: 1px solid rgba(128, 128, 128, 0.7);

    width: 0;
}

.horizontal-line {
    width: 100%;
    border: 1px solid rgba(128, 128, 128, 0.7);
    height: 1px;
}

.full-border-white {
    border: 2px white solid;
}

.depth-top {
    z-index: 1000;
}

/*#endregion General Classes*/

#info-banner {
    font-family: 'roboto-web', monospace;
    font-weight: lighter;

    z-index: 1;
    position: fixed;
    width: 100%;
    background-color: rgba(24, 24, 24, 0.4);
    text-align: center;
}

/*#region Website Content*/

#container {
    height: 100%;
}

#content-wrapper {
    position: absolute;

    width: 100%;
    height: 100%;

    display: grid;
    grid-template-columns: max-content 1fr max-content;
}

#page-name {
    writing-mode: vertical-rl;
    text-orientation: upright;
}

/*#endregion*/

/*#region Windows General*/

#window-wrapper {
    min-height: min-content;
    min-width: 100%;
}

.window {
    z-index: 10;

    width: 100%;
    height: 100%;

    min-width: 100%;
}

.window * {
    z-index: inherit;
}

/*#endregion Windows*/

/*#region Home Window*/

/*#endregion*/

/*#region About Window*/

.about-btn {
    width: 3rem;
    height: 3rem;

    margin: 0 10px 25px;

    font-family: "Open Sans", monospace;
    font-size: 28px !important;
    font-weight: 600;

    cursor: pointer;

    border: 2px solid white;
    background-color: transparent;
    color: white;

    outline: none;
    transition: all 0.2s ease-in-out;
}

.about-btn:hover {
    background-color: grey;
}

.about-btn:focus {
    background-color: white;
    color: #121212;
}

#about-window h1 {
    font-family: 'montserrat-web', monospace;
}


/*#endregion About Window*/

/*#region Project Window*/

#project-grid {
    width: 80%;
    height: 100%;

    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;

    grid-gap: 10px;

    justify-content: center;
    position: relative !important;
}

.project-container {
    width: 100%;
    height: 100%;

    overflow: auto;
}

.project-item {
    width: 100%;

    transition: all 0.2s ease-in-out;
}

.project-item:hover {
    filter: brightness(150%);
    transform: scale(1.02, 1.02);
}

.project-container img {
    object-fit: cover;

    width: 100%;
    height: 100%;

    display: block;
}

.project-item h4 {
    font-size: 1rem !important;
}


/*#endregion*/

/*#region Navigation */
.navbar {
    color: inherit;
    height: 100%;

    display: inline-grid;
    grid-auto-rows: auto min-content;
    justify-items: center;

    /*background-color : #121212;*/
    backdrop-filter: blur(5px);

    padding: 0 5px;
}

#left-navbar {
    justify-self: left;
}

#right-navbar {
    justify-self: right;
}

#left-navbar::before {
    content: '';
    /*background-color: rgb(18, 18, 18);*/

    height: 100%;
    width: 100%;

    position: absolute;

    top: 0;
    left: 0;

    margin: 0 -17px;

    z-index: -10;
}

#right-navbar::before {
    height: 100%;
    content: '';
    position: absolute;
    top: 0;
    width: 140%;
    margin: 0 -24px;
    z-index: -10;

    right: 0;
    /*background-color: rgb(18, 18, 18);*/
}

#right-navbar>* {
    display: inline-block;
}

.dot {
    cursor: pointer;

    margin: 15px 0;
    padding: 0;

    width: 1.7rem;
    height: 1.7rem;

    border-radius: 100%;
    border: 2px solid #b7adb9;
    background-color: #121212;

    transition: all 0.6s ease-in-out;
}

.dot:hover:not(.dot-selected) {
    background-color: #b7adb9;
}

.dot-selected {
    transform: scale(1.2, 1.2) rotate3d(1, 0, 0, -180deg);
    background-color: #5b7faf;
}

/*#endregion*/

.content-text {
    padding: 5px 10px;
}

.content-text p {
    text-align: left;

    font-size: 1em;
    font-family: 'roboto-web', serif;
    font-weight: lighter;
}

.content-text h1 {
    font-size: 2em;

    margin: 0;
    padding: 0;

    text-align: center;
    font-family: 'roboto-web', serif;
    font-weight: 100;
}

.context-text img {
    max-width: 100%;
}


/*#region LOADER */

#loader {
    width: 100%;
    height: 100%;

    z-index: 1000;

    /*background-color: #0d0d0d;*/
    background: radial-gradient(circle at 50%, #0d0d0d, #0d0d0d 80%, #1d1d1d 100%);
}

.loader-circle {
    -webkit-border-radius: 50%;
    -moz-border-radius: 50%;
    border-radius: 50%;

    width: 210px;
    height: 210px;

    margin-left: -105px;
    margin-top: -105px;
    background: #a0a0a0;
    animation: 3s LoaderRotate infinite linear;

    filter: blur(4px);
}

.loader-circle-mask {
    width: 200px;
    height: 200px;

    border-radius: 45%;

    background: #0d0d0d;
    color: white;
    padding: 2rem;
}

#loader-middle {
    width: 210px;

    display: inline-flex;
    justify-content: center;

    font-size: 32px;
    text-align: center;
}

/*#endregion*/

/*#region ANIMATIONS*/

.anim-show {
    animation-name: Show;
    animation-duration: 0.25s;
    animation-iteration-count: 1;
    animation-fill-mode: forwards;
    animation-timing-function: ease-in-out;

    -webkit-animation-name: Show;
    -webkit-animation-duration: 0.25s;
    -webkit-animation-iteration-count: 1;
    -webkit-animation-fill-mode: forwards;
    -webkit-animation-timing-function: ease-in-out;

    -o-animation-name: Show;
    -o-animation-duration: 0.25s;
    -o-animation-iteration-count: 1;
    -o-animation-fill-mode: forwards;
    -o-animation-timing-function: ease-in-out;
}

.anim-hide {
    animation-name: Show;
    animation-duration: 0.25s;
    animation-iteration-count: 1;
    animation-direction: reverse;
    animation-fill-mode: forwards;
    animation-timing-function: ease-in-out;

    -webkit-animation-name: Show;
    -webkit-animation-duration: 0.25s;
    -webkit-animation-iteration-count: 1;
    -webkit-animation-direction: reverse;
    -webkit-animation-fill-mode: forwards;
    -webkit-animation-timing-function: ease-in-out;

    -o-animation-name: Show;
    -o-animation-duration: 0.25s;
    -o-animation-iteration-count: 1;
    -o-animation-direction: reverse;
    -o-animation-fill-mode: forwards;
    -o-animation-timing-function: ease-in-out;
}

.anim-loader-hide {
    animation-name: LoaderHide;
    animation-duration: 2s;
    animation-iteration-count: 1;
    animation-fill-mode: forwards;
    animation-timing-function: ease-in-out;

    -webkit-animation-name: LoaderHide;
    -webkit-animation-duration: 2s;
    -webkit-animation-iteration-count: 1;
    -webkit-animation-fill-mode: forwards;
    -webkit-animation-timing-function: ease-in-out;

    -o-animation-name: LoaderHide;
    -o-animation-duration: 2s;
    -o-animation-iteration-count: 1;
    -o-animation-fill-mode: forwards;
    -o-animation-timing-function: ease-in-out;
}


/*#endregion ANIMATIONS*/

/*#region KEYFRAMES*/

@keyframes Hide {
    from {
        opacity: 1;
    }

    to {
        opacity: 0;
    }
}

@keyframes Show {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

@keyframes LoaderHide {
    0% {}

    20% {
        width: 90%;
        height: 90%;
    }

    30% {
        left: 50%;
    }

    100% {
        left: 200%;
        width: 90%;
        height: 90%;
    }
}

@keyframes LoaderRotate {
    0% {
        transform: rotate3d(0, 0, 1, 0deg);
    }

    100% {
        transform: rotate3d(0, 0, 1, 360deg);
    }

}

/*#endregion KEYFRAMES*/

/*#region RESPONSIVE*/

/* Queries Skeleton.css use, http://getskeleton.com/#examples */
/* Mobile first queries */

@media only screen and (max-width: 40em) {
    html {
        font-size: 10px;
    }

    h1 {
        font-size: 3rem;
    }

    h2 {
        font-size: 2.5rem;
    }

    h3 {
        font-size: 1.5rem;
    }

    h4 {
        font-size: 1rem;
    }

    #project-grid {
        margin-top: 20px;
        flex-direction: column;
    }
}

@media only screen and (min-width: 40.063em) {
    #project-grid {
        margin-top: 20px;
        flex-direction: column;
    }
}

/* min-width 641px, medium screens */

@media only screen and (min-width: 40.063em) and (max-width: 64em) {}

/* min-width 641px and max-width 1024px */

@media only screen and (min-width: 64.063em) {
    #project-grid {
        flex-direction: row;
    }
}

/* min-width 1025px, large screens */

@media only screen and (min-width: 64.063em) and (max-width: 90em) {
    .project-item h4 {
        font-size: 0.9rem !important;
    }
}

/* min-width 1025px and max-width 1440px */

@media only screen and (min-width: 90.063em) {}

/* min-width 1441px, xlarge screens */

@media only screen and (min-width: 90.063em) and (max-width: 120em) {}

/* min-width 1441px and max-width 1920px */

@media only screen and (min-width: 120.063em) {}

/* min-width 1921px, xxlarge screens */

/*#region RESPONSIVE*/