@import url('https://fonts.googleapis.com/css2?family=Audiowide&family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Silkscreen&display=swap');

:root{
    --clr-dark: #3d5ba9;
    --clr-light: #fff;
    --clr-accent: #ee3224;
    --clr-accent-light: #f6eb14;

    --clr-print-light: #eee;
    --clr-print-dark: #222;
    --clr-print-gray: #bbb;
}

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

body{
    position: relative;
    display: block;
    font-family: 'Poppins', Arial, Helvetica, sans-serif;
    color: var(--clr-light);
    background-color: var(--clr-dark);
}

/* ==== ICON FONTS ====== */
@font-face {
  font-family: 'icomoon';
  src:  url('fonts/icomoon.eot?s8gel7');
  src:  url('fonts/icomoon.eot?s8gel7#iefix') format('embedded-opentype'),
    url('fonts/icomoon.ttf?s8gel7') format('truetype'),
    url('fonts/icomoon.woff?s8gel7') format('woff'),
    url('fonts/icomoon.svg?s8gel7#icomoon') format('svg');
  font-weight: normal;
  font-style: normal;
  font-display: block;
}

[class^="icon-"], [class*=" icon-"] {
  /* use !important to prevent issues with browser extensions that change fonts */
  font-family: 'icomoon' !important;
  speak: never;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;

  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.icon-chest-loot:before {
  content: "\e901";
  color: #d45b29;
}
.icon-book-lore:before {
  content: "\e900";
  color: #d45c2a;
}
.icon-map-dungeon:before {
  content: "\e904";
  color: #d25a29;
}
.icon-player-character:before {
  content: "\e905";
  color: #d25a29;
}
.icon-swords-encounter:before {
  content: "\e906";
  color: #d45c2a;
}
.page-header{
    display: flex;
    justify-content: flex-start;
    align-items: center;
    gap: 2em;
    padding: 1em;
    position: fixed;
    top: 0;
    width: 100%;
    height: 100px;
    color: var(--clr-accent-light);
}
#menu-sidebar{
    position: fixed;
    right: 1em;
    top: 0;
    z-index: 100;
    padding-top: 2em;
    transition: all 1s ease;
    
    #menu-btn{
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        gap: 5px;
        width: 35px;
        aspect-ratio: 1/1;
        transform: translateX(-150px);
        transition: all 1s ease;

        span{
            width: 100%;
            height: 5px;
            background-color: var(--clr-accent-light);
            border-radius: 2px;
        }
    }
    #menu-link-container{
        display: flex;
        flex-direction: column;
        justify-content: flex-start;
        align-items: start;
        margin-top: 3em;
        padding: 2em;
        border: 2px solid var(--clr-accent-light);
        border-radius: 1em;
        background-color: var(--clr-dark);

        a{
            color: var(--clr-accent-light);
        }

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

.sidebar-off{
    transform: translateX(300px);
}
footer{
    position: fixed;
    bottom: 0;
    display: flex;
    flex-direction: row;
    justify-content: flex-end;
    align-items: center;
    gap: 10em;
    width: 100%;
    padding: 1em;
    font-size: 70%;
    /* background-color: var(--clr-dark); */
}
main{
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    min-height: 80vh;
    gap: 2em;
    margin-top: 100px;
    padding-bottom: 100px;
}
.row-top-main{
    flex-direction: row;
    align-items: start;
}
a{
    text-decoration: none;
    font-weight: 700;
    color: var(--clr-accent-light);
    margin-right: 1em;
    transition: all 0.25s ease;
}
a:hover{
    color: var(--clr-accent);
}
.button{
    display: block;
    text-align: center;
    font-size: 1.2em;
    font-weight: 500;
    background-color: var(--clr-accent-light);
    color: var(--clr-dark);
    border: 1px solid var(--clr-dark);
    border-radius: 0.75em;
    padding: 0.5em 1em;
    margin: 0;
    text-decoration: none;
    cursor: pointer;
    transition: all 0.25s ease;
}
.button:hover{
    background-color: var(--clr-accent);
    color: var(--clr-light);
}
.btn-container{
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 0.5em;
}
.btn-container-vert{
    display: grid;
    grid-template-columns: 1fr;
    max-width: 200px;
}

