:root {
  /* General */
  --spacing: 10px;
  --margin-spacing: var(--spacing);
  --padding-spacing: var(--spacing);
  --font-family: Arial, sans-serif;
  --transition-time: 0.3s ease;
  --border-radius: 10px;

  /* Common Colours */
  --highlight-bg-color: #0099cc;
  --highlight-font-color: #fff;
  --alert-bg-color: #fffacd;
  --alert-border-color: #666;
  --alert-font-color: #000;
  --success-bg-color: #d4edda;
  --success-border-color: #28a745;
  --success-font-color: #000;

  /* Body & Container */
  --body-bg: #fff;
  --body-color: #333;

  /* Headings */
  --text-shadow-color: rgba(0, 0, 0, 0.3);

  /* File Input Container */
  --file-input-scoring-border: #666;

  /* Assessment Item */
  --assessment-item-h2-bg: var(--highlight-bg-color);
  --assessment-item-h2-color: var(--highlight-font-color);

  /* Category */
  --category-h3-bg: #eaeaea;
  --category-h3-color: #333;
  --category-h3-border: #ddd;

  /* Criteria */
  --criteria-bg: var(--alert-bg-color);
  --criteria-border: var(--alert-border-color);
  --criteria-selected-bg: var(--success-bg-color);
  --criteria-selected-border: var(--success-border-color);
  --criteria-selected-font-color: var(--success-font-color);

  /* Criteria Box */
  --criteria-box-bg: #f0f0f0;
  --criteria-box-border: #007bff;
  --criteria-box-selected-bg: #b0c4de;
  --criteria-box-selected-border: #0056b3;
  --criteria-box-hover-bg: #66b2ff;
  --criteria-box-hover-border: #3399ff;

  /* Score Bar */
  --score-bar-bg: var(--highlight-bg-color);
  --score-font-color: var(--highlight-font-color);

  /* Button */
  --button-font-color: #000000;
  --button-bg: #f0f0f0;
  --button-border: #007bff;
  --button-hover-bg: #d4e2f3;
  --button-hover-border: #0056b3;
  --button-padding: 0.75em;

  /* Destructive Button */
  --destructive-button-border: #ff0000;
  --destructive-button-hover-bg: #ffe6e6;
  --destructive-button-hover-border: #cc0000;

  /* Alert */
  --alert-bg-color: #fffacd;
  --alert-font-color: #000;
}

/* Dark Mode Support */
:root {
  @media screen and (prefers-color-scheme: dark) {
    /* Common Colors */
    --highlight-bg-color: #005577;
    --highlight-font-color: #ffffff;
    --alert-bg-color: #9c8409;
    --alert-border-color: #333;
    --alert-font-color: #ffffff;
    --success-bg-color: #1c831c;
    --success-border-color: #116205;

    /* Body & Container */
    --body-bg: #1e1e1e;
    --body-color: #ffffff;

    /* Headings */
    --text-shadow-color: rgba(255, 255, 255, 0.4);

    /* File Input Container */
    --file-input-scoring-border: #555555;

    /* Category */
    --category-h3-bg: #333333;
    --category-h3-color: #ffffff;
    --category-h3-border: #444444;

    /* Criteria Box */
    --criteria-box-bg: #2e2e2e;
    --criteria-box-border: #3f5f7f;
    --criteria-box-selected-bg: #1979bc;
    --criteria-box-selected-border: #0056b3;
    --criteria-box-hover-bg: #0099cc;
    --criteria-box-hover-border: #006699;

    /* Button */
    --button-font-color: #cccccc;
    --button-bg: #333333;
    --button-border: #555555;
    --button-hover-bg: #003366;
    --button-hover-border: #0056b3;

    /* Reset Button */
    --destructive-button-border: #990000;
    --destructive-button-hover-bg: #990000;
    --destructive-button-hover-border: #cc0000;

    /* Alert */
    --alert-bg-color: #9c8409;
    --alert-font-color: #ffffff;
  }
}

html,
body {
  min-height: 100vh;
  margin: 0;
  padding: 0;
}

body {
  background-color: var(--body-bg);
  color: var(--body-color);
  font-family: var(--font-family);
}

