/*** atkinson-hyperlegible-regular - latin ***/
@font-face {
  font-family: 'Atkinson Hyperlegible';
  font-style: normal;
  font-weight: 400;
  src: url('../fonts/atkinson-hyperlegible-v10-latin-regular.eot'); /* IE9 Compat Modes */
  src: local(''),
       url('../fonts/atkinson-hyperlegible-v10-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
       url('../fonts/atkinson-hyperlegible-v10-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
       url('../fonts/atkinson-hyperlegible-v10-latin-regular.woff') format('woff'), /* Modern Browsers */
       url('../fonts/atkinson-hyperlegible-v10-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
       url('../fonts/atkinson-hyperlegible-v10-latin-regular.svg#AtkinsonHyperlegible') format('svg'); /* Legacy iOS */
}

html, body {
  /* color theme according to USWDS colors for accessibility */
  --text-body: #dfe1e2; /* gray-cool-10 */
  --text-body-inverse: #1c1d1f; /* gray-cool-90 */
  --link-underline: #a9aeb1; /* gray-cool-30 */
  --link-hover: #fff;

  --dialog-header-color: #3d4551; /* gray-cool-70 */
  --dialog-background-color: #fff; /* due to stripe bg compatibility */
  --dialog-text-color: #3d4551; /* gray-cool-70 */

  --form-border: #c6cace; /* gray-cool-20 */

  --theme-color: #0c1f31;

  --pop-background-color: #f0f0f0;
  --background-color: var(--theme-color) !important;
  --background-overlay-color: #0c1f31e0;

  --form-font-family: "Raleway";
  --header-font-family: "Raleway";

  --font-family: "Atkinson Hyperlegible";
  --color: var(--text-body);
  --primary: var(--text-body);
  --primary-inverse: var(--text-body-inverse);
  --modal-overlay-background-color: var(--background-overlay-color);
  --h1-color: #eee;
  --h2-color: #eee;
  --h3-color: #eee;
  --border-width: 0.2vw;
  --border-radius: 0.75em;
  --form-element-spacing-horizontal: 1.5rem;
  --form-element-spacing-vertical: 0.25rem;
  --font-size: 1em;
  --font-size-smaller: 0.95em;
  --font-size-smallest: 0.9em;
  --font-weight-lightest: 400;
  --primary-hover: #ad00ffcc;

  --menu-height: 4.5rem;
  --pop-height: 26em;
  --pop-margin: 2em;
  --pop-margin-top: 3em;
  --pop-margin-bottom: 2em;

  --article-margin-top: 3em;
  --article-margin-bottom: 0em;
  --article-height: 30em; /* needs to be big enough to contain the biggest page */

  --action-color: #0c1f31e0;
  --action-color-hover: #0c1f31f0;

  --border-radius: 1em;

  background: var(--background-color);
  color: var(--color);
  text-align: center;
  font-family: var(--font-family);
  /* font-size: 2vw; */ /* scale font and em unit with viewport width */
  overflow-x: hidden; /* hide any horizontal scrollbar */
  
  position: relative;
  min-height: 100vh;
}
@media (min-width: 1200px) { /* responsive */
  body {
    --font-size-default: 1.2em;
    --font-size-smaller: 0.9em;
    --font-size-smallest: 0.8em;
    --font-weight-lightest: 300;
    --border-width: 0.125vw;

    --pop-margin: 4em;
    --pop-margin-top: 4em;
    --pop-margin-bottom: 6em;

    --article-margin-top: 4em;
  }
}
body {
  font-size: 1.1em;
}
@media (min-width: 480px) { /* responsive */
  body {
    font-size: 1em; /* to avoid overflow issues */
  }
}

button {
  --box-shadow: none;
}
button:focus {
  --box-shadow: none;
}

input {
  font-size: 1em;
}

select.time {
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  font-size: 1em;
  font-family: var(--header-font-family);
  width: 9ch;

  background: var(--pop-background-color);
  border-bottom: 2px dotted var(--form-border);
}

.app {
  width: 100%;

  display: flex;
  justify-content: left;
  align-items: flex-start;

  min-height: var(--pop-height);
  height: 80%;
}

.visually-hidden {
  position: absolute !important;
  height: 1px;
  width: 1px;
  overflow: hidden;
  clip: rect(1px, 1px, 1px, 1px);
}

.backdrop {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;

  display: flex;
  align-items: center;
  justify-content: left;

  z-index: -20;
}

/* popover with primary action */
.pop {
  --color: #0c1f31;
  --primary: var(--color);
  --primary-hover: var(--color);
  --form-element-color: var(--dialog-text-color);

  border-radius: var(--border-radius);
  background: var(--card-background-color);
  box-shadow: var(--card-box-shadow);

  width: 17em;
  min-width: 17em;
  height: var(--pop-height);

  margin: var(--pop-margin);
  margin-top: var(--pop-margin-top);
  margin-bottom: var(--pop-margin-bottom);

  background-color: var(--pop-background-color);
  color: var(--color);

  display: flex;
  justify-content: center;
  align-items: center;

  overflow: hidden;
}

.pop svg {
  width: 5em;
  height: 5em;
  /* filter: drop-shadow(2px 2px 4px #00000030); */
  opacity: 0.95;
}
.choices {
  width: 100%;
  height: 100%;

  display: flex;
  flex-direction: column;
  justify-content: space-around;
}
.choices > *:first-child {
  border-bottom: 1px solid #00000060;
}
.choices > * {
  flex: 1;
}
.choice {
  width: 100%;
  padding: 0 1.5em;

  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.choice .title {
  margin: 0.25em;
  font-size: 0.9em;
  font-weight: 500;
}
.choice .subtitle {
  margin: 0.25em;
  font-weight: 300;
  font-family: 0.9em;
  font-family: var(--header-font-family);
}
.choice {
  text-decoration: none;
  font-size: 0.8em;
}
.choice:hover:not(.open), a.choice:focus:not(.open) {
  background-color: #dddddd;
}
button.new {
  margin: 0;
  margin-top: 0.5em;

  background: none;
  border: 2px solid var(--action-color);

  color: black;
  font-size: 0.95em;
  font-weight: 600;
  border-radius: 1em;
  min-width: 10em;
  font-family: monospace;
}
button.new:hover, button.new:active, button.new:focus {
  background: #0c1f3120;
  border: 2px solid var(--action-color);
}
button.new:disabled {
  opacity: 0.3;
}

/* logo */
a.logo {
  position: absolute;
  display: inline-block;
  top: 1.25rem;
  left: 1.5rem;
}
a.logo > div.logo {
  width: 2rem;
  height: 2rem;
  background-color: var(--pop-background-color);
  border-radius: 0.3em;
}
a.logo > div.logo > svg {
  width: 1.5rem;
  height: 1.5rem;
  margin: 0.25rem;
  border-radius: 0;
  color: var(--theme-color);
}

/* beta */
div.beta {
  position: absolute;
  display: flex;
  align-items: center;
  top: 1.25rem;
  left: 4rem;
  height: 2rem;
  font-size: 0.75rem;
  visibility: hidden;
}
.beta {
  font-variant: all-small-caps;
}
/* hide on small displays */
@media (min-width: 480px) { /* responsive */
  div.beta {
    visibility: initial;
  }
}

/* menu bar */
.menu {
  position: relative;
  text-align: left;
  height: var(--menu-height);
  background: var(--background-color);
}
.menu nav {
  position: absolute;
  top: 1.6rem;
  right: 1.5rem;
  font-variant: all-small-caps;
  letter-spacing: 0.1em;
  font-size: 0.9em;

  /* wrap on narrow screens */
  flex-wrap: wrap;
  max-width: 80%;
  justify-content: right;
}
@media (min-width: 480px) { /* responsive */
  .menu nav {
    font-size: 1em;
  }
}
.menu nav > a {
  height: fit-content;
  background: none;
  border-radius: 0;
  margin: 0;
  margin-bottom: 0.5em;
  padding: 0 0 0 1em;
  font-size: 0.8em;
}
.menu nav > a:not(:first-child) {
  border-left: 1px solid #ffffffc0;
  padding-left: 1em;
}
.menu nav > a:not(:last-child) {
  padding-right: 1em;
}
.menu nav > a {
  padding: 0;
}
.menu nav > a:hover, .menu nav > a:focus, .menu nav > a:active {
  color: #ffffff;
  text-shadow: 0px 0px 1px #fff;
}

/* responsive container */
.responsive {
  display: flex;
  align-items: center;
  min-height: calc(100vh - var(--menu-height));
}
.app {
  flex-wrap: wrap; /* break if screen is too small */
  justify-content: center;
}
.page {
  justify-content: center;
}
@media (min-width: 960px) { /* responsive */
  .app {
    flex-wrap: nowrap;
    justify-content: left;
  }
  .page {
    justify-content: left;
  }
}

/* single-page app */
.app.single-page {
  justify-content: center !important;
}

/* article selector */
.app article {
  margin: 0;
  padding: 0;
  background: none;
  box-shadow: none;

  margin-top: var(--article-margin-top);
  margin-bottom: var(--article-margin-bottom);
  min-height: var(--article-height);
}
.app article ul {
  font-size: var(--font-size-smaller);
  margin: 0;
  margin-left: 1em;
  margin-bottom: var(--typography-spacing-vertical);
}
.app article ul li {
  margin: 0;
}

/* page */
.page {
  text-align: left;
  margin-left: 2em;
  margin-right: 2em;
  overflow: hidden;
}
.page .long {
  margin-top: 2em;
  text-align: left;
  font-size: 0.8em;
}
.page .long h2 {
  margin: 1.5em 0 0.5em 0;

  /* adjust */
  color: #fff;
  font-family: var(--header-font-family);
  font-weight: 300;
  font-size: 1.25em;
  border-bottom: 2px dotted #ffffff50;
}
.page .story {
  position: relative;

  margin: 1.5rem 2rem 0 0;

  font-size: 0.85em;
}
.page .story p {
  font-size: var(--font-size-smaller);
}
.page .story.front p {
  font-size: var(--font-size-small);
}
.page .story.front p.tagline {
  font-family: serif;
  font-size: var(--font-size-default);
  font-style: oblique;
}
.page p a {
  text-decoration: underline dotted var(--link-underline) 1px;
  text-underline-offset: 0.1em;
}
.page p a:hover, .page p a:focus {
  color: var(--link-hover);
  text-decoration-color: var(--link-hover);
}
.page a.contact {
  padding-right: 0.75em;
}
.page a.contact:hover, .page a.contact:focus {
  text-decoration: none;
  color: var(--link-hover);
}
span.brand {
  font-family: var(--header-font-family);
  letter-spacing: 0.05em;
  font-size: 0.95em;
}
.title > h1 {
  margin: 0;
  flex-basis: 100%;
  line-height: 1em;

  /* adjust */
  color: #fff;
  font-family: var(--header-font-family);
  font-weight: 300;
  font-size: 3.25em;

  text-align: right;
}
.title > h2 {
  margin: 0;
  flex-basis: 100%;
  line-height: normal;

  /* adjust */
  color: #fff;
  font-family: var(--header-font-family);
  font-weight: 300;
  font-size: 1.1em;

  text-align: right;
}

div.how {
  display: flex;
  align-items: center;
  text-align: left;
  flex-direction: column;
}
div.how h1 {
  /* adjust */
  font-size: 2.5em;
  margin-bottom: 0.5em;
}
div.how h2 {
  /* adjust */
  margin: 0;
  font-size: 1.1em;
  font-weight: 600;
  font-variant: all-small-caps;
  margin-top: -0.3em; /* font vertical correction */
}
div.how p {
  /* adjust */
  margin: 0;
}
div.how div.item {
  display: flex;
  align-items: center;
  width: 100%;

  /* adjust */
  margin-bottom: 2em;
  min-height: 5.8em;
}
div.how div.item:last-child {
  margin-bottom: 1em;
}
div.how div.bullet {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-shrink: 0;

  /* adjust */
  background: var(--background-color);
  border: 1.5px solid #dddddd;
  border-radius: 1rem;
  width: 3.75rem;
  height: 3.75rem;
  max-width: 3.75rem;
  max-height: 3.75rem;
  margin-right: 1rem;
  font-size: 1.75em;
  opacity: 0.9;
}
div.how div.bullet > svg {
  width: 1.75em;
}
div.how div.bullet.text {
  font-size: 1em;
}
div.bullet-line {
  position: absolute;
  top: 5em;
  bottom: 5em;
  left: 2.2em;
  z-index: -1;

  border-left: 1.5px dotted #dddddd;
}

.page div.faq {
  width: 100%;
  display: block;
  padding-right: 2em;
  font-size: 0.8em;
}

.page div.faq h2 {
  /* adjust */
  font-size: 1.1em;
  font-weight: 800;
}

/* pages */
.app article { width: auto; height: auto; transition: opacity 0.5s ease-out; opacity: 1; }
#how { width: 0; min-height: 0; height: 0; opacity: 0; overflow: hidden; }
#how:target { width: auto; height: auto; transition: opacity 0.5s ease-out; opacity: 1; overflow: visible; }
#how:target ~ #index { width: 0; min-height: 0; height: 0; opacity: 0; overflow: hidden; } /* removes index page if another page is selected */
#faq { width: 0; min-height: 0; height: 0; opacity: 0; overflow: hidden; }
#faq:target { width: auto; height: auto; transition: opacity 0.5s ease-out; opacity: 1; overflow: visible; }
#faq:target ~ #index { width: 0; min-height: 0; height: 0; opacity: 0; overflow: hidden; } /* removes index page if another page is selected */
#pod { width: 0; min-height: 0; height: 0; opacity: 0; overflow: hidden; }
#pod:target { width: auto; height: auto; transition: opacity 0.5s ease-out; opacity: 1; overflow: visible; }
#pod:target ~ #index { width: 0; min-height: 0; height: 0; opacity: 0; overflow: hidden; } /* removes index page if another page is selected */
#roadmap { width: 0; min-height: 0; height: 0; opacity: 0; overflow: hidden; }
#roadmap:target { width: auto; height: auto; transition: opacity 0.5s ease-out; opacity: 1; overflow: visible; }
#roadmap:target ~ #index { width: 0; min-height: 0; height: 0; opacity: 0; overflow: hidden; } /* removes index page if another page is selected */
#terms { width: 0; min-height: 0; height: 0; opacity: 0; overflow: hidden; }
#terms:target { width: auto; height: auto; transition: opacity 0.5s ease-out; opacity: 1; overflow: visible; }
#terms:target ~ #index { width: 0; min-height: 0; height: 0; opacity: 0; overflow: hidden; } /* removes index page if another page is selected */

/* action */
.action {
  width: 100%;
}
.action hr {
  border-top: 1px solid #00000060;
}

/* action items */
.action > .item {
  display: flex;
  align-items: center;
}
.action > .item > .check {
  flex-shrink: 0;
  padding: 0;

  width: 3em;
  height: 3em;
  margin: 0.5em 1em 0.5em 0;

  display: flex;
  justify-content: center;
  align-items: center;
}
.action > .item > .check > input {
  margin: 0;
  font-size: 1.5em;
}
.action > .item > .icon {
  padding: 0;
  border-radius: 50%;
  flex-shrink: 0;

  width: 3em;
  height: 3em;
  margin: 0.5em 1em 0.5em 0;
}
.action > .item > button.icon, .action > .item > nav.icon {
  --primary: none;
  --primary-hover: none;
  border: none;

  font-size: 1em;

  background: var(--action-color);
  color: white;

  opacity: 0.8;
}
.action > .item > .icon:hover {
  font-size: 1em;
  background: var(--action-color-hover);
}
.action > .item > .icon > svg {
  width: 50%;
  height: 50%;
  margin: 25%;
}

/* dynamic hiding */
.animate-height {
  max-height: 100%; /* default */
  transition: max-height 0.5s ease-in-out;
  overflow: hidden;
}
.animate-height-delay {
  transition-delay: 0.5s;
}
.hide {
  max-height: 0;
}

/* input fields */
label {
  text-align: left;
  margin: 0;
  padding: 0;
}
label:hover {
  cursor: pointer;
}
.item input {
  --background-color: var(--pop-background-color);
  --primary: var(--theme-color);
  --border-color: var(--theme-color);
  --accent-color: var(--theme-color);
}
.item input[type=checkbox] {
  flex-shrink: 0;
}
.item input[type=text], .item input[type=file] {
  /* reset */
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  box-shadow: none;
  border-radius: 0;

  font-family: var(--form-font-family);
  font-size: 0.95em;
  flex-shrink: 1;
  height: auto;

  border-bottom: 2px dotted var(--form-border);
}
.item > div {
  flex-grow: 1;
  overflow: hidden; /* to force fit within flexbox parent */
  text-align: left;
}
div.info {
  text-align: left;
  font-family: var(--header-font-family);
  color: var(--form-element-placeholder-color);
  font-size: 0.9em;

  /* prevent line breaks */
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  width: 80%;
}
/* item grow element */
.item.grow {
  align-items: start;
}
.item.grow > div {
  padding-top: 1.5em; /* center in relation to icon */
  height: 100%; /* auto grow vertically */
  overflow-y: auto; /* scrollbar when necessary */
}

.statement {
  font-size: 0.9em;
  font-family: var(--header-font-family);
}

/* date picker customization */
.air-datepicker {
  --adp-accent-color: #666666;
  --adp-background-color-selected-other-month: #666666;
  --adp-background-color-selected-other-month-focused: #999999;
  --adp-day-name-color: #666666;
  --adp-day-name-color-hover: #999999;
  --adp-cell-background-color-selected: #666666;
  --adp-cell-background-color-selected-hover: #999999;
  --adp-color-disabled: #ccc;
}

/* footer */
.app {
  margin-bottom: 2em; /* keep some space for footer */
}
body > footer {
  font-variant: all-small-caps;
  letter-spacing: 0.1em;
  font-size: 0.8em;
  opacity: 0.8;

  position: absolute;
  right: 0;
  bottom: 0;
  margin: 0;
  padding: 0 1.5rem 1rem 0;
  text-align: right;
}
body > footer a:hover, body > footer a:focus {
  color: var(--link-hover);
  text-decoration: none;
}

/* dialog */
dialog {
  font-size: 0.9em;
}
dialog article > header > h3 {
  color: var(--dialog-text-color);
  font-family: var(--header-font-family);
  font-size: 1.1em;
  margin: 0;
  margin-bottom: 1em;
  margin-top: 1em;
  font-weight: 400;
}
dialog article, dialog > article {
  /* for proper scrollbars and sizing */
  display: flex;
  flex-direction: column;
}
dialog article > div {
  /* for proper scrollbars and sizing */
  overflow-y: auto;
}
dialog article, dialog > article > * {
  background: var(--dialog-background-color);
  text-align: center;
}
dialog article p {
  color: var(--dialog-text-color);
}
dialog article p a {
  color: var(--dialog-text-color);
  text-decoration: underline;
}
dialog article > header {
  margin-bottom: 0;
  padding-bottom: 0;
  border: 0;
}
dialog article > footer {
  padding-top: 1em;
  margin-top: 0;
  margin-left: auto;
  margin-right: auto;
  text-align: center;
  border: 0;
}
dialog article > footer > button {
  width: auto;
}
dialog article > header button[rel="prev"] {
  margin: 0;
  padding: 0;
  float: right;
  display: block;
  width: 1rem;
  height: 1.6rem;
  border: none;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E");
  background-position: center;
  background-repeat: no-repeat;
  opacity: 0.5;
  transition: opacity 0.2s ease-in-out;
}
dialog article > header button[rel="prev"]:hover {
  opacity: 1.0;
}

/* dialog plan */
dialog.plan {
  --color: var(--dialog-text-color);
  --text-body: var(--dialog-text-color);
  --h1-color: var(--dialog-text-color);
  --h2-color: var(--dialog-text-color);
  --h3-color: var(--dialog-text-color);
  --form-element-color: var(--dialog-text-color);
  --form-element-spacing-vertical: 0.25em;
  --form-element-spacing-horizontal: 1.5em;
  font-family: var(--header-font-family);
}
dialog.plan input, dialog.plan button {
  margin: 0;
  background: none;
  border: 2px solid var(--action-color);
}
dialog.plan article {
  width: 100%;
  max-width: 50rem;
  padding: 2.5em;
}
dialog.plan article > div {
  margin-left: auto;
  margin-right: auto;
}
dialog.plan article > div.plan {
  text-align: left;
  display: flex;
  overflow-x: auto;
  width: 100%;
}
dialog.plan article > div.plan > div {
  flex: 1;
  margin: 0.5em;
  padding: 1.0em;
  font-size: 0.9em;
  min-width: 13em;
}
dialog.plan hr {
  margin-bottom: 1em;
}
dialog.plan h1 {
  font-family: var(--header-font-family);
  margin: 0;
  font-size: 1.25em;
}
dialog.plan h2 {
  font-family: var(--header-font-family);
  margin: 0;
  font-size: 1.1em;
  font-weight: normal;
}

/* after action selection */
.encrypt-after-plan, .decrypt-after-plan {
  opacity: 0.3;
}
