


/*
  Palette:
  Text: 24, 24, 24
  Text: 84, 84, 84
  Header/Footer 242, 242, 242
  
  Primary: 32, 164, 242
  Light: 81, 185, 245
  Dark: 12, 139, 212
  
  OLDPrimary: 30, 100, 100
  OLDSecondary: 103, 193, 223
  
  Paragraph: 18-18
  Line-heights: 1.5
  
  H0 for site heading 60-40
  H1 page title 42-28
  H2 for section headings 34-24
  H3 for paragraphs headings 22-20
  H1 and H2 must follow a <hr>
  
  
  
  
*/



/*PAGE============================================================================*/

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

*:focus {
  outline: none;
}

html {
  -webkit-text-size-adjust: 100%; /* Prevent font scaling in landscape while allowing user zoom */
}

body {
  background-color: white;
  color: rgb(44, 44, 44);
  color: rgb(84, 84, 84);
  font-family: arial, sans-serif;
  font-size: 18px;
  font-style: normal;
  min-width: 375px;
  text-align: left;
}

section {
  margin: 100px 0;
}


header {
  background-color: rgb(242, 242, 242);
  box-sizing: border-box;
  color: black;
  font-size: 13px;
  text-align: left;
  text-transform: uppercase;
  padding: 0;
  height: 40px;
  width: 100%;
  align-items: flex-start;
  box-sizing: border-box;
  display: flex;
  flex-wrap: wrap;
  overflow: hidden;
  position: sticky;
  top: 0;
  z-index: 9999;
}

header a {
  color: black !important;
  box-sizing: border-box;
  flex: 0 0 auto;
  font-weight: bold;
  height: 40px;
  line-height: 40px;
  padding: 0 20px;
  user-select: none;
}

header a:hover {
  color: black;
  cursor: pointer;
  text-decoration: underline;
}

header div {
  color: grey;
  box-sizing: border-box;
  flex: 0 0 auto;
  height: 40px;
  line-height: 40px;
  padding: 0 20px;
  user-select: none;
}
@media (max-width: 750px) {header div {display: none;}}

footer {
  width: 100%;
  background-color: rgb(242, 242, 242);
  color: rgb(104, 104, 104);
  text-align: left;
  padding: 100px 0;
}

.footer_logo {
  border-radius: 50%;
  cursor: pointer;
  display: inline-block;
  height: 150px;
  width: 150px;
  opacity: 0.57;
  opacity: 1;
  transition: opacity 3s;
}

.footer_logo[data-src] {opacity: 0;}
.footer_description {max-width: 400px;}
.footer_copyright {color: rgb(152, 152, 152); font-size: 14px; font-style: italic; max-width: 400px;}
.footer_disclaimer {color: rgb(152, 152, 152); font-size: 14px; font-style: italic; max-width: 400px;}



/*GLOBAL============================================================================*/

.grey {background-color: rgb(242, 242, 242) !important;}
.hidden {display: none !important;}
.monospace {font-family: monospace !important;}
.output {color: rgb(32, 164, 242) !important; font-weight: bold !important;}



/*TEXT============================================================================*/

a {
  color: rgb(32, 164, 242);
  cursor: pointer;
  text-decoration: none;
}

a:hover {text-decoration: underline;}

figcaption {
  color: rgb(118, 118, 118);
  font-size: 14px;
  margin: 10px 0 0;
  text-align: center;
}

h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
  color: black;
}

/* page title */
h1 {
  padding: 0;
  margin: 0;
  color: black;
  font-size: 42px;
}

/* section heading */
h2 {
  padding: 0;
  margin: 100px 0 0;
  color: black;
  font-size: 34px;
}

/* sub section heading -  outlined */
h3 {
  background-color: rgb(32, 164, 242);
  background-color: rgb(28, 28, 28);
  background-color: black;
  color: white;
  font-size: 13px;
  height: 40px;
  line-height: 20px;
  margin: 60px 0 20px;
  padding: 10px 20px;
}

/* card heading */
h4 {
  color: black;
  font-size: 20px;
}

/*@media screen and (max-width: 500px) {
  h1 {font-size: 28px;}
  h2 {font-size: 24px;}
  h4 {font-size: 20px;}
}*/

p {
  margin: 20px 0 0;
  line-height: 1.6em;
  width: 100%;
}

footer p {
  line-height: 1.6em;
}

hr {
  border: none;
  background-color: rgb(200, 200, 200);
  height: 1px;
  margin: 100px 0;
  width: 100%;
}

ol {
  line-height: 1.6em;
  list-style-position: outside;
  margin: 20px 0 0;
  padding: 0 0 0 20px;
}

