* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: Roboto, monospace;
    font-variant-numeric: tabular-nums;
}

body {
    background-color: var(--color-white);
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    height: 100vh;
}

:root {
    --color-accent: #5e5bf5;
    --color-accent-light: #00a5ff;
    --color-error: #e60029;
    --color-error-lighter: #e83959;
    --color-dark: #484554;
    --color-grey: #ada9bb;
    --color-grey-lighter: #bab8c0;
    --color-white: #fbf8ff;
}

header, footer {
    background-color: var(--color-accent);
    color: var(--color-white);
    box-shadow: 0px 0px 1vh var(--color-dark);
    height: 48px;
}

/* header */
header {
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 32px;
    font-weight: 900;
}

/* calculator */
#calculator {
    box-shadow: 0px 0px 2vh var(--color-dark);
    border: 4px solid var(--color-dark);
    width: 400px;
    border-radius: 32px;
    overflow: hidden;
    align-self: center;
    display: flex;
    flex-direction: column;
}

/* --- header */
#calculator-header {
    height: 100px;
    background-color: var(--color-dark);
    color: var(--color-white);
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    align-items: flex-end;
}

#status-line {
    opacity: 50%;
    margin-right: 32px;
    font-size: 12px;
}

#output-display {
    height: 48px;
    background-color: var(--color-white);
    color: var(--color-dark);
    text-align: end;
    display: flex;
    justify-content: flex-end;
    align-items: center;
    align-self: stretch;
    margin: 8px;
    padding-right: 8px;
    border-radius: 8px;
    font-size: 32px;
}

/* --- input */
#calculator-input {
    padding: 8px 0px;
    height: 100%;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    align-content: center;
    gap: 16px;
}

.calculator-button {
    background-color: var(--color-grey);
    height: 80px;
    width: 80px;
    display: flex;
    justify-content: center;
    align-items: center;
    border-radius: 12%;
    user-select: none;
    font-weight: 900;
    font-size: 32px;
}

.calculator-button:hover {
    background-color: var(--color-grey-lighter);
}

/* footer */
footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 15%;
}

a#TOP {
    color: var(--color-white);
}

/* accents */
.light-accent {
    background-color: var(--color-accent-light);
    color: var(--color-white);
}

.light-accent:hover {
    background-color: var(--color-accent);
}

.accent {
    background-color: var(--color-accent);
    color: var(--color-white);
}

.accent:hover {
    background-color: var(--color-accent-light);
}

.danger {
    background-color: var(--color-error);
    color: var(--color-white);
}

.danger:hover {
    background-color: var(--color-error-lighter);
}