/* =======   INDEX - SPLASH ============*/
/* body.splash{
    background-image: url('./img/pixel-sunset.jpg');
    background-position: center;
    background-size: cover;
} */
.dh-compatible-container{
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 1em;
    padding: 3em;

    img{
        width: 50px;
    }
}
#splash-page{
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;

    h1{
        font-family: 'Audiowide', Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif;
        font-size: 8em;
        line-height: 2em;
    }
    p{
        width: 400px;
    }
}
#splash-hero{
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 1em;
}

/* =======   MAP GEN ============*/
#map-container{
    border: 1px solid var(--clr-dark);
    max-width: 60%;
}

/* =======   MAP DISPLAY ============*/

.display-map{

    form{
        display: grid;
        grid-template-columns: 1fr 1fr;
        align-items: center;
        justify-content: center;
    }

    .button{
        grid-column: span 2;
    }
}

/* =======   Environments ============*/
.environments-main{
    padding: 5em;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    height: auto;

    .environ-display-section{
        display: flex;
        flex-direction: row;
        gap: 1em;
        font-size: 80%;
    } 
            
    #environ-frame:empty, #mobs-frame:empty{
        min-width: 200px;
        min-height: 300px;
        border: 1px dashed var(--clr-accent);
        border-radius: 0.75em;
    }

    #mobs-frame{
        display: flex;
        flex-direction: column;
        gap: 0.5em;
    }
}

.inline-form{
    display: flex;
    flex-direction: row;
    justify-content: flex-start;
    align-items: center;
    gap: 0.75em;
    font-size: 1.2em;
    font-weight: 500;
    padding: 0.5em;
    border: 2px solid var(--clr-accent-light);
    border-radius: 0.75em;
}

select{
    background-color: var(--clr-accent-light);
    color: var(--clr-dark);
    padding: 0.25em;
    border: none;
    border-radius: 0.25em;
    font-size: 1.1em;
}
input{
    font-size: 1em;
}
input::file-selector-button{
    background-color: var(--clr-accent-light);
    color: var(--clr-dark);
    padding: 0.75em;
    border-radius: 0.5em;
    border: 2px solid var(--clr-dark);
    transition: all 0.5s ease;
}
input::file-selector-button:hover{
    background-color: var(--clr-accent);
    color: var(--clr-light);
}

article{
    background-color: var(--clr-print-light);
    color: var(--clr-print-dark);
    border: 1px solid var(--clr-print-dark);
    border-radius: 1em;
}

article header{
    border: 2px solid var(--clr-print-dark);
}

input[type="checkbox"] {
  accent-color: var(--clr-accent);
}

.label-header{
    display: grid;
    grid-template-columns: 1fr 0.1fr 1fr;
    gap: 1em;

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

/* =======   Encounters ============*/

.top-input-container{
    display: flex;
    flex-direction: row;
    justify-content: start;
    align-items: start;
    gap: 1em;
}
form{
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap:0.5em;

    label{
        text-align: right;
    }
}
#suggestions-container{
    width: 400px;
    min-height: 225px;
    padding: 1em;
    background-color: var(--clr-light);
    color: var(--clr-dark);
    border-radius: 1em;

    li{
        list-style: none;
    }
}
#mob-overrides{
    width:400px;

    form{
        grid-template-columns: 2fr 1fr 2fr 1fr;
    }
}
#mob-viewer{
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    align-items: start;
    gap: 1em; 
    padding: 1em;
    min-width: 650px;
    min-height: 400px;
    font-size: 80%;
}
#mob-viewer:empty{
    border: 1px dashed var(--clr-accent);
    border-radius: 1em;
}

.span-btn{
    grid-column: 1 / span 2;
}
.span2-btn{
    grid-column: 3 / span 2;
}

/* =======   Add Mobs ============*/
#add-mobs-main{
    justify-content: start;
    height: auto;    
}

