/* ─────────── SEASON — training, races, results ─────────── */
.season{ background: var(--paper); border-top: 1px solid var(--rule); }

.ssn-label{
  font-family: var(--mono); font-size: .62rem; letter-spacing: .22em;
  text-transform: uppercase; color: var(--ink-mute);
}
.ssn-sub{
  display:flex; align-items:baseline; justify-content:space-between; flex-wrap:wrap;
  gap: 1rem 2rem; margin: 6rem 0 2rem; padding-bottom: 1rem; border-bottom: 1px solid var(--ink);
}
.ssn-sub h3{
  font-family: var(--serif); font-weight: 400; font-size: clamp(1.75rem, 3.2vw, 2.4rem);
  line-height: 1.1; color: var(--ink);
}
.ssn-sub h3 em{ font-style: italic; color: var(--accent); }

/* status strip */
.ssn-status{
  display:grid; grid-template-columns: 1fr; gap: 1px;
  background: var(--rule); border: 1px solid var(--rule);
}
@media(min-width: 700px){ .ssn-status{ grid-template-columns: repeat(3, 1fr); } }
.ssn-cell{ background: var(--paper); padding: 1.75rem 1.5rem; min-width: 0; }
.ssn-cell .ssn-label{ display:block; margin-bottom: .75rem; }
.ssn-cell .v{
  font-family: var(--serif); font-size: 1.6rem; line-height: 1.15; color: var(--ink);
  overflow-wrap: anywhere;
}
.ssn-cell .v em{ font-style: italic; color: var(--accent); }
.ssn-cell.count .v{ font-size: 2.6rem; color: var(--accent); }
.ssn-cell.count .v small{ font-family: var(--mono); font-size: .65rem; letter-spacing: .2em; color: var(--ink-mute); margin-left: .4rem; text-transform: uppercase; }
.ssn-cell .s{ display:block; margin-top: .4rem; font-size: .85rem; color: var(--ink-soft); }

.ssn-focus{
  font-family: var(--serif); font-style: italic; font-size: clamp(1.2rem, 2vw, 1.5rem);
  line-height: 1.5; color: var(--ink-soft); max-width: 60ch; margin: 2.5rem 0 0;
}
.ssn-metrics{
  display:grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 1.5rem;
  margin-top: 2.5rem; padding-top: 2rem; border-top: 1px solid var(--rule);
}
.ssn-metric .n{ font-family: var(--serif); font-size: 2.3rem; line-height: 1; color: var(--accent); display:block; margin-bottom: .5rem; }