h1 {
  font-size: 2em;
  font-weight: bold;
  margin-block-start: 0.5em;
  margin-block-end: 0.5em;
}

h2 {
  font-size: 1.5em;
  font-weight: bold;
  color: var(--assessment-item-h2-color);
  background-color: var(--assessment-item-h2-bg);
  padding: var(--padding-spacing);
  margin-top: var(--margin-spacing);
  border-radius: var(--border-radius);
}

/* Label Buttons float right */
label button {
  float: right;
}

/**** File Loader ****/

#loading {
  font-family: var(--font-family);
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center; /* Aligns items vertically */
  flex-direction: column; /* Stack them vertically */
}

#hoveringLogo {
  /* Remove other styles */
  margin: var(--margin-spacing);
  z-index: 1;
}

#loadFromFile {
  text-align: center; /* Center the text inside it */
}

#loading h1 {
  text-align: center;
  margin: var(--margin-spacing);
  font-weight: bold;
  text-shadow: 2px 2px 4px var(--text-shadow-color);
}

#loading h2 {
  font-weight: normal;
  font-size: smaller;
}

/* #loading {
  font-family: var(--font-family);
  position: relative;
}

#hoveringLogo {
  position: absolute;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  z-index: 1;
  margin: var(--margin-spacing);
}

#loadFromFile {
  margin: var(--margin-spacing);
  border: 2px solid var(--file-input-scoring-border);
  padding: var(--padding-spacing);
  border-radius: var(--border-radius);
}

#loading h1 {
  font-weight: bold;
} */

#loading p {
  padding: var(--padding-spacing) 0;
}

/**** Marking ****/

#marking {
  display: none;
  margin: 0;
  padding: 0;
}

#markingLayout {
  display: flex;
  flex-direction: column;
  height: 100vh;
}

#scoreBar {
  background-color: var(--score-bar-bg);
  color: var(--button-font-color);
  text-align: center;
  padding: var(--padding-spacing);
}

#scoreBarButtons {
  display: flex;
  flex-wrap: wrap;
  /* align-items: center; */
  justify-content: center;
  gap: var(--margin-spacing);
}

#markingContent {
  flex-grow: 1;
  overflow-y: auto;
  padding: var(--padding-spacing);
}

#score {
  font-weight: bold;
  font-size: 1em;
  color: var(--score-font-color);
  align-self: center;
}

button {
  display: inline-block;
  padding: var(--button-padding);
  border: 1px solid var(--button-border);
  border-radius: var(--border-radius);
  background-color: var(--button-bg);
  color: var(--button-font-color);
  cursor: pointer;
  transition: background-color var(--transition-time),
    border-color var(--transition-time);
}

input[type="file"] {
  display: inline-block;
  padding: 0;
}

button:hover {
  background-color: var(--button-hover-bg);
  border-color: var(--button-hover-border);
}

button.destructive {
  border-color: var(--destructive-button-border);
}

button.destructive:hover {
  background-color: var(--destructive-button-hover-bg);
  border-color: var(--destructive-button-hover-border);
}

#scoring {
  /* padding-bottom: 60px; */
  background-color: var(--body-bg);
  color: var(--body-color);
}

.assessment-item > h1 {
  margin: 0;
  margin-block: 0;
}

.category h3 {
  font-size: 18px;
  font-weight: bold;
  font-style: italic;
  color: var(--category-h3-color);
  background-color: var(--category-h3-bg);
  padding: var(--padding-spacing);
  border: 2px solid var(--category-h3-border);
  border-radius: var(--border-radius);
}

.criteria {
  display: flex;
  flex-direction: column;
  padding: var(--padding-spacing);
  border: 2px solid var(--criteria-border);
  border-radius: var(--border-radius);
  transition: background-color var(--transition-time),
    border-color var(--transition-time);
  background-color: var(--criteria-bg);
}

.criteria label {
  font-weight: bold;
  margin: 0;
}

.criteria-selected {
  background-color: var(--criteria-selected-bg);
  border-color: var(--criteria-selected-border);
}

.criteria-header,
.criteria-title {
  font-weight: bold;
}

