@import url(sherborne-palette.css);
@import url(sherborne-typography.css);

/*Defaults */
:root {
  --background-color: var(--white);
  --text-color: var(--dark);
  --text-color-medium: var(--medium);
  --text-color-light: var(--light);
  --spot-color: var(--gold);

  --background-color-1: var(--stone_1);
  --text-color-1: var(--dark);

  --background-color-2: var(--stone_2);
  --text-color-2: var(--dark);

  --background-color-3: var(--stone_3);
  --text-color-3: var(--dark);

  --code-color: var(--orange);

  --link-color: var(--hamstone);
  --link-hover-color: var(--hamstone);

  --input-border-color: #ccc;
  --input-border-thickness: 0.25em;
  --input-focus-border-color: var(--orange);

  --button-background-color: var(--brown);
  --button-background-hover-color: var(--grey);
  --button-text-color: var(--white);

  --warning-background-color: var(--yellow);

  --margin-vertical: 1rem;
  --margin-horizontal: 1rem;
  --padding-vertical: 0.5em;
  --padding-horizontal: 8px;

  --border-color: var(--hamstone);
  --border-radius: 4px;
  --border-thickness: 2px;

  /* ---Checkbox Parameters--- */
  --checkbox-height: 2rem;
  --checkbox-border-width: calc(0.15 * var(--checkbox-height));
  --checkbox-tick-size: calc(var(--checkbox-height) - 2 * var(--checkbox-border-width));
  --checkbox-border-color: #ccc;
  --checkbox-background-color: var(--background-color);
  --checkbox-tick-color: #0c0;
  --checkbox-tick: "\2714";

  /* ---Switch Parameters--- */
  --switch-height: 3em;
  --switch-border-width: calc(0.15 * var(--switch-height));
  --switch-border-color: #ccc;
  --switch-off-color: #999;
  --switch-on-color: #0c0;

  /* ---Radio Parameters--- */
  --radio-height: 3em;
  --radio-border-width: calc(0.15 * var(--radio-height));
  --radio-border-color: #ccc;
  --radio-off-color: #999;
  --radio-on-color: #0c0;
}

/*Dark colour theme */
.dark {
  --spot-color: var(--orange);
  --background-color: #666;
  --text-color: var(--white);
  --text-color-dark: var(--dark);

  --link-color: var(--spot-color);
  --link-hover-color: var(--spot-color);
  --link-color: var(--spot-color);
  --link-hover-color: var(--spot-color);

  --background-color-1: var(--dark);
  --text-color-1: var(--spot-color);

  --background-color-2: var(--medium);
  --text-color-2: var(--dark);

  --background-color-3: var(--light);
  --text-color-3: var(--dark);

  --button-background-color: var(--dark);
  --button-text-color: var(--orange);
}

#swatchesList {
  display: flex;
  flex-flow: row wrap;
}

#swatchesList h3 {
  width: 100%;
}

span.color-sample {
  padding: 4px;
  width: 12em;
  align-items: center;
  display: flex;
}

span.swatch {
  display: inline-block;
  height: 24px;
  width: 24px;
  flex-grow: 0;
  flex-shrink: 0;
  border: 1px solid black;
  margin-right: 4px;
}

body {
  background-color: var(--background-color);
  color: var(--text-color);
}

header {
  background-color: var(--background-color-1);
  color: var(--text-color-1);
}

footer {
  background-color: var(--background-color-1);
  color: var(--text-color-1);
}

nav {
  padding: var(--padding-vertical) var(--padding-horizontal);
}

nav>ul {
  display: flex;
  list-style: none;
  flex-flow: row nowrap;
  margin: 4px;
  font-weight: bold;
}

nav>ul>li {
  margin: 4px;
}

nav ul li ul {
  display: flex;
  list-style: disc;
  flex-flow: column nowrap;
  flex-grow: 1;
  font-weight: normal;
}

a,
a:link {
  position: relative;
  color: var(--link-color);
  text-decoration: none;
  transition: width 0.3s ease-in-out;
}

a:hover {
  color: var(--link-hover-color);
}

a:before {
  position: absolute;
  top: 100%;
  height: 1px;
  width: 0;
  content: "";
  background-color: var(--link-hover-color);
  transition: width 0.3s ease-in-out;
}

a:hover:before {
  width: 100%;
}

a.button {
  font-size: 1rem;
  margin: calc(0.25 * var(--margin-vertical)) calc(0.25 * var(--margin-horizontal));
  padding: calc(1 * var(--padding-vertical)) calc(1 * var(--padding-horizontal));
  background: var(--button-background-color);
  color: var(--button-text-color);
  cursor: pointer;
  border-radius: var(--border-radius);
  border: none;
}

a.button:before {
  display: none;
  background-color: none;
  transition: none;
}

a.button:hover {
  background-color: var(--button-background-hover-color);
}

h1,
h2,
h3,
h4,
h5,
h6,
p,
cite {
  padding: var(--padding-vertical) var(--padding-horizontal);
}

