*,
::before,
::after {
  --tw-border-opacity: 1;
  --tw-bg-opacity: 1;
  --tw-text-opacity: 1;
}

.grecaptcha-badge {
  visibility: hidden;
}

/* ================= Layout / Display ================= */
.fixed {
  position: fixed;
}
.absolute {
  position: absolute;
}
.relative {
  position: relative;
}
.block {
  display: block;
}
.hidden {
  display: none;
}
.flex {
  display: flex;
}
.inline-flex {
  display: inline-flex;
}
.inline-block {
  display: inline-block;
}
.grid {
  display: grid;
}

/* ================= Position ================= */
.top-0 {
  top: 0px;
}
.top-\[14px\] {
  top: 14px;
}
.right-0 {
  right: 0px;
}
.right-\[12px\] {
  right: 12px;
}
.bottom-0 {
  bottom: 0px;
}
.left-0 {
  left: 0px;
}
.z-\[1000000\] {
  z-index: 1000000;
}

/* ================= Sizing ================= */
.h-screen {
  height: 100vh;
}
.w-screen {
  width: 100vw;
}
.h-auto {
  height: auto;
}
.h-max {
  height: max-content;
}
.w-full {
  width: 100%;
}
.max-w-full {
  max-width: 100%;
}
.w-\[360px\] {
  width: 360px;
}
.h-\[32px\] {
  height: 32px;
}
.w-\[32px\] {
  width: 32px;
}
.h-\[18px\] {
  height: 18px;
}
.w-\[18px\] {
  width: 18px;
}
.h-\[16px\] {
  height: 16px;
}
.w-\[16px\] {
  width: 16px;
}
.h-\[11px\] {
  height: 11px;
}
.w-\[11px\] {
  width: 11px;
}
.min-w-0 {
  min-width: 0px;
}
.min-h-\[70px\] {
  min-height: 70px;
}
.min-h-\[44px\] {
  min-height: 44px;
}
.min-h-\[26px\] {
  min-height: 26px;
}
.max-h-\[calc\(100dvh-47px\)\] {
  max-height: calc(100dvh - 47px);
}
.max-h-\[calc\(100dvh-160px\)\] {
  max-height: calc(100dvh - 160px);
}

/* ================= Margin ================= */
.m-auto {
  margin: auto;
}
.mx-\[16px\] {
  margin-left: 16px;
  margin-right: 16px;
}
.mt-\[14px\] {
  margin-top: 14px;
}
.mt-\[5px\] {
  margin-top: 5px;
}
.mt-\[2px\] {
  margin-top: 2px;
}
.mt-\[10px\] {
  margin-top: 10px;
}
.mb-\[5px\] {
  margin-bottom: 5px;
}
.mb-\[6px\] {
  margin-bottom: 6px;
}
.mb-\[8px\] {
  margin-bottom: 8px;
}
.mb-\[10px\] {
  margin-bottom: 10px;
}
.mb-\[12px\] {
  margin-bottom: 12px;
}
.mb-\[14px\] {
  margin-bottom: 14px;
}
.ml-\[4px\] {
  margin-left: 4px;
}
.ml-\[6px\] {
  margin-left: 6px;
}

/* ================= Padding ================= */
.p-\[10px\] {
  padding: 10px;
}
.p-\[12px\] {
  padding: 12px;
}
.p-\[16px\] {
  padding: 16px;
}
.px-\[4px\] {
  padding-left: 4px;
  padding-right: 4px;
}
.px-\[6px\] {
  padding-left: 6px;
  padding-right: 6px;
}
.px-\[10px\] {
  padding-left: 10px;
  padding-right: 10px;
}
.px-\[12px\] {
  padding-left: 12px;
  padding-right: 12px;
}
.px-\[14px\] {
  padding-left: 14px;
  padding-right: 14px;
}
.px-\[16px\] {
  padding-left: 16px;
  padding-right: 16px;
}
.px-\[20px\] {
  padding-left: 20px;
  padding-right: 20px;
}
.py-\[1px\] {
  padding-top: 1px;
  padding-bottom: 1px;
}
.py-\[4px\] {
  padding-top: 4px;
  padding-bottom: 4px;
}
.py-\[7px\] {
  padding-top: 7px;
  padding-bottom: 7px;
}
.py-\[8px\] {
  padding-top: 8px;
  padding-bottom: 8px;
}
.py-\[9px\] {
  padding-top: 9px;
  padding-bottom: 9px;
}
.py-\[10px\] {
  padding-top: 10px;
  padding-bottom: 10px;
}
.py-\[12px\] {
  padding-top: 12px;
  padding-bottom: 12px;
}
.py-\[14px\] {
  padding-top: 14px;
  padding-bottom: 14px;
}
.pb-\[12px\] {
  padding-bottom: 12px;
}
.pb-\[20px\] {
  padding-bottom: 20px;
}
.pr-\[8px\] {
  padding-right: 8px;
}