#add-mobs-form{
    margin-top: 2em;
    width: 800px; 
    display: flex;
    flex-direction: column;
    border: 1px solid var(--clr-light);
    border-radius: 1em;
    padding: 1em;


    #mob-top{
        display: block;
    }

    #form-header{
        display: grid;
        grid-template-columns: 1fr 4fr 1fr 1fr 1fr 1fr;
        gap: 5px;
    }

    #form-extras {
        display: flex;
        flex-direction: row;
        justify-content: flex-end;
        gap: 5px;
        padding: 5px;
    }
    #description-motives{
        display: grid;
        grid-template-columns: 1fr 4fr 1fr 3fr;
        gap: 5px;
    }
    #weapon-stats, #mob-stats{
        padding: 5px;
        border: 1px solid var(--clr-light);
    }
    #features div{
        margin: 5px;
    }

    textarea{
        width: 400px;
        vertical-align: top;
    }
    .number{
        width: 50px;
    }

    .button{
        font-size: 1em;
    } 
}
.fixed-header{
    position: fixed;
    top: 0;
    justify-content: space-between;
    padding: 1em;
}
#adversaries{
    justify-content: start;
    padding: 1em;
    margin-top: 10em;

    section{
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: start;
        gap: 1em;
    }

    h2{
        padding-top: 10em;
        margin-bottom: 3em;
        width: 100%;
        text-align: center;
        border-bottom: 1px solid var(--clr-light);
    }

    

}
.mob-container, .environ-container{
    display: block;

    width: 500px;
    padding: 1em;

    header{
        flex-direction: column;
        justify-content: start;
        align-items: start;
        height: auto;
        padding: 8px;
        border-radius: 1em 1em 0 0;
    }
    bold{
        font-weight: 700;
    }
    
    .mob-stats, .environ-stats{
        margin: 5px 0;
        padding: 8px;
        border: 1px solid var(--clr-print-dark);

        .experiences>p{
            display: inline-block;
            margin-right: 8px;
        }
    }

    ul, ol{
        margin-left:1em;
    }

    .add-remove-mob-section{
        display: flex;
        flex-direction: row;
        justify-content: flex-end;
        align-items: center;
        gap: 5px;
        padding: 0.25em;

        button{
            font-weight: 700;
            width: 25px;
            aspect-ratio: 1/1;
            background-color: var(--clr-accent-light);
            border: 1px solid var(--clr-print-dark);
            border-radius: 5px;
            transition: all 0.5s ease;
        }

        button:hover{
            background-color: var(--clr-accent);
            color: var(--clr-light);
        }
    }
}
.interactive-mob{
    padding-top: 0.25em;
    padding-bottom: 2.5em;
}
#mobs-frame .interactive-mob{
    padding-top: 1em;
    padding-bottom: 1em;
}
#mobs-frame .mob-container .add-remove-mob-section{
    display: none;
}
.right{
    text-align: right;
}


/* =======   TESTER ============*/
#tester-container{
    padding: 3em;
}

/* =======   BUILD ENCOUNTER ============*/

.build-encounter{
    display: grid;
    grid-template-columns: 1fr 8fr;
    height: 100vh;

    #encounter-sidebar{
        display: grid;
        padding: 1em;
        color: var(--clr-dark);
        background-color: var(--clr-light);
    }

}

/* =======   Item Cards ============*/
.item-card{
    width: 300px;
    height: 400px;
    border: 2px solid var(--clr-accent);
    border-radius: 1em;
    background-color: var(--clr-light);
    color: var(--clr-dark);

    .card-image-container{
        width: 100%;
        aspect-ratio: 2/1;
        overflow: hidden;
        display: flex;
        justify-content: center;
        align-items: center;
        border-bottom: 2px solid var(--clr-accent);
        border-radius: 0.8em 0.8em 0 0;

        img{
            width: 100%;
            height: auto;
        }
    }

    .card-stats-container{
        padding: 0.8em;
    }

    .small-text{
        font-size: 0.9em;
    }
}

.item-list-row{
    list-style: none;
    background-color: var(--clr-light);
    color: var(--clr-dark);
    max-width: 600px;
    padding: 0.8em;
    border-radius: 0.5em;
    border: 2px solid var(--clr-accent);

    bold{
        font-weight: 700;
        color: var(--clr-accent);
    }
}

/* =======   Generate Items ============*/