h1,
h2,
h3 {
  color: var(--spot-color);
}

/* ---Block Quote--- */
blockquote {
  padding: 1em;
  margin: calc(2 * var(--margin-vertical)) calc(2 * var(--margin-horizontal));
  color: var(--text-color-1);
  background-color: var(--background-color-1);
  border-top: none;
  border-bottom: none;
  border-right: none;
  position: relative;
  font-style: italic;
  border-left: calc(16 * var(--border-thickness)) solid var(--border-color);
}

blockquote>cite {
  display: block;
  text-align: right;
  font-style: italic;
}

/* ---Lists--- */
dl,
ol,
ul {
  margin-left: var(--margin-horizontal);
}

ul.list--bare {
  list-style: none;
}

dt {
  font-weight: bold;
}

dd {
  margin-left: calc(1 * var(--margin-horizontal));
}

/*Horizonal Rules*/
hr {
  margin: var(--margin-vertical);
}

/*Tables*/
table {
  margin: var(--margin-vertical) var(--margin-horizontal);
  border-collapse: collapse;
}

caption {
  font-weight: bold;
  font-size: 1.2em;
  color: var(--text-color-1);
  background-color: var(--background-color-1);
}

thead,
tfoot {
  border-top: 1px solid var(--border-color);
  color: var(--text-color-2);
  background-color: var(--background-color-2);
  font-weight: bold;
}

tbody {
  color: var(--text-color-3);
  background-color: var(--background-color-3);
}

caption,
th,
td {
  border: var(--border-thickness) solid var(--border-color);
  padding: calc(1 * var(--padding-vertical));
}

caption {
  border-bottom: none;
}

/*Code*/
code,
samp {
  font-family: var(--monoFont);

}

code.block {
  display: inline-block;
  width: 60vw;
  margin: var(--margin-vertical) var(--margin-horizontal);
  padding: var(--padding-vertical) var(--padding-horizontal);
  text-wrap: normal;
  white-space: pre-wrap;
  word-wrap: break-word;
  color: var(--code-color);
  background-color: #555;
}

mark {
  background-color: var(--warning-background-color);
}

var {
  font-family: "Times New Roman", Times, serif;
  font-style: italic;
}

figure {
  padding: var(--padding-vertical) var(--padding-horizontal);
}

figure>figcaption {
  font-style: italic;
}

iframe {
  border: none;
}

form {
  margin: var(--margin-vertical) var(--margin-horizontal);
  padding: var(--padding-vertical) var(--padding-horizontal);
}

fieldset {
  padding: var(--padding-vertical) var(--padding-horizontal);
  margin: calc(2 * var(--margin-vertical)) var(--margin-horizontal) var(--margin-vertical) var(--margin-horizontal);
  color: var(--text-color-1);
  background-color: var(--background-color-1);
  position: relative;
}

fieldset>legend {
  position: absolute;
  font-weight: bold;
  top: calc(-2px - 1 * var(--padding-vertical) - 1 * var(--margin-vertical));
}

label {
  font-weight: bold;
}

input::placeholder {
  color: var(--text-color-medium);
}

input.is-invalid {
  background-color: var(--warning-background-color);
}

input[type="text"],
input[type="password"],
input[type="text"],
input[type="url"],
input[type="email"],
input[type="tel"],
input[type="search"],
input[type="number"],
input[type="date"],
input[type="month"],
input[type="datetime"],
input[type="datetime-local"] {
  border: var(--input-border-thickness) solid var(--input-border-color);
  padding: var(--padding-vertical) var(--padding-horizontal);
  font-family: var(--sansFont);
}

input[type="color"] {
  border: var(--input-border-thickness) solid var(--input-border-color);
}

select {
  height: 2rem;
  font-family: var(--sansFont);
}

select {
  padding-left: var(--padding-horizontal);
  padding-right: var(--padding-horizontal);
}

select:hover {
  cursor: pointer;
}

/*Checkboxes*/

/*Checkbox Label*/
label:has(input[type="checkbox"]) {
  line-height: var(--checkbox-height);
}

input[type="checkbox"] {
  -webkit-appearance: none;
  appearance: none;
  margin-left: 0.25em;
  margin-right: 0.25em;
  border: var(--border-thickness) solid var(--border-color);
  position: relative;
  top: calc(0.5 * var(--checkbox-height) - 0.5em);

  height: calc(1 * var(--checkbox-height));
  width: calc(1 * var(--checkbox-height));
  background-color: var(--checkbox-background-color);
  border: var(--checkbox-border-width) solid var(--checkbox-border-color);
  box-shadow: 0px 0px 4px #fff8;
}

/*Checkbox tick*/
input[type="checkbox"]:after {
  line-height: calc(var(--checkbox-height));
  position: absolute;
  top: calc(-1 * var(--checkbox-border-width));
  width: 100%;

  z-index: 0;
  content: var(--checkbox-tick);
  font-size: var(--checkbox-tick-size);
  text-align: center;
  color: var(--checkbox-tick-color);
}

