/*
Theme Name: Sterpunt
Author: Studio Rude Box
Author URI: http://studiorudebox.nl
Description: Utility classes
Version: 1.0.0
Text Domain: sterpunt
*/

/*########################################################################
#	UTILITY CLASSES
########################################################################*/

/**
* utility-first system for basic layout
*/
.flex { display: flex; }
.inline-flex { display: inline-flex; }
.block {display: block;}
.grid {display: grid;}

/* direction */
.flex-row { flex-direction: row; }
.flex-col { flex-direction: column; }
.flex-row-rev { flex-direction: row-reverse; }
.flex-col-rev { flex-direction: column-reverse; }

/* flex */
.flex-auto { flex: auto; }
.flex-1 { flex: 1; }
.flex-2 { flex: 2; }
.flex-3 { flex: 3; }
.flex-4 { flex: 4; }
.flex-gr-a { flex: 0.618; }
.flex-gr-b { flex: 0.382; }

/* justify-content (horizontal) */
.justify-start { justify-content: flex-start; }
.justify-center { justify-content: center; }
.justify-end { justify-content: flex-end; }
.justify-between { justify-content: space-between; }
.justify-around { justify-content: space-around; }
.justify-evenly { justify-content: space-evenly; }

/* align-items (vertical) */
.items-start { align-items: flex-start; }
.items-center { align-items: center; }
.items-end { align-items: flex-end; }
.items-baseline { align-items: baseline; }
.items-stretch { align-items: stretch; }

/* flex-wrap */
.flex-wrap { flex-wrap: wrap; }
.flex-nowrap { flex-wrap: nowrap; }
.flex-wrap-reverse { flex-wrap: wrap-reverse; }

/* lists */
ul.list-none, ol.list-none {margin: 0;}
ul.list-none > li, ol.list-none > li {list-style: none; margin-left: 0;}

/* padding and margins */
.p-0 {padding: 0 !important;}
.m-0 {margin: 0 !important;}

/* hide items */
.hidden {display: none;}
.visually-hidden {/* make it still visible for screen readers */
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    border: 0;
}
.collapsible {
    max-height: 0;
    padding: 0;
    opacity: 0;
    transition: max-height 300ms ease-in-out,
    opacity 200ms ease-in-out;
    overflow: hidden;
}
.collapsible.expanded {max-height: 500px; opacity: 1;} /* placeholder height, this will be controlled by JS */

/* responsive breakpoints */
@media (min-width: 640px) { /* sm: 40em */
    .sm\:flex { display: flex; }
    .sm\:block { display: block; }
    .sm\:grid { display: grid; }
    .sm\:hidden { display: none; }
    .sm\:flex-row { flex-direction: row; }
    .sm\:flex-col { flex-direction: column; }
    .sm\:flex-row-rev { flex-direction: row-reverse; }
    .sm\:flex-col-rev { flex-direction: column-reverse; }
    .sm\:justify-start { justify-content: flex-start; }
    .sm\:justify-center { justify-content: center; }
    .sm\:justify-end { justify-content: flex-end; }
    .sm\:justify-between { justify-content: space-between; }
    .sm\:justify-around { justify-content: space-around; }
    .sm\:justify-evenly { justify-content: space-evenly; }
    .sm\:items-start { align-items: flex-start; }
    .sm\:items-center { align-items: center; }
    .sm\:items-end { align-items: flex-end; }
    .sm\:items-baseline { align-items: baseline; }
    .sm\:items-stretch { align-items: stretch; }
    .sm\:flex-1 { flex: 1 !important; }
    .sm\:flex-2 { flex: 2 !important; }
    .sm\:flex-3 { flex: 3 !important; }
    .sm\:flex-4 { flex: 4 !important; }
    .sm\:flex-gr-a { flex: 0.618 !important; }
    .sm\:flex-gr-b { flex: 0.382 !important; }
}

