* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    font-size: 16px;
    scroll-behavior: smooth;
}

body {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    background-color: var(--color-background);
    color: var(--color-text);
    font-family: Arial, sans-serif;
}

main#main-content {
    flex: 1;
}

/* header */
:root {
    --space-extra-small: 0.25rem;
    --space-small: 0.5rem;
    --space-medium: 1rem;
    --space-large: 1.7rem;

    --font-size-small: 0.875rem;
    --font-size-medium: 1rem;
    --font-size-large: 1.25rem;
    --font-size-extra-large: 2rem;

    --color-background: #ffffff;
    --color-background-hover: #f0f0f0;
    --color-text: #111111;
    --color-text-muted: #666666;
    --color-border: #e0e0e0;
    --color-accent: #0057ff;
    --color-link: #0027ff;
    --color-link-visited: #001fbf;
    --color-link-active: #00b2ff;

    /* header */
    --header-height: 3.5rem;

    /* index */
    --index-grid-max-width: 100vw;

    /* page / boxes */
    --line-height: 1.7;
    --border-radius: 0.3rem;
    --box-grid-min-width: 20rem;
    --box-grid-max-width: 120rem;

    /* blog boxes */
    --blog-card-width: 20rem;
    --blog-card-image-height: 14rem;
}

[data-theme="dark"] {
    --color-background: #111111;
    --color-background-hover: #222222;
    --color-text: #f0f0f0;
    --color-text-muted: #999999;
    --color-border: #333333;
    --color-accent: #4d8aff;
    --color-link: #32ee00;
    --color-link-visited: #2ab500;
    --color-link-active: #ff9200;
}

/* footer */
body {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

main#main-content {
    flex: 1;
}

a.external-link:link    { color: var(--color-link); }
a.external-link:visited { color: var(--color-link-visited); }
a.external-link:active  { color: var(--color-link-active); }
a.external-link:after  { content: '↗️'; }
