form>* {
  accent-color: black;
}

/*     form * {
  margin: 1rem 1em;
}
*/

fieldset {
  border: none;
}

legend {
  margin-inline-start: 0.5em;
  padding-inline: 0.5em;
}

label {
  display: inline-block;
}

input {
  display: inline-block;
  border: 1px solid black;
  border-radius: 2px;
  background-color: none;
  transition: 0.4s ease;
  /* padding-inline: 0.5em 0.5em; */
  padding: 0.5em;
}

input[type="text"] {
  width: 20rem;
}

input[type="number"] {
  width: 5rem;
}

input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
  -webkit-appearance: none;
  appearance: none;
}

input[type=number] {
  -moz-appearance: textfield;
}

input[type="email"] {
  width: 20rem;
}

input[type="tel"] {
  width: 20rem;
}

input[type="date"] {
  width: 10rem;
  background: none;
  /* Safari height collapses */
  min-height: 2.5em;
}

input[type="time"] {
  width: 10rem;
}

input[type="radio"] {
  width: 1.2em;
  height: 1.2em;
}

input[type="checkbox"] {
  width: 1.2em;
  height: 1.2em;
}

input[type="submit"] {
  cursor: pointer;
  border: 1px solid black;
  border-radius: 2px;
}

select {
  width: 10rem;
  border: 1px solid black;
  border-radius: 2px;
  font-family: inherit;
  font-size: 1rem;
  padding: 0.5em;
  background: transparent;
}

option {
  background: white;
  min-width: fit-content;
}

/* 
fieldset {
  padding: 0 0.5em 0.5em;
}

fieldset:focus-within {
  border-radius: 2px;
  padding: 0 0.5em 0.5em;
  background-color: var(--pp-lemon-light);
}
*/

textarea {
  width: 20rem;
  min-height: 20vh;
  border: 1px solid black;
  border-radius: 2px;
  padding: 0.2rem 0.5em;
}

button {
  margin: 0.5rem 1em;
  padding: 0.5rem 1.5em;
  background-color: var(--theme-color-dark);
  color: var(--theme-color-light);
}

.inline-flex-row-start {
  display: inline-flex;
  justify-content: flex-start;
  align-content: center;
  align-items: center;
  gap: 0.5em;
}

.inline-flex-row-start *:first-child {
  margin-right: 0.5em;
}

.counter {
  height: 1.2rem;
  cursor: pointer;
}

@media (max-width: 800px) {
  .counter {
    height: 2rem;
  }
  .inline-flex-row-start *:first-child {
    margin-right: 1em;
  }
}

input:focus,
select:focus,
textarea:focus {
  background-color: var(--pp-lemon-light);
}

input:user-valid,
select:user-valid,
textarea:user-valid {
  background-color: transparent;
  animation: feedbackOk 1.2s ease-in-out forwards;
  /* background-color: var(--pp-apple-light); */
}

input:user-invalid,
select:user-invalid,
textarea:user-invalid {
  background-color: var(--pp-strawberry-light);
}

/* input+p {
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.5s ease-in, color 0.5s ease-in-out;
} */

.hint {
  visibility: hidden;
  margin-top: 0.5em;
  margin-bottom: 0.5em;
  color: var(--pp-lemon-dark);
  opacity: 0;
  transition: opacity 0.5s ease-in, color 0.5s ease-in-out;
}

input:focus~p.hint,
select:focus~p.hint,
input:focus *.hint,
textarea:focus~p.hint,
div.counter-group:focus-within>div~p.hint,
div.fieldset-group:focus-within>fieldset~p.hint {
  visibility: visible;
  opacity: 1;
}

/* one message or 2 spans for hint and warning */
/* 
input:user-invalid~p.hint {
  visibility: visible;
  opacity: 1;
  color: var(--pp-strawberry-dark);
}
*/

@keyframes feedbackOk {
  from {
    background-color: var(--pp-apple-light);
  }

  to {
    background-color: transparent;
  }
}


/* ========= form grid alternate ========= */

.form-grid-alternate {
  display: grid;
  width: 100%;
  grid-template-rows: auto;
  grid-auto-flow: row;
  justify-items: stretch;
  /* align-items: center; */
}

.form-grid-alternate>* {
  background-color: transparent;
}

.form-grid-alternate label {
  display: inline-block;
  margin-top: calc(0.5em + 1px);
}

/* .form-grid-alternate>div:first-child {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
} */

.margin-left {
  margin-left: 0.5rem;
}

.margin-right {
  margin-right: 0.5rem;
}

.form-field-long {
  width: 20em;
}

@media (min-width: 800px) {
  .form-grid-alternate {
    margin: 3em auto;
    gap: 1rem 2rem;
  }
  .form-alternate-3fr-5fr {
    grid-template-columns: 3fr 5fr;
  }
  .text-align-swap {
    text-align: end;
  }
}

@media (max-width: 800px) {
  .form-grid-alternate {
    width: min(20rem, 100%);
    grid-template-columns: 1fr;
    margin: 2em auto;
    gap: 1rem;
  }
  input[type="text"],
  input[type="email"],
  input[type="tel"],
  textarea,
  .form-field-long {
    min-width: 0;
    width: min(20rem, 100%);
  }
  .text-align-swap {
    text-align: start;
  }
}