ol li {padding: 4px 0 4px 20px;}

ul {
  line-height: 1.6em;
  list-style-position: outside;
  list-style-type: none;
  margin: 20px 0 0;
  padding-left: 16px;
}

ul li {padding: 4px 0 4px 26px;}

ul li::before {
  content: "\2B24";
  color: black;
  color: rgb(32, 164, 242);
  color: rgb(44, 44, 44);
  color: rgb(84, 84, 84);
  font-weight: bold;
  display: inline-block;
  width: 40px;
  float: left; margin-left: -40px;
}



/*FORMS============================================================================*/

.group {
  margin: 0 0 30px;
  width: 100%;
}

button, input, select, datalist, textarea {
  background: none;
  border: none;
  border-radius: 0;
  color: inherit;
  font-family: arial, sans-serif; 
  font-size: 18px;
  font-style: normal;
  text-align: left;
}

button, input, select, datalist, textarea, a {
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  -webkit-tap-highlight-color: transparent;
}

button, a.button {
  background: rgb(32, 164, 242);
  border: none;
  border-radius: 0;
  color: white;
  cursor: pointer;
  display: inline-block;
  font-family: arial, sans-serif; 
  font-size: 18px;
  font-weight: bold;
  text-align: center;
  padding: 15px 30px;
  margin: 20px 20px 0 0;
  max-width: 100%;
  vertical-align: middle;
  position: relative;
  user-select: none;
}

button:hover, a.button:hover {
  background-color: rgb(12, 139, 212);
  text-decoration: none;
}

button:disabled, input:disabled, select:disabled, datalist:disabled, textarea:disabled {
  color: rgb(84, 84, 84);
  opacity: 1;
}

.button.icon {
  background-repeat: no-repeat;
  background-position: 10px 50%;
  background-size: 0;
  border: 1px solid transparent;
  padding-left: 60px
}

.button.icon:before {
  content: "";
  background-color: transparent;
  background-image: inherit;
  background-repeat: no-repeat;
  background-position: 50%;
  background-size: 32px;
  position: absolute;
  top: 50%;
  left: 15px;
  height: 32px;
  width: 32px;
  filter: invert(1);
  transform: translate(0, -50%);
}

label {
  color: rgb(28, 28, 28);
  font-size: 15px;
  font-weight: bold;
  margin: 0 0 10px;
  width: 100%;
  user-select: none;
}

input, select {
  border: 1px solid rgb(28, 28, 28);
  border-radius: 0;
  box-shadow: none;
  box-sizing: border-box;
  background-color: transparent;
  color: inherit;
  text-align: left;
  margin: 0;
  outline: none;
  padding: 0 0 0 20px;
  line-height: 50px;
  height: 50px;
  width: 100%;
  user-select: none;
  /*transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out, -webkit-box-shadow .15s ease-in-out;*/
}

input:focus, select:focus {
  border-color: rgb(32, 164, 242) !Important;
  box-shadow: 0 0 0 3px rgb(32 164 242 / 25%);
}

input:read-only:focus {
  border-color: rgb(127, 127, 127) !Important;
  box-shadow: 0 0 0 3px rgb(127 127 127 / 25%);
}

input:read-only {background-color: rgb(242, 242, 242);}

input[type=checkbox]:focus {
  border-color: none;
  box-shadow: none;
  -webkit-box-shadow: none;
}

input[type=file] {
  background-color: rgb(32 164 242 / 25%);
  background-image: url('data:image/svg+xml;utf8,<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><path fill="rgb(32, 164, 242)" stroke="none" stroke-width="0" fill-rule="nonzero" d="M11 40q-1.2 0-2.1-.9Q8 38.2 8 37v-7.15h3V37h26v-7.15h3V37q0 1.2-.9 2.1-.9.9-2.1.9Zm13-7.65-9.65-9.65 2.15-2.15 6 6V8h3v18.55l6-6 2.15 2.15Z"></path></svg>');
  background-repeat: no-repeat;
  background-position: center;
  background-size: 60px 60px;
  border: dashed 2px rgb(32, 164, 242);
  cursor: pointer;
  height: 254px;
  text-indent: -999em;
}

select {
  cursor: pointer;
  padding: 0 15px;
}

textarea {
  border: 1px solid rgb(118, 118, 118);
  box-sizing: border-box;
  font-family: monospace;
  font-size: 14px;
  display: block;
  overflow-y: scroll;
  padding: 10px;
  resize: none;
  width: 100%;
}

.calculated {
  color: grey;
  font-size: 13px;
  font-style: italic;
  margin: 0;
}



