/* ******************************************************************
 * VARIABLES
 *
 * To apply different styles per tenant, change the variables only.
 *
 * Two layers of variables: Primitive and Applied.
 * Primitives are, well, the design primitives. And Applied
 * dictate which primitive gets applied where.
 ****************************************************************** */

:root {
  /* Spacing */
  --sp-sm: 0.5rem;
  --sp-md: 1rem;
  --sp-lg: 2rem;
  --sp-xl: 4rem;

  /* Applied Spacing */
  --sp-between: var(--sp-lg);
  --sp-heading: var(--sp-xl);
  --sp-button: var(--sp-md);
  --sp-detail: var(--sp-sm);
  --sp-lead: var(--sp-md);

  /* Typography */
  --fs-xs: 1.2rem;
  --fs-sm: 1.4rem;
  --fs-md: 1.6rem;
  --fs-lg: 2.2rem;
  --fs-xl: 2.8rem;

  --fw-bold: bold;
  --fw-base: normal;

  --ff-base: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial,
    sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
  --ff-subtitle: var(--ff-base);
  --ff-title: var(--ff-base);

  /* Applied Typography */
  --fs-h1: var(--fs-xl);
  --fw-h1: var(--fw-bold);

  --fs-h2: var(--fs-lg);
  --fw-h2: var(--fw-bold);

  --fs-p: var(--fs-md);

  --fs-label: var(--fs-sm);
  --fs-detail: var(--fs-xs);
  --fs-button: var(--fs-sm);
  --fw-button: var(--fw-bold);

  /* Colours */
  --co-white: white;
  --co-gray-lt: #efefef;
  --co-gray: #ccc;
  --co-gray-md: #808080;
  --co-gray-dk: #222;
  --co-brand: #da0944;
  --co-brand-secondary-lt: #e8eef7;
  --co-brand-secondary-base: #8193ac;
  --co-brand-secondary-md: #4fbecf;
  --co-brand-secondary-dk: #182c49;

  /* Applied Colours */
  --co-logo: var(--co-brand);

  --co-text: var(--co-brand-secondary-dk);
  --co-text-small: var(--co-brand-secondary-base);
  --co-text-interactive: var(--co-brand-secondary-md);

  --co-page-bg: var(--co-white);
  --co-page-bg-wide: var(--co-white);
  --co-container-border: transparent;
  --co-container-shadow: transparent;

  --co-input-bg: transparent;
  --co-input-text: var(--co-text);
  --co-input-border: var(--co-brand-secondary-base);
  --co-input-shadow: none;
  --co-input-placeholder-text: var(--co-brand-secondary-base);
  --co-input-focus-border: var(--co-brand-secondary-dk);
  --co-input-focus-shadow: 0 0 0 1px var(--co-input-focus-border);
  --co-input-hover-border: var(--co-brand-secondary-dk);
  --co-input-hover-shadow: 0 0 0 1px var(--co-white),
    0 0 0 3px var(--co-brand-secondary-lt);
  --co-input-invalid-border: red;
  --co-input-invalid-shadow: 0 0 0px 2px red;
  --co-input-error-message: red;

  --co-button-bg: var(--co-brand-secondary-lt);
  --co-button-text: var(--co-text);
  --co-button-border: var(--co-brand-secondary-lt);

  --co-button-naked-bg: transparent;
  --co-button-naked-text: var(--co-text);
  --co-button-naked-border: transparent;

  --co-button-primary-bg: var(--co-brand);
  --co-button-primary-text: var(--co-white);
  --co-button-primary-border: var(--co-brand);

  --co-infobox-text: var(--co-text);
  --co-infobox-bg: var(--co-brand-secondary-lt);
  --co-infobox-border: var(--co-brand-secondary-dk);

  --co-warnbox-text: #8F6C00;
  --co-warnbox-bg: #FFF9E6;
  --co-warnbox-border: var(--co-warnbox-text);

  /* Misc */
  --radius: 0.4rem;
  --logo-width: 20rem;
  --input-height: 4.4rem;

  /* Change the colour of the arrow in the select menu.
   *
   * Usage:
   * Take the entire string below, changing only the `fill` propery as described below.
   *
   * fill='%23bada55'
   * fill='%23{hex code}'
   *
   * Details:
   * https://localcoder.org/how-can-i-remove-the-gloss-on-a-select-element-in-safari-on-mac
   */
  --select-arrow-url: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' fill='%238193ac'><polygon points='0,0 10,0 5,5'/></svg>");
}