/* ================= Flex / Grid ================= */
.flex-col {
  flex-direction: column;
}
.flex-wrap {
  flex-wrap: wrap;
}
.shrink-0 {
  flex-shrink: 0;
}
.items-center {
  align-items: center;
}
.items-start {
  align-items: flex-start;
}
.justify-center {
  justify-content: center;
}
.justify-between {
  justify-content: space-between;
}
.grid-cols-1 {
  grid-template-columns: repeat(1, minmax(0, 1fr));
}
.grid-cols-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.gap-\[4px\] {
  gap: 4px;
}
.gap-\[6px\] {
  gap: 6px;
}
.gap-\[7px\] {
  gap: 7px;
}
.gap-\[8px\] {
  gap: 8px;
}
.gap-\[10px\] {
  gap: 10px;
}
.gap-\[12px\] {
  gap: 12px;
}
.gap-\[8px_16px\] {
  gap: 8px 16px;
}

/* ================= Typography ================= */
.text-left {
  text-align: left;
}
.align-middle {
  vertical-align: middle;
}
.whitespace-pre-wrap {
  white-space: pre-wrap;
}
.font-bold {
  font-weight: 700;
}
.font-normal {
  font-weight: 400;
}
.leading-none {
  line-height: 1;
}
.leading-tight {
  line-height: 1.25;
}
.leading-\[1\.6\] {
  line-height: 1.6;
}
.leading-\[1\.7\] {
  line-height: 1.7;
}
.leading-\[1\.8\] {
  line-height: 1.8;
}
.text-\[10px\] {
  font-size: 10px;
}
.text-\[11px\] {
  font-size: 11px;
}
.text-\[11\.5px\] {
  font-size: 11.5px;
}
.text-\[12px\] {
  font-size: 12px;
}
.text-\[12\.5px\] {
  font-size: 12.5px;
}
.text-\[13px\] {
  font-size: 13px;
}
.text-\[14px\] {
  font-size: 14px;
}
.text-\[15px\] {
  font-size: 15px;
}
.text-\[22px\] {
  font-size: 22px;
}

/* ================= Colors: text (--tw-text-opacity 準拠) ================= */
.text-white {
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity));
}
.text-outer-space {
  --tw-text-opacity: 1;
  color: rgb(68 68 68 / var(--tw-text-opacity));
}
.text-raisin-black {
  --tw-text-opacity: 1;
  color: rgb(34 34 34 / var(--tw-text-opacity));
}
.text-vivid-cerulean2 {
  --tw-text-opacity: 1;
  color: rgb(0 146 229 / var(--tw-text-opacity));
}
.text-mostly-red {
  --tw-text-opacity: 1;
  color: rgb(242 0 0 / var(--tw-text-opacity));
}
.text-spanish-gray {
  --tw-text-opacity: 1;
  color: rgb(155 155 155 / var(--tw-text-opacity));
}
.text-go-green {
  --tw-text-opacity: 1;
  color: rgb(23 181 93 / var(--tw-text-opacity));
}
.text-university-of-tennessee-orange {
  --tw-text-opacity: 1;
  color: rgb(241 125 0 / var(--tw-text-opacity));
}