#generate-items-main{
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: flex-start;
    padding-top: 5em;
    font-size: 80%;

    section{
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: flex-start;
        gap: 1em;
        padding: 0.5em;
        width: 320px;
        border: 2px solid var(--clr-light);
        border-radius: 1em;
    }

    form{
        display: flex;
        flex-direction: row;
        justify-content: flex-start;
        align-items: center;
        gap: 0.75em;
        font-size: 1.1em;
        font-weight: 500;
        padding: 0.5em;
    }
    
    #weapons-container, #armor-container, #loot-container, #consumables-container{
        width: 100%;
        aspect-ratio: 3/4;
        border-radius: 1em;
    }
}


/* =======   Character Gen ============*/
.character-gen-main{
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: 100%;
}
#character-controls-container{
    position: fixed;
    left: 16px;
    top: 125px;
    width: 250px;
    background-color: var(--clr-dark);
    border: 2px solid var(--clr-accent-light);
    border-radius: 1em;
    padding: 1em;

    form{
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        gap: 0.5em;
        width: 100%;

        button{
            width: 100%;
        }
    }
}
.inline-div{
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
    gap: 1em;
    width: 100%;
}
#character-sheet-container{
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    gap: 1em;
    width: 100%;
}
#character-sheet-sidecar{
    width: 90%;
    max-width: 850px;
    aspect-ratio: 8.5/11;
    font-size: 75%;
    padding: 2em;

    ul{
        padding: 1em;
    }

    bold{
        font-weight: 700;
    }
    .domain-card-container{
        display: flex;
        flex-direction: column;
        justify-content: flex-start;
        align-items: flex-start;
        padding: 1em;

    }

    .domain-card-header{
        display: flex;
        flex-direction: row;
        justify-content: flex-start;
        align-items: center;
        gap: 1em;
    }

    select, input{
        background-color: var(--clr-light);
        color: var(--clr-print-dark);
        padding: 0.25em;
        border: 1px solid var(--clr-print-dark);
        border-radius: 0.25em;
        font-size: 0.8em;
    }
}
.character-sheet{
    position: relative;
    overflow: hidden;
    padding: 1em;
    width: 90%;
    max-width: 850px;
    aspect-ratio: 8.5/11;
    font-size: 80%;

    select, input{
        background-color: var(--clr-light);
        color: var(--clr-print-dark);
        padding: 0.25em;
        border: 1px solid var(--clr-print-dark);
        border-radius: 0.25em;
        font-size: 1em;
    }

    label{
        font-weight: 700;
    }
    bold{
        font-weight: 700;
    }

    header{
        display: flex;
        flex-direction: row;
        justify-content: center;
        align-items: center;
        gap: 1.5em;
        padding: 1em;
        background-color: var(--clr-print-gray);
        color: var(--clr-print-dark);
        border-radius: 1em 1em 0 0;

        form{
            display: grid;
            grid-template-columns: 1fr 2fr 1fr 2fr;
        }

        .class-titles{
            h2{
                font-size: 2.5em;
            }
        }
        .character-descriptions{
            background-color: var(--clr-print-light);
            color: var(--clr-print-dark);
            padding: 1em;
            border-radius: 1em;
        }
        .level-container{
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-content: center;
            text-align: center;
            border-radius: 45%;
            background-color: var(--clr-print-light);
            color: var(--clr-print-dark);
            font-size: 125%;

            h3{
                border-top: 1px solid var(--clr-print-dark);
                padding: 0.25em;
            }

            select{
                width: 2.5em;
                font-size: 1.5em;
                font-weight: 700;
                text-align: center;
                margin-left: 0.25em;
                border: none;
                background-color: transparent;
            }
        }
    }

    .two-column{
        columns: 2;
        column-width: 45%;

        h2{
            width: 100%;
            text-align: center;
        }
    }
    .column1, .column2 {
        break-inside: avoid;
        padding: 0.5rem;
        width: 100%;
    }

    .subheader-stats{
        display: flex;
        flex-direction: row;
        justify-content: center;
        align-items: flex-start;
        height: 125px;
        border-left: 1px solid var(--clr-print-dark);
        border-right: 1px solid var(--clr-print-dark);
        border-bottom: 1px solid var(--clr-print-dark);

    }
    .evasion-armor-container, .all-traits-container{
        display: flex;
        flex-direction: row;
        justify-content: center;
        align-items: flex-start;
        height: 100%;

        div{
            display: flex;
            flex-direction: column;
            justify-content: flex-start;
            align-items: center;
            padding: 0.5em;
            height: 100%;

            p{
                text-align: center;
            }
        }
    }

    .evasion-armor-container{
        border: 2px solid var(--clr-print-dark);
        padding: 1em;
        gap: 1em;
        div{
            justify-content: center;
            border-radius: 45%;
            background-color: var(--clr-light);

            h3{
                border-top: 1px solid var(--clr-print-dark);
            }
            input[type="number"]{
                width: 3em;
                font-size: 1.5em;
                font-weight: 700;
                text-align: center;
                margin-left: 0.5em;
                border: none;
                background-color: transparent;
            }
        }
    }
    .all-traits-container{
        border: 1px solid var(--clr-print-dark);
        div{
            border: 1px solid var(--clr-print-dark);

            h3{
                font-size: 1em;
                border-bottom: 1px solid var(--clr-print-dark);
            }
            input{
                width: 2em;
                font-size: 1.5em;
                font-weight: 700;
                text-align: center;
                margin-left: 0.5em;
                border: none;
                background-color: transparent;
            }
        }
    }
    .damage-health-container{
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        gap: 0.5em;
        width: 100%;
        border: 1px solid var(--clr-print-dark);
        padding: 1em;
    }

    .damage-stats-container{
        display: flex;
        flex-direction: row;
        justify-content: center;
        align-items: center;
        gap: 1em;       

        div{
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            max-width: 100px;
            padding: 0.25em;
            
            
            h4, p{
                text-align: center;
            }
        }

        .color-invert{
            background-color: var(--clr-print-gray);
            color: var(--clr-print-dark);
            border-radius: 0.75em;
        }
    }

    .hp-stress-container{
            width: 100%;
    }
    .inline-marks{
        display: flex;
        flex-direction: row;
        justify-content: flex-start;
        align-items: center;
        width: 100%;
        gap: 0.5em;
        margin-top: 0.5em;

        .check-container{
            display: flex;
            flex-direction: row;
            justify-content: flex-start;
            align-items: center;

            input[type="checkbox"] {
                height: 20px;
                width: 22px;
            }
        }
    }

    .hope-container{
        padding: 0.5rem 0 1em 0;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        gap: 1em;
        border: 1px solid var(--clr-print-dark);

        input[type="checkbox"] {
                height: 25px;
                width: 40px;
                transform: rotate(45deg) translateY(3px);
        }

       .check-container{
            background-color: var(--clr-print-gray);
            border-radius: 1em;
       }

       #hope-feature-container{
        padding: 0.25em;
        text-align: center;

        p{
            text-align: center;
        }
       }
    }

    .experience-container{
        padding: 1em;
        border: 1px solid var(--clr-print-dark);
        font-size: 80%;

        .xp-list-container{
            width: 100%;
            display: grid;
            grid-template-columns: 5fr 1fr;
        }
    }
    .class-feature-container{
        padding: 1em;
        border: 1px solid var(--clr-print-dark);
        min-height: 200px;
        font-size: 80%
    }
    .active-weapon-container{
        display: flex;
        flex-direction: column;
        justify-content: flex-start;
        align-items: flex-start;
        gap: 0.5em;
        padding: 1em;
        border: 1px solid var(--clr-print-dark);
    }
    .primary-weapon-container, .secondary-weapon-container{
        padding-top: 0.5em;
        border-top: 1px solid var(--clr-print-dark);
    }
    .active-armor-container{
        display: flex;
        flex-direction: column;
        justify-content: flex-start;
        align-items: flex-start;
        gap: 0.5em;
        padding: 1em;
        border: 1px solid var(--clr-print-dark);
    }
    .inventory-container{
        display: flex;
        flex-direction: column;
        justify-content: flex-start;
        align-items: flex-start;
        gap: 0.5em;
        padding: 1em;
        border: 1px solid var(--clr-print-dark);

        textarea{
            width: 100%;
            height: 200px;
            padding: 0.5em;
        }

        .gold-list-container{
            display: grid;
            grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
            gap: 0.25em;
            text-align: right;
            input[type="number"]{
                width: 50px;
            }
        }
    }
    .footer{
        position: absolute;
        bottom: 0;
        left: 0;
        width: 100%;
        height: 40px;
        background-color: var(--clr-print-gray);
        border-top: 2px solid var(--clr-print-dark);
    }
}