@media (min-width: 768px) { /* md: 48em */
    .md\:flex { display: flex; }
    .md\:block { display: block; }
    .md\:grid { display: grid; }
    .md\:hidden { display: none; }
    .md\:flex-row { flex-direction: row; }
    .md\:flex-col { flex-direction: column; }
    .md\:flex-row-rev { flex-direction: row-reverse; }
    .md\:flex-col-rev { flex-direction: column-reverse; }
    .md\:justify-start { justify-content: flex-start; }
    .md\:justify-center { justify-content: center; }
    .md\:justify-end { justify-content: flex-end; }
    .md\:justify-between { justify-content: space-between; }
    .md\:justify-around { justify-content: space-around; }
    .md\:justify-evenly { justify-content: space-evenly; }
    .md\:items-start { align-items: flex-start; }
    .md\:items-center { align-items: center; }
    .md\:items-end { align-items: flex-end; }
    .md\:items-baseline { align-items: baseline; }
    .md\:items-stretch { align-items: stretch; }
    .md\:flex-1 { flex: 1 !important; }
    .md\:flex-2 { flex: 2 !important; }
    .md\:flex-3 { flex: 3 !important; }
    .md\:flex-4 { flex: 4 !important; }
    .md\:flex-gr-a { flex: 0.618 !important; }
    .md\:flex-gr-b { flex: 0.382 !important; }
}

@media (min-width: 1024px) { /* lg: 64em */
    .lg\:flex { display: flex; }
    .lg\:block { display: block; }
    .lg\:grid { display: grid; }
    .lg\:hidden { display: none; }
    .lg\:flex-row { flex-direction: row; }
    .lg\:flex-col { flex-direction: column; }
    .lg\:flex-row-rev { flex-direction: row-reverse; }
    .lg\:flex-col-rev { flex-direction: column-reverse; }
    .lg\:justify-start { justify-content: flex-start; }
    .lg\:justify-center { justify-content: center; }
    .lg\:justify-end { justify-content: flex-end; }
    .lg\:justify-between { justify-content: space-between; }
    .lg\:justify-around { justify-content: space-around; }
    .lg\:justify-evenly { justify-content: space-evenly; }
    .lg\:items-start { align-items: flex-start; }
    .lg\:items-center { align-items: center; }
    .lg\:items-end { align-items: flex-end; }
    .lg\:items-baseline { align-items: baseline; }
    .lg\:items-stretch { align-items: stretch; }
    .lg\:flex-1 { flex: 1 !important; }
    .lg\:flex-2 { flex: 2 !important; }
    .lg\:flex-3 { flex: 3 !important; }
    .lg\:flex-4 { flex: 4 !important; }
    .lg\:flex-gr-a { flex: 0.618 !important; }
    .lg\:flex-gr-b { flex: 0.382 !important; }
}

@media (min-width: 1280px) { /* xl: 80em */
    .xl\:flex { display: flex; }
    .xl\:block { display: block; }
    .xl\:grid { display: grid; }
    .xl\:hidden { display: none; }
    .xl\:flex-row { flex-direction: row; }
    .xl\:flex-col { flex-direction: column; }
    .xl\:flex-row-rev { flex-direction: row-reverse; }
    .xl\:flex-col-rev { flex-direction: column-reverse; }
    .xl\:justify-start { justify-content: flex-start; }
    .xl\:justify-center { justify-content: center; }
    .xl\:justify-end { justify-content: flex-end; }
    .xl\:justify-between { justify-content: space-between; }
    .xl\:justify-around { justify-content: space-around; }
    .xl\:justify-evenly { justify-content: space-evenly; }
    .xl\:items-start { align-items: flex-start; }
    .xl\:items-center { align-items: center; }
    .xl\:items-end { align-items: flex-end; }
    .xl\:items-baseline { align-items: baseline; }
    .xl\:items-stretch { align-items: stretch; }
    .xl\:flex-1 { flex: 1 !important; }
    .xl\:flex-2 { flex: 2 !important; }
    .xl\:flex-3 { flex: 3 !important; }
    .xl\:flex-4 { flex: 4 !important; }
    .xl\:flex-gr-a { flex: 0.618 !important; }
    .xl\:flex-gr-b { flex: 0.382 !important; }
}

