/* Self-hosted Inter (Latin subset). See ../fonts/FONTS.txt. */
@font-face {
  font-family:Inter;
  font-style:normal;
  font-weight:400 800;
  font-display:swap;
  src:url("../fonts/inter-latin-variable.260c81a4759b.woff2") format("woff2")
}
/* Got Cha Dink Club design tokens: forest green and gold, from the app mockups. */
:root {
  --brand-deep:#0a1630;
  --brand:#0d1b36;
  --brand-soft:#16264a;
  --accent:#ffa366;
  --accent-hover:#ffb98a;
  --accent-ink:#2d3e66;
  --accent-tint:#fff1e6;
  --ball:#f5d315;
  --chip:#f5d315;
  --bg:#f2f4fa;
  --line:#dde2ee;
  --line-soft:#e6eaf3;
  --ink:#0d1b36;
  --muted:#4d5b78;
  --ok:#15803d;
  --danger:#a33831;
  --focus:#2563eb;
  --court:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='170' viewBox='0 0 260 170' fill='none' stroke='%23ffffff' stroke-opacity='.09' stroke-width='2'%3E%3Cpath d='M30 165 100 10h150M80 165 150 10M130 165 200 10M10 85h240M25 125h235'/%3E%3C/svg%3E");
  --shadow:0 4px 18px rgba(13,27,54,.08);
  --shadow-lift:0 12px 28px rgba(13,27,54,.16)
}
:root {
  font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;
  color:var(--ink);
  background:var(--bg);
  font-synthesis:none
}
* {
  box-sizing:border-box
}
body {
  margin:0;
  line-height:1.45
}
a {
  color:inherit
}
button,input,select,textarea {
  font:inherit
}
button {
  cursor:pointer
}
h1,h2,h3,p {
  margin-top:0
}
h1 {
  font-size:clamp(1.8rem,5vw,2.6rem);
  line-height:1.12;
  letter-spacing:-.04em
}
h2 {
  font-size:1.2rem
}
h3 {
  font-size:1rem
}
.site-header {
  background:var(--brand-deep);
  color:#fff
}
.header-inner {
  max-width:1060px;
  margin:auto;
  min-height:70px;
  padding:12px 20px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px
}
.brand {
  text-decoration:none;
  font-size:1.04rem;
  font-weight:800;
  white-space:nowrap
}
.brand strong {
  color:var(--accent)
}
.brand-mark {
  color:var(--accent);
  margin-right:3px
}
.nav-links {
  display:flex;
  align-items:center;
  gap:14px
}
.nav-links a,.nav-button {
  color:#fff;
  background:none;
  border:0;
  text-decoration:none;
  font-size:.9rem;
  padding:10px 2px
}
.nav-links a:hover,.nav-button:hover {
  text-decoration:underline
}
.nav-links form {
  margin:0
}
.page-shell {
  max-width:1060px;
  margin:auto;
  padding:24px 20px 72px
}
.page-heading {
  margin:10px 0 24px
}
.page-heading p {
  color:var(--muted)
}
.eyebrow {
  font-size:.75rem;
  letter-spacing:.16em;
  text-transform:uppercase;
  font-weight:800;
  color:var(--accent-ink);
  margin-bottom:8px
}
.card {
  background:#fff;
  border:1px solid var(--line);
  border-radius:18px;
  box-shadow:0 4px 20px rgba(13,27,54,.07)
}
.session-list {
  display:grid;
  gap:12px
}
.session-card {
  padding:18px 20px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  text-decoration:none
}
.session-card:hover,.result-link:hover {
  border-color:var(--accent);
  background:#fdf2ec
}
.session-card h2,.session-card h3 {
  margin:8px 0 3px
}
.session-card p {
  margin:0;
  color:var(--muted)
}
.session-numbers {
  white-space:nowrap
}
.session-numbers strong {
  font-size:1.8rem
}
.pill {
  display:inline-block;
  background:var(--accent-tint);
  color:var(--accent-ink);
  border-radius:99px;
  padding:4px 10px;
  font-weight:800;
  font-size:.76rem;
  letter-spacing:.04em;
  text-transform:uppercase
}
.subsection,.roster-section {
  margin-top:30px
}
.empty {
  padding:24px
}
.empty-inline {
  padding:20px;
  margin:0;
  color:var(--muted)
}
.muted {
  color:var(--muted)
}
.back-link {
  display:inline-block;
  margin-bottom:18px;
  color:var(--accent-ink);
  font-weight:700
}
.score-strip {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:10px;
  margin:22px 0
}
.score-strip>div {
  background:var(--brand);
  color:#fff;
  padding:16px;
  border-radius:14px;
  display:flex;
  flex-direction:column
}
.score-strip strong {
  font-size:clamp(1.35rem,4vw,2rem);
  line-height:1.1
}
.score-strip span {
  font-size:.78rem;
  color:#c7d2ea;
  margin-top:7px
}
.score-strip.compact {
  margin:18px 0
}
.search-panel {
  padding:20px;
  margin:24px 0
}
.sticky-search {
  position:sticky;
  top:8px;
  z-index:10;
  box-shadow:0 8px 28px rgba(13,27,54,.14)
}
.search-panel h2 {
  margin-bottom:4px
}
.search-panel p {
  color:var(--muted)
}
.search-form label,.stack label {
  display:block;
  font-weight:700;
  font-size:.88rem
}
.search-controls {
  display:flex;
  gap:8px;
  margin-top:8px
}
.search-controls input {
  flex:1;
  min-width:0
}
.search-panel input,.stack input:not([type=checkbox]),.stack select,.stack textarea {
  width:100%;
  min-height:48px;
  border:1px solid #b3bdd3;
  border-radius:10px;
  background:#fff;
  padding:10px 12px;
  color:var(--ink)
}
.stack textarea {
  min-height:86px
}
.button {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:46px;
  padding:10px 16px;
  border-radius:11px;
  border:1px solid transparent;
  font-weight:800;
  text-decoration:none;
  text-align:center;
  white-space:nowrap
}
.button.primary {
  background:var(--accent);
  color:var(--ink);
  border-color:var(--accent)
}
.button.primary:hover {
  background:var(--accent-hover)
}
.button.secondary {
  background:#fff;
  color:var(--accent-ink);
  border-color:#b3bdd3
}
.button.danger {
  background:var(--danger);
  color:#fff
}
.button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible {
  outline:3px solid var(--focus);
  outline-offset:2px
}
.section-heading {
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:12px
}
.section-heading span {
  color:var(--muted)
}
.roster-list {
  overflow:hidden
}
.roster-row {
  padding:15px 18px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  border-bottom:1px solid var(--line-soft)
}
.roster-row:last-child {
  border-bottom:0
}
.roster-identity {
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:4px
}
.roster-identity a {
  font-weight:800;
  text-decoration:none
}
.roster-identity a:hover {
  text-decoration:underline
}
.roster-identity small {
  color:var(--muted)
}
.roster-row form {
  margin:0
}
.state {
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-size:.84rem;
  font-weight:750
}
.state.checked {
  color:var(--ok)
}
.state.waiting {
  color:var(--muted)
}
.state.void {
  color:var(--danger)
}
.search-results {
  margin-top:22px
}
.search-results h3 {
  margin-bottom:10px
}
.search-results .roster-row {
  padding-left:0;
  padding-right:0
}
.walk-in-panel {
  margin-top:22px;
  border-top:1px solid var(--line-soft);
  padding-top:16px
}
.walk-in-panel summary {
  font-weight:800;
  cursor:pointer;
  min-height:44px;
  padding:9px 0
}
.stack {
  display:grid;
  gap:8px;
  margin-top:14px
}
.stack .button {
  margin-top:8px
}
.field-hint {
  margin:0 0 4px;
  color:var(--muted);
  font-size:.82rem
}
.check-label {
  display:flex!important;
  align-items:center;
  gap:8px
}
.check-label input {
  width:20px;
  height:20px
}
.session-actions {
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:12px;
  margin-top:30px
}
.session-actions h2 {
  width:100%;
  margin-bottom:0
}
.session-actions p {
  margin:0
}
.notice {
  border-radius:12px;
  padding:12px 16px;
  margin:12px 0;
  background:#e7f6da;
  color:#23522b
}
.notice.error {
  background:#fff0ed;
  color:#922d24
}
.notice.warning {
  background:#fff5dc;
  color:#73531e
}
.messages {
  margin-bottom:18px
}
.confirm-card {
  max-width:650px;
  padding:24px
}
.confirm-card ul,.reward-row ul {
  padding-left:20px;
  margin:10px 0
}
.reward-list {
  overflow:hidden
}
.reward-row {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:20px;
  padding:18px;
  border-bottom:1px solid var(--line-soft)
}
.reward-row:last-child {
  border-bottom:0
}
.reward-row strong {
  display:block
}
.reward-row .state {
  margin-top:5px
}
.reward-row ul {
  font-size:.9rem;
  color:var(--muted)
}
.result-link {
  text-decoration:none
}
.result-link span {
  color:var(--muted)
}
.auth-shell {
  min-height:100vh;
  display:grid;
  place-items:center;
  padding:20px;
  background:var(--brand)
}
.auth-card {
  padding:32px;
  width:min(100%,420px)
}
.auth-card .stack {
  margin-top:22px
}
@media(max-width:700px) {
  .header-inner {
    align-items:flex-start;
    flex-direction:column;
    gap:2px
  }
  .nav-links {
    width:100%;
    justify-content:space-between
  }
  .page-shell {
    padding:18px 14px 60px
  }
  .session-card {
    align-items:flex-start;
    flex-direction:column
  }
  .session-numbers strong {
    font-size:1.4rem
  }
  .score-strip {
    gap:6px
  }
  .score-strip>div {
    padding:12px 9px
  }
  .score-strip span {
    font-size:.68rem
  }
  .roster-row {
    padding:14px;
    align-items:flex-start
  }
  .roster-row .button {
    min-width:92px
  }
  .search-panel {
    padding:16px
  }
  .reward-row {
    align-items:flex-start;
    flex-direction:column
  }
  .reward-row .button {
    width:100%
  }
  .session-actions .button {
    width:100%
  }
}
@media(max-width:370px) {
  .search-controls {
    flex-direction:column
  }
  .search-controls .button {
    width:100%
  }
  .roster-row {
    flex-direction:column
  }
  .roster-row form,.roster-row .button {
    width:100%
  }
}
.score-strip {
  grid-template-columns:repeat(3,minmax(0,1fr))
}
.score-strip>div {
  min-width:0
}
.score-strip span,.page-heading h1,.page-heading p {
  overflow-wrap:anywhere
}
.compare-grid {
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:12px;
  margin:18px 0
}
@media (max-width:640px) {
  .compare-grid {
    grid-template-columns:1fr
  }
}
.audit-details {
  display:block;
  margin-top:4px;
  font-size:.85rem;
  overflow-wrap:anywhere
}
/* ---- Shared theme: forest green and gold, Inter, soft cards ---- */
.sr-only {
  position:absolute;
  width:1px;
  height:1px;
  margin:-1px;
  padding:0;
  overflow:hidden;
  clip:rect(0 0 0 0);
  white-space:nowrap;
  border:0
}
body {
  background:var(--bg);
  color:var(--ink)
}
h1,h2,h3 {
  font-weight:800;
  letter-spacing:-.015em
}
h1 {
  font-size:clamp(1.9rem,6vw,2.7rem);
  line-height:1.1;
  letter-spacing:-.025em
}
.page-heading h1::after {
  content:"";
  display:block;
  width:56px;
  height:5px;
  margin-top:12px;
  border-radius:3px;
  background:var(--accent)
}
.eyebrow {
  font-size:.72rem;
  letter-spacing:.14em;
  font-weight:800
}
.eyebrow::before {
  content:"";
  display:inline-block;
  width:14px;
  height:4px;
  margin-right:8px;
  vertical-align:middle;
  border-radius:2px;
  background:var(--accent)
}
.brand-mark {
  display:inline-block;
  flex:none;
  width:1.15rem;
  height:1.15rem;
  border-radius:50%;
  font-size:0;
  line-height:0;
  background:radial-gradient(circle,rgba(110,80,0,.6) 0 1.1px,transparent 1.7px) 0 0/5px 5px,var(--ball);
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.18)
}
.court-bg {
  background-color:var(--brand);
  background-image:var(--court),linear-gradient(160deg,var(--brand-deep),var(--brand) 62%,var(--brand-soft));
  background-repeat:no-repeat;
  background-size:260px 170px,auto;
  background-position:right -24px bottom -12px,0 0
}
.site-header {
  background:linear-gradient(100deg,var(--brand-deep),var(--brand) 62%,var(--brand-soft));
  border-bottom:4px solid var(--accent)
}
.header-inner {
  flex-wrap:wrap;
  gap:4px 24px;
  min-height:66px;
  padding:8px 20px
}
.brand {
  display:inline-flex;
  align-items:center;
  gap:9px;
  font-size:1.2rem;
  font-weight:800;
  letter-spacing:-.015em
}
.brand strong {
  color:var(--accent)
}
.nav-links {
  flex-wrap:wrap;
  gap:0 20px
}
.nav-links a,.nav-button {
  position:relative;
  display:inline-flex;
  align-items:center;
  min-height:44px;
  padding:0;
  font-size:.92rem;
  font-weight:600;
  white-space:nowrap
}
.nav-links a:hover,.nav-button:hover {
  text-decoration:none
}
.nav-links a::after,.nav-button::after {
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:6px;
  height:3px;
  border-radius:2px;
  background:var(--accent);
  transform:scaleX(0);
  transform-origin:left
}
.nav-links a:hover::after,.nav-button:hover::after,.nav-links a:focus-visible::after,.nav-links a[aria-current="page"]::after {
  transform:scaleX(1)
}
.nav-links form {
  margin:0 0 0 4px;
  padding-left:20px;
  border-left:1px solid rgba(255,255,255,.24)
}
.page-shell {
  position:relative;
  z-index:1
}
.card {
  border-radius:18px;
  box-shadow:var(--shadow);
  transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease
}
.session-card:hover,.result-link:hover {
  box-shadow:var(--shadow-lift)
}
.roster-row {
  transition:background-color .15s ease
}
.roster-list .roster-row:hover {
  background:#f7f9fe
}
.pill {
  letter-spacing:.06em;
  color:var(--brand)
}
.score-strip>div {
  background:linear-gradient(160deg,var(--brand),var(--brand-soft));
  border-top:4px solid var(--accent)
}
.button {
  font-size:.86rem;
  font-weight:800;
  letter-spacing:.04em;
  text-transform:uppercase;
  transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease
}
.button.primary {
  background:var(--accent);
  border-color:#f2905a;
  color:var(--ink)
}
.button.primary:hover {
  background:var(--accent-hover);
  border-color:var(--accent-hover)
}
.button.secondary {
  background:#fff;
  border:2px solid var(--brand);
  color:var(--brand)
}
.button.secondary:hover {
  background:var(--brand);
  color:#fff
}
.button.secondary.on-dark {
  background:transparent;
  border-color:rgba(255,255,255,.55);
  color:#fff
}
.button.secondary.on-dark:hover {
  background:#fff;
  color:var(--brand)
}
.button.danger:hover {
  background:#8a2d27
}
.button-row {
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin:0 0 18px
}
.search-panel input,.stack input:not([type=checkbox]),.stack select,.stack textarea {
  border:2px solid #c3cbe0;
  transition:border-color .15s ease,box-shadow .15s ease
}
.search-panel input:focus,.stack input:not([type=checkbox]):focus,.stack select:focus,.stack textarea:focus {
  border-color:var(--brand);
  box-shadow:0 0 0 3px rgba(255,163,102,.35)
}
.back-link {
  font-weight:700
}
.auth-shell {
  position:relative;
  overflow:hidden;
  background:radial-gradient(circle at 12% 8%,rgba(255,163,102,.22),transparent 42%),linear-gradient(160deg,var(--brand-deep),var(--brand) 60%,var(--brand-soft))
}
.auth-card {
  position:relative;
  z-index:1;
  border-top:5px solid var(--accent)
}
.auth-tagline,.site-footer {
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.18em
}
.auth-tagline {
  margin:18px 0 0;
  font-size:.72rem;
  color:var(--muted);
  text-align:center
}
.site-footer {
  position:relative;
  z-index:1;
  padding:0 20px 36px;
  text-align:center;
  font-size:.72rem;
  color:var(--muted)
}
.site-footer span,.auth-tagline span {
  color:var(--accent-ink);
  text-decoration:underline;
  text-decoration-color:var(--accent);
  text-decoration-thickness:2px;
  text-underline-offset:3px
}
@media(max-width:700px) {
  .header-inner {
    position:relative;
    padding:6px 14px 2px;
    gap:0
  }
  .brand {
    min-height:44px;
    font-size:1.15rem
  }
  .nav-links {
    justify-content:flex-start;
    gap:0 14px
  }
  .nav-links a,.nav-button {
    font-size:.9rem
  }
  .nav-links form {
    position:absolute;
    top:6px;
    right:14px;
    margin:0;
    padding:0;
    border:0
  }
}

