/* ==========================================================================
   Age Grade Converter — styles.css
   ========================================================================== */

/* ---- Theme tokens -------------------------------------------------------- */

:root {
  --bg: #0b0c10;
  --card: #12141b;
  --text: #e9ecf1;
  --muted: #a7afbd;
  --line: #2a2f3a;
  --accent: #7aa2ff;
  --rowAlt: rgba(255, 255, 255, 0.03);

  --control-bg: #0e1016;

  --radius-card: 14px;
  --radius-control: 12px;
  --radius-pill: 999px;

  --wrap-max: 1100px;
  --narrow-max: 500px;
  --inner-max: 700px;

  --space-1: 8px;
  --space-2: 12px;
  --space-3: 14px;
  --space-4: 16px;

  --font-base: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
}

/* ---- Base / reset -------------------------------------------------------- */

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

body {
  margin: 0;
  font-family: var(--font-base);
  background: var(--bg);
  color: var(--text);
}

/* ---- Layout -------------------------------------------------------------- */

.wrap {
  max-width: var(--wrap-max);
  margin: 0 auto;
  padding: var(--space-4);
}

.grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-3);
}

h1 {
  margin: 0;
  font-size: 28px;
  text-align: center;
}

.card {
  border: 1px solid var(--line);
  background: var(--card);
  border-radius: var(--radius-card);
  padding: var(--space-3);
}

.card.narrow {
  max-width: var(--narrow-max);
  width: 100%;
  margin-left: auto;
  margin-right: auto;
}

/* ---- Form controls ------------------------------------------------------- */

label {
  display: block;
  margin: 10px 0;
  color: var(--muted);
  font-size: 15px;
}

input,
select {
  width: 100%;
  margin-top: var(--space-1);
  padding: var(--space-2);
  border-radius: var(--radius-control);
  border: 1px solid var(--line);
  background: var(--control-bg);
  color: var(--text);
  font-size: 17px;
}

#equivPick {
  color: var(--muted);
  margin-left: auto;
  margin-right: auto;
  text-align: center;
  align-items: center;
}

/* Shared small grid used in Custom Target row */
.row {
  display: grid;
  gap: var(--space-2);
  grid-template-columns: 1fr 1fr;
}

@media (max-width: 420px) {
  .row {
    grid-template-columns: 1fr;
  }
}

/* ---- Input grid (Distance/Event, Age, Gender, Time, WMA) ------------------ */

.inputGrid3 {
  display: grid;
  gap: var(--space-2);
  align-items: start;

  max-width: var(--inner-max);
  margin: 0 auto;

  /* mobile: stack */
  grid-template-columns: 1fr;
}

.inputGrid3 .field {
  margin: 0;
}

.inputGrid3 label {
  margin: 0; /* override label default spacing inside the grid */
}

/* 3 columns when there's room:
   Row 1: Distance/Event | Age | Gender
   Row 2: Time | WMA (spans 2 cols)
*/
@media (min-width: 500px) {
  .inputGrid3 {
    grid-template-columns: 1.6fr 1fr 1fr;
  }

  .inputGrid3 .field:nth-child(4) {
    grid-column: 1 / 2; /* Time */
  }

  .inputGrid3 .field:nth-child(5) {
    grid-column: 2 / 4; /* WMA spans two columns */
  }
}

/* ---- Age Grade block ----------------------------------------------------- */

.ageGradeBox {
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  padding: var(--space-4);
  text-align: center;
  background: var(--control-bg);
  width: 100%;
}

.ageGradeValue {
  margin: 6px 0 8px;
  font-size: 52px;
  font-weight: 900;
  letter-spacing: 0.5px;
  font-variant-numeric: tabular-nums;
}

.ageGradeSub {
  color: var(--muted);
  margin-bottom: var(--space-2);
  font-size: 15px;
}

.ageGradeTriples {
  display: grid;
  gap: 10px;
  text-align: left;
}

.tripleRow {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 10px;
  align-items: baseline;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}

