﻿/*
Copyright (c) 2026 Robert A. Howell
JetBrains fonts provided by FrontEnd Mentor, January 2026
*/
@font-face {
    font-family: 'JetBrains Mono';
    src: url('../assets/fonts/JetBrainsMono-VariableFont_wght.ttf') format('truetype-variations');
    font-weight: 100 800;
    font-style: normal;
}

@font-face {
    font-family: 'JetBrains Mono';
    src: url('../assets/fonts/JetBrainsMono-Italic-VariableFont_wght.ttf') format('truetype-variations');
    font-weight: 100 800;
    font-style: italic;
}

:root {
    --font-main: 'JetBrains Mono';
}

body {
    font-family: var(--font-main), monospace;
}

:root {
    --color-white: hsl(0, 100%, 100%);
    --color-black: hsl(0, 0%, 0%);
    --color-grey-950: hsl(248, 22%, 4%);
    --color-grey-900: hsl(248, 17%, 9%);
    --color-grey-850: hsl(248, 15%, 11%);
    --color-grey-800: hsl(248, 10%, 15%);
    --color-grey-700: hsl(248, 5%, 34%);
    --color-grey-600: hsl(251, 9%, 53%);
    --color-grey-200: hsl(252, 11%, 91%);
    --color-accent: hsl(127, 100%, 82%);
    --color-yellow: hsl(42, 91%, 68%);
    --color-orange: hsl(13, 95%, 66%);
    --color-red: hsl(0, 91%, 63%);
    --color-gradient: 
        linear-gradient(hsl(248, 17%, 9%), hsl(255, 22%, 4%));
    
    --spacing-100: 8px;
    --spacing-200: 16px;
    --spacing-300: 24px;
    --spacing-400: 32px;
    --spacing-700: 56px;
    --spacing-1000: 80px;
    --spacing-1300: 104px;
    --spacing-1600: 128px;
    --spacing-2000: 160px;
    --spacing-2200: 176px;
    --spacing-2300: 184px;
}

*, *::before, *::after {
    box-sizing: border-box;
}

body {
    margin: 0;
    background: var(--color-gradient);
    height: 100vh;
    color: var(--color-white);
}

#password-generator {
    max-width: 580px;
    max-height: 696px;
    display: flex;
    flex-wrap: nowrap;
    flex-direction: column;
    justify-content: space-between;
    padding: var(--spacing-1000) var(--spacing-200);    
    
    & #section-1 {
        
        & h1 {
            margin-block: 0;
            font-size: 1rem;
            text-align: center;
            color: var(--color-grey-600);
            line-height: 20px;
        }
    }
    
    & #section-2 {
        margin-top: var(--spacing-200);
        padding: var(--spacing-200);
        background-color: var(--color-grey-800);
        
        & span#generated-password {
            color: var(--color-grey-700);
            font-size: var(--spacing-300);
            font-weight: bold;
            display: inline-block;
            text-wrap: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        
        & #copy-password {
            border: none;
            background-color: inherit;
            color: var(--color-accent);
            display: flex;
            align-items: center;
            font-weight: bold;
            text-transform: uppercase;
            
            & svg {
                margin-left: var(--spacing-200);
            }
        }
    }
    
    & #section-3 {
        margin-top: var(--spacing-200);
        padding: var(--spacing-200);
        background-color: var(--color-grey-800);
        
        & .input-separate {
            margin-top: var(--spacing-400);
        }
        
        & label[for="character-length"] {
            color: var(--color-grey-200);
            font-size: var(--spacing-200);
            line-height: 20px;
        }
        
        & #char-length {
            color: var(--color-accent);
            font-size: var(--spacing-300);
            font-weight: bold;
            line-height: var(--spacing-300);
        }
        
        & #character-length {
            color: var(--color-grey-200);
            font-size: var(--spacing-200);
            line-height: 20px;
            display: block;
            width: 100%;
            accent-color: var(--color-accent);
        }

        & input[type="checkbox"] {
            accent-color: var(--color-accent);
            cursor: pointer;
        }
        
        & input + label {
            color: var(--color-grey-200);
            font-size: var(--spacing-200);
            line-height: 20px;
        }
        
        & .flex-space-between.input-separate {
            padding: 14px;
            color: var(--color-grey-200);
            font-size: var(--spacing-200);
            line-height: 20px;
            background-color: var(--color-grey-850);
        }

        & label[for="Password-Strength"] {
            color: var(--color-grey-600);
        }
        
        & #generate-password {
            width: 100%;
            margin-top: var(--spacing-200);
            background-color: var(--color-accent);
            border: none;
            height: 3.5rem;
            color: var(--color-grey-800);
            font-weight: bold;
            text-transform: uppercase;
            
            & svg {
                margin-left: var(--spacing-200);
            }
        }
    }

    #section-2[data-init="False"] {
        display: none;
    }
    
    & .flex-space-between {
        width: 100%;
        display: flex;
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }
}