.approval-card {
  padding:24px;
}
.approval-card .page-heading {
  margin-bottom:20px;
}
.approval-card .page-heading h2 {
  margin:8px 0;
}
.approval-facts {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:16px 28px;
  margin:0 0 24px;
}
.approval-facts div {
  min-width:0;
}
.approval-facts dt {
  color:var(--muted);
  font-size:.82rem;
  font-weight:700;
}
.approval-facts dd {
  margin:4px 0 0;
  overflow-wrap:anywhere;
  font-weight:600;
}
.approval-actions {
  display:flex;
  align-items:flex-end;
  flex-wrap:wrap;
  gap:12px;
}
.approval-decline {
  display:flex;
  align-items:flex-end;
  flex-wrap:wrap;
  gap:8px;
}
.approval-decline label {
  width:100%;
  font-size:.85rem;
  font-weight:700;
}
.approval-decline input {
  min-height:44px;
  max-width:100%;
  border:1px solid var(--line);
  border-radius:8px;
  padding:8px 12px;
}
@media(max-width:700px) {
  .approval-facts {grid-template-columns:1fr}
}

/* ---- Subtle motion. Skipped when the visitor prefers reduced motion. ---- */
@media (prefers-reduced-motion:no-preference) {
  @keyframes rise-in {
    from {
      opacity:0;
      transform:translateY(10px)
    }
  }
  @keyframes slide-down {
    from {
      opacity:0;
      transform:translateY(-8px)
    }
  }
  @keyframes ball-bounce {
    0%,100% {
      transform:translateY(0)
    }
    40% {
      transform:translateY(-5px)
    }
    70% {
      transform:translateY(-1px)
    }
  }
  .page-shell>*,.auth-card {
    animation:rise-in .45s cubic-bezier(.2,.7,.2,1) backwards
  }
  .page-shell>:nth-child(2) {
    animation-delay:.05s
  }
  .page-shell>:nth-child(3) {
    animation-delay:.1s
  }
  .page-shell>:nth-child(4) {
    animation-delay:.15s
  }
  .page-shell>:nth-child(n+5) {
    animation-delay:.2s
  }
  .messages .notice {
    animation:slide-down .4s ease backwards
  }
  .card,.button,.nav-links a::after,.nav-button::after {
    transition-property:transform,border-color,box-shadow,background-color,color
  }
  .nav-links a::after,.nav-button::after {
    transition-duration:.22s;
    transition-timing-function:ease
  }
  .session-card:hover,.result-link:hover {
    transform:translateY(-2px)
  }
  .button:hover {
    transform:translateY(-1px)
  }
  .button:active {
    transform:translateY(2px)
  }
  .brand:hover .brand-mark,.appbar-brand:hover .brand-mark {
    animation:ball-bounce .6s ease
  }
}