/* ================= Colors: background (--tw-bg-opacity 準拠) ================= */
.bg-white {
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / var(--tw-bg-opacity));
}
.bg-black {
  --tw-bg-opacity: 1;
  background-color: rgb(0 0 0 / var(--tw-bg-opacity));
}
.bg-university-of-tennessee-orange {
  --tw-bg-opacity: 1;
  background-color: rgb(241 125 0 / var(--tw-bg-opacity));
}
.bg-cultured {
  --tw-bg-opacity: 1;
  background-color: rgb(247 247 247 / var(--tw-bg-opacity));
}
.bg-floral-white {
  --tw-bg-opacity: 1;
  background-color: rgb(252 249 237 / var(--tw-bg-opacity));
}
.bg-ghost-white {
  --tw-bg-opacity: 1;
  background-color: rgb(247 251 252 / var(--tw-bg-opacity));
}
.bg-outer-space {
  --tw-bg-opacity: 1;
  background-color: rgb(68 68 68 / var(--tw-bg-opacity));
}
.bg-go-green {
  --tw-bg-opacity: 1;
  background-color: rgb(23 181 93 / var(--tw-bg-opacity));
}
.bg-sweet-brown {
  --tw-bg-opacity: 1;
  background-color: rgb(175 48 48 / var(--tw-bg-opacity));
}
.bg-pastel-red {
  --tw-bg-opacity: 1;
  background-color: rgb(255 235 240 / var(--tw-bg-opacity));
}
.bg-honeydew {
  --tw-bg-opacity: 1;
  background-color: rgb(236 248 239 / var(--tw-bg-opacity));
}
.bg-cosmic-latte {
  --tw-bg-opacity: 1;
  background-color: rgb(255 247 229 / var(--tw-bg-opacity));
}
.bg-transparent {
  --tw-bg-opacity: 0;
  background-color: rgb(255 255 255 / var(--tw-bg-opacity));
}

/* ================= Border ================= */
.border {
  border-width: 1px;
}
.border-solid {
  border-style: solid;
}
.border-dashed {
  border-style: dashed;
}
.border-\[1\.5px\] {
  border-width: 1.5px;
}
.border-b {
  border-bottom-width: 1px;
}
.border-l-\[3px\] {
  border-left-width: 3px;
}

/* ---- Border color (--tw-border-opacity 準拠) ---- */
.border-bright-gray {
  --tw-border-opacity: 1;
  border-color: rgb(234 234 234 / var(--tw-border-opacity));
}
.border-gainsboro {
  --tw-border-opacity: 1;
  border-color: rgb(217 224 227 / var(--tw-border-opacity));
}
.border-chinese-silver2 {
  --tw-border-opacity: 1;
  border-color: rgb(204 204 204 / var(--tw-border-opacity));
}
.border-vivid-cerulean2 {
  --tw-border-opacity: 1;
  border-color: rgb(0 146 229 / var(--tw-border-opacity));
}
.border-university-of-tennessee-orange {
  --tw-border-opacity: 1;
  border-color: rgb(241 125 0 / var(--tw-border-opacity));
}
.border-go-green {
  --tw-border-opacity: 1;
  border-color: rgb(23 181 93 / var(--tw-border-opacity));
}
.border-mostly-red {
  --tw-border-opacity: 1;
  border-color: rgb(242 0 0 / var(--tw-border-opacity));
}
.border-arylide-yellow {
  --tw-border-opacity: 1;
  border-color: rgb(230 200 107 / var(--tw-border-opacity));
}

/* ================= Border radius ================= */
.rounded-\[3px\] {
  border-radius: 3px;
}
.rounded-\[4px\] {
  border-radius: 4px;
}
.rounded-\[6px\] {
  border-radius: 6px;
}
.rounded-\[8px\] {
  border-radius: 8px;
}
.rounded-\[10px\] {
  border-radius: 10px;
}
.rounded-\[16px\] {
  border-radius: 16px;
}
.rounded-t-\[4px\] {
  border-top-left-radius: 4px;
  border-top-right-radius: 4px;
}

