body {
    display: flex;
    flex-direction: column;
    width: 100%;
    min-height: 100vh; /* min-height is important here, because it is a loose constraint that may be exceeded if there is more page content */
}
body > *:not(dialog) {
    width: 100%;
}
* {
    /* margin padding and box sizing */
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* remove text decoration, color and transition settings for anchor tags */
a {
    text-decoration: none;
    color: inherit;
    transition: color 300ms ease;
}

a.prevent-default-a {
    transition: unset;
}

a:not(.prevent-default-a):hover {
    color: var(--main-gray-3);
}

a:not(.prevent-default-a):visited {
    color: inherit;
}

a:not(.prevent-default-a):focus {
    border: none;
    outline: none;
    color: var(--main-orange);
    /* background: var(--main-gray-6) */
}

a.justDont,
a.justDont:hover,
a.justDont:visited,
a.justDont:active,
a.justDont:focus {
    transition: none;
    color: inherit;
}

/* show pointer cursor on button hover */
button:hover {
    cursor: pointer;
}

/* default styling for input fields */
input, textarea, button, select {
    font-family: "Open Sans", Arial, sans-serif;
    border: 0;
    outline: 0;
    color: inherit;
    background: none;
}

input, textarea:not(.ignore-default-styles), button {
    font-weight: 400;
    font-size: var(--regular-fs);
    line-height: var(--regular-lh);

    color: var(--main-gray-1);
    background: var(--main-white);
}

button.ignore-default-styles {
    font-weight: unset;
    text-align: unset;
}

/* dialog styling */
dialog {
    background: none;
    color: inherit;
    border: none;
}

dialog::backdrop {
    background: none;
}

dialog:focus-visible {
    outline: 0;
}

/* prevent scrolling if any dialog is open */
body:has(dialog[open]) {
    overflow: hidden;
}