/* sport markers */
.ssn-dot{ width: 8px; height: 8px; flex: 0 0 8px; display:inline-block; background: var(--ink-mute); }
.ssn-dot.swim{ background: #2f5d6e; }
.ssn-dot.bike{ background: var(--accent); }
.ssn-dot.run{ background: var(--gold); }
.ssn-dot.brick{ background: linear-gradient(135deg, var(--accent) 50%, var(--gold) 50%); }
.ssn-dot.strength{ background: var(--ink); }
.ssn-dot.mobility{ background: transparent; box-shadow: inset 0 0 0 1px var(--ink-soft); }
.ssn-dot.rest{ background: var(--rule); }

.ssn-volume{ display:flex; flex-wrap:wrap; gap: .5rem 1.5rem; }
.ssn-volume span{ display:inline-flex; align-items:center; gap:.5rem; font-family: var(--mono); font-size: .7rem; letter-spacing: .12em; color: var(--ink-soft); }

/* week grid */
.ssn-week{ display:grid; grid-template-columns: 1fr; border-top: 1px solid var(--rule); }
@media(min-width: 1000px){
  .ssn-week{ grid-template-columns: repeat(7, 1fr); border-top: 0; gap: 1px; background: var(--rule); border: 1px solid var(--rule); }
}
.ssn-day{ background: var(--paper); padding: 1.25rem 0; border-bottom: 1px solid var(--rule); display:grid; grid-template-columns: 70px 1fr; gap: 1rem; }
@media(min-width: 1000px){
  .ssn-day{ display:block; padding: 1.25rem 1rem 1.5rem; border-bottom: 0; min-height: 190px; }
  .ssn-day .ssn-label{ display:block; margin-bottom: 1.1rem; }
}
.ssn-day.today{ background: var(--bg); }
.ssn-day.today .ssn-label{ color: var(--accent); }
.ssn-sess{ display:flex; gap:.6rem; align-items:flex-start; margin-bottom: 1rem; }
.ssn-sess:last-child{ margin-bottom: 0; }
.ssn-sess .ssn-dot{ margin-top: .5rem; }
.ssn-sess .t{ font-family: var(--serif); font-size: 1.15rem; line-height: 1.2; color: var(--ink); display:block; }
.ssn-sess .d{ font-family: var(--mono); font-size: .65rem; letter-spacing: .08em; color: var(--ink-mute); display:block; margin-top: .2rem; }
.ssn-note{ margin-top: 1rem; font-size: .85rem; color: var(--ink-mute); }
.ssn-legend{ display:flex; flex-wrap:wrap; gap:.5rem 1.25rem; margin-top: 1.25rem; }
.ssn-legend span{ display:inline-flex; align-items:center; gap:.45rem; font-family: var(--mono); font-size: .6rem; letter-spacing: .18em; text-transform: uppercase; color: var(--ink-mute); }

/* race rows */
.ssn-races{ border-top: 1px solid var(--rule); }
.ssn-race{
  display:grid; grid-template-columns: 64px 1fr; gap: 1rem 1.5rem; align-items:center;
  padding: 1.75rem 0; border-bottom: 1px solid var(--rule); color: inherit; text-decoration: none;
  transition: padding .4s ease, background .4s ease;
}
@media(min-width: 900px){
  .ssn-race{ grid-template-columns: 90px 1.4fr 1fr auto; gap: 2.5rem; padding: 2rem .5rem; }
}
a.ssn-race:hover{ background: var(--bg); padding-left: 1.25rem; padding-right: 1.25rem; }
a.ssn-race:hover .nm{ color: var(--accent); }
.ssn-date .dd{ font-family: var(--serif); font-size: 2.4rem; line-height: 1; color: var(--ink); display:block; }
.ssn-date .mm{ font-family: var(--mono); font-size: .62rem; letter-spacing: .2em; text-transform: uppercase; color: var(--ink-mute); }
.ssn-race .nm{ font-family: var(--serif); font-size: clamp(1.4rem, 2.6vw, 1.9rem); line-height: 1.1; color: var(--ink); transition: color .4s ease; }
.ssn-race .meta{ font-size: .9rem; color: var(--ink-soft); margin-top: .35rem; }
.ssn-race .side{ grid-column: 1 / -1; display:flex; flex-wrap:wrap; gap: .5rem 1rem; align-items:center; }
@media(min-width: 900px){ .ssn-race .side{ grid-column: auto; justify-content:flex-end; } .ssn-race .info2{ } }
.ssn-tag{
  font-family: var(--mono); font-size: .6rem; letter-spacing: .2em; text-transform: uppercase;
  color: var(--ink-mute); padding: .45rem .8rem; border: 1px solid var(--rule); border-radius: 999px; white-space: nowrap;
}
.ssn-tag.a{ color: var(--paper); background: var(--accent); border-color: var(--accent); }
.ssn-tag.dnf{ color: var(--ink); border-color: var(--ink); }
.ssn-in{ font-family: var(--mono); font-size: .68rem; letter-spacing: .12em; color: var(--ink-soft); white-space: nowrap; }

/* results specifics */
.ssn-time{ font-family: var(--serif); font-size: clamp(1.6rem, 3vw, 2.2rem); line-height: 1; color: var(--accent); font-style: italic; }
.ssn-splits{ display:flex; flex-wrap:wrap; gap: .35rem 1rem; margin-top: .5rem; }
.ssn-splits span{ display:inline-flex; align-items:center; gap:.4rem; font-family: var(--mono); font-size: .66rem; letter-spacing: .08em; color: var(--ink-mute); }
.ssn-place{ font-size: .9rem; color: var(--ink-soft); margin-top: .35rem; }
.ssn-rnote{ font-size: .85rem; color: var(--ink-mute); margin-top: .35rem; font-style: italic; font-family: var(--serif); font-size: 1rem; }

.ssn-empty{ padding: 2rem 0; font-family: var(--serif); font-style: italic; font-size: 1.2rem; color: var(--ink-mute); border-bottom: 1px solid var(--rule); }

/* sponsor CTA */
.ssn-cta{
  margin-top: 6rem; background: var(--ink); color: var(--paper);
  padding: clamp(2.5rem, 5vw, 4rem); display:grid; grid-template-columns: 1fr; gap: 2rem; align-items:center;
}
@media(min-width: 900px){ .ssn-cta{ grid-template-columns: 1.6fr auto; } }
.ssn-cta .ssn-label{ color: #a39b8d; display:block; margin-bottom: 1rem; }
.ssn-cta p{ font-family: var(--serif); font-size: clamp(1.4rem, 2.6vw, 2rem); line-height: 1.3; font-weight: 300; }
.ssn-cta p em{ color: var(--gold); font-style: italic; }
.ssn-cta a{
  display:inline-block; font-family: var(--mono); font-size: .7rem; letter-spacing: .22em; text-transform: uppercase;
  color: var(--ink); background: var(--gold); padding: 1rem 1.6rem; text-decoration:none; white-space: nowrap;
  transition: background .3s ease;
}
.ssn-cta a:hover{ background: var(--paper); }

.ssn-updated{ margin-top: 3rem; }

/* loading skeleton */
.ssn-skel{ height: 120px; background: linear-gradient(90deg, var(--bg-deep), var(--bg), var(--bg-deep)); background-size: 200% 100%; animation: ssnShim 1.4s linear infinite; }
@keyframes ssnShim{ to{ background-position: -200% 0; } }
@media (prefers-reduced-motion: reduce){ .ssn-skel{ animation: none; } }