/* ================= Effects / Misc ================= */
.shadow {
  box-shadow:
    0 1px 3px 0 rgb(0 0 0/0.1),
    0 1px 2px -1px rgb(0 0 0/0.1);
}
.transition {
  transition-property:
    color, background-color, border-color, text-decoration-color, fill, stroke,
    opacity, box-shadow, transform, filter, backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 0.15s;
}
.outline-none {
  outline: 2px solid transparent;
  outline-offset: 2px;
}
.opacity-40 {
  opacity: 0.4;
}
.appearance-none {
  appearance: none;
}
.cursor-pointer {
  cursor: pointer;
}
.cursor-not-allowed {
  cursor: not-allowed;
}
a.pointer-events-auto[href] {
  pointer-events: auto;
}
.pointer-events-none {
  pointer-events: none;
}
.overflow-hidden {
  overflow: hidden;
}
.overflow-y-auto {
  overflow-y: auto;
}

/* ================= 疑似クラス（色は --tw-*-opacity 準拠） ================= */
.hover\:border-university-of-tennessee-orange:hover {
  --tw-border-opacity: 1;
  border-color: rgb(241 125 0 / var(--tw-border-opacity));
}
.hover\:bg-floral-white:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(252 249 237 / var(--tw-bg-opacity));
}
.focus\:border-vivid-cerulean2:focus {
  --tw-border-opacity: 1;
  border-color: rgb(0 146 229 / var(--tw-border-opacity));
}
.checked\:border-university-of-tennessee-orange:checked {
  --tw-border-opacity: 1;
  border-color: rgb(241 125 0 / var(--tw-border-opacity));
}
.checked\:bg-university-of-tennessee-orange:checked {
  --tw-bg-opacity: 1;
  background-color: rgb(241 125 0 / var(--tw-bg-opacity));
}
.peer:checked ~ .peer-checked\:block {
  display: block;
}
.disabled\:bg-light-gray:disabled {
  --tw-bg-opacity: 1;
  background-color: rgb(214 212 205 / var(--tw-bg-opacity));
}
.disabled\:text-\[\#A6A6A6\]:disabled {
  --tw-text-opacity: 1;
  color: rgb(166 166 166 / var(--tw-text-opacity));
}

/* ================= group-data-[status=error]:* ================= */
/* 親の .group 要素が data-status="error" を持つ場合にのみ適用 */
.group[data-status="error"] .group-data-\[status\=error\]\:block {
  display: block;
}
.group[data-status="error"] .group-data-\[status\=error\]\:border-mostly-red {
  --tw-border-opacity: 1;
  border-color: rgb(242 0 0 / var(--tw-border-opacity));
}
.group[data-status="error"] .group-data-\[status\=error\]\:bg-pastel-red {
  --tw-bg-opacity: 1;
  background-color: rgb(255 235 240 / var(--tw-bg-opacity));
}
.group[data-status="error"] .group-data-\[status\=error\]\:outline {
  outline-style: solid;
}
.group[data-status="error"] .group-data-\[status\=error\]\:outline-1 {
  outline-width: 1px;
}
.group[data-status="error"] .group-data-\[status\=error\]\:outline-mostly-red {
  outline-color: #f20000;
}

/* ================= ブラウザ依存の揺らぎを吸収する ================= */
.\[\&\:\:-webkit-date-and-time-value\]\:min-h-\[1\.5em\]::-webkit-date-and-time-value {
  min-height: 1.5em;
}
.\[\&\:\:-webkit-date-and-time-value\]\:text-left::-webkit-date-and-time-value {
  text-align: left;
}
@supports (-webkit-touch-callout: none) {
  .supports-\[-webkit-touch-callout\:none\]\:block {
    display: block;
  }

  .supports-\[-webkit-touch-callout\:none\]\:pr-\[36px\] {
    padding-right: 36px;
  }
}

/* ================= 変数定義は最後にまとめて優先度を高める ================= */
.bg-opacity-50 {
  --tw-bg-opacity: 0.5;
}

/* ================= レスポンシブ (md: min-width:768px) ================= */
@media (min-width: 768px) {
  .md\:w-\[720px\] {
    width: 720px;
  }
  .md\:px-\[22px\] {
    padding-left: 22px;
    padding-right: 22px;
  }
  .md\:mx-\[22px\] {
    margin-left: 22px;
    margin-right: 22px;
  }
  .md\:max-h-\[calc\(90dvh-160px\)\] {
    max-height: calc(90dvh - 160px);
  }
  .md\:text-\[16px\] {
    font-size: 16px;
  }
  .md\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .md\:grid-cols-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
