/* Shared by the sites: job application form and photo lightbox.
   Loaded after each site's stylesheet; sites theme it with these variables:
   --form-accent, --form-strong, --form-line, --form-soft, --form-text,
   --form-muted, --form-sans, --form-serif. */

/* ------------------------------------------------------------------ job application form */

.form-message {
  margin: 0 0 40px;
  padding: 16px 20px;
  border-left: 4px solid var(--form-accent);
  background: var(--form-soft);
}
.form-message--error { border-left-color: #c02b0a; }
.form-message p { margin: 0; }

.application__trap { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }

.form-section { margin: 0 0 48px; padding: 0; border: 0; min-width: 0; }
.form-section > legend {
  width: 100%;
  margin: 0 0 24px;
  padding: 0 0 8px;
  border-bottom: 1px solid var(--form-line);
  font: 600 24px/30px var(--form-sans);
  color: var(--form-accent);
}

.field { margin: 0 0 24px; padding: 0; border: 0; min-width: 0; }
.field > label,
.field > legend,
.field__label {
  display: block;
  margin: 0 0 6px;
  padding: 0;
  font: 600 15px/1.4 var(--form-serif);
  color: var(--form-text);
}
.field__required { font: 400 12px var(--form-serif); color: #c02b0a; }
.application .field__help { margin: 0 0 6px; font-size: 14px; line-height: 1.4; }
.application .field__error { margin: 6px 0 0; font-size: 14px; line-height: 1.4; color: #c02b0a; }

.field__parts { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 16px; }
.field__part--wide { grid-column: 1 / -1; }
.field__part label { display: block; margin: 0 0 4px; font: 13px/1.4 var(--form-serif); color: var(--form-muted); }

.application :is(input[type="text"], input[type="email"], input[type="tel"], select, textarea) {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--form-line);
  border-radius: 3px;
  background: #fff;
  font: 300 17px/1.4 var(--form-sans);
  color: var(--form-text);
}
.application :is(input, select, textarea):focus { outline: 2px solid var(--form-accent); outline-offset: 1px; }
.application [aria-invalid="true"] { border-color: #c02b0a; }
.application textarea { resize: vertical; }

.choice { display: flex; align-items: center; gap: 8px; margin: 6px 0; font: 15px/1.4 var(--form-serif); }
.choice input { width: 18px; height: 18px; margin: 0; accent-color: var(--form-strong); }
.choice strong { font-family: var(--form-serif); font-weight: 700; color: var(--form-text); }

.employer { margin: 0 0 16px; padding: 16px; border: 1px solid var(--form-line); min-width: 0; }
.employer > legend { padding: 0 6px; font: 600 16px var(--form-sans); color: var(--form-strong); }

.add-employer {
  padding: 10px 18px;
  border: 0;
  border-radius: 20px;
  background: var(--form-soft);
  font: 600 15px var(--form-sans);
  color: var(--form-strong);
  cursor: pointer;
}
.add-employer:hover { background: var(--form-strong); color: #fff; }

@media (max-width: 600px) {
  .field__parts { grid-template-columns: 100%; }
}

/* ------------------------------------------------------------------ lightbox */

.lightbox {
  max-width: 90vw;
  max-height: 90vh;
  padding: 4px;
  border: 0;
  border-radius: 3px;
  background: #fff;
  overflow: visible;
}
.lightbox::backdrop { background: rgb(0 0 0 / .8); }
.lightbox img { display: block; max-width: calc(90vw - 8px); max-height: calc(90vh - 48px); width: auto; }
.lightbox button {
  position: absolute;
  border: 0;
  background: none;
  cursor: pointer;
}
.lightbox__prev,
.lightbox__next { top: 4px; bottom: 4px; width: 40%; outline: none; } /* focus shows on the arrow */
.lightbox__prev { left: 4px; }
.lightbox__next { right: 4px; }
.lightbox__prev::after,
.lightbox__next::after {
  content: '';
  position: absolute;
  top: 50%;
  width: 24px;
  height: 24px;
  border: solid #fff;
  border-width: 4px 4px 0 0;
  filter: drop-shadow(0 0 3px rgb(0 0 0 / .8));
  opacity: 0;
  transition: opacity .2s;
}
.lightbox__prev::after { left: 20px; transform: translateY(-50%) rotate(-135deg); }
.lightbox__next::after { right: 20px; transform: translateY(-50%) rotate(45deg); }
.lightbox__prev:is(:hover, :focus-visible)::after,
.lightbox__next:is(:hover, :focus-visible)::after { opacity: 1; }
.lightbox:not(.has-siblings) :is(.lightbox__prev, .lightbox__next) { display: none; }
.lightbox__close {
  right: 0;
  bottom: -40px;
  width: 30px;
  height: 30px;
}
.lightbox__close::before,
.lightbox__close::after {
  content: '';
  position: absolute;
  inset: 13px 0 auto;
  height: 4px;
  background: #fff;
  transform: rotate(45deg);
}
.lightbox__close::after { transform: rotate(-45deg); }