/* ******************************************************************
 * BASE
 ****************************************************************** */

html {
  font-size: 10px;
}

body {
  font-family: var(--ff-base);
  font-size: var(--fs-md);
  color: var(--co-text);
  line-height: 1.5;
  background: var(--co-page-bg);
}

@media (min-width: 600px) {
  body {
    background: var(--co-page-bg-wide);
  }
}

* {
  margin: 0;
}

* + * {
  margin-top: var(--sp-between);
}

/* ******************************************************************
 * LAYOUT
 ****************************************************************** */

.container {
  max-width: 50rem;
  margin: 3rem auto;
  padding: 1.6rem;
  border-radius: 3px;
  background: transparent;
}

@media (min-width: 600px) {
  .container {
    box-shadow: 0 5px 20px var(--co-container-shadow);
    border: 1px solid var(--co-container-border);
    background: var(--co-page-bg);
  }
}

header + main {
  margin-top: var(--sp-xl);
}

main > section + section {
  margin-top: var(--sp-xl);
}

h1,
h2,
h3,
h4 {
  margin-bottom: var(--sp-sm);
}

header h1 + p,
header h2 + p {
  margin-top: var(--sp-lead);
}

main > section.introduction {
  padding: 0 var(--sp-between);
}

main + footer {
  margin-top: var(--sp-lg);
  line-height: 1.4;
  font-size: var(--fs-detail);
  color: var(--co-text-small);
}

.center {
  text-align: center;
}

/* ******************************************************************
 * TYPOGRAPHY
 ****************************************************************** */

h1 {
  font-size: var(--fs-h1);
  font-weight: var(--fw-h1);
  font-family: var(--ff-title);
  line-height: 1.15;
}

h2 {
  font-size: var(--fs-h2);
  font-weight: var(--fw-h2);
  font-family: var(--ff-subtitle);
}

h3 {
  font-family: var(--ff-subtitle);
}

h1,
h2 {
  -webkit-hyphens: auto;
  -moz-hyphens: auto;
  hyphens: auto;
}

p {
  font-size: var(--fs-p);
}

form input ~ p,
form label ~ p,
small {
  font-size: var(--fs-detail);
  margin-top: var(--sp-detail);
  color: var(--co-text-small);
}

a,
a > * {
  color: var(--co-text-interactive);
  text-decoration: underline;
}

/* ******************************************************************
 * ELEMENTS
 ****************************************************************** */

.logo {
  display: block;
  max-width: var(--logo-width);
  margin: 6rem auto 0;
}

ul {
  margin: 0;
  padding-left: var(--sp-lg);
}

li {
  margin-top: 0;
}

table {
  border-collapse: collapse;
}

thead {
  text-align: left;
}

tbody {
  border-top: 2px solid var(--co-gray-lt);
  border-bottom: 2px solid var(--co-gray-lt);
}

td, th {
  padding: var(--sp-sm);
}

blockquote {
  padding: var(--sp-md);
  border-radius: var(--radius);
  background: var(--co-infobox-bg);
  border: 1px solid var(--co-infobox-border);
  color: var(--co-infobox-text);
}

blockquote.warning {
  background: var(--co-warnbox-bg);
  border-color: var(--co-warnbox-border);
  color: var(--co-warnbox-text);
}

blockquote > * + * {
  margin-top: var(--sp-md);
}

.callout-icon-box {
  display: flex;
  flex-direction: row;
  gap: 1rem;
  align-items: center;
}

.callout-icon-box > * + * {
  margin: 0;
}

.callout-icon-box > .icon {
  width: calc(2 * var(--sp-lg));
  margin: var(--sp-sm);
  overflow: visible;
}