/*Checkbox reveal*/
input[type="checkbox"]:before {
  position: absolute;
  right: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  content: "";
  background-color: var(--checkbox-background-color);
  transition: all 0.3s;
}

input[type="checkbox"]:checked:before {
  width: 0%;
}

/*Switches*/

/*Switch Label*/
label:has(input[type="checkbox"].switch) {
  line-height: var(--switch-height);
}

input[type="checkbox"].switch {
  -webkit-appearance: none;
  appearance: none;

  margin-left: 0.25em;
  margin-right: 0.25em;
  content: "";

  position: relative;
  top: calc(0.5 * var(--switch-height) - 0.5em);
  box-sizing: border-box;
  height: calc(1 * var(--switch-height));
  width: calc(1.5 * var(--switch-height));
  border-radius: calc(0.5 * var(--switch-height));
  background-color: var(--switch-off-color);
  border: var(--switch-border-width) solid var(--switch-border-color);
  box-shadow: 0px 0px 4px #fff8;
}

input[type="checkbox"].switch:checked {
  background-color: var(--switch-on-color);
}

input[type="checkbox"].switch::before {
  box-sizing: border-box;
  position: absolute;
  left: 0;
  top: 0;
  z-index: 2;
  content: "";
  width: calc(var(--switch-height) - 2 * var(--switch-border-width));
  height: calc(var(--switch-height) - 2 * var(--switch-border-width));
  border-radius: 50%;
  background: white;
  transition: all 0.2s;
  box-shadow: 0px 4px 4px #555;
}

input[type="checkbox"].switch:checked:before {
  left: calc(100% - var(--switch-height) + 2 * var(--switch-border-width));
}

input[type="checkbox"].switch:disabled:before {
  background-color: #ddd;
}

input[type="checkbox"].switch::after {
  right: var(--padding-horizontal);
  z-index: 1;
  content: "";
  color: var(--white);
}

input[type="checkbox"].switch:checked:after {
  left: var(--padding-horizontal);
}

input[type="checkbox"].switch:hover {
  cursor: pointer;
}

/*Radio Buttons*/
/*Radio label*/
label:has(input[type="radio"]) {
  line-height: var(--radio-height);
}

input[type="radio"] {
  -webkit-appearance: none;

  margin-left: 0.25em;
  margin-right: 0.25em;
  content: "";
  box-sizing: border-box;

  appearance: none;
  position: relative;
  border: var(--radio-border-width) solid var(--radio-border-color);
  height: calc(1 * var(--radio-height));
  width: calc(1.5 * var(--radio-height));
  border-radius: calc(0.5 * var(--radio-height));
  background-color: var(--radio-off-color);
  box-shadow: 0px 0px 4px #fff8;
  top: calc(0.5 * var(--radio-height) - 0.5em);
}

input[type="radio"]:checked {
  background-color: var(--radio-on-color);
}

input[type="radio"]::before {
  box-sizing: border-box;
  position: absolute;
  left: 0;
  top: 0;
  z-index: 2;
  content: "";
  width: calc(var(--radio-height) - 2 * var(--radio-border-width));
  height: calc(var(--radio-height) - 2 * var(--radio-border-width));
  border-radius: 50%;
  background: white;
  transition: all 0.2s;
  box-shadow: 0px 4px 4px #555;
}

input[type="radio"]:checked:before {
  left: calc(100% - var(--radio-height) + 2 * var(--radio-border-width));
}

input[type="radio"]:disabled:before {
  background-color: #ddd;
}

input[type="radio"]::after {
  right: var(--padding-horizontal);
  z-index: 1;
  content: "";
  color: var(--white);
}

input[type="radio"]:checked:after {
  left: var(--padding-horizontal);
}

input[type="radio"]:hover {
  cursor: pointer;
}

/*Textarea*/
textarea {
  font-family: var(--sansFont);
  padding: var(--padding-vertical) var(--padding-horizontal);
  background-color: var(--background-color-3);
  vertical-align: text-top;
}

/* ---Button---*/
input[type="submit"],
input[type="button"],
input[type="reset"],
input[type="submit"],
button {
  margin: calc(0.25 * var(--margin-vertical)) calc(0.25 * var(--margin-horizontal));
  padding: calc(1 * var(--padding-vertical)) calc(1 * var(--padding-horizontal));
  background: var(--button-background-color);
  color: var(--button-text-color);
  cursor: pointer;
  border-radius: var(--border-radius);
  border: none;
  font-size: 1rem;
  ;
}

input[type="submit"]:hover,
input[type="button"]:hover,
input[type="reset"]:hover,
input[type="submit"]:hover,
button:hover {
  background-color: var(--button-background-hover-color);
}

/*Helper Styles*/
.border-bottom {
  border-bottom: var(--border-thickness) solid var(--border-color);
}

.flex-horizontal {
  display: flex;
  flex-direction: row wrap;
}

.flex-vertical {
  display: flex;
  flex-direction: column;
  justify-content: space-around;
}

.padded {
  padding: var(--padding-vertical) var(--padding-horizontal);
}