/* IBv2 – compact "start list" look on top of Bootstrap 5.3.
   Palette taken from the event website and the printed lists: navy header, steel-blue frames, cool snow background,
   one lime accent (current step / open). Headings: Roboto Slab (self-hosted, like the website); body: system sans. */
@font-face { font-family: "Roboto Slab"; font-weight: 600 700; font-display: swap; src: url("/assets/fonts/roboto-slab-latin-700-normal.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Roboto Slab"; font-weight: 600 700; font-display: swap; src: url("/assets/fonts/roboto-slab-latin-ext-700-normal.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }

:root {
  --ib-navy: #123a5e;
  --ib-steel: #3d6a96;
  --ib-steel-dark: #2f5578;
  --ib-snow: #f2f5f8;
  --ib-line: #cdd7e1;
  --ib-ink: #17232f;
  --ib-lime: #c9cf2e;
  --ib-blue: var(--ib-navy);
  --bs-body-bg: var(--ib-snow);
  --bs-body-color: var(--ib-ink);
  --bs-body-font-size: .9375rem;
  --bs-body-line-height: 1.42;
  --bs-primary: var(--ib-steel);
  --bs-primary-rgb: 61, 106, 150;
  --bs-link-color: var(--ib-steel-dark);
  --bs-link-color-rgb: 47, 85, 120;
  --bs-border-color: var(--ib-line);
  --bs-border-radius: 3px;
  --bs-border-radius-sm: 2px;
  --bs-border-radius-lg: 4px;
  --serif: "Roboto Slab", Georgia, "Times New Roman", serif;
}
.bg-ib { background-color: var(--ib-navy); }
h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { font-family: var(--serif); font-weight: 700; color: var(--ib-navy); line-height: 1.2; }
h1, .h1, .h3 { font-size: 1.35rem; }
h2, .h2, .h5 { font-size: 1.05rem; }
.container { max-width: 940px; }

/* ---- compact rhythm (portal and admin) ---- */
main { padding-top: .85rem !important; padding-bottom: 1.25rem !important; }
main .mb-5 { margin-bottom: 1.25rem !important; }
main .mb-4 { margin-bottom: .9rem !important; }
main .mb-3 { margin-bottom: .65rem !important; }
main .mt-5 { margin-top: 1.25rem !important; }
main .mt-4 { margin-top: .9rem !important; }
main .py-4 { padding-top: .75rem !important; padding-bottom: .75rem !important; }
main .row.g-3 { --bs-gutter-y: .55rem; --bs-gutter-x: .75rem; }
main .row.g-4 { --bs-gutter-y: .75rem; --bs-gutter-x: 1rem; }
main p { margin-bottom: .6rem; }
.breadcrumb { font-size: .85rem; margin-bottom: .5rem; }
.alert { padding: .5rem .8rem; margin-bottom: .75rem; border-radius: var(--bs-border-radius); }
.alert ul { padding-left: 1.1rem; }

/* ---- controls: compact but still touch sized (44 px) ---- */
.form-label { font-size: .8125rem; color: #44566a; margin-bottom: .15rem; font-weight: 600; }
.form-control, .form-select, .form-control-lg, .form-select-lg { min-height: 2.75rem; padding: .4rem .65rem; font-size: 1rem; border-radius: var(--bs-border-radius); background-color: #fff; }
textarea.form-control { min-height: 4.5rem; }
.form-text { font-size: .8rem; margin-top: .15rem; }
.btn, .btn-lg { min-height: 2.75rem; padding: .45rem 1.05rem; font-size: 1rem; font-weight: 600; border-radius: var(--bs-border-radius); display: inline-flex; align-items: center; justify-content: center; gap: .4rem; }
.btn-sm { min-height: 2rem; padding: .2rem .65rem; font-size: .85rem; }
.btn-primary { --bs-btn-bg: var(--ib-steel); --bs-btn-border-color: var(--ib-steel); --bs-btn-hover-bg: var(--ib-steel-dark); --bs-btn-hover-border-color: var(--ib-steel-dark); --bs-btn-active-bg: var(--ib-navy); --bs-btn-active-border-color: var(--ib-navy); }
.btn-outline-primary { --bs-btn-color: var(--ib-steel-dark); --bs-btn-border-color: var(--ib-steel); --bs-btn-hover-bg: var(--ib-steel); --bs-btn-hover-border-color: var(--ib-steel); --bs-btn-active-bg: var(--ib-steel-dark); }
.btn-success { --bs-btn-bg: #3f7d4e; --bs-btn-border-color: #3f7d4e; --bs-btn-hover-bg: #336641; --bs-btn-hover-border-color: #336641; }
:focus-visible { outline: 3px solid var(--ib-lime); outline-offset: 2px; box-shadow: 0 0 0 1px var(--ib-navy); }
.form-check-input { border-color: #7d93a8; }
.form-check-input:checked { background-color: var(--ib-steel); border-color: var(--ib-steel); }
.table { --bs-table-bg: transparent; margin-bottom: .5rem; }
.table > :not(caption) > * > * { padding: .4rem .55rem; }
.table thead th { background: var(--ib-steel); color: #fff; font-weight: 600; border: 0; font-size: .85rem; }
.badge { font-weight: 600; border-radius: 2px; }

/* ---- header / footer / cookie banner: slim ---- */
.site-header { background: var(--ib-navy); color: #fff; }
.site-header .container { display: flex; align-items: center; gap: .5rem .9rem; flex-wrap: wrap; min-height: 2.9rem; padding-top: .3rem; padding-bottom: .3rem; }
.site-header .brand { font-family: var(--serif); font-weight: 700; font-size: 1.02rem; color: #fff; text-decoration: none; line-height: 1.15; margin-right: auto; }
.site-header .brand small { display: block; font-family: system-ui, sans-serif; font-weight: 400; font-size: .72rem; color: #b7c8d9; }
.site-header nav, .site-header form { display: flex; align-items: center; gap: .15rem; margin: 0; }
.site-header a.hl, .site-header button.hl { color: #dbe6f0; background: none; border: 0; padding: .4rem .5rem; min-height: 2.75rem; display: inline-flex; align-items: center; font-size: .85rem; text-decoration: none; border-radius: 2px; }
.site-header a.hl:hover, .site-header button.hl:hover { color: #fff; background: rgba(255,255,255,.1); }
.site-header a.hl[aria-current] { color: var(--ib-navy); background: var(--ib-lime); font-weight: 700; }
.env-banner { background: var(--ib-lime); color: var(--ib-ink); text-align: center; font-size: .78rem; font-weight: 700; padding: .15rem .5rem; }
.cookie-banner { background: #e4ebf2; border-bottom: 1px solid var(--ib-line); }
.cookie-banner .container { padding-top: .5rem; padding-bottom: .5rem; display: flex; flex-wrap: wrap; gap: .4rem .9rem; align-items: center; }
.cookie-banner p { margin: 0; flex: 1 1 22rem; font-size: .82rem; }
.cookie-banner form { display: flex; gap: .4rem; }
.site-footer { border-top: 1px solid var(--ib-line); padding: .55rem 0; font-size: .8rem; color: #5b6b7b; background: #e9eef3; }

/* ---- "start list" frame: framed block with a steel title strip (same motif as the PDF / printed lists) ---- */
.frame { background: #fff; border: 1px solid var(--ib-steel); margin-bottom: .9rem; }
.frame > .frame-title { margin: 0; padding: .3rem .75rem; background: var(--ib-steel); color: #fff; font-family: var(--serif); font-weight: 700; font-size: .95rem; display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.frame > .frame-title a { color: #fff; font-family: system-ui, sans-serif; font-weight: 400; font-size: .82rem; }
.frame > .frame-body { padding: .7rem .75rem .75rem; }
.frame .help { font-size: .8rem; color: #5b6b7b; margin: 0 0 .5rem; }
.frame.frame-plain { border-color: var(--ib-line); }
.frame.frame-plain > .frame-title { background: #e4ebf2; color: var(--ib-navy); }
.frame-flush > .frame-body { padding: 0; }

/* ---- progress: the registration really is a sequence ---- */
.steps { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); list-style: none; margin: 0 0 .8rem; padding: 0; border: 1px solid var(--ib-line); background: #fff; }
.steps li { display: flex; text-align: center; font-size: .8rem; color: #5b6b7b; border-right: 1px solid var(--ib-line); min-width: 0; }
.steps li:last-child { border-right: 0; }
.steps li a, .steps li .in { color: inherit; text-decoration: none; display: flex; align-items: center; justify-content: center; gap: .25rem; width: 100%; height: 2.25rem; padding: 0 .2rem; white-space: nowrap; min-width: 0; }
.steps li .sn { overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.steps li .n { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 1.25rem; height: 1.25rem; border-radius: 50%; background: #dbe3ea; color: var(--ib-navy); font-weight: 700; font-size: .75rem; }
.steps li.done .n { background: var(--ib-steel); color: #fff; }
.steps li.current { background: var(--ib-navy); color: #fff; }
.steps li.current .n { background: var(--ib-lime); color: var(--ib-navy); }
/* phone: all five steps on one line, equal size – number above a short label */
@media (max-width: 575.98px) {
  .steps li a, .steps li .in { flex-direction: column; justify-content: center; gap: .1rem; height: 3.1rem; padding: 0 .1rem; }
  .steps li .sn { font-size: .66rem; line-height: 1.1; max-width: 100%; }
}

/* ---- athlete rows with toggle chips ---- */
.ath-row { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .75rem; padding: .45rem .75rem; border-bottom: 1px solid #e3e9ef; }
.ath-row:last-child { border-bottom: 0; }
.ath-row .who { flex: 1 1 11rem; min-width: 0; line-height: 1.25; }
.ath-row .who b { font-weight: 600; }
.ath-row .who small { color: #5b6b7b; display: block; }
.chips { display: flex; gap: .4rem; }
.ath-row .chip span { width: 11.5rem; justify-content: flex-start; }
.chip { position: relative; margin: 0; }
.chip input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.chip span { display: inline-flex; align-items: center; gap: .35rem; min-height: 2.75rem; padding: 0 .8rem; border: 1px solid #9fb2c4; background: #fff; border-radius: var(--bs-border-radius); font-weight: 600; font-size: .9rem; white-space: nowrap; }
.chip span small { font-weight: 400; color: #5b6b7b; }
.chip span::before { content: ""; width: 1rem; height: 1rem; border: 2px solid #7d93a8; border-radius: 2px; background: #fff; flex: none; }
.chip input:checked + span { background: #e3edf6; border-color: var(--ib-steel); color: var(--ib-navy); }
.chip input:checked + span::before { background: var(--ib-steel) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23fff' stroke-width='2.5' d='M3 8.5l3.2 3L13 4.5'/%3E%3C/svg%3E") center/100% no-repeat; border-color: var(--ib-steel); }
.chip input:focus-visible + span { outline: 3px solid var(--ib-lime); outline-offset: 2px; }
.chip input:disabled + span { opacity: .55; }
.savebar { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; justify-content: space-between; padding: .5rem .75rem; background: #eef3f8; border-top: 1px solid var(--ib-line); }
.fee-line { display: flex; justify-content: space-between; padding: .2rem 0; border-bottom: 1px solid #e3e9ef; }
.fee-line.total { font-weight: 700; border-bottom: 0; border-top: 2px solid var(--ib-navy); margin-top: .15rem; padding-top: .3rem; }
dl.compact { display: grid; grid-template-columns: max-content 1fr; gap: .15rem .9rem; margin: 0; }
dl.compact dt { color: #5b6b7b; font-weight: 600; font-size: .85rem; }
dl.compact dd { margin: 0; }
@media (max-width: 575.98px) { dl.compact { grid-template-columns: 1fr; gap: 0; } dl.compact dd { margin-bottom: .3rem; } }

.legal-text h2:first-child { margin-top: 0 !important; }

@media (max-width: 575.98px) {
  .ath-row .chips { display: grid; grid-template-columns: 1fr 1fr; width: 100%; }
  .ath-row .chip span { min-width: 0; width: 100%; padding: 0 .5rem; font-size: .85rem; gap: .3rem; }
}
.chips.inline { flex-wrap: wrap; }

/* ---- athletes page: sections per race and category, traffic-light toggle, sticky title ---- */
.frame > .frame-title.sticky-title { position: sticky; top: 0; z-index: 20; box-shadow: 0 2px 4px rgba(0,0,0,.18); }
.ath-sec { border-top: 1px solid var(--ib-line); }
.ath-sec > summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: .5rem; min-height: 2.75rem; padding: .35rem .75rem; background: #dfe8f1; font-family: var(--serif); font-weight: 700; color: var(--ib-navy); }
.ath-sec > summary::-webkit-details-marker { display: none; }
.ath-sec > summary::before { content: "▾"; margin-right: .5rem; font-family: system-ui, sans-serif; }
.ath-sec:not([open]) > summary::before { content: "▸"; }
.ath-sec > summary .sec-name { flex: 1; }
.ath-sec > summary .sec-count { font-family: system-ui, sans-serif; font-weight: 400; font-size: .85rem; }
.cat-head { padding: .25rem .75rem; background: #f1f5f9; border-bottom: 1px solid #e3e9ef; font-size: .85rem; display: flex; gap: .5rem; align-items: baseline; }
.cat-head .cat-count { margin-left: auto; font-weight: 600; }
.catblock.over .cat-count { color: #b3261e; }
.tl { position: relative; margin: 0; flex: none; width: 2.75rem; height: 2.75rem; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; }
.tl input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.tl-dot, .tl-off { width: 1.5rem; height: 1.5rem; border-radius: 50%; background: #c0392b; border: 2px solid #8e2a1f; flex: none; display: inline-block; }
.tl input:checked + .tl-dot { background: #3f9b57; border-color: #2c7240; }
.tl input:focus-visible + .tl-dot { outline: 3px solid var(--ib-lime); outline-offset: 2px; }
.tl input:disabled + .tl-dot { opacity: .55; }
.tl-off { background: #cfd6dd; border-color: #9aa6b2; margin: 0 .6rem; }
.ath-row:has(.tl input:not(:checked)) .who { color: #7a8896; }
.ath-row:has(.tl input:not(:checked)) .who .nm { text-decoration: line-through; }
.ath-add > summary { list-style: none; display: inline-flex; align-items: center; min-height: 2.75rem; }
.ath-add > summary::-webkit-details-marker { display: none; }
.ath-add[open] > summary { margin-bottom: .75rem; }

/* ---- sticky table headers on all admin lists ---- */
.table thead th { position: sticky; top: 0; z-index: 10; }
@media (min-width: 768px) { .table-responsive { overflow: visible; } }   /* the page scrolls, the header sticks to the viewport */
@media (max-width: 767.98px) { .table-responsive { max-height: 75vh; overflow: auto; } }   /* phone: scrolls inside the wrapper, header sticks there */
.who a.team-link { display: inline-block; padding: .2rem 0; font-size: 1.05rem; }

/* utility classes (CSP forbids inline style attributes) */
.u-mw48 { max-width:48rem; }
.u-mw40 { max-width:40rem; }
.u-mw46 { max-width:46rem; }
.u-mw26 { max-width:26rem; }
.u-mw18 { max-width:18rem; }
.u-mw150 { max-width:150px; }
.u-mh25 { min-height:2.5rem; }
.u-prewrap { white-space:pre-wrap; }
.u-pl75 { padding-left:.75rem!important; }
.u-w75 { width:7.5rem; }
.u-w150 { width:150px; }
.u-minw15 { min-width:15rem; }
.u-minw12 { min-width:12rem; }
.u-box135 { width:1.35rem;height:1.35rem; }
.u-prewrap-break { white-space:pre-wrap;word-break:break-word; }
.input-group > .u-w75 { width: 7.5rem; flex: 0 0 7.5rem; }

/* ---- teams of a bank ---- */
.team-row { display: grid; grid-template-columns: minmax(0, 1fr) 9rem 19rem; gap: .5rem .75rem; align-items: end; padding: .55rem .75rem; border-bottom: 1px solid #e3e9ef; }
.team-row:last-child { border-bottom: 0; }
.team-row .team-ath { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
@media (max-width: 767.98px) { .team-row { grid-template-columns: minmax(0, 1fr) 9rem; } .team-row .team-ath { grid-column: 1 / -1; } }
@media (max-width: 575.98px) { .team-row { grid-template-columns: minmax(0, 1fr) 6.5rem; } .team-row .team-ath { grid-column: 1 / -1; } }

/* ---- athletes: several teams side by side, drag & drop ---- */
.ath-with { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .5rem; padding: .4rem .75rem; border-bottom: 1px solid #e3e9ef; font-size: .9rem; }
.ath-with .btn { min-height: 2.25rem; }
.ath-multi.has-lanes { display: grid; grid-template-columns: repeat(auto-fit, minmax(21rem, 1fr)); gap: 0 1rem; align-items: start; }
.ath-lane .lane-dot.on { background: #3f9b57; border-color: #2c7240; }
.ath-lane .ath-row.off .who { color: #7a8896; }
.ath-lane .frame-title a { color: inherit; }
.ath-lane .lane-btn { min-height: 2.25rem; }
[data-drag] { cursor: grab; }
.drop-ok { outline: 3px dashed var(--ib-lime); outline-offset: -3px; }
.dragging { opacity: .45; }
.cat-head .cat-hint { margin-left: auto; color: #b3261e; font-weight: 600; }
.cat-head .cat-hint + .cat-count { margin-left: .75rem; }

/* ---- athletes: compact rows, teams side by side with aligned categories ---- */
.cat-grid { display: grid; grid-template-columns: minmax(0, 1fr); }
.cat-grid.cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.cat-grid.cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cat-grid.cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
/* team list: all teams of the bank, checkbox = show next to each other; sticks below the title while the help text scrolls away */
.team-bar { display: grid; grid-template-columns: minmax(0, 1fr); position: sticky; top: 2.5rem; z-index: 19; background: #e6edf4; border-bottom: 1px solid var(--ib-line); box-shadow: 0 2px 3px rgba(0,0,0,.1); }
.team-bar.cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.team-bar.cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.team-bar.cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.team-pick { display: flex; align-items: center; gap: .15rem .4rem; min-width: 0; padding: 0 .6rem 0 .1rem; min-height: 2.35rem; }
.team-pick .pick-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.team-pick:not(.on) .pick-name { font-weight: 400; }
.team-pick:not(.on) { color: #5a6a7a; }
.pick-box { display: inline-flex; align-items: center; justify-content: center; width: 2.35rem; height: 2.35rem; margin: 0; flex: none; cursor: pointer; }
.pick-box input { width: 1.3rem; height: 1.3rem; margin: 0; cursor: pointer; }
.ath-help { border-bottom: 1px solid #e3e9ef; }
.frame > .frame-title.sticky-title { min-height: 2.5rem; box-sizing: border-box; }
.cat-col + .cat-col, .cat-cell + .cat-cell { border-left: 1px solid var(--ib-line); }
.cat-head.cat-grid { padding: 0; gap: 0; }
.cat-head .cat-cell { display: flex; gap: .4rem; align-items: baseline; padding: .2rem .6rem; min-width: 0; }
.cat-head .cat-label { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.cat-head .cat-hint { margin-left: auto; }
.cat-col { min-height: 2.25rem; min-width: 0; }
.col-team { display: none; font-size: .8rem; font-weight: 600; padding: .15rem .6rem; background: #f1f5f9; color: var(--ib-navy); }
.ath-row { flex-wrap: nowrap; padding: .1rem .5rem; gap: .35rem .5rem; min-height: 2.35rem; }
.ath-row .who { flex: 1 1 auto; line-height: 1.2; font-size: .93rem; overflow: hidden; }
.ath-row .who small { display: inline; margin-left: .4rem; white-space: nowrap; }
:root { --tl: 2.35rem; --tl-dot: 1.3rem; }
.tl { width: var(--tl); height: var(--tl); }
.tl-dot, .tl-off, .ath-lane .lane-dot, .lane-dot { box-sizing: border-box; width: var(--tl-dot); height: var(--tl-dot); }
.tl-off, .ath-lane .lane-dot, .lane-dot { margin: 0 calc((var(--tl) - var(--tl-dot)) / 2); }
.lane-dot { border-radius: 50%; background: #c0392b; border: 2px solid #8e2a1f; flex: none; display: inline-block; }
.mv-btns { display: inline-flex; gap: .25rem; flex: none; margin-left: auto; }
.mv-spacer { display: inline-block; width: 2rem; }
.lane-dot.on { background: #3f9b57; border-color: #2c7240; }
.ath-row.off .who { color: #7a8896; }
.lane-btn { min-height: 2rem; min-width: 2rem; padding: 0 .4rem; flex: none; }
@media (max-width: 767.98px) {
  .team-bar.cols-2, .team-bar.cols-3, .team-bar.cols-4, .cat-grid.cols-2, .cat-grid.cols-3, .cat-grid.cols-4 { grid-template-columns: minmax(0, 1fr); }
  .team-bar { max-height: 40vh; overflow-y: auto; }
  .cat-col + .cat-col, .cat-cell + .cat-cell { border-left: 0; }
  .col-team { display: block; }
  .cat-head .cat-cell + .cat-cell { display: none; }
}
@media (max-width: 575.98px) {
  .ath-row { flex-wrap: wrap; padding: .3rem .5rem; }
  :root { --tl: 2.75rem; }
  .ath-row .who small { display: block; margin-left: 0; }
}
.ath-status { font-size: .85rem; font-weight: 600; color: #e8f2d4; margin-left: auto; padding-right: .5rem; }
.ath-status.bad { color: #ffd2cc; }
.ar-v { display: none; }
@media (max-width: 767.98px) { .ar-h { display: none; } .ar-v { display: inline; } }
.lane-btn { font-weight: 700; }

/* review: athletes per discipline and category, one continuous list */
.rev-disc { display: flex; justify-content: space-between; padding: .3rem .75rem; background: #dfe7ef; color: var(--ib-navy); font-family: 'Roboto Slab', serif; font-weight: 700; }
.rev-cat { padding: .2rem .75rem; background: #f1f5f9; border-top: 1px solid #e3e9ef; }
.rev-row { display: flex; justify-content: space-between; gap: .5rem; padding: .25rem .75rem; border-top: 1px solid #e3e9ef; min-width: 0; }
.rev-name { min-width: 0; overflow-wrap: anywhere; }
.rev-fee { flex: none; font-variant-numeric: tabular-nums; }
.nw { white-space: nowrap; }

/* registration steps: footer navigation – back (left), Save (middle, forms and athletes), next (right); one line */
.step-nav { display: flex; justify-content: space-between; align-items: center; gap: .5rem; margin: 0 0 1rem; }
.step-nav.has-save { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); }
.step-nav .btn { min-height: 2.75rem; display: inline-flex; align-items: center; justify-content: center; white-space: nowrap; }
.step-nav .prev { justify-self: start; grid-column: 1; }
.step-nav .save { grid-column: 2; }
.step-nav .next { justify-self: end; grid-column: 3; margin-left: auto; }
@media (max-width: 575.98px) { .step-nav .btn { padding-left: .6rem; padding-right: .6rem; } }
@media (max-width: 359.98px) { .step-nav { gap: .25rem; } .step-nav .btn { padding-left: .4rem; padding-right: .4rem; font-size: .9rem; } }

/* admin registrations: fee summary one value per line; no sideways scrolling on a phone */
.fee-summary { font-size: .9rem; max-width: 24rem; }
.fee-summary > div { display: flex; justify-content: space-between; gap: 1rem; border-bottom: 1px solid #e3e9ef; padding: .1rem 0; }
.fee-summary dt { font-weight: 400; color: #5b6b7b; }
.fee-summary dd { margin: 0; font-weight: 700; font-variant-numeric: tabular-nums; }
@media (max-width: 575.98px) { .u-w100-sm { width: 100%; } .u-w100-sm .form-select { min-width: 0; } }

/* start group badges */
.sg { display: inline-flex; flex-direction: column; gap: .1rem; flex: 0 0 auto; font-size: .72rem; line-height: 1.1; color: #44546a; text-align: center; }
.sg-b { background: #e8eef5; border: 1px solid #c3cfdc; border-radius: .3rem; padding: .05rem .3rem; white-space: nowrap; }
.sg-b b { font-weight: 700; }
.rev-row .sg { flex-direction: row; margin-left: auto; margin-right: .5rem; }
.ath-row:has(.tl input:not(:checked)) .sg { opacity: .4; }
.sg-l { font-weight: 400; }
.u-minw10 { min-width: 10rem; }

/* messages (D27) */
.msg-badge { display: inline-block; min-width: 1.3rem; padding: 0 .4rem; border-radius: 1rem; background: #c0392b; color: #fff; font-size: .75rem; font-weight: 700; line-height: 1.3rem; text-align: center; }
.msg-row { display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding: .5rem .75rem; border-top: 1px solid #e3e9ef; color: inherit; text-decoration: none; min-height: 44px; }
.msg-row:first-child { border-top: 0; }
.msg-row .msg-main { display: flex; flex-direction: column; min-width: 0; }
.msg-row small { color: #5b6b7b; }
.msg-row.unread { background: #fff8e6; }
.msg-post { border: 1px solid #c9d3dd; border-radius: .4rem; padding: .5rem .75rem; margin-bottom: .5rem; background: #fff; overflow-wrap: anywhere; }
.msg-post.mine { background: #eaf1f8; margin-left: 1rem; }
.msg-post.theirs { margin-right: 1rem; }
.msg-post.unread { border-color: #c0392b; }
.msg-meta { font-size: .8rem; color: #5b6b7b; margin-bottom: .15rem; }

/* start page: centred block, year beside the edition name, notice no larger than the name */
.home .lead { font-size: 1.25rem; }
.home .home-year { color: #5b6b7b; font-weight: 400; }
.home .home-note { font-size: 1.1rem; }
.sg { align-self: center; }
.sg-b { display: inline-block; white-space: nowrap; line-height: 1.2; }
.u-mw8 { max-width:8rem; }
.tag-planned { display:inline-block; padding:.2em .6em; border-radius:.25rem; background:#6b7785; color:#fff; font-size:.8rem; font-weight:500; white-space:nowrap; }
.notify-sw { min-height:44px; display:flex; align-items:center; gap:.5rem; padding-left:0; }
.notify-sw .form-check-input { margin:0; float:none; width:2.75em; height:1.5em; flex:none; }
.notify-choice { display:flex; max-width:28rem; }
.notify-choice .btn { flex:1 1 0; min-height:44px; display:flex; align-items:center; justify-content:center; }
/* "Find my bank": only the list scrolls, the page fits the screen */
.bank-list { max-height:calc(100dvh - 38.5rem); min-height:8rem; overflow-y:auto; border:1px solid #c9d3df; border-radius:.25rem; background:#fff; }
.bank-row { display:flex; align-items:baseline; gap:.5rem; padding:0 .75rem; min-height:2.75rem; align-items:center; border-bottom:1px solid #e3e8ee; }
.bank-row:last-child { border-bottom:0; }
.bank-row.taken { background:#e9ecef; color:#6b7785; }
.bank-form { display:flex; align-items:center; gap:.5rem; margin:0; min-width:0; flex:1; }
.bank-link { background:none; border:0; padding:.6rem 0; font-weight:600; color:var(--bs-link-color, #1f4e79); text-decoration:underline; text-align:left; font-size:1rem; cursor:pointer; }
a.bank-link { display:inline-block; }
.bank-name { font-weight:600; padding:.6rem 0; }
.bank-meta { color:#6b7785; white-space:nowrap; }
@media (min-width: 768px) { .bank-list { max-height:calc(100dvh - 29.5rem); } }
