.admin-shell { min-height: 100vh; }
.admin-brand-link { color: inherit; text-decoration: none; }
.admin-main { max-width: 760px; margin: 0 auto; padding: 28px 18px 46px; }
.admin-card {
  position: relative;
  overflow: hidden;
  padding: 34px 26px 28px;
  border: 1px solid rgba(255,255,255,.11);
  border-radius: 26px;
  background: linear-gradient(180deg, rgba(15,35,68,.97), rgba(6,20,42,.98));
  box-shadow: 0 22px 60px rgba(0,0,0,.28);
}
.admin-card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 3px;
  background: linear-gradient(90deg, #eaaa00, rgba(234,170,0,.2));
}
.admin-medallion {
  width: 82px;
  height: 82px;
  display: grid;
  place-items: center;
  margin: 0 0 18px;
  border-radius: 50%;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(234,170,0,.35);
  box-shadow: inset 0 0 24px rgba(234,170,0,.08);
}
.admin-medallion img { width: 72px; height: 72px; object-fit: contain; }
.admin-card h2 { margin: 3px 0 10px; font-size: clamp(2rem, 6vw, 3rem); letter-spacing: -.035em; }
.admin-copy { max-width: 630px; margin: 0 0 22px; color: rgba(255,255,255,.72); line-height: 1.65; }
.auth-state {
  display: flex;
  gap: 12px;
  align-items: center;
  padding: 14px 16px;
  margin: 18px 0;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.035);
}
.auth-state-icon { font-size: 13px; color: #eaaa00; }
.auth-state div { display: grid; gap: 3px; }
.auth-state strong { font-size: .75rem; letter-spacing: .12em; }
.auth-state span:last-child { color: rgba(255,255,255,.62); font-size: .86rem; }
.auth-state--working .auth-state-icon { animation: authPulse 1s infinite alternate; }
.auth-state--success .auth-state-icon { color: #7fd99b; }
.auth-state--denied .auth-state-icon, .auth-state--error .auth-state-icon { color: #ff8d8d; }
@keyframes authPulse { from { opacity: .3; } to { opacity: 1; } }
.google-button-wrap { min-height: 44px; display: flex; align-items: center; margin: 6px 0 20px; }
.identity-card, .denied-card {
  margin-top: 18px;
  border-radius: 18px;
  padding: 20px;
}
.identity-card { border: 1px solid rgba(234,170,0,.35); background: rgba(234,170,0,.055); }
.identity-status-row { display: flex; justify-content: space-between; align-items: center; gap: 14px; margin-bottom: 13px; }
.identity-badge {
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  padding: 6px 10px;
  font-size: .69rem;
  font-weight: 900;
  letter-spacing: .13em;
  background: #eaaa00;
  color: #07162d;
}
.identity-role { color: #eaaa00; font-weight: 900; letter-spacing: .09em; font-size: .82rem; }
.identity-card h3 { margin: 0 0 4px; font-size: 1.5rem; }
.identity-card > p { margin: 0 0 17px; color: rgba(255,255,255,.62); }
.verification-grid { display: grid; gap: 9px; }
.verification-grid div { display: flex; align-items: center; gap: 9px; font-size: .86rem; }
.verification-grid span { color: #7fd99b; font-weight: 900; }
.denied-card { display: flex; gap: 14px; border: 1px solid rgba(255,102,102,.34); background: rgba(255,102,102,.06); }
.denied-icon { color: #ff8d8d; font-size: 1.8rem; line-height: 1; }
.denied-card strong { color: #ffb0b0; letter-spacing: .1em; font-size: .79rem; }
.denied-card p { margin: 6px 0 0; color: rgba(255,255,255,.72); line-height: 1.5; }
.admin-security-note { display: grid; gap: 3px; padding-top: 20px; margin-top: 20px; border-top: 1px solid rgba(255,255,255,.08); }
.admin-security-note strong { font-size: .68rem; letter-spacing: .13em; color: rgba(255,255,255,.48); }
.admin-security-note span { font-size: .82rem; color: rgba(255,255,255,.55); }
.admin-back-link { display: inline-block; margin-top: 22px; color: #eaaa00; text-decoration: none; font-weight: 800; font-size: .85rem; }
.admin-footer { margin-top: 26px; }
.staff-access-link { color: rgba(255,255,255,.52); text-decoration: none; font-size: .68rem; letter-spacing: .11em; font-weight: 800; }
.staff-access-link:hover { color: #eaaa00; }
@media (max-width: 600px) {
  .admin-main { padding: 18px 12px 34px; }
  .admin-card { padding: 28px 18px 22px; border-radius: 22px; }
  .admin-medallion { width: 70px; height: 70px; }
  .admin-medallion img { width: 62px; height: 62px; }
}

/* Results Entry V1 */
[hidden] { display: none !important; }
.console-panel { margin-top: 24px; padding-top: 24px; border-top: 1px solid rgba(255,255,255,.09); }
.console-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-bottom:18px; }
.console-heading h3 { margin:3px 0 0; font-size:1.55rem; }
.console-version { color:#eaaa00; font-size:.68rem; font-weight:900; letter-spacing:.12em; }
.result-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.form-field { display:grid; gap:7px; min-width:0; }
/* iOS Safari: native date controls can retain an intrinsic width wider than
   their grid cell. Remove the native sizing appearance while keeping the
   control as a functional date input/picker. */
.form-field input[type="date"] {
  display:block;
  width:100%;
  max-width:100%;
  min-width:0;
  inline-size:100%;
  max-inline-size:100%;
  min-inline-size:0;
  box-sizing:border-box;
  -webkit-min-logical-width:0;
  -webkit-appearance:none;
  appearance:none;
  overflow:hidden;
}
.form-field input[type="date"]::-webkit-date-and-time-value {
  min-width:0;
  width:100%;
  text-align:left;
}
.form-field input[type="date"]::-webkit-datetime-edit {
  min-width:0;
  width:100%;
  overflow:hidden;
}
.form-field--wide { grid-column:1/-1; }
.form-field label { color:rgba(255,255,255,.58); font-size:.67rem; font-weight:900; letter-spacing:.13em; }
.form-field label span { opacity:.6; }
.form-field input,.form-field select,.form-field textarea,.readonly-field {
  width:100%; box-sizing:border-box; border:1px solid rgba(255,255,255,.13); border-radius:13px;
  background:rgba(2,14,31,.65); color:#fff; font:inherit; padding:13px 14px; outline:none;
}
.form-field input:focus,.form-field select:focus,.form-field textarea:focus { border-color:rgba(234,170,0,.65); box-shadow:0 0 0 2px rgba(234,170,0,.08); }
.form-field textarea { resize:vertical; }
.form-field small { color:rgba(255,255,255,.46); font-size:.72rem; }
.readonly-field { color:rgba(255,255,255,.74); }
.result-input-wrap { position:relative; }
.result-input-wrap input { padding-right:72px; }
.result-input-wrap span { position:absolute; right:14px; top:50%; transform:translateY(-50%); color:#eaaa00; font-weight:900; font-size:.78rem; }
.admin-action,.admin-secondary { border:0; border-radius:13px; padding:14px 18px; font:inherit; font-weight:900; cursor:pointer; }
.admin-action { grid-column:1/-1; background:#eaaa00; color:#07162d; }
.admin-action:disabled { opacity:.55; cursor:wait; }
.admin-secondary { background:rgba(255,255,255,.07); color:#fff; border:1px solid rgba(255,255,255,.12); }
.review-panel { margin-top:4px; padding:18px; border-radius:17px; border:1px solid rgba(234,170,0,.30); background:rgba(234,170,0,.045); }
.review-summary { display:grid; gap:5px; margin:12px 0 18px; }
.review-summary strong { font-size:1.35rem; }
.review-summary span { color:rgba(255,255,255,.72); }
.review-summary b { margin-top:4px; color:#eaaa00; font-size:1.8rem; }
.review-summary small { color:rgba(255,255,255,.48); }
.review-summary em { margin-top:5px; color:rgba(255,255,255,.62); font-style:normal; }
.review-actions { display:grid; grid-template-columns:1fr 1.5fr; gap:10px; }
.review-actions .admin-action { grid-column:auto; }
.submission-result { display:grid; gap:4px; margin-top:16px; padding:14px 16px; border-radius:13px; border:1px solid rgba(255,255,255,.12); }
.submission-result strong { font-size:.74rem; letter-spacing:.12em; }
.submission-result span { color:rgba(255,255,255,.70); font-size:.84rem; }
.submission-result--success { border-color:rgba(127,217,155,.34); background:rgba(127,217,155,.06); }
.submission-result--success strong { color:#7fd99b; }
.submission-result--error { border-color:rgba(255,141,141,.34); background:rgba(255,141,141,.06); }
.submission-result--error strong { color:#ff9d9d; }
.submission-result--working strong { color:#eaaa00; }
@media (max-width:600px) {
  .result-form { grid-template-columns:1fr; }
  .form-field--wide,.admin-action { grid-column:auto; }
  .review-actions { grid-template-columns:1fr; }
}

/* Results Entry V2: batch mode */
.entry-mode-tabs { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:14px 0 18px; padding:5px; border:1px solid rgba(255,255,255,.10); border-radius:14px; background:rgba(2,14,31,.45); }
.entry-mode-button { border:0; border-radius:10px; padding:11px 12px; background:transparent; color:rgba(255,255,255,.58); font:inherit; font-weight:900; cursor:pointer; }
.entry-mode-button.active { background:linear-gradient(135deg,#244d9e,#193f86); color:#fff; box-shadow:inset 0 0 0 1px rgba(234,170,0,.36); }
.batch-entry-panel { display:grid; gap:16px; }
.batch-setup { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.batch-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 14px; border:1px solid rgba(255,255,255,.10); border-radius:13px; background:rgba(2,14,31,.42); }
.batch-toolbar div { display:grid; gap:2px; }
.batch-toolbar strong { color:#fff; font-size:.86rem; }
.batch-toolbar span { color:rgba(255,255,255,.46); font-size:.72rem; }
.admin-secondary.compact { padding:9px 12px; font-size:.75rem; }
.batch-roster { display:grid; gap:9px; }
.batch-athlete-row { display:grid; grid-template-columns:minmax(0,1fr) 112px; align-items:center; gap:12px; padding:12px 13px; border:1px solid rgba(255,255,255,.10); border-radius:14px; background:rgba(2,14,31,.48); }
.batch-athlete-info { min-width:0; display:grid; gap:3px; }
.batch-athlete-info strong { color:#fff; font-size:.91rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.batch-athlete-info span { color:rgba(255,255,255,.46); font-size:.70rem; }
.batch-result-wrap { position:relative; }
.batch-result-input { width:100%; box-sizing:border-box; border:1px solid rgba(255,255,255,.13); border-radius:11px; background:rgba(2,14,31,.78); color:#fff; font:inherit; font-weight:800; padding:11px 38px 11px 10px; text-align:right; outline:none; }
.batch-result-input:focus { border-color:rgba(234,170,0,.65); box-shadow:0 0 0 2px rgba(234,170,0,.08); }
.batch-result-unit { position:absolute; right:9px; top:50%; transform:translateY(-50%); color:#eaaa00; font-size:.62rem; font-weight:900; pointer-events:none; }
.batch-review-summary { display:grid; gap:10px; margin:12px 0 18px; max-height:50vh; overflow:auto; }
.batch-review-header { display:grid; gap:3px; padding-bottom:10px; border-bottom:1px solid rgba(255,255,255,.10); }
.batch-review-header strong { font-size:1.05rem; }
.batch-review-header span { color:rgba(255,255,255,.50); font-size:.75rem; }
.batch-review-row { display:flex; justify-content:space-between; gap:12px; align-items:baseline; padding:7px 0; border-bottom:1px solid rgba(255,255,255,.06); }
.batch-review-row span { color:rgba(255,255,255,.78); font-size:.82rem; }
.batch-review-row b { color:#eaaa00; white-space:nowrap; }
@media (max-width:600px) {
  .batch-setup { grid-template-columns:1fr; }
  .batch-athlete-row { grid-template-columns:minmax(0,1fr) 104px; }
}
.batch-entry-panel[hidden], #singleEntryPanel[hidden], .batch-setup[hidden], .batch-toolbar[hidden], .batch-roster[hidden] { display:none !important; }

/* Staff Console: Results + Attendance */
.console-section-tabs,
.attendance-mode-tabs {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  margin:14px 0 18px;
  padding:5px;
  border:1px solid rgba(255,255,255,.10);
  border-radius:14px;
  background:rgba(2,14,31,.45);
}
.console-section-button {
  border:0;
  border-radius:10px;
  padding:12px;
  background:transparent;
  color:rgba(255,255,255,.58);
  font:inherit;
  font-weight:900;
  cursor:pointer;
}
.console-section-button.active {
  background:linear-gradient(135deg,#244d9e,#193f86);
  color:#fff;
  box-shadow:inset 0 0 0 1px rgba(234,170,0,.36);
}
.attendance-setup-card {
  display:grid;
  gap:16px;
  padding:16px;
  border:1px solid rgba(255,255,255,.10);
  border-radius:16px;
  background:rgba(2,14,31,.34);
}
.attendance-setup-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
}
.attendance-workspace {
  display:grid;
  gap:16px;
  margin-top:18px;
}
.attendance-activity-summary {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  padding:14px;
  border:1px solid rgba(234,170,0,.28);
  border-radius:16px;
  background:rgba(234,170,0,.045);
}
.attendance-activity-summary div { display:grid; gap:4px; min-width:0; }
.attendance-activity-summary span { color:rgba(255,255,255,.45); font-size:.62rem; font-weight:900; letter-spacing:.12em; }
.attendance-activity-summary strong { color:#fff; font-size:.84rem; overflow:hidden; text-overflow:ellipsis; }
.attendance-activity-summary small { grid-column:1/-1; color:rgba(255,255,255,.46); padding-top:4px; }
.attendance-toolbar {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:12px 14px;
  border:1px solid rgba(255,255,255,.10);
  border-radius:13px;
  background:rgba(2,14,31,.42);
}
.attendance-toolbar > div:first-child { display:grid; gap:2px; }
.attendance-toolbar strong { color:#fff; font-size:.86rem; }
.attendance-toolbar span { color:rgba(255,255,255,.46); font-size:.72rem; }
.attendance-toolbar-actions { display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end; }
.attendance-roster { display:grid; gap:9px; }
.attendance-athlete-row {
  display:grid;
  grid-template-columns:minmax(180px,1fr) 155px minmax(150px,.8fr);
  align-items:center;
  gap:10px;
  padding:12px 13px;
  border:1px solid rgba(255,255,255,.10);
  border-radius:14px;
  background:rgba(2,14,31,.48);
}
.attendance-athlete-info { min-width:0; display:grid; gap:3px; }
.attendance-athlete-info strong { color:#fff; font-size:.91rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.attendance-athlete-info span { color:rgba(255,255,255,.46); font-size:.70rem; }
.attendance-status-select,
.attendance-note-input {
  width:100%;
  box-sizing:border-box;
  border:1px solid rgba(255,255,255,.13);
  border-radius:11px;
  background:rgba(2,14,31,.78);
  color:#fff;
  font:inherit;
  padding:10px;
  outline:none;
}
.attendance-status-select:focus,
.attendance-note-input:focus { border-color:rgba(234,170,0,.65); box-shadow:0 0 0 2px rgba(234,170,0,.08); }
.attendance-review-summary { display:grid; gap:14px; margin:12px 0 18px; }
.attendance-count-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }
.attendance-count-grid div { display:grid; gap:2px; text-align:center; padding:10px; border:1px solid rgba(255,255,255,.08); border-radius:11px; background:rgba(255,255,255,.025); }
.attendance-count-grid b { color:#eaaa00; font-size:1.2rem; }
.attendance-count-grid span { color:rgba(255,255,255,.55); font-size:.66rem; }
.attendance-review-list { max-height:42vh; overflow:auto; }
.attendance-all-present { margin:0; color:#7fd99b; font-weight:800; }

@media (max-width:760px) {
  .attendance-setup-grid { grid-template-columns:1fr; }
  .attendance-activity-summary { grid-template-columns:1fr 1fr; }
  .attendance-athlete-row { grid-template-columns:1fr 138px; }
  .attendance-note-input { grid-column:1/-1; }
}
@media (max-width:520px) {
  .attendance-toolbar { align-items:flex-start; flex-direction:column; }
  .attendance-toolbar-actions { width:100%; justify-content:stretch; }
  .attendance-toolbar-actions button { flex:1; }
  .attendance-athlete-row { grid-template-columns:1fr; }
  .attendance-note-input { grid-column:auto; }
  .attendance-count-grid { grid-template-columns:1fr 1fr; }
}


/* Attendance post-save confirmation actions */
.attendance-success-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-top: 12px;
}
.attendance-success-actions .admin-secondary,
.attendance-success-actions .attendance-dashboard-link {
  min-height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  text-decoration: none;
}
@media (max-width: 640px) {
  .attendance-success-actions {
    grid-template-columns: 1fr;
  }
}

/* Attendance V1 cosmetic polish */
.attendance-workspace > .submission-result {
  margin-top: 0;
}
