/* ===== Unified Reset CSS ===== */

/* Box-sizing */
*, *::before, *::after {
  box-sizing: border-box;
}

/* Root defaults */
html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: 3.75rem;
}

/* Remove default padding/margin */
ul, ol {
  padding: 0;
  list-style: none;
}

body, h1, h2, h3, h4, p, ul, ol, figure, blockquote, dl, dd {
  margin: 0;
}

/* Body base */
body {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  text-rendering: optimizeSpeed;
  line-height: 1.5;
  word-wrap: break-word;
  overflow-wrap: break-word;
}

/* Main area fills height */
main {
  flex: 1;
  overflow: hidden;
}

/* Display block for HTML5 elements */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
  display: block;
}

/* Typography reset */
a {
  text-decoration: none;
  color: inherit;
  transition: opacity 0.3s;
}
a:not([class]) {
  text-decoration-skip-ink: auto;
}

/* Hover effect */
@media (any-hover: hover) {
  a:hover {
    opacity: 0.7;
  }
}

/* Images */
img {
  max-width: 100%;
  width: 100%;
  display: block;
}

/* Quotes reset */
blockquote, q {
  quotes: none;
}
blockquote::before, blockquote::after,
q::before, q::after {
  content: '';
}

/* Table */
table {
  border-collapse: collapse;
  border-spacing: 0;
}

/* Forms */
input, button, textarea, select {
  font: inherit;
  vertical-align: middle;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background: transparent;
  border: none;
  border-radius: 0;
  outline: none;
}

textarea {
  resize: vertical;
}

input[type="checkbox"],
input[type="radio"] {
  display: none;
}

input[type="submit"],
input[type="button"],
label,
button,
select {
  cursor: pointer;
}

select::-ms-expand {
  display: none;
}

/* Utility */
hr {
  display: block;
  height: 1px;
  border: none;
  border-top: 1px solid #ccc;
  margin: 1em 0;
  padding: 0;
}

/* Google reCAPTCHA badge */
.grecaptcha-badge {
  visibility: hidden;
}