/*IMG============================================================================*/

img {opacity: 1; transition: opacity 3s; height: 100%; width: 100%; vertical-align: middle;}
img[data-src] {opacity: 0;}

.img_cover {object-fit: cover;}
.img_contain {object-fit: contain;}
.img_inline {margin: 20px 0 0; width: 100%;}
.img_logo {display: inline-block; width: 150px;}



/*MARGIN============================================================================*/

.margin {margin: 0 auto; max-width: 1000px; padding: 20px;}
.margin.nopad {padding: 0;}
.margin.grey {background-color: rgb(242, 242, 242); padding: 0;}
.margin.narrow {max-width: 375px;}
.margin.quote {max-width: 500px;}
.margin.article {max-width: 750px;}
.margin.normal {max-width: 1000px;}
.margin.wide {max-width: 1500px;}
.margin.full {max-width: 100%;}



/*CONTAINER============================================================================*/

.container {margin: 20px 0 0; width: 100%;}



/*GRID============================================================================*/

.grid1 {display: grid; grid-template-columns: 1fr; gap: 40px; margin-top: 20px;}
.grid2 {display: grid; grid-template-columns: 1fr 1fr; gap: 40px; margin-top: 20px;}
.grid3 {display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 40px; margin-top: 20px;}
.grid4 {display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; gap: 40px; margin-top: 20px;}
@media (max-width: 1200px) {.grid4 {grid-template-columns: 1fr 1fr 1fr;}}
@media (max-width: 900px) {.grid3, .grid4 {grid-template-columns: 1fr 1fr;}}
@media (max-width: 600px) {.grid2, .grid3, .grid4 {grid-template-columns: 1fr;}}



/*CARDS============================================================================*/

.card_icon {
  height: 220px;
  overflow: hidden;
  position: relative;
  display: block;
  width: 100%;
}

.card_icon * {
  height: 100%;
  object-fit: cover;
  opacity: 1;
  position: absolute;
  transform: scale(1.01);
  transition: opacity 3s;
  width: 100%;
}

.card_icon *[data-src] {opacity: 0;}

.card_thumbnail {
  height: 220px;
  overflow: hidden;
  position: relative;
  display: block;
  width: 100%;
}

.card_thumbnail * {
  filter: grayscale(100%) brightness(70%);
  height: 100%;
  object-fit: cover;
  opacity: 1;
  position: absolute;
  transform: scale(1.01);
  transition: opacity 3s, transform 300ms ease-in-out, filter 300ms ease-in-out;
  width: 100%;
}

.card_thumbnail *[data-src] {opacity: 0;}


@media (hover: hover) and (pointer: fine) {
  .card_thumbnail:hover * {transform: scale(1.1); filter: none;}
}

.card_text {padding: 20px 0; width: 100%;}
.card_caption {padding: 20px 40px; text-align: center; width: 100%;}



/*CATEGORY============================================================================*/

.category {
  background-color: rgb(84, 84, 84);
  border-radius: 20px;
  border:none;
  color: white;
  display: inline-block;
  font-size: 14px;
  font-weight: normal;
  height: 24px;
  line-height: 24px;
  margin: 0 10px 20px 0;
  outline: none;
  padding: 0 12px;
  text-transform: uppercase;
  user-select: none;
}