@media (min-width: 1536px) { /* 2xl: 96em */
    .\32xl\:flex { display: flex; }
    .\32xl\:block { display: block; }
    .\32xl\:grid { display: grid; }
    .\32xl\:hidden { display: none; }
    .\32xl\:flex-row { flex-direction: row; }
    .\32xl\:flex-col { flex-direction: column; }
    .\32xl\:flex-row-rev { flex-direction: row-reverse; }
    .\32xl\:flex-col-rev { flex-direction: column-reverse; }
    .\32xl\:justify-start { justify-content: flex-start; }
    .\32xl\:justify-center { justify-content: center; }
    .\32xl\:justify-end { justify-content: flex-end; }
    .\32xl\:justify-between { justify-content: space-between; }
    .\32xl\:justify-around { justify-content: space-around; }
    .\32xl\:justify-evenly { justify-content: space-evenly; }
    .\32xl\:items-start { align-items: flex-start; }
    .\32xl\:items-center { align-items: center; }
    .\32xl\:items-end { align-items: flex-end; }
    .\32xl\:items-baseline { align-items: baseline; }
    .\32xl\:items-stretch { align-items: stretch; }
    .\32xl\:flex-1 { flex: 1 !important; }
    .\32xl\:flex-2 { flex: 2 !important; }
    .\32xl\:flex-3 { flex: 3 !important; }
    .\32xl\:flex-4 { flex: 4 !important; }
    .\32xl\:flex-gr-a { flex: 0.618 !important; }
    .\32xl\:flex-gr-b { flex: 0.382 !important; }
}

@media (min-width: 1792px) { /* 3xl: 112em */
    .\33xl\:flex { display: flex; }
    .\33xl\:block { display: block; }
    .\33xl\:grid { display: grid; }
    .\33xl\:hidden { display: none; }
    .\33xl\:flex-row { flex-direction: row; }
    .\33xl\:flex-col { flex-direction: column; }
    .\33xl\:flex-row-rev { flex-direction: row-reverse; }
    .\33xl\:flex-col-rev { flex-direction: column-reverse; }
    .\33xl\:justify-start { justify-content: flex-start; }
    .\33xl\:justify-center { justify-content: center; }
    .\33xl\:justify-end { justify-content: flex-end; }
    .\33xl\:justify-between { justify-content: space-between; }
    .\33xl\:justify-around { justify-content: space-around; }
    .\33xl\:justify-evenly { justify-content: space-evenly; }
    .\33xl\:items-start { align-items: flex-start; }
    .\33xl\:items-center { align-items: center; }
    .\33xl\:items-end { align-items: flex-end; }
    .\33xl\:items-baseline { align-items: baseline; }
    .\33xl\:items-stretch { align-items: stretch; }
    .\33xl\:flex-1 { flex: 1 !important; }
    .\33xl\:flex-2 { flex: 2 !important; }
    .\33xl\:flex-3 { flex: 3 !important; }
    .\33xl\:flex-4 { flex: 4 !important; }
    .\33xl\:flex-gr-a { flex: 0.618 !important; }
    .\33xl\:flex-gr-b { flex: 0.382 !important; }
}

/* border radius */
.rounded-md { border-radius: 0.375rem; }
.rounded-lg { border-radius: 0.5rem; }
.rounded-xl { border-radius: 0.75rem; }
.rounded-2xl { border-radius: 1rem; }
.rounded-3xl { border-radius: 1.5rem; }
.rounded-4xl { border-radius: 2rem; }
.rounded-full { border-radius: 9999px; }

/* icons */
.icon {
    font-size: var(--font-size-base); /* reset the font-size of every icon container to base size so I can use responsive em in sizing */
    display: inline-flex;
    justify-content: center;
    align-items: center;
    min-width: 2.5rem;
    min-height: 2.5rem; /* make the touchpoint big enough to be accessible */
    max-width: fit-content;
}

.icon:hover {
    color: var(--color-primary-brand);
}

.icon-sm svg {width: 1em; height: auto;}
.icon-base svg {width: 1.25em; height: auto;}
.icon-lg svg {width: 2em; height: auto;}
.icon-xl svg {width: 2.5em; height: auto;}
.icon-2xl svg {width: 3em; height: auto;}
.icon-3xl svg {width: 4em; height: auto;}
.icon-4xl svg {width: 6em; height: auto;}
.icon-5xl svg {width: 10em; height: auto;}

/* word break */
.word-break {
    word-break: break-word;
    overflow-wrap: break-word;
    word-wrap: break-word;
    hyphens: auto;
}