@media (min-width: 600px) {
  .logo {
    display: block;
    max-width: var(--logo-width);
    margin: 6rem auto;
  }
}

.validation-summary-valid {
  display: none;
}

.validation-summary-errors ul {
  list-style: none;
  padding-left: 0;
}

/* ******************************************************************
 * FORMS
 ****************************************************************** */

label {
  font-size: var(--fs-label);
  display: block;
}

input[type="text"],
input[type="email"],
input[type="password"],
input[type="tel"],
input[type="number"],
textarea,
select {
  border: 1px solid var(--co-input-border);
  width: 100%;
  border-radius: var(--radius);
  padding: 0.5rem 1rem;
  height: var(--input-height);
  background-color: var(--co-input-bg);
  box-shadow: var(--co-input-shadow);
  color: var(--co-input-text);
  -webkit-appearance: none;
}

input[type="text"].has-error,
input[type="email"].has-error,
input[type="password"].has-error,
input[type="tel"].has-error,
input[type="number"].has-error,
textarea,
select.has-error {
  border-color: var(--co-input-invalid-border);
  box-shadow: var(--co-input-invalid-shadow);
}

input[type="text"]:hover,
input[type="email"]:hover,
input[type="password"]:hover,
input[type="tel"]:hover,
input[type="number"]:hover,
textarea,
select:hover {
  border-color: var(--co-input-hover-border);
  box-shadow: var(--co-input-hover-shadow);
}

input[type="text"]:focus,
input[type="email"]:focus,
input[type="password"]:focus,
input[type="tel"]:focus,
input[type="number"]:focus,
textarea,
select:focus {
  border-color: var(--co-input-focus-border);
  box-shadow: var(--co-input-focus-shadow);
  outline: none;
}

input[type="text"]::placeholder,
input[type="email"]::placeholder,
input[type="password"]::placeholder,
input[type="tel"]::placeholder,
input[type="number"]::placeholder,
textarea,
select::placeholder {
  color: var(--co-input-placeholder-text);
}

input[type="password"]::placeholder {
  font-size: 1rem;
}

input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

input[type="checkbox"] {
  float: left;
  width: 2rem;
}

input[type="checkbox"] + span {
  margin-left: 0.5rem;
  transform: translateY(-2px);
  display: inline-block;
  margin-top: 0;
  width: calc(100% - 2.5rem);
}

label + input,
label + select {
  margin-top: 0.25rem;
}

input + * {
  display: block;
}

input:disabled {
  background-color: #DCDAD1;
}

select {
  background-image: var(--select-arrow-url);
  background-position: calc(100% - 10px) calc(50% + 4px);
  background-repeat: no-repeat;
}

select:required:invalid {
  color: var(--co-input-placeholder-text);
}

option[value=""][disabled] {
  display: none;
}

option {
  color: var(--co-input-text);
}

.error-message {
  color: var(--co-input-error-message);
}

.fkFirstName {
  position: absolute;
  left: -9876px;
}

/* ******************************************************************
 * BUTTONS
 ****************************************************************** */

button,
a.button {
  display: block;
  width: 100%;
  border-radius: var(--radius);
  background-color: var(--co-button-bg);
  border: 1px solid var(--co-button-border);
  color: var(--co-button-text);
  padding: 0.5rem;
  font-size: var(--fs-button);
  font-weight: var(--fw-button);
  height: var(--input-height);
}

button.primary,
a.button.primary {
  background-color: var(--co-button-primary-bg);
  color: var(--co-button-primary-text);
  border-color: var(--co-button-primary-border);
}

button.naked,
a.button.naked {
  background-color: var(--co-button-naked-bg);
  border-color: var(--co-button-naked-border);
  color: var(--co-button-naked-text);
  text-decoration: underline;
}

button:focus,
button:active,
a.button:focus,
a.button:active {
  outline: none;
  box-shadow: 0 0 0 1px var(--co-input-focus-border);
}

button:hover,
a.button:hover {
  outline: none;
  cursor: pointer;
}

button + button,
a.button + a.button {
  margin-top: var(--sp-button);
}

textarea {
  resize: none;
  height: 10.4rem;
}

a.button {
  display: flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
}