.category.blue {background-color: #00B3FF;}
.category.purple {background-color: #8000FF;}
.category.orange {background-color: #FF9900;}
.category.red {background-color: #FF002E;}
.category.pink {background-color: #FF0099;}
.category.green {background-color: #00FF80;}



/*EQUATION============================================================================*/

.equation {
  color: rgb(44, 44, 44);
  color: rgb(84, 84, 84);
  color: black;
  margin: 20px 0;
}



/*ERROR 404============================================================================*/

.error_image {
  width: 300px;
  max-width: 70%;
  position: fixed;
  top: 50%;
  left: calc(50% + 30px);
  transform: translate(-50%, -50%);
  opacity: 1;
  transition: opacity 3s;
}

.error_image[data-src] {
  opacity: 0;
}

.error_text {
  width: 100%;
  position: fixed;
  top: 80%;
  left: calc(50% + 30px);
  font-size: 2em; /* 1.8em */
  line-height: 1.6em;
  transform: translate(-50%, -50%);
  z-index: 1;
  color: rgb(122, 122, 122);
  text-align: center;
}



/*NOTICE============================================================================*/

.notice {
  color: white;
  margin: 20px 0;
  background-color: grey;
  padding: 20px;
}

.notice.error {
  background-color: red;
}



/*SEARCH============================================================================*/

.search {
  display: flex;
  height: 52px;
  margin: 20px 0 0;
  max-width: 400px;
  width: 100%;
  position: relative;
}

.search_input {
  flex-grow: 1;
  font-size: 18px;
  height: 50px;
  line-height: 50px;
  margin: 0px;
  min-width: 0;
  outline: none;
  padding-right: 50px;
  width: 100%;
  position: absolute;
  left: 0;
  top: 0;
}

.search_input:focus::placeholder {
  color: rgb(32, 164, 242);
}

.search_button {
  background-repeat: no-repeat;
  background-position: center;
  background-size: 26px;
  cursor: pointer;
  flex: 0 0 40px;
  height: 50px;
  opacity: 0.672;
  width: 50px;
  position: absolute;
}

.search_button:hover {
  opacity: 1;
}

.search_button.reset {
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><path fill="black" d="m12.45 37.65-2.1-2.1L21.9 24 10.35 12.45l2.1-2.1L24 21.9l11.55-11.55 2.1 2.1L26.1 24l11.55 11.55-2.1 2.1L24 26.1Z"></path></svg>');
  right: 0;
  top: 0;
}



/*INDEX PAGE============================================================================*/

.index_header {
  width: 100%;
  padding: 20px;
}

.index_header h1 {
  display: inline-block; width: auto; vertical-align: middle;
}

.index_headerButton {
  float: right !important;
  margin: 0 0 0 20px !important;
}
@media (max-width: 800px) {.index_headerButton {display: none !important;}}



/*MENU============================================================================*/

.menu_button {
  background-color: transparent;
  background-image: url('data:image/svg+xml;utf8,<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><path fill="black" stroke="none" stroke-width="0" fill-rule="nonzero" d="M6 36l0 -4l36 0l0 4l-36 0zm0 -10l0 -4l36 0l0 4l-36 0zm0 -10l0 -4l36 0l0 4l-36 0z"></path></svg>');
  background-repeat: no-repeat;
  background-position: 50%;
  background-size: 32px;
  border: none;
  height: 40px;
  padding: 0;
  margin: 0;
  position: fixed;
  right: 0;
  top: 0;
  width: 40px;
  z-index: 10000;
}

.menu_button:hover {
  background-color: transparent;
  background-image: url('data:image/svg+xml;utf8,<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><path fill="rgb(32, 164, 242)" stroke="none" stroke-width="0" fill-rule="nonzero" d="M6 36l0 -4l36 0l0 4l-36 0zm0 -10l0 -4l36 0l0 4l-36 0zm0 -10l0 -4l36 0l0 4l-36 0z"></path></svg>');
}

.menu_button.close {
  background-image: url('data:image/svg+xml;utf8,<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><path fill="black" stroke="none" stroke-width="0" fill-rule="nonzero" d="M12.8 38l-2.8 -2.8l11.2 -11.2l-11.2 -11.2l2.8 -2.8l11.2 11.2l11.2 -11.2l2.8 2.8l-11.2 11.2l11.2 11.2l-2.8 2.8l-11.2 -11.2l-11.2 11.2z"></path></svg>');
}

.menu_button.close:hover {
  background-image: url('data:image/svg+xml;utf8,<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><path fill="rgb(32, 164, 242)" stroke="none" stroke-width="0" fill-rule="nonzero" d="M12.8 38l-2.8 -2.8l11.2 -11.2l-11.2 -11.2l2.8 -2.8l11.2 11.2l11.2 -11.2l2.8 2.8l-11.2 11.2l11.2 11.2l-2.8 2.8l-11.2 -11.2l-11.2 11.2z"></path></svg>');
}

/*@media (min-width: 800px) {.menu_button {display: none !important;}}*/

.menu_panel {
  align-items: center;
  background-color: rgb(242, 242, 242);
  color: white;
  display: flex;
  flex-direction: column;
  height: 100vh;
  justify-content: center;
  left: 0;
  position: fixed;
  top: 0;
  width: 100vw;
  z-index: 9999;
}

.menu_panel a {
  font-size: 24px;
  margin: 10px;
}



/*PRINT============================================================================*/

@media print {
  body {max-width: 100%; padding: 20px;}
  main {padding: 0;}
  header {display: none;}
  footer {display: none;}
  footer {page-break-before: always;}
  button {display: none;}
  h1 {margin-top: 0;}
  .noprint {display: none;}
  .grid1 {grid-template-columns: 1fr;}
  .grid2 {grid-template-columns: 1fr 1fr;}
  .grid3 {grid-template-columns: 1fr 1fr 1fr;}
}