.criteria-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--margin-spacing);
  justify-content: space-between;
}

.criteria-box {
  flex: 1;
  min-width: 150px;
  border: 1px solid var(--criteria-box-border);
  padding: var(--padding-spacing);
  box-sizing: border-box;
  text-align: center;
  cursor: pointer;
  overflow: hidden;
  border-radius: var(--border-radius);
  background-color: var(--criteria-box-bg);
  transition: background-color var(--transition-time),
    border-color var(--transition-time);
}

.criteria-box.selected {
  background-color: var(--criteria-box-selected-bg);
  border-color: var(--criteria-box-selected-border);
}

.criteria-box:hover {
  background-color: var(--criteria-box-hover-bg);
  border-color: var(--criteria-box-hover-border);
}

.criteria-title {
  font-size: 16px;
}

.criteria-description {
  font-size: 14px;
}

/*
.criteria-selected .criteria-description {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
*/

.criteria-selected:hover .criteria-description {
  white-space: normal;
  overflow: visible;
}

#feedbackContainer > h2 {
  margin-block: 0;
  margin-top: var(--margin-spacing);
}

/* .feedback contains a list of feedback-items, arranged horizontally. */
#feedbackContainer .feedback {
  /* Flexbox */
  display: flex;
  flex-wrap: wrap;
  gap: var(--margin-spacing);
  justify-content: space-between;
  align-items: stretch;
}

/* .feedback-item contains a label, details, and textarea, arranged vertically. */
/* Similar to .criteria-box, but with a textarea instead of a description. */
.feedback-item {
  flex: 1;
  min-width: 150px;
  padding: var(--padding-spacing);
  border: 2px solid var(--criteria-box-border);
  border-radius: var(--border-radius);
  box-sizing: border-box;
}

/* Media query for small screens */
@media screen and (max-width: 768px) {
  .feedback-item {
    flex: 1 1 100%;  /* Override flex-grow, flex-shrink and flex-basis */
    min-width: 100%;
  }
}

.feedback-item.positive {
  background-color: var(--success-bg-color);
  border-color: var(--success-border-color);
}

.feedback-item.negative {
  background-color: var(--alert-bg-color);
  border-color: var(--alert-border-color);
}

.feedback-item label {
  font-weight: bold;
  margin: 0;
}

div.feedback p {
  margin: 0;
  padding: var(--padding-spacing);
}

textarea.feedback {
  width: 100%;
  height: 5em;
  padding: var(--padding-spacing);
  border: 1px solid var(--criteria-box-border);
  border-radius: var(--border-radius);
  box-sizing: border-box;
  resize: vertical;
}

textarea.feedback.result {
  /* background-color: var(--criteria-box-selected-bg); */
  border-color: var(--criteria-box-selected-border);
  height: 15em;
}

/* Utility Classes */

.vertical-spacing > * {
  margin: 0;
  margin-top: var(--margin-spacing);
}

.vertical-spacing > *:first-child {
  margin-top: 0;
}

.horizontal-spacing > * {
  margin: 0;
  margin-left: var(--margin-spacing);
}

.horizontal-spacing > *:first-child {
  margin-left: 0;
}

.assessment-item-heading {
  position: sticky;
  top: 0;
  visibility: visible;
  transition: box-shadow 0.3s ease-in-out;
}

.hovering {
  box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.4);
  transition: box-shadow 0.3s ease-in-out;
}

#alert-container {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);  /* Semi-transparent black */
  z-index: 9999;
  display: none;
  justify-content: center;
  align-items: center;
  cursor: pointer;
}

#alert-dialog {
  position: relative;
  padding: 20px;
  background-color: var(--alert-bg-color);  /* Solid background color */
  color: var(--alert-font-color);
  border-radius: 10px;
  box-sizing: border-box;
  display: inline-block;  /* Takes as much width as the content requires */
  cursor: auto;
}

#close-button {
  position: absolute;
  top: calc(-1 * var(--margin-spacing));
  right: calc(-1 * var(--margin-spacing));
  background: none;
  border: none;
  font-size: 1.5em;
  cursor: pointer;
}