.tripleLabel {
  color: var(--muted);
  font-size: 15px;
}

.tripleValue {
  font-variant-numeric: tabular-nums;
  font-weight: 800;
  font-size: 17px;
}

/* ---- Targets (equivalence buttons) -------------------------------------- */

.targetsHeader {
  margin: 0 0 8px;
  font-size: 16px;
  color: var(--muted);
  text-align: center;
  font-weight: 600;
}

.targetsControls {
  max-width: var(--inner-max);
  margin: 0 auto;
}

.targetsField {
  width: 75%;
  margin-left: auto;
  margin-right: auto;
}

/* Divider below targets (JS toggles visibility) */
.targetsDivider {
  display: none;
  border-top: 1px solid var(--line);
  margin: 12px auto 0;
  max-width: var(--inner-max);
}

/* Custom target row */
.customRow {
  border-top: 1px solid var(--line);
  margin-top: var(--space-2);
  padding-top: var(--space-2);
}

/* ---- Results table ------------------------------------------------------- */

.resultSection {
  margin-top: var(--space-3);
}

.resultSection h3 {
  margin: 10px 0;
  font-size: 16px;
  color: var(--muted);
  text-align: center;
}

.resultTableWrap {
  width: 62.5%;
  max-width: 400px;
  min-width: 275px;
  margin: 0 auto;
}

table {
  width: 100%;
  border-collapse: collapse;
}

th,
td {
  padding: 13px 10px;
}

th:first-child,
td:first-child {
  text-align: left;
}

th:last-child,
td:last-child {
  text-align: right;
}

thead th {
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
  border-top: 0;
  border-bottom: 1px solid var(--line);
}

tbody tr:nth-child(even) td {
  background: var(--rowAlt);
}

/* ---- Title + info button ----------------------------------------------- */

.titleRow {
  position: relative;
  text-align: center;
  margin-top: 7px;
}

.titleText {
  display: inline-block;
}

.infoBtn {
  position: absolute;
  margin-left: 8px;
  transform: translateY(-50%);
  top: 50%;

  border: none;
  background: transparent;
  color: var(--muted);
  font-size: 18px;
  cursor: pointer;
  padding: 35px;
  line-height: 1;
}

.infoBtn:hover {
  color: var(--text);
}

.infoBtn:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

.introText {
  margin: 7px 0 2px;
  text-align: center;
  color: var(--muted);
  font-size: 15px;
  line-height: 1.4;
}

/* ---- Info modal + frosted overlay -------------------------------------- */

.infoOverlay {
  position: fixed;
  inset: 0;
  z-index: 1000;

  display: flex;
  align-items: center;
  justify-content: center;

  background: rgba(10, 12, 18, 0.55);
  backdrop-filter: blur(6px);
}
.infoOverlay[hidden] {
  display: none;
}
.infoOverlay {
  display: none;
}
.infoOverlay:not([hidden]) {
  display: flex;
}

.infoModal {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  padding: 20px 22px;

  max-width: 520px;
  width: calc(100% - 32px);

  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.45);
  position: relative;
}

.infoModal h2 {
  margin-top: 0;
}

.infoModal p {
  color: var(--muted);
  line-height: 1.5;
}

.infoLinks {
  margin: 14px 0;
  padding: 0;
  list-style: none;
}

.infoLinkLabel {
  color: var(--muted);
  line-height: 1.5;
  margin: 10px 0 6px;
}

.infoLinkItem {
  margin: 0 0 6px;
  padding-left: 18px;
}

.infoLinkItem a {
  color: var(--accent);
  text-decoration: none;
  font-weight: 700;
}

.infoLinkItem a:hover {
  text-decoration: underline;
}

.infoNote {
  font-size: 14px;
  color: var(--muted);
  margin-top: 12px;
}

.infoClose {
  position: absolute;
  top: 10px;
  right: 12px;

  border: none;
  background: transparent;
  color: var(--muted);
  font-size: 26px;
  cursor: pointer;
  line-height: 1;
}

.infoClose:hover {
  color: var(--text);
}
