/*

Project:       CPMA Interim Website CSS

Author:        Kieran Utz
Version:       251201 (December 1, 2025)

Modified:      Dmitri Bekasov
Version:       260109 (January 9, 2026)

Notes:         Specific styles to Form elements

*/

.ct-section--form {
  background-color: var(--pigment--tint-2);
  margin-bottom: 3rem;
  border-radius: 0.5rem;
}
@media screen and (max-width: 90rem) {
  .ct-section--form {
    border-radius: 0;
  }
}
.half-size {
  max-width: 24rem;
  min-width: 18rem;
}
.message--error,
.form--required-marker {
  color: var(--pigment--accent-lava);
}
.form--required-marker {
  font-size: 1.25em;
  line-height: 0.75em;
  vertical-align: text-top;
}
.form {
  padding-block: 2rem;
  display: flex;
  flex-flow: column nowrap;
}
.form--unit {
  display: flex;
  flex-flow: row nowrap;
  align-content: stretch;
  margin-top: 1rem;
}
.form--unit:first-child {
  margin-top: 0;
}
.form--unit:has(:is(input, select, textarea)[required]) > .form--field-label::after {
  content: "*";
  font-size: 1.25em;
  line-height: 0.75em;
  vertical-align: text-top;
  margin-left: 0.25em;
  color: var(--pigment--accent-lava);
}
.form--field-label {
  flex: 0 0 auto;
  width: clamp(12rem, 80vw / 3, 24rem);
}
.form--field-label,
.form--input-label {
  display: flex;
  padding-block: 0.875rem 0.375rem;
}
@media screen and (max-width: 54rem) {
  .form--unit {
    flex-direction: column;
  }
  .form--field-label {
    width: 100%;
  }
  .form--field-label,
  .form--input-label {
    padding-top: 0.25rem;
  }
  .form--unit:first-child .form--field-label,
  .form--unit:first-child .form--input-label {
    padding-top: 0;
  }
}
.form--field-block {
  flex: auto;
}
.form--input-group {
  display: flex;
  column-gap: 1rem;
}
@media screen and (max-width: 37.5rem) {
  .form--input-group {
    flex-direction: column;
    row-gap: 0.5rem;
  }
}
.form--input-area,
.form--input-text,
.form--input-select {
  border: 0.0625rem solid var(--pigment--tint-6);
  border-radius: 0.5rem;
  width: 100%;
  transition: border var(--motion--faster);
}
.form--input-area,
.form--input-text {
  color: var(--pigment--shade-4);
  padding: 0.5rem;
  background-color: var(--pigment--tint-1);
  box-shadow: inset 0 0 0.25rem rgba(0,0,0,0.13), 0 0 0 0.0625rem transparent, 0 0 0 0.25rem transparent;
  transition: box-shadow var(--motion--faster), color var(--motion--faster), background-color var(--motion--faster);
}
.form--input-area {
  min-height: 6rem;
  resize: vertical;
}
.form--input-select {
  color: var(--pigment--tint-8);
  padding: 0.5rem 2.25rem 0.5rem 0.5rem;
}
:root[data-theme="dark"] .form--input-select {
  background: linear-gradient(var(--pigment--tint-2), var(--pigment--tint-0));
}
:root[data-theme="light"] .form--input-select {
  background: linear-gradient(var(--pigment--tint-0), var(--pigment--tint-2));
}
.form--input-select:has(option:not([value=""]):checked) {
  color: var(--pigment--shade-4);
}
.form--combo-select {
  border-radius: 0.5rem;
  width: 100%;
  position: relative;
  box-shadow: 0 0 0 0.0625rem transparent, 0 0 0 0.25rem transparent;
  transition: box-shadow var(--motion--faster);
}
.form--combo-arrows {
  pointer-events: none;
  position: absolute;
  display: block;
  right: 0.75rem;
  top: 50%;
  transform: translateY(-50%);
  width: 1rem;
  height: 1rem;
  -webkit-mask-image: var(--icon-16--select);
  mask-image: var(--icon-16--select);
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: contain;
  mask-size: contain;
  background-color: var(--pigment--tint-8);
  transition: background-color var(--motion--faster);
}
.form--input-area:hover:not(:disabled),
.form--input-text:hover:not(:disabled),
.form--input-select:hover:not(:disabled) {
  background-color: var(--pigment--tint-0);
  border-color: var(--pigment--ink-tanzanite);
}
.form--input-select:hover:not(:disabled) {
  cursor: pointer;
}
.form--input-area:disabled,
.form--input-text:disabled {
  color: var(--pigment--shade-8);
  background-color: var(--pigment--tint-2);
  box-shadow: inset 0 0 0.25rem rgba(0,0,0,0.1);
}
.form--input-select:disabled {
  background: none !important;
  background-color: var(--pigment--tint-2);
  color: var(--pigment--tint-6);
  opacity: 1;
}
.form--input-select:disabled + .form--combo-arrows {
  background-color: var(--pigment--tint-6);
}
.form--input-area::placeholder,
.form--input-text::placeholder {
  color: var(--pigment--tint-6);
  opacity: 1;
}
.form--input-area:focus-visible::placeholder,
.form--input-text:focus-visible::placeholder {
  opacity: 0.5;
}
.form--input-area:disabled::placeholder,
.form--input-text:disabled::placeholder {
  color: var(--pigment--tint-6);
}
.form--error-message {
  color: var(--pigment--accent-lava);
}
.form--choice-item {
  position: relative;
  display: flex;
  align-items: flex-start;
  flex: auto;
  padding-block: 0.8125rem 0.3125rem;
}
.form--choice-item,
.form--choice-item * {
  cursor: pointer;
}
.form--choice-label {
  padding-left: 0.5rem;
  padding-top: 0.1875rem;
}
.form--input-radio,
.form--input-checkbox {
  flex: none;
  display: block;
  width: 1.75rem;
  height: 1.75rem;
  background-color: var(--pigment--tint-1);
  border: 0.0625rem solid var(--pigment--tint-6);
  box-shadow: inset 0 0 0.25rem rgba(0,0,0,0.13), 0 0 0 0.0625rem transparent, 0 0 0 0.125rem transparent;
  transition: box-shadow var(--motion--faster), background-color var(--motion--faster), border var(--motion--faster);
}
.form--input-radio {
  border-radius: 50%;
}
.form--input-checkbox {
  border-radius: 0.5rem;
}
.form--choice-marker {
  pointer-events: none;
}
.form--input-radio + .form--choice-marker {
  -webkit-mask-image: var(--icon-16--bullet-circle);
  mask-image: var(--icon-16--bullet-circle);
}
.form--input-checkbox + .form--choice-marker {
  -webkit-mask-image: var(--icon-16--check);
  mask-image: var(--icon-16--check);
}
.form--input-radio:checked,
.form--input-checkbox:checked {
  background-color: var(--pigment--ink-obsidian);
  border-color: var(--pigment--ink-obsidian);
}
.form--input-radio:checked + .form--choice-marker,
.form--input-checkbox:checked + .form--choice-marker {
  position: absolute;
  display: block;
  width: 1.75rem;
  height: 1.75rem;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: contain;
  mask-size: contain;
  background-color: var(--pigment--tint-0);
  transition: background-color var(--motion--faster);
}
.form--input-radio:checked + * + .form--choice-label,
.form--input-checkbox:checked + * + .form--choice-label {
  color: var(--pigment--shade-0);
}
.form--input-radio:hover:not(:disabled),
.form--input-checkbox:hover:not(:disabled) {
  background-color: var(--pigment--tint-0);
  border-color: var(--pigment--ink-tanzanite);
}
.form--input-radio:checked:hover:not(:disabled),
.form--input-checkbox:checked:hover:not(:disabled) {
  background-color: var(--pigment--ink-tanzanite);
}
.form--input-radio:disabled,
.form--input-checkbox:disabled {
  background-color: var(--pigment--tint-2);
  box-shadow: inset 0 0 0.25rem rgba(0,0,0,0.1);
  border-color: var(--pigment--tint-6);
}
.form--input-radio:disabled + .form--choice-marker,
.form--input-checkbox:disabled + .form--choice-marker {
  background-color: var(--pigment--tint-6);
}
.form--button-group {
  display: flex;
  column-gap: 1rem;
  justify-content: center;
  padding-top: 2rem;
  margin-top: 2rem;
  border-top: var(--border--thin);
}
.form--button-submit,
.form--button-cancel {
  display: block;
  padding: 1lh calc(1lh + 1.5rem);
  border-radius: 0.5rem;
  cursor: pointer;
  border-width: 0.0625rem;
  border-style: solid;
  background-color: var(--pigment--tint-1);
  transition: background-color var(--motion--faster), box-shadow var(--motion--faster);
  box-shadow: 0 0 0 0.0625rem transparent, 0 0 0 0.125rem transparent;
}
.form--button-submit {
  color: var(--pigment--accent-emerald);
  border-color: var(--pigment--accent-emerald);
}
.form--button-cancel {
  color: var(--pigment--accent-lava);
  border-color: var(--pigment--accent-lava);
}
.form--button-submit:hover,
.form--button-cancel:hover {
  background-color: var(--pigment--tint-0);
}
