/* =============================================================================
   scuba.css — consolidated styles for Scuba Calendar & Roster
   NOTE: This file is served from /assets/css/scuba.css
         Background/image paths are written relative to THIS file.
============================================================================= */

/* ---- Page background & basics ---- */
html, body { height: 100%; }

/* ---- Small utility classes ---- */
.main-left-200 { margin-left:var(--sidenav-width, 200px); }
.toolbar-btn { padding:8px 8px !important; }
.modal-close-btn { color:inherit !important; background:transparent !important; border:none !important; }
.hint-below { position:absolute; left:0; bottom:-40px; }
.res-inline { display:flex; gap:10px; flex-wrap:wrap; }
.color-selection-empty {
  background-color:transparent !important;
  background-image:repeating-linear-gradient(135deg, transparent 0 4px, #94a3b833 4px 6px) !important;
  border:1px dashed #94a3b8 !important;
}
:is(#rosterGuideModal, #rosterCustomerPriceModal, #rosterGroupModal, #moveGroupModal, #groupModal) { z-index:2460 !important; padding:8vh 12px 24px !important; }
:is(#rosterGuideModal, #rosterCustomerPriceModal, #rosterGroupModal, #moveGroupModal, #groupModal, #newResModal) .w3-modal-content { max-width:560px; width:100%; padding:0; border-radius:16px; overflow:hidden; background:#fff; color:#0f172a; box-shadow:0 18px 60px #0004; }
:is(#rosterGuideModal, #rosterCustomerPriceModal, #rosterGroupModal, #moveGroupModal, #groupModal, #newResModal) .roster-guide-head { display:flex; align-items:center; gap:12px; padding:16px 18px; border-bottom:1px solid #dbe3ec; background:linear-gradient(110deg, #e6eff7, #fff); color:#0f172a; }
:is(#rosterGuideModal, #rosterCustomerPriceModal, #rosterGroupModal, #moveGroupModal, #groupModal, #newResModal) .roster-guide-head h5 { margin:0; flex:1; font-size:18px; font-weight:600; }
.roster-guide-icon { display:flex; align-items:center; justify-content:center; width:42px; height:42px; flex:0 0 42px; border-radius:12px; background:var(--focus-color, #1767a7); color:#fff; font-size:21px; }
.roster-guide-close { border:1px solid #dbe3ec; border-radius:10px; background:#f8fafc; color:#64748b; width:36px; height:36px; font-size:24px; line-height:1; cursor:pointer; }
.roster-guide-body { padding:18px; }
.roster-guide-body p { font-size:13px; color:#64748b; }
.roster-guide-body label { display:block; margin-bottom:6px; font-size:12px; font-weight:600; }
.roster-guide-body select { min-height:42px; background:#fff; color:#0f172a; }
#rosterCustomerPriceInput { min-height:44px; font-size:20px; width:100%; background:inherit; color:inherit; }
.roster-guide-status { min-height:20px; margin-top:12px; font-size:13px; }
.roster-guide-status.is-error { color:#b91c1c; }
#rosterGroupModal .w3-modal-content { display:flex; flex-direction:column; max-height:calc(92vh - 24px); }
#rosterGroupModal .roster-guide-body { overflow:auto; min-height:0; }
#rosterGroupModal :is(.roster-guide-head,.roster-guide-actions) { flex-shrink:0; }
#rosterGroupModal [hidden] { display:none !important; }
#moveGroupModal .w3-modal-content { max-width:640px; display:flex; flex-direction:column; max-height:calc(92vh - 24px); }
#moveGroupModal .roster-guide-body { overflow:auto; min-height:0; }
#moveGroupModal :is(.roster-guide-head,.roster-guide-actions) { flex-shrink:0; }
#moveGroupModal .roster-guide-actions { flex-wrap:wrap; }
#moveGroupRefreshBtn { margin-right:auto; }
.move-group-participant-label { font-size:12px; color:#64748b; margin-bottom:3px; }
#moveGroupModal .move-group-hint { display:flex; align-items:center; gap:10px; padding:12px; border-radius:10px; background:#edf5fc; color:#164c78; font-weight:600; margin:18px 0 10px; }
#moveGroupListTbl { width:100%; border-collapse:separate; border-spacing:0 8px; }
#moveGroupListTbl td { padding:0; }
#moveGroupModal .move-group-choice { display:flex; align-items:center; gap:12px; padding:14px; margin:0; border:1px solid #cbd5e1; border-radius:12px; cursor:pointer; background:#fff; transition:background .12s,border-color .12s; }
#moveGroupListTbl input { width:20px; height:20px; margin:0; flex-shrink:0; accent-color:var(--focus-color,#1767a7); }
.move-group-identity { flex:1; min-width:0; }
.move-group-identity strong { display:block; font-size:15px; overflow-wrap:anywhere; }
.move-group-identity small { display:block; margin-top:3px; color:#64748b; font-size:12px; }
.move-group-select-label { border-radius:999px; padding:5px 10px; background:#e8f2fb; color:#164c78; font-size:12px; font-weight:600; }
#moveGroupModal .move-group-choice:hover { border-color:var(--focus-color,#1767a7); background:#f0f7ff; }
#moveGroupModal .move-group-choice:focus-within { outline:2px solid var(--focus-color,#1767a7); outline-offset:2px; }
#moveGroupModal .is-selected .move-group-choice { border-color:var(--focus-color,#1767a7); background:#e8f2fb; box-shadow:inset 3px 0 var(--focus-color,#1767a7); }
#moveGroupModal .is-selected .move-group-select-label { background:var(--focus-color,#1767a7); color:#fff; }
body.theme-dark #moveGroupModal .move-group-choice { background:#172338; border-color:#475569; color:#e2e8f0; }
body.theme-dark #moveGroupModal :is(.move-group-hint,.move-group-select-label) { background:#173452; color:#dbeafe; }
body.theme-dark #moveGroupModal :is(.move-group-participant-label,.move-group-identity small) { color:#cbd5e1; }
body.theme-dark #moveGroupModal .move-group-choice:hover, body.theme-dark #moveGroupModal .is-selected .move-group-choice { background:#173452; border-color:#60a5fa; }
@media(max-width:480px) { #moveGroupApplyBtn { flex-basis:100%; } #moveGroupModal .move-group-choice { gap:8px; padding:12px 10px; } }
#rosterGroupMembersField { margin:16px 0 0; padding:0; border:0; }
#rosterGroupMembersField legend { font-size:12px; font-weight:600; padding:0 0 6px; }
#rosterGroupMembers { display:grid; gap:6px; }
#rosterGroupMembers label { display:flex; align-items:center; gap:10px; margin:0; padding:10px 12px; border:1px solid #cbd5e1; border-radius:8px; cursor:pointer; font-size:14px; font-weight:400; }
#rosterGroupMembers input { width:18px; height:18px; flex-shrink:0; accent-color:var(--focus-color,#1767a7); }
#rosterGroupMembers label:has(input:checked) { background:#e8f2fb; border-color:var(--focus-color,#1767a7); }
body.theme-dark #rosterGroupMembers label { border-color:#475569; }
body.theme-dark #rosterGroupMembers label:has(input:checked) { background:#173452; }
.roster-guide-actions { display:flex; justify-content:flex-end; gap:8px; padding:12px 18px; border-top:1px solid #dbe3ec; background:#f8fafc; }
body.theme-dark :is(#rosterGuideModal, #rosterCustomerPriceModal, #rosterGroupModal, #moveGroupModal, #groupModal, #newResModal) .w3-modal-content, body.theme-dark .roster-guide-body select { background:#0f172a; color:#f8fafc; }
body.theme-dark :is(#rosterGuideModal, #rosterCustomerPriceModal, #rosterGroupModal, #moveGroupModal, #groupModal, #newResModal) .roster-guide-head, body.theme-dark .roster-guide-actions, body.theme-dark .roster-guide-close { background:#172338; color:#e2e8f0; border-color:#334155; }
body.theme-dark .roster-guide-body p { color:#cbd5e1; }
body.theme-dark .roster-guide-status.is-error { color:#fca5a5; }
#dropConfirm.roster-drop-modal { z-index:2460 !important; padding:8vh 12px 24px !important; }
#dropConfirm.roster-drop-modal .w3-modal-content { max-width:580px; width:100%; padding:0; border-radius:16px; overflow:hidden; background:#fff; color:#0f172a; }
#dropConfirm.roster-drop-modal .w3-modal-content { display:flex; flex-direction:column; max-height:calc(92vh - 24px); }
#dropConfirm .roster-guide-body { overflow:auto; min-height:0; }
#dropConfirm :is(.roster-guide-head,.roster-guide-actions) { flex-shrink:0; }
#dropGroup { border-bottom:1px solid #cbd5e1; margin-bottom:14px; padding-bottom:12px; }
#dropGroup select { margin-top:5px; margin-bottom:12px; width:100%; }
#dropGroupPreview { max-height:120px; overflow:auto; padding:8px; border:1px solid #cbd5e1; border-radius:6px; }
#dropGroupPreview>div { padding:3px 0; }
#dropConfirm .roster-guide-head { display:flex; align-items:center; gap:12px; padding:16px 18px; background:linear-gradient(110deg,#e6eff7,#fff); color:#0f172a; border-bottom:1px solid #dbe3ec; }
#dropConfirm .roster-guide-head h5 { flex:1; margin:0; font-size:18px; font-weight:600; }
.roster-drop-choices { display:flex; flex-wrap:wrap; gap:8px; margin:16px 0; }
.roster-drop-choices label { display:flex; align-items:center; gap:7px; flex:1 1 145px; padding:12px; border:1px solid #cbd5e1; border-radius:10px; cursor:pointer; }
.roster-drop-choices label:has(input:checked) { border-color:var(--focus-color,#1767a7); background:#e8f2fb; }
#dropConfirm [hidden] { display:none !important; }
#dropPaid { font-weight:600; }
body.theme-dark #dropConfirm.roster-drop-modal .w3-modal-content, body.theme-dark #dropConfirm input[type=number] { background:#0f172a; color:#f8fafc; }
body.theme-dark #dropConfirm .roster-guide-head { background:#172338; color:#e2e8f0; border-color:#334155; }
body.theme-dark .roster-drop-choices label:has(input:checked) { background:#173452; }
.res-actions { display:flex; gap:8px; justify-content:flex-end; margin-top:12px; }
.res-actions .res-error { margin-right:auto; }
.input-state { max-width:90px; text-transform:uppercase; }
.input-zip { max-width:120px; }
.toolbar-img-32 { width:32px; height:32px; display:block; }

/* Modal z-index & widths */
#groupModal { z-index:20 !important; }
#xferModal  { z-index:25 !important; }
#dropConfirm{ z-index:30 !important; }
#posWaiverPaperConfirmModal { z-index:60 !important; }

#newResModal .w3-modal-content,
#groupModal  .w3-modal-content,
#xferModal   .w3-modal-content { max-width:760px; }

#dropConfirm .w3-modal-content { max-width:420px; }
#posWaiverPaperConfirmModal .waiver-paper-confirm-content {
  max-width: 420px !important;
  width: min(calc(100vw - 32px), 420px);
  padding: 0;
}

.waiver-paper-confirm-head {
  color: #fff;
  padding: 8px 12px;
}

.waiver-paper-confirm-head h5 {
  font-size: 16px;
  line-height: 1.2;
}

.waiver-paper-confirm-body {
  padding: 14px 16px 12px;
}

.waiver-paper-confirm-name {
  display: none;
  font-weight: 700;
  margin-bottom: 6px;
}

.waiver-paper-confirm-msg {
  margin: 0;
  color: #374151 !important;
}

.waiver-paper-confirm-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
  padding: 10px 16px 14px;
}

/* ---- Toast ---- */
.drop-toast{
  position:fixed; right:20px; bottom:20px;
  background:#333; color:#fff; padding:10px 14px; border-radius:8px;
  box-shadow:0 4px 14px rgba(0,0,0,.25);
  opacity:0; transform:translateY(8px);
  transition:opacity .18s ease, transform .18s ease;
  z-index:9999; pointer-events:none; font-size:.9rem;
}
.drop-toast.show{ opacity:1; transform:translateY(0); }
.drop-toast.is-error{
  left:50%;
  right:auto;
  top:28%;
  bottom:auto;
  min-width:320px;
  max-width:min(90vw, 560px);
  text-align:center;
  background:#c62828;
  box-shadow:0 10px 28px rgba(127,29,29,.35);
  transform:translate(-50%, 10px);
}
.drop-toast.show.is-error{
  transform:translate(-50%, 0);
}

/* ---- Theme ---- */
/* Let global theme control the accent via --focus-color, with DR blue as fallback */
.mycolor{
  background-color: var(--focus-color, #1767a7);
  color: #fff;
}

/* ===== Scuba modal theming (Travel / Activities) ===== */
.scuba-modal .w3-modal-content {
  background: #ffffff !important;
  color: #111827 !important;
  border-radius: 12px;
  overflow: hidden;
  border: 1px solid var(--focus-color, #1767a7) !important;
}

.trip-log-summary {
  border: 1px solid rgba(148, 163, 184, 0.45);
  border-radius: 8px;
  padding: 10px;
  background: rgba(248, 250, 252, 0.86);
  min-height: 90px;
  color: #1f2937;
}

.trip-log-summary-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.trip-log-summary-section {
  min-width: 0;
}

.trip-log-summary-title {
  font-size: 12px;
  font-weight: 700;
  color: #64748b;
  margin-bottom: 6px;
  text-transform: uppercase;
}

.trip-log-summary-row {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  padding: 4px 0;
  border-top: 1px solid rgba(148, 163, 184, 0.28);
  font-size: 12px;
}

.trip-log-summary-row:first-of-type {
  border-top: 0;
}

.trip-log-summary-row span:first-child {
  color: #64748b;
}

.trip-log-summary-row span:last-child {
  text-align: right;
  font-weight: 700;
}

.trip-log-summary-empty {
  color: #64748b;
  font-size: 13px;
}

body.theme-dark .trip-log-summary {
  background: rgba(15, 23, 42, 0.72);
  border-color: rgba(148, 163, 184, 0.32);
  color: #e5e7eb;
}

body.theme-dark .trip-log-summary-title,
body.theme-dark .trip-log-summary-row span:first-child,
body.theme-dark .trip-log-summary-empty {
  color: #94a3b8;
}

@media (max-width: 640px) {
  .trip-log-summary-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

.boat-modal-head {
  position: relative;
  padding: 6px 12px;
}
.boat-modal-head h5 {
  margin: 2px 0;
  font-size: 14px;
  line-height: 1.1;
}
.boat-modal-close {
  position: absolute;
  top: 2px;
  right: 6px;
  line-height: 1;
  padding: 2px 8px;
}

body.theme-dark .scuba-modal .w3-modal-content {
  background: #0b1220 !important;
  color: #e5e7eb !important;
  border-color: var(--focus-color, #1767a7) !important;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.55);
}

body.theme-grays .scuba-modal .w3-modal-content {
  background: #f9fafb !important;
  color: #111827 !important;
  border-color: rgba(148, 163, 184, 0.6) !important;
}

body.theme-dark .waiver-paper-confirm-msg {
  color: #e5e7eb !important;
}

body.theme-grays .waiver-paper-confirm-msg {
  color: #111827 !important;
}

body.theme-dark .scuba-modal .w3-text-grey {
  color: #cbd5e1 !important;
}

.scuba-modal footer {
  border-top: 1px solid rgba(148, 163, 184, 0.35);
}

body.theme-dark .scuba-modal footer {
  border-top-color: rgba(15, 23, 42, 0.9);
}

.owe-autobill-modal-content {
  max-width: 640px !important;
  width: min(calc(100vw - 32px), 640px);
}

.autobill-card-row {
  display: flex;
  gap: 8px;
  align-items: stretch;
}

.autobill-card-row #autobillCardSelect {
  flex: 0 1 58%;
  min-width: 0;
}

.autobill-card-row #autobillAddCardBtn {
  flex: 0 0 auto;
  min-width: 188px;
  padding-left: 18px !important;
  padding-right: 18px !important;
  white-space: nowrap;
}

@media (max-width: 640px) {
  .autobill-card-row {
    flex-wrap: wrap;
  }

  .autobill-card-row #autobillCardSelect,
  .autobill-card-row #autobillAddCardBtn {
    width: 100%;
  }
}

.scuba-modal .w3-input,
.scuba-modal .w3-select,
.scuba-modal .w3-textarea {
  background: #ffffff !important;
  color: #111827 !important;
  border-color: rgba(148, 163, 184, 0.6) !important;
}

body.theme-dark .scuba-modal .w3-input,
body.theme-dark .scuba-modal .w3-select,
body.theme-dark .scuba-modal .w3-textarea {
  background: #0f172a !important;
  color: #e5e7eb !important;
  border-color: rgba(148, 163, 184, 0.45) !important;
}

body.theme-dark .scuba-modal .w3-input::placeholder,
body.theme-dark .scuba-modal .w3-textarea::placeholder {
  color: #9ca3af;
}

body.theme-grays .scuba-modal .w3-input,
body.theme-grays .scuba-modal .w3-select,
body.theme-grays .scuba-modal .w3-textarea {
  background: #ffffff !important;
  color: #111827 !important;
  border-color: rgba(148, 163, 184, 0.6) !important;
}

.scuba-modal .w3-light-grey {
  background: #f1f5f9 !important;
  color: #111827 !important;
  border-color: rgba(148, 163, 184, 0.6) !important;
}
body.theme-dark .scuba-modal .w3-light-grey {
  background: rgba(15, 23, 42, 0.65) !important;
  color: #e5e7eb !important;
  border-color: rgba(148, 163, 184, 0.35) !important;
}
body.theme-grays .scuba-modal .w3-light-grey {
  background: #eef2f7 !important;
  color: #111827 !important;
  border-color: rgba(148, 163, 184, 0.45) !important;
}

/* Activity editor secondary action, shared by Scuba, POS, and Activities. */
#excTripEditOptionsBtn,
#actOptionsFromEditBtn {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 20%, #fff) !important;
  color: color-mix(in srgb, var(--focus-color, #1767a7) 65%, #111827) !important;
  border: 1px solid color-mix(in srgb, var(--focus-color, #1767a7) 40%, #fff) !important;
}
#excTripEditOptionsBtn:hover:not(:disabled),
#actOptionsFromEditBtn:hover:not(:disabled) {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 30%, #fff) !important;
}
#excTripEditOptionsBtn:focus-visible,
#actOptionsFromEditBtn:focus-visible {
  outline: 2px solid var(--focus-color, #1767a7);
  outline-offset: 2px;
}

.scuba-modal .w3-white {
  background: #ffffff !important;
  color: #111827 !important;
  border-color: rgba(148, 163, 184, 0.6) !important;
}
body.theme-dark .scuba-modal .w3-white {
  background: #0f172a !important;
  color: #e5e7eb !important;
  border-color: rgba(148, 163, 184, 0.45) !important;
}
body.theme-grays .scuba-modal .w3-white {
  background: #ffffff !important;
  color: #111827 !important;
  border-color: rgba(148, 163, 184, 0.5) !important;
}

.scuba-activity-email-modal {
  z-index: 2500 !important;
  padding-top: 5vh !important;
}
.scuba-activity-email-content {
  width: min(680px, calc(100vw - 24px));
  max-width: 680px;
  border-radius: 14px !important;
  box-shadow: 0 22px 54px rgba(15,23,42,.34);
}
.scuba-activity-email-head {
  position: relative;
  padding: 13px 18px;
  background: linear-gradient(135deg, color-mix(in srgb, var(--focus-color, #1767a7) 78%, #0f172a), var(--focus-color, #1767a7));
  color: #fff;
}
.scuba-activity-email-modal.is-cancellation .scuba-activity-email-head {
  background: linear-gradient(135deg, #7f1d1d, #dc2626);
}
.scuba-activity-email-title {
  display: flex;
  align-items: center;
  gap: 9px;
  margin: 0;
  padding-right: 38px;
  font-size: 17px;
  line-height: 1.2;
}
.scuba-activity-email-body { padding: 16px 18px 10px; }
.scuba-activity-email-context {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 14px;
  padding: 10px 12px;
  border: 1px solid rgba(148,163,184,.3);
  border-radius: 10px;
  background: #f8fafc;
}
.scuba-activity-email-name { color: #0f172a; font-size: 15px; font-weight: 700; }
.scuba-activity-email-schedule,
.scuba-activity-email-recipient-count,
.scuba-activity-email-help { color: #64748b; font-size: 12px; }
.scuba-activity-email-schedule { margin-top: 2px; }
.scuba-activity-email-recipient-count { text-align: right; }
.scuba-activity-email-field { margin-bottom: 12px; }
.scuba-activity-email-field label {
  display: block;
  margin-bottom: 4px;
  color: #475569;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
}
.scuba-activity-email-saved-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 7px;
}
.scuba-activity-email-saved-row[hidden] { display: none !important; }
.scuba-activity-email-saved-row select {
  flex: 1 1 auto;
  min-width: 0;
}
.scuba-activity-email-save-message {
  flex: 0 0 auto;
  white-space: nowrap;
}
.scuba-activity-email-field textarea {
  min-height: 180px;
  resize: vertical;
  line-height: 1.45;
}
.scuba-activity-email-status { min-height: 20px; margin-top: 8px; font-size: 12px; }
.scuba-activity-email-status.is-error { color: #b91c1c; }
.scuba-activity-email-status.is-success { color: #15803d; }
.scuba-activity-email-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 9px;
  padding: 11px 18px 14px;
  background: #f8fafc;
}
.scuba-activity-email-modal.is-cancellation .scuba-activity-email-send {
  background: #b91c1c !important;
  color: #fff !important;
}
body.theme-dark .scuba-activity-email-context,
body.theme-dark .scuba-activity-email-actions {
  background: #111827;
  border-color: rgba(148,163,184,.25);
}
body.theme-dark .scuba-activity-email-name { color: #f8fafc; }
body.theme-dark .scuba-activity-email-schedule,
body.theme-dark .scuba-activity-email-recipient-count,
body.theme-dark .scuba-activity-email-help,
body.theme-dark .scuba-activity-email-field label { color: #cbd5e1; }
@media (max-width: 540px) {
  .scuba-activity-email-context { align-items: flex-start; flex-direction: column; }
  .scuba-activity-email-recipient-count { text-align: left; }
  .scuba-activity-email-saved-row { align-items: stretch; flex-direction: column; }
  .scuba-activity-email-save-message { width: 100%; }
  .scuba-activity-email-field textarea { min-height: 150px; }
}

/* ===== SCUBA toolbar (top icon row) ===== */

.scuba-toolbar-wrap {
  max-width: 1500px;
  margin: 14px auto 14px;
  padding: 0 12px;
}

.scuba-toolbar {
  background-color: rgba(0, 0, 0, .1);
  border: 1px solid rgba(0,0,0,0.05);
  border-radius: 14px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.08);
  padding: 4px 10px;
  display: flex;
  align-items: center;
  gap: 4px;
}

/* make buttons compact like PO */
.scuba-toolbar .w3-button {
  padding: 8px 8px !important;
}

/* Taller tabs with underline for active */
.scuba-toolbar .w3-button.scuba-tab {
  position: relative;
  padding-top: 6px !important;
  padding-bottom: 16px !important;
}

.scuba-toolbar .scuba-tab.scuba-tab-active {
  color: #0A6FC2 !important;
}

.scuba-toolbar .scuba-tab.scuba-tab-active::after {
  content: "";
  position: absolute;
  left: 12%;
  right: 12%;
  bottom: 2px;
  height: 3px;
  border-radius: 999px;
  background: #0A6FC2;
  pointer-events: none;
}

.scuba-pagebar .pagebar-tabs {
  width: 100%;
}

@media (max-width: 980px) {
  .scuba-pagebar {
    padding: 6px 8px;
  }
  .scuba-pagebar .pagebar-tabs {
    flex-wrap: wrap;
    gap: 6px 2px;
    align-items: center;
  }
  .scuba-pagebar .pagebar-tab {
    flex: 0 0 auto;
  }
  .scuba-pagebar .scuba-pagebar-separator {
    display: none;
  }
}

@media (max-width: 640px) {
  .scuba-pagebar-wrap {
    padding: 0 8px;
  }
  .scuba-pagebar .pagebar-tabs {
    justify-content: flex-start;
  }
  .scuba-pagebar .pagebar-tab {
    min-width: 42px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }
}

/* Segmented toggle pills (used on Classes Active/Closed) */
.scuba-pill-toggle{
  display:inline-flex;
  border-radius:999px;
  overflow:hidden;
  border:1px solid color-mix(in srgb, var(--focus-color, #1767a7) 35%, rgba(0,0,0,.2));
  background: color-mix(in srgb, var(--focus-color, #1767a7) 10%, #ffffff);
}
body.theme-dark .scuba-pill-toggle{
  background: color-mix(in srgb, var(--focus-color, #1767a7) 18%, #0b1626);
  border-color: color-mix(in srgb, var(--focus-color, #1767a7) 40%, rgba(255,255,255,.15));
}
.scuba-pill{
  display:inline-flex;
  align-items:center;
  cursor:pointer;
  user-select:none;
  text-decoration:none;
}
.scuba-pill span{
  display:inline-block;
  padding:5px 12px;
  font-size:12px;
  line-height:1;
  color: var(--focus-color, #1767a7);
  background: transparent;
}
.scuba-pill.is-active span{
  background: var(--focus-color, #1767a7);
  color:#ffffff;
}
.scuba-pill span:hover{
  background: color-mix(in srgb, var(--focus-color, #1767a7) 18%, transparent);
}

/* ===== Calendar base & header ===== */

.cal-wrap { margin:12px; }

.manifest-day-link{
  color: inherit;
  text-decoration: none;
  font-weight: 700;
}
.manifest-day-link:hover,
.manifest-day-link:focus-visible{
  color: var(--focus-color, #1767a7);
  text-decoration: underline;
}
.range-date-row,
.book-day-row{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
}
.range-date-row{
  flex-direction:column;
}
.range-manifest-link{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color: var(--focus-color, #1767a7);
  text-decoration:none;
}
.range-manifest-link:hover,
.range-manifest-link:focus-visible{
  color: color-mix(in srgb, var(--focus-color, #1767a7) 78%, #000000);
}

/* Outer calendar header container */
.cal-bar {
  padding: 8px 12px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

/* Action bar (bookings/back-forward row) */
.pagebar.actionbar {
  box-shadow: 0 1px 6px rgba(0,0,0,0.12);
}
body.theme-dark .pagebar.actionbar {
  box-shadow: 0 1px 8px rgba(255,255,255,0.08);
}

/* Row 1: arrows + date */
.cal-bar-main {
  display: flex;
  align-items: center;
  gap: 8px;
}

.cal-bar-main #calPrev,
.cal-bar-main #calNext {
  flex: 0 0 auto;
}

.cal-title {
  font-size: 18px;
  font-weight: 600;
}

.cal-bar-main .cal-title {
  flex: 1 1 auto;
  text-align: center;
  cursor: pointer;
  position: relative;
}

/* Shared year picker. It must float over the calendar in both Scuba and POS. */
.cal-title-wrap {
  position: relative;
}

.cal-title-wrap .year-toggle {
  flex: 0 0 auto;
  min-width: 66px;
  min-height: 32px;
  border: 1px solid rgba(100, 116, 139, 0.55);
  border-radius: 6px;
  background: #ffffff;
  color: #111827;
  font: inherit;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
  white-space: nowrap;
}

.cal-title-wrap .year-toggle:hover,
.cal-title-wrap .year-toggle:focus-visible {
  border-color: var(--focus-color, #1767a7);
  outline: 2px solid color-mix(in srgb, var(--focus-color, #1767a7) 28%, transparent);
  outline-offset: 1px;
}

.cal-title-wrap .year-list {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  left: auto;
  z-index: 5000;
  display: none;
  grid-template-columns: repeat(3, minmax(52px, 1fr));
  gap: 4px;
  width: 184px;
  padding: 7px;
  border: 1px solid rgba(100, 116, 139, 0.38);
  border-radius: 7px !important;
  background: #ffffff;
  box-shadow: 0 10px 24px rgba(15, 23, 42, 0.24);
}

.cal-title-wrap .year-list.show {
  display: grid;
}

.cal-title-wrap .year-option {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 32px;
  padding: 4px 6px;
  border-radius: 5px;
  color: #1f2937;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
}

.cal-title-wrap .year-option:hover,
.cal-title-wrap .year-option:focus-visible {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 12%, #ffffff);
  color: var(--focus-color, #1767a7);
  outline: none;
}

.cal-title-wrap .year-option.is-current {
  background: var(--focus-color, #1767a7);
  color: var(--focus-contrast, #ffffff);
}

body.theme-dark .cal-title-wrap .year-toggle,
body.theme-dark .cal-title-wrap .year-list {
  border-color: rgba(148, 163, 184, 0.55);
  background: #182331;
  color: #f8fafc;
}

body.theme-dark .cal-title-wrap .year-option {
  color: #e5e7eb;
}

body.theme-dark .cal-title-wrap .year-option:hover,
body.theme-dark .cal-title-wrap .year-option:focus-visible {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 38%, #182331);
  color: #ffffff;
}

/* Row 2: view-mode buttons (Month / 7 Day / 3 Day / Today) */
.cal-date-trigger { border:0; padding:0; background:transparent; color:inherit; font-family:inherit; cursor:pointer; }
#posScubaEmbedWrap .pos-calendar-favorites { flex:0 0 auto; width:36px; height:36px; padding:6px; margin-left:8px; color:var(--focus-color,#1767a7); background:transparent; border:1px solid #94a3b866; border-radius:9px; }
#posScubaEmbedWrap .pos-calendar-favorites:focus-visible { outline:2px solid var(--focus-color,#1767a7); outline-offset:2px; }
body.theme-dark #posScubaEmbedWrap .pos-calendar-favorites { color:#bfdbfe; }
#calDefaultsModal .w3-modal-content { max-height:90vh; overflow:auto; }
.cal-date-trigger:hover { text-decoration:underline; text-underline-offset:4px; }
.cal-date-trigger:focus-visible { outline:2px solid var(--focus-color,#1767a7); outline-offset:4px; border-radius:4px; }
.cal-date-picker { position:fixed; z-index:2000; width:240px; max-width:calc(100vw - 16px); padding:12px; border-radius:10px; border:1px solid #b9cadb; background:#fff; color:#0f172a; box-shadow:0 8px 24px #0003; }
.cal-date-picker[hidden] { display:none; }
.cal-date-picker label { display:block; margin-bottom:6px; font-size:13px; font-weight:600; }
.cal-date-picker input { width:100%; min-width:0; padding:8px; border:1px solid #b9cadb; border-radius:6px; background:inherit; color:inherit; font:inherit; }
body.theme-dark .cal-date-picker { background:#0f172a; color:#e5e7eb; border-color:#475569; color-scheme:dark; }

.cal-viewbar {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  justify-content: center;
}

/* Base calendar nav + view buttons
   (we'll theme per body.theme-* below) */
.cal-nav-btn,
.cal-viewbtn,
#calToday {
  font-size: 0.85rem;
  padding: 4px 10px;
  border-radius: 4px;
  border: 1px solid rgba(148,163,184,0.6);
  cursor: pointer;
}

/* LIGHT THEME: use same bg as .day */
body.theme-light .cal-nav-btn,
body.theme-light .cal-viewbtn,
body.theme-light #calToday {
  background: #ffffff;
  color: #111827;
}

/* DARK THEME: match day cell background (#3f4e5a) */
body.theme-dark .cal-nav-btn,
body.theme-dark .cal-viewbtn,
body.theme-dark #calToday {
  background: #3f4e5a;
  color: #e5e7eb;
  border-color: rgba(15,23,42,0.9);
}

/* GRAYS THEME: match gray day cells */
body.theme-grays .cal-nav-btn,
body.theme-grays .cal-viewbtn,
body.theme-grays #calToday {
  background: #f3f4f6;
  color: #111827;
}

/* Today button should use focus color + contrast */
#calToday {
  background: var(--focus-color, #1767a7) !important;
  color: var(--focus-contrast, #fff) !important;
  border-color: var(--focus-color, #1767a7) !important;
}

/* Hover: subtle brighten */
.cal-nav-btn:hover,
.cal-viewbtn:hover,
#calToday:hover {
  filter: brightness(1.06);
}

/* View buttons: theme-aware hover with contrast-safe text */
.cal-viewbtn:hover {
  filter: none !important;
  color: var(--focus-contrast, #fff) !important;
}
body.theme-light .cal-viewbtn:hover,
body.theme-grays .cal-viewbtn:hover {
  background-color: color-mix(in srgb, var(--focus-color, #1767a7) 85%, #000) !important;
  border-color: color-mix(in srgb, var(--focus-color, #1767a7) 85%, #000) !important;
}
body.theme-dark .cal-viewbtn:hover {
  background-color: color-mix(in srgb, var(--focus-color, #1767a7) 70%, #fff) !important;
  border-color: color-mix(in srgb, var(--focus-color, #1767a7) 70%, #fff) !important;
}

/* Active view button (Month / 7 / 3) */
.cal-viewbtn.cal-view-active {
  background: var(--focus-color, #1767a7) !important;
  color: var(--focus-contrast, #fff) !important;
  border-color: var(--focus-color, #1767a7) !important;
}

/* Pill-style view toggle (Month / 7 Day / 3 Day) */
.cal-viewbar .scuba-pill-toggle {
  margin: 0;
}
.cal-viewbar .scuba-pill-toggle .cal-viewbtn {
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
  border-radius: 0 !important;
}
.cal-viewbar .scuba-pill-toggle .cal-viewbtn:hover {
  filter: none !important;
  color: var(--focus-color, #1767a7) !important;
  background: transparent !important;
  border-color: transparent !important;
}
.cal-viewbar .scuba-pill-toggle .cal-viewbtn span:hover {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 18%, transparent);
}
.cal-viewbar .scuba-pill-toggle .cal-viewbtn.cal-view-active span {
  background: var(--focus-color, #1767a7);
  color: var(--focus-contrast, #fff);
}
.cal-range-detail-separator {
  display: none;
  width: 1px;
  height: 24px;
  border-left: 1px solid color-mix(in srgb, var(--focus-color, #1767a7) 35%, transparent);
}
.cal-range-detail-toggle {
  display: none;
}
.cal-range-detail-toggle .cal-range-detail-btn span {
  min-width: 82px;
  padding: 5px 12px;
  text-align: center;
}


/* Smaller screens: tweak header sizing */
@media (max-width: 640px) {
  .cal-bar-main .cal-title {
    font-size: 0.95rem;
  }

  .cal-viewbar {
    justify-content: center;
  }
}

/* === Month / day grid === */

.cal-head, .cal-grid {
  display:grid;
  grid-template-columns: repeat(7, minmax(0,1fr));
  gap:4px;
}

.cal-head div {
  text-align:center;
  font-size:12px;
  color:#666;
  padding:6px 0;
}

.day {
  min-height:110px;
  border:1px solid #e0e0e0;
  border-radius:6px;
  background:#fff;
  padding:6px;
  display:flex;
  flex-direction:column;
}
.day.empty { background:#fafafa; border-style:dashed; }
.day .date { font-size:12px; color:#555; margin-bottom:4px; display:flex; align-items:baseline; gap:6px; justify-content:space-between; }
.day .date-num { font-weight:600; }
.day .date-dow { font-size:11px; color:#666; }
body.theme-dark .day .date { color:#f1f5f9; }
body.theme-dark .day .date-num { color:#f8fafc; }
body.theme-dark .day .date-dow { color:#e2e8f0; }
.day.today { box-shadow: inset 0 0 0 2px var(--focus-color, #1767a7); }

/* Theme-specific day cell backgrounds */
body.theme-light .day {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 4%, #ffffff);
  border-color: color-mix(in srgb, var(--focus-color, #1767a7) 35%, rgba(148,163,184,0.6));
}
body.theme-light .day.empty {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 2%, #ffffff);
}

body.theme-dark .day {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 12%, #0f172a);
  border-color: rgba(15,23,42,0.9);
}
body.theme-dark .day.empty {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 8%, #111827);
  border-style: dashed;
}

body.theme-grays .day {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 4%, rgba(249,250,251,0.95));
  border-color: color-mix(in srgb, var(--focus-color, #1767a7) 30%, rgba(148,163,184,0.6));
}
body.theme-grays .day.empty {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 2%, rgba(148,163,184,0.25));
  border-style: dashed;
}


/* Calendar nav + view buttons themed per body theme */
.cal-bar-main #calPrev,
.cal-bar-main #calNext,
.cal-viewbar .cal-viewbtn,
.cal-viewbar #calToday {
  border-width: 1px;
  border-style: solid;
}

/* Light theme: match light day cell look */
body.theme-light .cal-bar-main #calPrev,
body.theme-light .cal-bar-main #calNext,
body.theme-light .cal-viewbar .cal-viewbtn,
body.theme-light .cal-viewbar #calToday {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 10%, #ffffff);
  border-color: rgba(148,163,184,0.6);
  color: #111827;
}

/* Dark theme: match #3f4e5a day cells */
body.theme-dark .cal-bar-main #calPrev,
body.theme-dark .cal-bar-main #calNext,
body.theme-dark .cal-viewbar .cal-viewbtn,
body.theme-dark .cal-viewbar #calToday {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 22%, #0f172a);
  border-color: rgba(15,23,42,0.9);
  color: #f9fafb;
}

/* Grays theme: use gray day look */
body.theme-grays .cal-bar-main #calPrev,
body.theme-grays .cal-bar-main #calNext,
body.theme-grays .cal-viewbar .cal-viewbtn,
body.theme-grays .cal-viewbar #calToday {
  background: rgba(249,250,251,0.95);
  border-color: rgba(148,163,184,0.65);
  color: #111827;
}



.activitybars{ display:flex; flex-direction:column; gap:4px; }
.activitybars-divider{
  height:0;
  margin:6px 2px 5px;
  border-top:1px solid rgba(255,255,255,0.18);
}
body.theme-light .activitybars-divider,
body.theme-grays .activitybars-divider{
  border-top-color:rgba(15,23,42,0.12);
}
.pill{
  display:flex; align-items:center; justify-content:space-between;
  gap:6px; padding:4px 6px; border-radius:8px;
  font-size:12px; line-height:1.2; text-decoration:none;
}
.pill .left{ overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.pill .right{ flex:0 0 auto; font-variant-numeric: tabular-nums; }

/* Month grid responsive behaviour */
@media (max-width:1100px){
  .cal-grid { grid-template-columns: repeat(5, minmax(0,1fr)); }
}
@media (max-width:900px){
  .cal-grid { grid-template-columns: repeat(4, minmax(0,1fr)); }
}
@media (max-width:700px){
  .cal-grid { grid-template-columns: repeat(3, minmax(0,1fr)); }
}
@media (max-width:640px){
  .cal-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .cal-head { display:none; }
  .cal-grid .day.empty { display:none; }
}

/* ===== Hover card ===== */
.cal-hover{
  position:fixed; z-index:3000; display:none; pointer-events:none;
  background:rgba(0,0,0,.92); color:#fff; padding:8px 10px; border-radius:8px;
  font-size:12px; line-height:1.35; max-width:340px; box-shadow:0 10px 24px rgba(0,0,0,.25);
}
.cal-hover .h{ font-weight:600; margin-bottom:4px; }
.cal-hover .row{ display:flex; gap:6px; }
.cal-hover .k{ opacity:.8; min-width:116px; }
.cal-hover .v{ flex:1 1 auto; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* ===== Excursion modal ===== */
.exc-modal{ padding-top:2vh !important; }
.exc-modal .w3-modal-content{
  max-width:680px;
  max-height: calc(100vh - 6vh);
  display:flex;
  flex-direction:column;
  overflow:hidden;
}

#excHeader{
  position:relative;  /* or just remove position entirely */
  top:auto;
  z-index:auto;
}

.exc-headgrid{
  display:grid; grid-template-columns: 1fr auto; align-items:stretch;
  column-gap:12px; margin-right:44px; min-height:56px; padding:8px 0;
}
.exc-head-left{ display:flex; flex-direction:column; justify-content:center; padding-right:8px; }
.exc-title-row{ display:flex; align-items:center; gap:8px; }
.exc-edit-btn{
  min-width:40px;
  height:40px;
  padding:0 !important;
  border-radius:10px !important;
  border:1px solid rgba(255,255,255,.4);
  background:rgba(255,255,255,.16);
  color:inherit;
  display:inline-flex !important;
  align-items:center;
  justify-content:center;
}
.exc-edit-btn:hover{
  background:rgba(255,255,255,.24);
}
.exc-edit-btn i{ font-size:19px; line-height:1; }
#excTitle{ margin:0; }
#excSub{ font-size:13px; opacity:.92; margin-top:2px; }
.exc-meta{ font-size:12px; opacity:.9; margin-top:4px; }
.cap-badge{
  align-self:stretch; display:flex; flex-direction:column; align-items:center; justify-content:center;
  padding:6px 14px 8px; font-size:22px; font-weight:700; line-height:1; border-radius:10px;
  background:rgba(255,255,255,.15); border:1px solid rgba(255,255,255,.35); color:inherit; min-width:84px;
}
.cap-count{ margin-top:-2px; }
.cap-sub{ font-size:12px; font-weight:500; line-height:1.1; margin-top:4px; opacity:.9; }

#excBody{ flex:1 1 auto; min-height:0; overflow:auto; }

/* ===== Buttons in roster ===== */
.icon-btn{
  height:32px; width:32px; padding:0 !important;
  display:inline-flex; align-items:center; justify-content:center;
  line-height:1; box-sizing:border-box;
}
.icon-btn i{ font-size:16px; line-height:1; margin:0 !important; }
.act-options{ background:#f3f4f6; border-color:#e5e7eb; color:#374151; }

/* ===== Roster table ===== */
#excRosterTbl,
.book-roster-table{
  border-collapse:collapse; border-spacing:0;
  --solo-pill-w: 16px; --solo-pill-h: 38px;
}
#excRosterTbl thead th,
.book-roster-table thead th{
  font-weight:400; font-size:11px; color:#666; padding:4px 6px;
}
#excRosterTbl thead th,
.book-roster-table thead th{ color:#666; }
body.theme-dark #excRosterTbl thead th,
body.theme-dark .book-roster-table thead th{ color:#f8fafc; }
body.theme-grays #excRosterTbl thead th,
body.theme-grays .book-roster-table thead th{ color:#1f2937; }
#excRosterTbl tbody tr,
.book-roster-table tbody tr{ position:relative; }
#excRosterTbl tbody td,
.book-roster-table tbody td{ vertical-align:middle; padding:6px 6px; }
#excRosterTbl tbody td.namecell,
.book-roster-table tbody td.namecell{ position:relative; padding-left:24px; }
body.theme-dark #excRosterTbl tbody tr:nth-child(even),
body.theme-dark .book-roster-table tbody tr:nth-child(even){
  background: color-mix(in srgb, var(--focus-color, #1767a7) 28%, #0b1220) !important;
}

/* group band */
#excRosterTbl tbody tr.r-group td.namecell::before,
.book-roster-table tbody tr.r-group td.namecell::before{
  content:""; position:absolute; z-index:0; left:2px; top:0; bottom:0; width:12px;
  background:#FFD54F; box-shadow:0 2px 6px rgba(0,0,0,.12);
}
#excRosterTbl tbody tr.r-group.group-leader td.namecell::before,
.book-roster-table tbody tr.r-group.group-leader td.namecell::before{
  background:linear-gradient(180deg,#1767A7 0%,#90CAF9 100%);
}
#excRosterTbl tbody tr.r-group.group-start td.namecell::before,
.book-roster-table tbody tr.r-group.group-start td.namecell::before{
  top:3px;
  border-top-left-radius:8px; border-top-right-radius:8px;
}
#excRosterTbl tbody tr.r-group.group-end td.namecell::before,
.book-roster-table tbody tr.r-group.group-end td.namecell::before{
  border-bottom-left-radius:8px; border-bottom-right-radius:8px;
}

/* Guest rows: show the name in an info/blue color */
#excRosterTbl tbody tr.r-group.group-guest td.namecell .nm,
.book-roster-table tbody tr.r-group.group-guest td.namecell .nm { color:#2196F3; }
#excRosterTbl tbody td.namecell .roster-customer-link,
.book-roster-table tbody td.namecell .roster-customer-link{
  cursor:pointer;
}
#excRosterTbl tbody td.namecell .roster-customer-link{
  text-decoration:underline;
  text-underline-offset:2px;
}
.book-roster-table tbody td.namecell .roster-customer-link{
  text-decoration:none;
}
#excRosterTbl tbody td.namecell .roster-customer-link:focus,
.book-roster-table tbody td.namecell .roster-customer-link:focus{
  outline:2px solid rgba(23,103,167,.55);
  outline-offset:2px;
  border-radius:4px;
}
.book-roster-table tbody td.namecell .book-roster-name-link{
  display:inline-flex;
  align-items:center;
  max-width:100%;
}
.book-roster-table tbody td.namecell .book-roster-name-link:hover{
  text-decoration:none;
  filter:brightness(0.92);
}
.book-roster-name-menu{
  position:absolute;
  z-index:100000;
  min-width:190px;
  display:none;
  flex-direction:column;
  border:1px solid rgba(23,103,167,0.35);
  border-radius:8px;
  background:#ffffff;
  box-shadow:0 8px 20px rgba(15,23,42,0.24);
  overflow:hidden;
}
.book-roster-name-menu.is-open{
  display:flex;
}
.book-roster-name-menu.is-open.is-smart-columns{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  width:min(360px, calc(100vw - 16px));
}
.book-roster-name-menu.is-smart-columns::after{
  content:"";
  position:absolute;
  top:0;
  bottom:0;
  left:50%;
  width:1px;
  background:rgba(15,23,42,0.10);
  pointer-events:none;
}
.book-roster-name-menu-item{
  appearance:none;
  border:0;
  background:transparent;
  color:#111827;
  text-align:left;
  font-size:12px;
  line-height:1.2;
  padding:8px 10px;
  cursor:pointer;
}
.waiver-roster-menu-status{
  display:flex;
  flex-direction:column;
  gap:2px;
  padding:9px 10px;
  border-bottom:1px solid rgba(15,23,42,0.10);
  background:#f8fafc;
  color:#334155;
}
.waiver-roster-menu.is-signed .waiver-roster-menu-status{
  background:rgba(22,163,74,0.08);
  color:#166534;
}
.waiver-roster-menu-status-label{
  font-size:12px;
  line-height:1.2;
}
.waiver-roster-menu-status-detail{
  max-width:260px;
  color:#475569;
  font-size:11px;
  line-height:1.3;
}
.book-roster-name-menu-item + .book-roster-name-menu-item{
  border-top:1px solid rgba(15,23,42,0.08);
}
.book-roster-name-menu.is-smart-columns .book-roster-name-menu-item,
.book-roster-name-menu.is-smart-columns .book-roster-name-menu-item + .book-roster-name-menu-item{
  min-width:0;
  border-top:0;
  box-shadow:inset 0 -1px rgba(15,23,42,0.08);
}
.book-roster-name-menu-item:hover,
.book-roster-name-menu-item:focus{
  background:rgba(23,103,167,0.10);
  outline:none;
}
.book-roster-name-menu-item.is-disabled,
.book-roster-name-menu-item:disabled{
  opacity:0.5;
  cursor:not-allowed;
  pointer-events:none;
}
body.theme-dark .book-roster-name-menu{
  background:#0f172a;
  border-color:rgba(148,163,184,0.45);
  box-shadow:0 8px 20px rgba(0,0,0,0.5);
}
body.theme-dark .book-roster-name-menu-item{
  color:#e5e7eb;
}
body.theme-dark .waiver-roster-menu-status{
  border-bottom-color:rgba(148,163,184,0.22);
  background:rgba(148,163,184,0.08);
  color:#e2e8f0;
}
body.theme-dark .waiver-roster-menu.is-signed .waiver-roster-menu-status{
  background:rgba(34,197,94,0.12);
  color:#bbf7d0;
}
body.theme-dark .waiver-roster-menu-status-detail{
  color:#cbd5e1;
}
body.theme-dark .book-roster-name-menu-item + .book-roster-name-menu-item{
  border-top-color:rgba(148,163,184,0.22);
}
body.theme-dark .book-roster-name-menu.is-smart-columns::after{
  background:rgba(148,163,184,0.25);
}
body.theme-dark .book-roster-name-menu.is-smart-columns .book-roster-name-menu-item,
body.theme-dark .book-roster-name-menu.is-smart-columns .book-roster-name-menu-item + .book-roster-name-menu-item{
  box-shadow:inset 0 -1px rgba(148,163,184,0.22);
}
body.theme-dark .book-roster-name-menu-item:hover,
body.theme-dark .book-roster-name-menu-item:focus{
  background:rgba(148,163,184,0.16);
}

/* Shared participant actions, in one or two columns as space permits. */
.book-roster-name-menu.roster-actions-menu {
  box-sizing:border-box;
  width:min(250px, calc(100vw - 16px));
  min-width:0;
  padding:6px;
  gap:2px 6px;
  border-radius:14px;
  border-color:color-mix(in srgb, var(--focus-color,#1767a7) 25%, #dbe3ec);
  box-shadow:0 14px 40px rgba(15,23,42,.24), 0 2px 6px rgba(15,23,42,.10);
}
.book-roster-name-menu.roster-actions-menu.is-smart-columns {
  width:min(480px, calc(100vw - 16px));
}
.book-roster-name-menu.roster-actions-menu.is-smart-columns::after { display:none; }
.roster-menu-heading {
  grid-column:1 / -1;
  display:flex;
  align-items:center;
  gap:9px;
  min-width:0;
  padding:9px 10px 11px;
  margin-bottom:3px;
  border-bottom:1px solid #e2e8f0;
  color:var(--focus-color,#1767a7);
  font-size:13px;
  font-weight:700;
}
.roster-menu-heading > i { font-size:19px; }
.roster-menu-name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.roster-actions-menu .book-roster-name-menu-item {
  display:flex;
  align-items:center;
  gap:9px;
  flex-shrink:0;
  min-width:0;
  min-height:36px;
  padding:4px 8px;
  border:0 !important;
  border-radius:8px;
  box-shadow:none !important;
  font-size:12px;
  line-height:1.3;
  transition:background-color .12s ease;
}
.roster-actions-menu .book-roster-name-menu-item[hidden] { display:none !important; }
.roster-action-icon {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex:0 0 27px;
  height:27px;
  border-radius:8px;
  color:var(--focus-color,#1767a7);
  background:color-mix(in srgb, var(--focus-color,#1767a7) 10%, transparent);
  font-size:13px;
}
.roster-action-label { overflow-wrap:anywhere; }
.roster-actions-menu [data-action="payment"] .roster-action-icon { color:#15803d; background:#dcfce7; }
.roster-actions-menu [data-action="note"] .roster-action-icon { color:#a16207; background:#fef3c7; }
.roster-actions-menu [data-action="drop"] { color:#b91c1c; }
.roster-actions-menu [data-action="drop"] .roster-action-icon { color:#b91c1c; background:#fee2e2; }
.roster-actions-menu .book-roster-name-menu-item:hover,
.roster-actions-menu .book-roster-name-menu-item:focus-visible {
  background:color-mix(in srgb, var(--focus-color,#1767a7) 10%, transparent);
}
.roster-actions-menu .book-roster-name-menu-item:focus-visible { outline:2px solid var(--focus-color,#1767a7); outline-offset:-2px; }
.roster-actions-menu [data-action="drop"]:hover { background:#fef2f2; }
body.theme-dark .roster-menu-heading { color:#e2e8f0; border-color:#334155; }
body.theme-dark .roster-action-icon { color:#bfdbfe; background:#1e3550; }
body.theme-dark .roster-actions-menu [data-action="payment"] .roster-action-icon { color:#86efac; background:#14532d; }
body.theme-dark .roster-actions-menu [data-action="note"] .roster-action-icon { color:#fde68a; background:#713f12; }
body.theme-dark .roster-actions-menu [data-action="drop"] { color:#fca5a5; }
body.theme-dark .roster-actions-menu [data-action="drop"] .roster-action-icon { color:#fca5a5; background:#7f1d1d; }
body.theme-dark .roster-actions-menu [data-action="drop"]:hover { background:#451a1a; }

/* Guest rows when the group leader is diving */
#excRosterTbl tbody tr.r-group.group-guest.leader-diving td.namecell::before,
.book-roster-table tbody tr.r-group.group-guest.leader-diving td.namecell::before{
  background:#90CAF9;
}

/* solo flag */
#excRosterTbl tbody tr:is(.r-solo, .buddy-pair-start, .buddy-pair-end) .solo-pill,
.book-roster-table tbody tr:is(.r-solo, .buddy-pair-start, .buddy-pair-end) .solo-pill{
  position:absolute; left:2px; top:50%; transform:translateY(-50%);
  width:var(--solo-pill-w); height:min(var(--solo-pill-h), calc(100% - 6px));
  border-radius:8px; background:var(--connection-bg, #E3F2FD); border:1px solid var(--connection-border, #90CAF9); color:var(--connection-color, #1565C0);
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 2px 6px rgba(0,0,0,.1); user-select:none;
}
#excRosterTbl tbody tr:is(.r-solo, .buddy-pair-start, .buddy-pair-end) .solo-pill .solo-txt,
.book-roster-table tbody tr:is(.r-solo, .buddy-pair-start, .buddy-pair-end) .solo-pill .solo-txt{
  font-size:9px; font-weight:700; letter-spacing:.2px; line-height:1; white-space:nowrap; transform:rotate(-90deg);
}
.solo-pill.is-buddy, .solo-pill.is-guided { --solo-pill-h:50px; }
/* One clickable pill spans both buddy rows, including unequal row heights. */
:is(#excRosterTbl, .book-roster-table) tr:is(.buddy-pair-start, .buddy-pair-end) td.namecell { height:44px; }
:is(#excRosterTbl, .book-roster-table) tbody tr.buddy-pair-start .solo-pill.roster-buddies-pill {
  top:3px; transform:none; height:var(--buddy-pair-height, calc(200% - 6px));
  padding:0; border-radius:10px; z-index:2; cursor:pointer;
}
.roster-buddies-pill:focus-visible { outline:2px solid #1767a7; outline-offset:2px; }
:is(#excRosterTbl, .book-roster-table) tr.r-group:is(.buddy-pair-start, .buddy-pair-end) td.namecell { padding-left:30px; }
:is(#excRosterTbl, .book-roster-table) tr.r-group:is(.buddy-pair-start, .buddy-pair-end) td.namecell::before { left:22px; width:3px; }
body.theme-dark .solo-pill.is-buddy { --connection-bg:#172b49; --connection-border:#426397; --connection-color:#bfdbfe; }

.solo-pill.is-guided, .roster-guide-connection.is-guided { --connection-bg:#ecfdf3; --connection-border:#86cfa5; --connection-color:#166534; }
.roster-guide-connection { display:flex; align-items:center; gap:6px; width:fit-content; max-width:100%; margin-top:4px; padding:2px 7px; border:1px solid var(--connection-border, #93baff); border-radius:7px; background:var(--connection-bg, #eff6ff); color:var(--connection-color, #1d4ed8); font-size:11px; line-height:1.4; }
.roster-guide-connection i { flex:0 0 auto; }
.roster-guide-connection > span { min-width:0; overflow-wrap:anywhere; }
body.theme-dark .roster-guide-connection { --connection-bg:#172b49; --connection-border:#426397; --connection-color:#bfdbfe; }
body.theme-dark .roster-guide-connection.is-guided, body.theme-dark .solo-pill.is-guided { --connection-bg:#143629; --connection-border:#378661; --connection-color:#bbf7d0; }

#excRosterTbl tbody tr.r-group.leader td.namecell .nm,
.book-roster-table tbody tr.r-group.leader td.namecell .nm{ font-weight:700; }

#excRosterTbl td:nth-child(3),
#excRosterTbl td:nth-child(4),
#excRosterTbl td:nth-child(5),
#excRosterTbl td:nth-child(6),
#excRosterTbl td:nth-child(7),
.book-roster-table td:nth-child(3),
.book-roster-table td:nth-child(4),
.book-roster-table td:nth-child(5),
.book-roster-table td:nth-child(6),
.book-roster-table td:nth-child(7){ text-align:center; }

/* contact lines */
#excRosterTbl tbody td.namecell .nm,
.book-roster-table tbody td.namecell .nm{ display:block; margin-bottom:2px; }
#excRosterTbl tbody td.namecell .nm-row,
.book-roster-table tbody td.namecell .nm-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  margin-bottom:2px;
}
#excRosterTbl tbody td.namecell .nm-row .nm,
.book-roster-table tbody td.namecell .nm-row .nm{
  margin-bottom:0;
  flex:1 1 auto;
  min-width:0;
}
.scuba-cal-shell.scuba-cal-shell-range-7 #calGrid.book-grid.days-7 .book-roster-table tbody td.namecell .nm-row .nm{
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
#excRosterTbl tbody td.namecell .nm-row .name-balance,
.book-roster-table tbody td.namecell .nm-row .name-balance{
  flex:0 0 auto;
  white-space:nowrap;
  font-size:10px;
  padding:1px 6px;
}
.balance-slot-spacer{
  display:inline-block;
  min-width:56px;
  padding:1px 6px;
  visibility:hidden;
  pointer-events:none;
}
.book-roster-table tbody td.namecell .nm-row .waiver-status-link{
  width:24px;
  min-width:24px;
  max-width:24px;
  flex:0 0 24px;
  box-sizing:border-box;
  padding-left:0;
  padding-right:0;
}
.book-roster-table tbody td.namecell .nm-row > .name-balance:not(.waiver-status-link){
  width:68px;
  min-width:68px;
  max-width:68px;
  flex:0 0 68px;
  box-sizing:border-box;
  display:inline-flex;
  align-items:center;
  justify-content:flex-end;
  overflow:hidden;
  text-align:right;
  padding-left:4px;
  padding-right:4px;
}
.book-roster-table tbody td.namecell .nm-row > .balance-slot-spacer{
  width:68px;
  min-width:68px;
  max-width:68px;
  flex-basis:68px;
  padding-left:4px;
  padding-right:4px;
}
#excRosterTbl tbody td.namecell .nm-row .waiver-status-link,
.book-roster-table tbody td.namecell .nm-row .waiver-status-link{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:18px;
  padding:1px 7px;
  border:0;
  cursor:pointer;
  line-height:1.2;
  font-size:10px;
  font-weight:700;
}
.waiver-status-pill-text{
  display:inline-block;
  font-size:10px;
  font-weight:700;
  line-height:1;
}
.waiver-status-link.waiver-status-green{
  background:#16a34a;
  color:#fff;
}
.waiver-status-link.waiver-status-red{
  background:#dc2626;
  color:#fff;
}
.waiver-status-link.waiver-status-slate{
  background:#64748b;
  color:#fff;
}
.waiver-status-link:hover{
  filter:brightness(.96);
}
.waiver-status-link:focus{
  outline:2px solid color-mix(in srgb, var(--focus-color, #1767a7) 70%, #ffffff);
  outline-offset:1px;
}
#excRosterTbl tbody td.namecell .contact,
.book-roster-table tbody td.namecell .contact{
  display:flex; align-items:center; gap:6px;
  font-size:11px; color:#555; line-height:1.2;
  margin-top:2px; word-break:break-word;
}
#excRosterTbl tbody td.namecell .contact,
.book-roster-table tbody td.namecell .contact{ color:#555; }
body.theme-dark #excRosterTbl tbody td.namecell .contact,
body.theme-dark .book-roster-table tbody td.namecell .contact{ color:#f8fafc; }
body.theme-dark #excRosterTbl tbody td.namecell .contact a,
body.theme-dark .book-roster-table tbody td.namecell .contact a{ color:#f8fafc; }
body.theme-grays #excRosterTbl tbody td.namecell .contact,
body.theme-grays .book-roster-table tbody td.namecell .contact{ color:#1f2937; }
#excRosterTbl tbody td.namecell .contact i,
.book-roster-table tbody td.namecell .contact i{
  font-size:12px; opacity:.75; width:14px; text-align:center; flex:0 0 14px;
}
#excRosterTbl tbody td.namecell .contact a,
.book-roster-table tbody td.namecell .contact a{
  color:inherit; text-decoration:none;
}
#excRosterTbl tbody td.namecell .contact a:hover,
.book-roster-table tbody td.namecell .contact a:hover{ text-decoration:underline; }
#excRosterTbl tbody td.namecell .book-roster-option-list,
.book-roster-table tbody td.namecell .book-roster-option-list{
  margin-top:4px;
  margin-left:18px;
}
#excRosterTbl tbody td.namecell .book-roster-option-item,
.book-roster-table tbody td.namecell .book-roster-option-item{
  font-size:11px;
  line-height:1.3;
  color:#555;
}
body.theme-dark #excRosterTbl tbody td.namecell .book-roster-option-item,
body.theme-dark .book-roster-table tbody td.namecell .book-roster-option-item{
  color:#f8fafc;
}
body.theme-grays #excRosterTbl tbody td.namecell .book-roster-option-item,
body.theme-grays .book-roster-table tbody td.namecell .book-roster-option-item{
  color:#1f2937;
}

/* owe chips */
#excRosterTbl td.owe-cell,
.book-roster-table td.owe-cell { white-space:nowrap; }
.bal-chip{ display:inline-block; padding:2px 8px; }
.bal-ok{ display:inline-block; padding:2px 8px; }
.bal-autopay{
  background:#798EA4 !important;
  color:#fff !important;
}
.owe-pay-link{
  border:0;
  cursor:pointer;
  line-height:1.2;
  font:inherit;
}
.owe-history-link{
  border:0;
  cursor:pointer;
  line-height:1.2;
  font:inherit;
}
.owe-ticket-link{
  border:0;
  cursor:default;
  line-height:1.2;
  font:inherit;
  white-space:nowrap;
}
.owe-pay-link:hover{
  filter:brightness(0.96);
}
.owe-history-link:hover{
  filter:brightness(0.96);
}
.owe-pay-link:focus{
  outline:2px solid color-mix(in srgb, var(--focus-color, #1767a7) 70%, #ffffff);
  outline-offset:1px;
}
.owe-history-link:focus{
  outline:2px solid color-mix(in srgb, var(--focus-color, #1767a7) 70%, #ffffff);
  outline-offset:1px;
}

#owePayModal .owe-pay-participant{
  font-weight:600;
}
#owePayModal .owe-pay-breakdown{
  margin-top:8px;
  padding:8px 10px;
  border-radius:8px;
  border:1px solid color-mix(in srgb, var(--focus-color, #1767a7) 30%, rgba(148,163,184,0.45));
  background:color-mix(in srgb, var(--focus-color, #1767a7) 10%, rgba(255,255,255,0.88));
}
#owePayModal .owe-pay-breakdown-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  font-size:12px;
}
#owePayModal .owe-pay-breakdown-row + .owe-pay-breakdown-row{
  margin-top:4px;
}
#owePayModal .owe-pay-breakdown-row strong{
  font-size:12px;
}
#owePayModal .owe-pay-amount{
  font-weight:700;
}
#owePayModal .owe-pay-autopay-note{
  margin-top:10px;
  padding:10px 12px;
  border-radius:10px;
  border:1px solid color-mix(in srgb, #798EA4 45%, rgba(148,163,184,0.4));
  background:color-mix(in srgb, #798EA4 16%, rgba(255,255,255,0.92));
  color:#334155;
}
#owePayModal .owe-pay-deposit-input{
  max-width:180px;
}
#owePayModal .owe-pay-deposit-help{
  margin-top:4px;
}
#owePayModal .owe-pay-actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
}
#owePayModal .owe-pay-option{
  min-width:120px;
}
#owePayModal .owe-pay-option[disabled]{
  opacity:.5;
  cursor:not-allowed;
}
#owePayModal .owe-pay-footer-cancel{
  margin-top:8px;
}
body.theme-dark #owePayModal .owe-pay-autopay-note{
  color:#e2e8f0;
  border-color:rgba(148,163,184,0.45);
  background:rgba(121,142,164,0.24);
}
#autobillSetupModal .autobill-current-plan{
  margin-top:8px;
  padding:8px 10px;
  border-radius:8px;
  border:1px solid color-mix(in srgb, var(--focus-color, #1767a7) 26%, rgba(148,163,184,0.45));
  background:color-mix(in srgb, var(--focus-color, #1767a7) 8%, rgba(255,255,255,0.88));
}
#autobillSetupModal .autobill-card-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  margin-bottom:4px;
}
#autobillSetupModal .autobill-card-alert{
  font-size:11px;
  font-weight:700;
  letter-spacing:0.02em;
}
#autobillSetupModal .autobill-new-schedule{
  margin-top:10px;
  padding-top:10px;
  border-top:1px solid rgba(148,163,184,0.26);
}
#autobillSetupModal .autobill-dates-input{
  min-height:96px;
  resize:vertical;
}

/* Non-diving leader tint */
#excRosterTbl tbody tr.r-group.group-leader.leader-nd td.namecell::before,
.book-roster-table tbody tr.r-group.group-leader.leader-nd td.namecell::before{
  background: linear-gradient(180deg, #ff9800 0%, #ffd54f 100%);
}
#excRosterTbl tbody tr.r-group.group-leader.leader-nd td.namecell .nm,
.book-roster-table tbody tr.r-group.group-leader.leader-nd td.namecell .nm{ color:#444; }

/* ===== Add Reservation modal (single) ===== */
#newResModal{ padding:12px !important; }
#newResModal .w3-modal-content{
  width:100%; max-width:760px; margin:0 auto;
  max-height:calc(100vh - 24px);
  max-height:calc(100dvh - 24px);
  display:flex; flex-direction:column; overflow:hidden;
}
#newResModal :is(.newres-body,.w3-container.w3-padding){
  flex:1 1 auto; min-height:0; overflow:auto;
}
#newResModal .res-search-wrap > input { flex:1 1 auto; min-width:0; }
#newResModal .res-search-wrap > button { flex:0 0 auto; }
#newResModal :is(.roster-guide-head,footer) { flex:0 0 auto; }
#newResModal .newres-body { padding:18px !important; background:#f8fafc; }
#newResContext:empty { display:none; }
#newResModal .newres-section { padding:16px; border:1px solid #dbe3ec; border-radius:12px; background:#fff; margin-bottom:16px; }
#newResModal .newres-section:last-child { margin-bottom:0; }
#newResModal .newres-section-title { margin-bottom:12px; color:var(--focus-color,#1767a7); font-weight:700; font-size:14px; }
#newResModal .res-results { margin-bottom:0 !important; }
#newResModal :is(input.w3-input,select) { min-height:42px; border-radius:8px; }
#newResModal .res-inline { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:10px; }
#newResModal .res-inline > input { grid-column:span 6; width:100%; max-width:none; min-width:0; }
#newResModal .res-inline > #newAddress { grid-column:span 12; }
#newResModal .res-inline > :is(#newState,#newZip) { grid-column:span 3; }
#newResModal .newres-gender { grid-column:span 12; display:flex; align-items:center; gap:12px; flex-wrap:wrap; padding:10px 12px; border:1px solid #dbe3ec; border-radius:8px; }
#newResModal .newres-gender input { accent-color:var(--focus-color,#1767a7); }
#newResModal .newres-gender label { display:inline-flex; align-items:center; gap:6px; margin:0; }
#newResModal footer.res-actions { margin:0; padding:12px 18px; display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
#newResModal :is(.res-actions-left,.res-actions-right) { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
#newResModal .res-actions-right { margin-left:auto; }
#newResModal #newResSubmit { background:var(--focus-color,#1767a7) !important; color:var(--focus-contrast,#fff) !important; }
body.theme-dark #newResModal .newres-body { background:#0b1220; }
body.theme-dark #newResModal :is(.newres-section,.newres-gender) { background:#172338; border-color:#334155; }
body.theme-dark #newResModal .newres-section-title { color:#93c5fd; }
@media(max-width:600px) {
  #newResModal .newres-body { padding:12px !important; }
  #newResModal .newres-section { padding:12px; }
  #newResModal .res-inline > input { grid-column:span 12; }
  #newResModal .res-inline > :is(#newState,#newZip) { grid-column:span 6; }
}

.res-toolbar{
  display:flex; align-items:center; gap:12px;
  padding: 6px 0 10px 0;
}
.res-toolbar .res-btn{
  background:#fff; border:1px solid #ddd; border-radius:8px;
  padding:4px 8px; display:inline-flex; align-items:center; gap:8px;
}
.res-toolbar img{ width:32px; height:32px; display:block; }
.res-toolbar .res-btn i{
  font-size:22px;
  line-height:1;
  color: var(--focus-color, #1767a7);
}

.w3-tooltip{ position:relative; display:inline-block; }

.res-search-wrap{
  display:flex; gap:8px; align-items:center; margin-bottom:10px;
}
.res-search-btn{
  background: var(--focus-color, #1767a7) !important;
  color: var(--focus-contrast, #fff) !important;
  border: 1px solid color-mix(in srgb, var(--focus-color, #1767a7) 70%, #000) !important;
}
.res-search-btn:hover,
.res-search-btn:active{
  background: color-mix(in srgb, var(--focus-color, #1767a7) 82%, #000) !important;
  color: var(--focus-contrast, #fff) !important;
}
.res-results{
  max-height:220px; overflow:auto;
  border:1px solid #eee; border-radius:8px;
}
.res-results table{ width:100%; }
.res-results tbody tr{ cursor:pointer; }
.res-results tbody tr:nth-child(even){
  background: color-mix(in srgb, var(--focus-color, #1767a7) 16%, #ffffff) !important;
  color: inherit;
}
.res-results tbody tr:nth-child(even) td{ color: inherit; }
.res-results tbody tr:nth-child(even) a{ color: inherit; }
body.theme-dark .res-results tbody tr:nth-child(even){
  background: color-mix(in srgb, var(--focus-color, #1767a7) 24%, #0f172a) !important;
  color: #e5e7eb;
}
body.theme-grays .res-results tbody tr:nth-child(even){
  background: color-mix(in srgb, var(--focus-color, #1767a7) 22%, #f3f4f6) !important;
  color: #111827;
}
.res-results tr.is-selected{
  background: color-mix(in srgb, var(--focus-color, #1767a7) 86%, #0b1220) !important;
  color: var(--focus-contrast, #fff) !important;
}
.res-results tr.is-selected td,
.res-results tr.is-selected a{ color: inherit !important; }

/* Non-diver dot */
.nd-dot{
  display:inline-block; width:10px; height:10px; border-radius:50%;
  background:#ff9800; border:1px solid #c06200;
  vertical-align:middle; margin-right:6px;
}
.nd-dot[data-tip]{ position:relative; z-index:1; }
.nd-dot[data-tip]::after{
  content: attr(data-tip);
  position:absolute; left:10%; bottom:140%;
  white-space:nowrap; background:rgba(0,0,0,.9); color:#fff;
  font-size:11px; padding:4px 6px; border-radius:6px;
  pointer-events:none; opacity:0; transition:opacity .12s ease;
}
.nd-dot[data-tip]::before{
  content:""; position:absolute; left:10%; bottom:120%;
  border:6px solid transparent; border-top-color:rgba(0,0,0,.9);
  opacity:0; transition:opacity .12s ease;
}
.nd-dot[data-tip]:hover::after,
.nd-dot[data-tip]:hover::before{ opacity:1; }

/* ===== Group Leader results table ===== */
.gr-results {
  border:1px solid #ddd; border-radius:6px;
  max-height:220px; overflow-y:auto;
}
.gr-results table {
  margin:0; width:100%; border-collapse:collapse;
}
.gr-results thead th {
  position:sticky; top:0; background:#f9f9f9; z-index:1;
}

/* “Force ~6 rows” technique for leader table */
#grLeaderTbl { width:100%; border-collapse:collapse; }
#grLeaderTbl thead { display:table; width:100%; table-layout:fixed; }
#grLeaderTbl tbody {
  display:block; max-height:168px;
  overflow-y:auto; -webkit-overflow-scrolling:touch;
}
#grLeaderTbl tbody tr { display:table; width:100%; table-layout:fixed; }
#grLeaderTbl td, #grLeaderTbl th {
  padding-top:6px; padding-bottom:6px;
}

/* Generic guest/leader search tables */
.gr-table { width:100%; border-collapse:collapse; }
.gr-table thead { display:table; width:100%; table-layout:fixed; }
.gr-table tbody {
  display:block; max-height:168px;
  overflow-y:auto; -webkit-overflow-scrolling:touch;
}
.gr-table tbody tr { display:table; width:100%; table-layout:fixed; }
.gr-table td, .gr-table th { padding-top:6px; padding-bottom:6px; }
.gr-table tbody tr.is-selected { background:#eaf2ff !important; }
.gr-load-more { text-align:center; cursor:pointer; padding:6px 10px; color:#1767a7; }
.gr-guest-count-select{
  width:50% !important;
  max-width:130px;
  min-width:96px;
}
.typeahead{
  position:relative;
}
.typeahead .ta-menu{
  margin-top:4px;
  border:1px solid #d1d5db;
  border-radius:6px;
  background:#fff;
  max-height:170px;
  overflow-y:auto;
}
.typeahead .ta-item{
  display:grid;
  grid-template-columns:1.4fr 1.6fr 1fr;
  gap:8px;
  padding:6px 8px;
  cursor:pointer;
  font-size:12px;
  font-weight:400;
  border-bottom:1px solid rgba(0,0,0,0.05);
}
.typeahead .ta-item:last-child{
  border-bottom:0;
}
.typeahead .ta-item:hover{
  background:#eef6ff;
}
.typeahead .ta-col{
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.ta-picked-name{
  font-weight:400;
}
.ta-picked-meta{
  color:#6b7280;
}
.gr-picked-pill{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:10px;
  padding:8px 12px;
  border-radius:999px;
  border:1px solid color-mix(in srgb, var(--focus-color, #1767a7) 55%, #d1d5db);
  background:color-mix(in srgb, var(--focus-color, #1767a7) 15%, #fff);
}
.gr-picked-pill-name{
  font-size:15px;
  font-weight:700;
  color:var(--focus-color, #1767a7);
}
.gr-picked-pill-meta{
  font-size:12px;
  color:#374151;
}

/* ===== Group modal sizing / footer pin ===== */
#groupModal{ padding-top:3vh !important; }
#groupModal #grContext:empty { display:none; }
#groupModal .roster-guide-head { flex:0 0 auto; }
#groupModal .gr-modal-body { padding:18px !important; background:#f8fafc; }
#groupModal .gr-section { padding:16px; margin:0 0 16px; border:1px solid #dbe3ec; border-radius:12px; background:#fff; }
#groupModal .gr-section:last-child { margin-bottom:0; }
#groupModal .gr-section-title { margin-bottom:12px; color:var(--focus-color,#1767a7); font-weight:700; font-size:14px; }
#groupModal .gr-leader-options { margin:0 -8px 14px; padding:0; }
#groupModal .gr-leader-options label { display:inline-flex; align-items:center; gap:5px; margin-top:5px; }
#groupModal input[type=radio], #groupModal input[type=checkbox] { accent-color:var(--focus-color,#1767a7); }
#groupModal .gr-customer-type { display:flex; width:fit-content; margin:0 0 12px; border:1px solid #8caec7; border-radius:999px; overflow:hidden; }
#groupModal .gr-customer-type label { position:relative; margin:0; cursor:pointer; }
#groupModal .gr-customer-type input { position:absolute; opacity:0; width:1px; height:1px; }
#groupModal .gr-customer-type span { display:block; padding:3px 14px; background:#f3f8fc; color:#15598b; font-size:13px; line-height:18px; }
#groupModal .gr-customer-type input:checked + span { background:var(--focus-color,#1767a7); color:#fff; }
#groupModal .gr-customer-type input:focus-visible + span { outline:2px solid currentColor; outline-offset:-4px; }
body.theme-dark #groupModal .gr-customer-type span { background:#172338; color:#bfdbfe; }
#groupModal :is(input.w3-input,select) { border-radius:8px; min-height:42px; }
#groupModal .gr-picked-pill { gap:6px 10px; border-radius:20px; }
#groupModal .gr-picked-pill-name, #groupModal .gr-picked-pill-meta { overflow-wrap:anywhere; min-width:0; }
#groupModal .gr-picked-pill-check { color:var(--focus-color,#1767a7); }
#groupModal .gr-picked-pill-guest { background:#e8f7ef; border-color:#76ba96; }
#groupModal .gr-picked-pill-guest :is(.gr-picked-pill-name,.gr-picked-pill-check) { color:#166534; }
#groupModal .gr-picked-pill-guest .gr-picked-pill-meta { color:#285c40; }
#groupModal .roster-guide-actions { padding:12px 18px; justify-content:flex-end; }
body.theme-dark #groupModal .gr-modal-body { background:#0b1220; }
body.theme-dark #groupModal .gr-section { background:#172338; border-color:#334155; }
body.theme-dark #groupModal .gr-section-title { color:#93c5fd; }
body.theme-dark #groupModal .gr-picked-pill { background:#173452; border-color:#5186b0; }
body.theme-dark #groupModal .gr-picked-pill :is(.gr-picked-pill-name,.gr-picked-pill-check) { color:#bfdbfe; }
body.theme-dark #groupModal .gr-picked-pill .gr-picked-pill-meta { color:#dbeafe; }
body.theme-dark #groupModal .gr-picked-pill-guest { background:#143629; border-color:#4b9e72; }
body.theme-dark #groupModal .gr-picked-pill-guest :is(.gr-picked-pill-name,.gr-picked-pill-check) { color:#a7f3c0; }
body.theme-dark #groupModal .gr-picked-pill-guest .gr-picked-pill-meta { color:#d1fae5; }
body.theme-dark #groupModal footer.roster-guide-actions { background:#172338; border-color:#334155; }
@media(max-width:600px) { #groupModal .gr-modal-body { padding:12px !important; } #groupModal .gr-section { padding:12px; } #groupModal .gr-leader-options .w3-half + .w3-half { margin-top:10px; } }
#groupModal .w3-modal-content{
  max-height: calc(97vh - 24px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
#groupModal .w3-container.w3-padding{
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
}
#groupModal footer{
  flex: 0 0 auto;
  background: #fff;
  border-top: 1px solid #eee;
  position: sticky;
  bottom: 0;
  z-index: 4;
}

/* Disabled Apply clarity */
#groupModal .w3-button[disabled]{
  opacity: .55;
  cursor: not-allowed;
  filter: grayscale(0.2);
}
/* Use the store accent for Apply. */
#groupModal #gr_submit.w3-button{
  background-color:var(--focus-color,#1767a7) !important;
  color:#fff !important;
  border:1px solid var(--focus-color,#1767a7);
}
#groupModal #gr_submit.w3-button[disabled]{
  background-color:var(--focus-color,#1767a7) !important;
  color:#fff !important;
  opacity:.55;
  cursor:not-allowed;
  filter:grayscale(.2);
}
#groupModal #gr_submit.w3-button:not([disabled]):hover{
  background-color:color-mix(in srgb,var(--focus-color,#1767a7) 85%,#000) !important;
  color:#fff !important;
}

/* === Copy/Move modal tweaks === */
.cm-apply { opacity:1 !important; visibility:visible !important; }
.cm-apply[disabled] { opacity:0.6 !important; cursor:not-allowed; }

#xferModal .w3-modal-content{
  position:relative;
  max-height:calc(100dvh - 100px);
  display:flex;
  flex-direction:column;
  border-radius:18px;
  overflow:hidden;
  box-shadow:0 20px 65px rgba(15,23,42,.3);
}
#xferModal .xfer-head { display:flex; align-items:center; gap:12px; padding:18px 20px; border-bottom:1px solid #dbe3ec; background:linear-gradient(110deg,#e6eff7,#fff); color:#0f172a; }
#xferModal .xfer-head h5 { flex:1; font-size:20px; font-weight:600; }
#xferModal .xfer-heading { flex:1; min-width:0; }
#xferModal .xfer-source-activity { margin-top:4px; font-size:16px; font-weight:600; line-height:1.5; color:#526780; overflow-wrap:anywhere; }
body.theme-dark #xferModal .xfer-source-activity { color:#bfdbfe; }
#xferModal .xfer-body.w3-padding { padding:18px 20px !important; }
#xferModal footer button { min-width:95px; border-radius:10px; }
body.theme-dark #xferModal .xfer-head { background:#172338; color:#e2e8f0; border-color:#334155; }
#xferModal .xfer-body { overflow:auto; min-height:0; }
#xferModal header, #xferModal footer { flex-shrink:0; }
#xferModal .xfer-target-list { max-height:35vh; overflow:auto; }
#xferModal .xfer-target-list thead { position:sticky; top:0; background:var(--surface, #fff); z-index:1; }
#xferModal .xfer-date-range { border:0; padding:0; margin:0 0 14px; }
#xferModal .xfer-date-range legend { font-weight:600; margin-bottom:8px; }
#xferModal .xfer-range-toggle { display:flex; flex-wrap:wrap; gap:4px; }
#xferModal .xfer-range-toggle label { position:relative; cursor:pointer; }
#xferModal .xfer-range-toggle input { position:absolute; opacity:0; width:1px; height:1px; }
#xferModal .xfer-range-toggle span { display:block; padding:8px 14px; border:1px solid #93b3cc; border-radius:20px; }
#xferModal .xfer-range-toggle input:checked + span { background:#1767a7; color:#fff; border-color:#1767a7; }
#xferModal .xfer-range-toggle input:focus-visible + span { outline:2px solid #1767a7; outline-offset:2px; }
#xferModal .xfer-date-range:disabled { opacity:.6; }
#xferModal #xferDateWrap:not([hidden]) { display:block; margin-top:10px; max-width:210px; }
#xferModal .xfer-scope { border-top:1px solid #93b3cc; padding-top:12px; }
#xferModal .xfer-scope label { font-weight:600; }
#xferModal [hidden] { display:none !important; }
body.theme-dark #xferModal .xfer-target-list thead { background:#172334; }
@media (max-width:600px) {
  #xferModal .w3-modal-content { max-height:calc(100dvh - 40px); }
  #xferModal .xfer-range-toggle span { padding:8px 10px; }
}
#xferModal .xfer-action-rail{
  position:fixed;
  top:72px;
  right:max(18px, calc((100vw - 760px) / 2 + 12px));
  z-index:100005;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:8px;
  padding:7px;
  border-radius:999px;
  background:rgba(255,255,255,0.94);
  border:1px solid rgba(15,23,42,0.14);
  box-shadow:0 10px 24px rgba(15,23,42,0.24);
}
#xferModal .xfer-rail-btn{
  width:38px;
  height:38px;
  min-width:38px;
  min-height:38px;
  border-radius:999px;
  border:1px solid rgba(15,23,42,0.18);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0;
  cursor:pointer;
  box-shadow:0 1px 3px rgba(15,23,42,0.14);
}
#xferModal .xfer-rail-back{
  background:#fff;
  color:#334155;
}
#xferModal .xfer-rail-apply{
  background:#1767a7;
  color:#fff;
  border-color:#0f4f84;
}
#xferModal .xfer-rail-btn:hover:not([disabled]),
#xferModal .xfer-rail-btn:focus-visible:not([disabled]){
  filter:brightness(1.06);
  outline:2px solid rgba(23,103,167,.35);
  outline-offset:2px;
}
#xferModal .xfer-rail-btn[disabled]{
  opacity:.48 !important;
  cursor:not-allowed;
  filter:grayscale(.2);
}
body.theme-dark #xferModal .xfer-action-rail{
  background:rgba(15,23,42,0.94);
  border-color:rgba(255,255,255,0.18);
  box-shadow:0 12px 28px rgba(0,0,0,0.48);
}
body.theme-dark #xferModal .xfer-rail-back{
  background:#111827;
  color:#e5e7eb;
  border-color:rgba(255,255,255,0.18);
}
@media (max-width: 820px){
  #xferModal .xfer-action-rail{
    top:64px;
    right:12px;
  }
}

#xferModal #xferApply.w3-button {
  background-color:#1767a7 !important;
  color:#fff !important;
  border:1px solid #0f4f84;
}
#xferModal #xferApply.w3-button[disabled]{
  background-color:#1767a7 !important;
  color:#fff !important;
  opacity:.55; cursor:not-allowed; filter:grayscale(.2);
}
#xferModal #xferApply.w3-button:not([disabled]):hover{
  background-color:#12578d !important;
  color:#fff !important;
}

/* Selection highlight for the future excursions list */
#xferListTbl tbody tr.is-selected { background:#dfefff !important; }
#xferListTbl tbody tr:hover { background:#eef6ff; }
#xferListTbl td { cursor:pointer; }

/* Travel page background override */
body.scuba-bg-travel {
  /* relative to /assets/css/scuba.css */
  background: url('../../img/travel_back.jpg') center center / cover no-repeat fixed;
  background-color: #0b3a5a;
}
/* Diver page background override */
body.scuba-bg-diver {
  /* relative to /assets/css/scuba.css */
  background: url('../../img/diver_back.jpg') center center / cover no-repeat fixed;
  background-color: #0b3a5a;
}

/* ===== SCUBA LIST TABLES (Activities / Travel etc.) ===== */

.scuba-table-shell {
  max-width: 1500px;
  margin: 10px auto 24px;
  padding: 0 12px;
}

.scuba-table-card {
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 2px 6px rgba(0,0,0,0.45);
  border: 1px solid rgba(15,23,42,0.6);
}

/* card background per theme */
body.theme-light .scuba-table-card {
  background: #ffffff;
}

body.theme-dark .scuba-table-card {
  /* matches dark pagebar / inventory card */
  background: #111827;
}

body.theme-grays .scuba-table-card {
  background: #f9fafb;
}

.scuba-table-wrap {
  padding-bottom: 6px;
}

/* Theme-aware form inputs inside scuba table cards */
.scuba-table-card .w3-input,
.scuba-table-card .w3-select,
.scuba-table-card .w3-textarea {
  background: #ffffff;
  color: #111827;
  border-color: rgba(148, 163, 184, 0.6);
}
body.theme-dark .scuba-table-card .w3-input,
body.theme-dark .scuba-table-card .w3-select,
body.theme-dark .scuba-table-card .w3-textarea {
  background: #0f172a;
  color: #e5e7eb;
  border-color: rgba(148, 163, 184, 0.45);
}
body.theme-dark .scuba-table-card .w3-input::placeholder,
body.theme-dark .scuba-table-card .w3-textarea::placeholder {
  color: #9ca3af;
}
body.theme-grays .scuba-table-card .w3-input,
body.theme-grays .scuba-table-card .w3-select,
body.theme-grays .scuba-table-card .w3-textarea {
  background: #ffffff;
  color: #111827;
  border-color: rgba(148, 163, 184, 0.6);
}
body.theme-dark .scuba-table-card .w3-text-grey {
  color: #cbd5e1 !important;
}

/* base table look */
.scuba-list-table {
  border-collapse: collapse;
  width: 100%;
}

/* Selection indicator column */
.scuba-list-table th.scuba-indicator,
.scuba-list-table td.scuba-indicator {
  width: 28px;
  text-align: center;
}
.scuba-row-indicator {
  display: inline-block;
  line-height: 1;
  opacity: 0;
  color: var(--focus-color, #1767a7);
  transform: scale(1.2);
  transform-origin: center;
}
body.theme-dark .scuba-row-indicator {
  color: color-mix(in srgb, var(--focus-color, #1767a7) 70%, #ffffff);
}
.scuba-list-table tbody tr.row-selected .scuba-row-indicator {
  opacity: 1;
}

/* header cells */
.scuba-list-table thead th {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 6px 8px;
  white-space: nowrap;
  border-bottom: 1px solid var(--focus-color, #1767a7);
}

body.theme-light .scuba-list-table thead th {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 14%, #ffffff);
  color: #111827;
}

body.theme-dark .scuba-list-table thead th {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 28%, #0f172a);
  color: #e5e7eb;
}

body.theme-grays .scuba-list-table thead th {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 10%, #f1f5f9);
  color: #111827;
}

/* body cells */
.scuba-list-table tbody td {
  padding: 4px 8px;
  font-size: 12px;
  border-bottom: 1px solid color-mix(in srgb, var(--focus-color, #1767a7) 20%, rgba(15,23,42,0.45));
}

/* row striping + hover, tuned for themes */
body.theme-light .scuba-list-table tbody tr:nth-child(odd) {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 4%, #ffffff);
}
body.theme-light .scuba-list-table tbody tr:nth-child(even) {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 10%, #ffffff);
}
body.theme-light .scuba-list-table tbody tr:hover {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 18%, #ffffff);
}

body.theme-dark .scuba-list-table tbody tr:nth-child(odd) {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 12%, #0b1220);
}
body.theme-dark .scuba-list-table tbody tr:nth-child(even) {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 22%, #0b1220);
}
body.theme-dark .scuba-list-table tbody tr:hover {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 30%, #0b1220);
}

body.theme-grays .scuba-list-table tbody tr:nth-child(odd) {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 6%, #f8fafc);
}
body.theme-grays .scuba-list-table tbody tr:nth-child(even) {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 12%, #f1f5f9);
}
body.theme-grays .scuba-list-table tbody tr:hover {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 18%, #e5e7eb);
}

/* clickable destination link */
.scuba-list-table .act-edit-link {
  color: var(--focus-color);
  text-decoration: none;
}
.scuba-list-table .act-edit-link:hover {
  text-decoration: underline;
}

/* "no results" row */
.scuba-list-table tbody tr td.w3-text-grey {
  padding: 10px 8px;
}
/* ===== SCUBA CALENDAR CARD (wider + translucent) ===== */

/* Wider than the toolbar/list shell, more like the original 1900px spread */
.scuba-cal-shell {
  width: 100%;
  max-width: calc(2500px + 24px);
  margin: 10px auto 24px;
  padding: 0 12px;
  box-sizing: border-box;
}
.scuba-cal-shell.scuba-cal-shell-range-7 {
  max-width: calc(2500px + 24px);
}

/* Base card, similar to scuba-table-card but we’ll use translucent backgrounds */
.scuba-cal-card {
  width: 100%;
  max-width: 2500px;
  margin-left: auto;
  margin-right: auto;
  box-sizing: border-box;
  border-radius: 14px;
  overflow: visible;
  box-shadow: 0 2px 6px rgba(0,0,0,0.45);
  border: 1px solid color-mix(in srgb, var(--focus-color, #1767a7) 65%, rgba(15,23,42,0.35));
}

/* Per-theme translucent backgrounds so the page/image theme still shows through */
body.theme-light .scuba-cal-card {
  background: rgba(255, 255, 255, 0.88);
}

body.theme-dark .scuba-cal-card {
  /* dark but still lets the underlying theme/background peek through */
  background: rgba(17, 24, 39, 0.90);
}

body.theme-grays .scuba-cal-card {
  background: rgba(249, 250, 251, 0.90);
}

/* ===== Bookings 3-day grid ===== */
.scuba-range-canvas {
  container-name: scuba-calendar;
  container-type: inline-size;
}
/* POS can have a narrow calendar panel inside a wide browser window. */
@container scuba-calendar (max-width: 1100px) {
  .scuba-range-canvas #calGrid.book-grid.days-3,
  #posScubaEmbedWrap .scuba-range-canvas #calGrid.book-grid.days-3 {
    grid-template-columns: minmax(0, 1fr);
  }
}
@container scuba-calendar (max-width: 760px) {
  .scuba-range-canvas #calGrid.book-grid.days-3.three-day-two-columns .book-day-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}
.book-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 12px;
  margin-top: 12px;
}
/* Wrap staff calendar days before names, status badges, and balances crowd.
   Use the available calendar width, including narrower embedded POS panels. */
.scuba-cal-shell:not(.scuba-cal-shell-range-fixed) #calGrid.book-grid.days-7,
#posScubaEmbedWrap .scuba-cal-shell:not(.scuba-cal-shell-range-fixed) #calGrid.book-grid.days-7 {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
}
.book-viewbar { width: 100%; }
.book-roster-btn {
  background: var(--focus-color, #1767a7) !important;
  border: 1px solid rgba(0,0,0,0.18) !important;
  color: var(--focus-contrast, #fff) !important;
}
body.theme-dark .book-roster-btn {
  background: var(--focus-color, #1767a7) !important;
  border-color: rgba(0,0,0,0.25) !important;
  color: var(--focus-contrast, #fff) !important;
}
body.theme-grays .book-roster-btn {
  background: var(--focus-color, #1767a7) !important;
  border-color: rgba(0,0,0,0.18) !important;
  color: var(--focus-contrast, #fff) !important;
}
.book-roster-btn:hover,
.book-roster-btn:focus,
.book-roster-btn:active {
  background-color: var(--focus-color, #1767a7) !important;
  color: var(--focus-contrast, #fff) !important;
  border-color: rgba(0,0,0,0.18) !important;
  filter: brightness(1.05);
}
.book-col {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.book-day {
  font-weight: 600;
  color: var(--focus-color, #1767a7);
  text-align: center;
}
.book-day-body {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.book-day-divider{
  height:0;
  margin:2px 4px;
  border-top:1px solid rgba(255,255,255,0.18);
}
body.theme-light .book-day-divider,
body.theme-grays .book-day-divider{
  border-top-color:rgba(15,23,42,0.12);
}
.book-day-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  grid-auto-flow: row;
  gap: 8px;
}
#calGrid.book-grid.days-3.three-day-two-columns .book-day-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
@media (max-width: 700px) {
  .book-day-grid,
  #calGrid.book-grid.days-3.three-day-two-columns .book-day-grid {
    grid-template-columns: 1fr;
  }
}
.book-card {
  border-radius: 10px;
  padding: 10px 12px;
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(255,255,255,0.12);
}
.book-pill {
  border-radius: 12px;
  padding: 6px 10px;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: flex-start;
  gap: 2px;
  box-shadow: 0 2px 6px rgba(0,0,0,0.18);
  position: relative;
  padding-right: 34px;
}
.book-pill-row {
  display: flex;
  align-items: center;
  gap: 8px;
  justify-content: space-between;
}
.book-pill-subline{
  margin-top:2px;
  font-size:11px;
  line-height:1.2;
  opacity:0.92;
}
.book-pill-title {
  font-weight: 700;
  font-size: 13px;
  line-height: 1.2;
}
#calGrid.book-grid .book-pill-row.book-pill-row-with-badges,
#posScubaEmbedWrap #calGrid.book-grid .book-pill-row.book-pill-row-with-badges {
  display: flex;
  align-items: center;
  gap: 8px;
  padding-right: 0;
}
.book-pill-badges {
  display: flex;
  align-items: center;
  flex: 0 0 auto;
  gap: 8px;
  margin-left: auto;
}
#calGrid.book-grid .book-pill-row-with-badges .book-pill-badges > *,
#posScubaEmbedWrap #calGrid.book-grid .book-pill-row-with-badges .book-pill-badges > * {
  position: static;
  display: inline-block;
  margin: 0;
  padding: 2px 7px;
  border-radius: 999px;
  border: 1px solid currentColor;
  background: rgba(255,255,255,0.16);
  color: inherit;
  font-size: 11px;
  font-weight: 600;
  line-height: 1.3;
  white-space: nowrap;
  vertical-align: middle;
}
.book-pill-activity-notes {
  margin-top: 3px;
  font-size: 11px;
  font-weight: 400;
  line-height: 1.3;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
.book-pill-activity-notes strong {
  font-weight: 700;
}
.book-pill-edit{
  cursor:pointer;
}
.book-pill-edit:hover{
  text-decoration:underline;
}
.book-pill-cap {
  font-size: 11px;
  font-weight: 700;
  padding: 2px 6px;
  border-radius: 999px;
  background: rgba(255,255,255,0.25);
  color: inherit;
  border: 1px solid rgba(0,0,0,0.12);
}
.book-pill-boat {
  font-size: 11px;
  opacity: 0.9;
}
.book-pill-type-icons{
  display:flex;
  align-items:center;
  gap:10px;
  margin-top:2px;
}
.book-pill-type-icon{
  width:34px;
  height:34px;
  border-radius:999px;
  background:#fff;
  border:1px solid rgba(0,0,0,0.12);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
}
.book-pill-type-icon i{
  font-size:18px;
  line-height:1;
}
.book-pill-roster-toggle {
  position: absolute;
  right: 8px;
  bottom: 6px;
  border: 0;
  border-radius: 999px;
  min-width: 20px;
  min-height: 20px;
  width: 20px;
  height: 20px;
  padding: 0;
  cursor: pointer;
  background: rgba(0,0,0,0.18);
  color: inherit;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}
.book-pill-roster-toggle i {
  font-size: 11px;
  line-height: 1;
  transition: transform 0.15s ease;
}
.book-pill-roster-toggle.is-open i {
  transform: rotate(180deg);
}
body.theme-light .book-card {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 10%, #ffffff);
  border-color: color-mix(in srgb, var(--focus-color, #1767a7) 18%, transparent);
}
body.theme-dark .book-card {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 22%, #0f172a);
  border-color: color-mix(in srgb, var(--focus-color, #1767a7) 30%, transparent);
}
body.theme-grays .book-card {
  background: #f5f7fb;
  border-color: rgba(0,0,0,0.08);
}
.book-card.empty {
  text-align: center;
  color: #9ca3af;
  font-size: 12px;
}

/* Public 3/7-day Show More layout, adapted from the activity column embed. */
#calGrid.public-range-compact,
#calGrid.public-range-outlook {
  --public-range-ink: #172033;
  --public-range-muted: #64748b;
  --public-range-line: #d9e2ec;
  --public-range-surface: rgba(255, 255, 255, 0.94);
  --public-range-soft: rgba(244, 247, 251, 0.92);
}
#calGrid.public-range-compact {
  align-items: start;
}
#calGrid.public-range-compact .range-day {
  min-width: 0;
  overflow: hidden;
  padding: 0 6px 6px;
  border-color: color-mix(in srgb, var(--focus-color, #1767a7) 19%, var(--public-range-line));
  border-radius: 14px;
  background: var(--public-range-surface);
  box-shadow: 0 8px 22px rgba(15, 23, 42, 0.07);
}
#calGrid.public-range-compact .public-range-outlook-day-header {
  margin: 0 -6px 6px;
}
#calGrid.public-range-compact .range-day.today {
  box-shadow: 0 8px 24px color-mix(in srgb, var(--focus-color, #1767a7) 17%, transparent);
}
#calGrid.public-range-outlook {
  align-items: start;
  gap: 14px;
  padding: 14px !important;
}
#calGrid.public-range-outlook.public-range-outlook-days-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
#calGrid.public-range-outlook.public-range-outlook-days-7 {
  grid-template-columns: repeat(7, minmax(0, 1fr));
}
body.theme-dark #calGrid.public-range-compact,
body.theme-dark #calGrid.public-range-outlook {
  --public-range-ink: #eef4ff;
  --public-range-muted: #aebcd0;
  --public-range-line: #3b4a61;
  --public-range-surface: rgba(23, 32, 51, 0.95);
  --public-range-soft: rgba(32, 44, 66, 0.92);
}
.public-range-outlook-day {
  position: relative;
  min-width: 0;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--focus-color, #1767a7) 19%, var(--public-range-line));
  border-radius: 16px;
  background: var(--public-range-surface);
  box-shadow: 0 8px 22px rgba(15, 23, 42, 0.07);
}
.public-range-outlook-day::before {
  position: absolute;
  inset: 0 0 auto;
  height: 4px;
  background: linear-gradient(90deg, var(--focus-color, #1767a7), color-mix(in srgb, var(--focus-color, #1767a7) 35%, transparent));
  content: "";
}
.public-range-outlook-day.is-today {
  box-shadow: 0 8px 24px color-mix(in srgb, var(--focus-color, #1767a7) 17%, transparent);
}
.public-range-outlook-day-header {
  display: flex;
  min-height: 76px;
  align-items: center;
  gap: 11px;
  padding: 12px 13px 11px;
  border-bottom: 1px solid var(--public-range-line);
  background: linear-gradient(120deg, color-mix(in srgb, var(--focus-color, #1767a7) 11%, var(--public-range-surface)), var(--public-range-surface) 78%);
}
.public-range-outlook-date {
  display: flex;
  width: 48px;
  height: 50px;
  flex: 0 0 48px;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--focus-color, #1767a7) 30%, var(--public-range-line));
  border-radius: 12px;
  background: var(--public-range-surface);
  box-shadow: 0 4px 12px color-mix(in srgb, var(--focus-color, #1767a7) 12%, transparent);
}
.public-range-outlook-date span {
  color: var(--focus-color, #1767a7);
  font-size: 8px;
  font-weight: 850;
  letter-spacing: 0.08em;
  line-height: 1;
}
.public-range-outlook-date strong {
  margin-top: 3px;
  color: var(--public-range-ink);
  font-size: 21px;
  line-height: 1;
}
.public-range-outlook-heading {
  min-width: 0;
}
.public-range-outlook-heading h2 {
  margin: 0;
  overflow: hidden;
  color: var(--public-range-ink);
  font-size: 17px;
  line-height: 1.15;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.public-range-outlook-heading span {
  display: block;
  margin-top: 4px;
  overflow: hidden;
  color: var(--public-range-muted);
  font-size: 10.5px;
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.public-range-outlook-events {
  display: grid;
  gap: 10px;
  padding: 11px;
}
.public-range-outlook-activity.pill {
  position: relative;
  display: block;
  min-width: 0;
  overflow: hidden;
  padding: 12px 12px 0 15px;
  border: 1px solid var(--public-range-line);
  border-radius: 13px;
  background: linear-gradient(145deg, color-mix(in srgb, var(--activity-color, var(--focus-color, #1767a7)) 5%, var(--public-range-surface)), var(--public-range-surface) 64%);
  color: var(--public-range-ink);
  box-shadow: 0 4px 12px rgba(15, 23, 42, 0.055);
  text-decoration: none;
  transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}
.public-range-outlook-activity.pill:hover,
.public-range-outlook-activity.pill:focus-visible {
  border-color: color-mix(in srgb, var(--activity-color, var(--focus-color, #1767a7)) 54%, var(--public-range-line));
  box-shadow: 0 8px 20px color-mix(in srgb, var(--activity-color, var(--focus-color, #1767a7)) 14%, transparent);
  outline: none;
  transform: translateY(-1px);
}
.public-range-outlook-activity.has-historical-log {
  border-color: #cbd5e1;
  background: linear-gradient(145deg, rgba(226, 232, 240, 0.88), rgba(248, 250, 252, 0.94) 68%);
  color: #64748b;
  box-shadow: 0 3px 9px rgba(71, 85, 105, 0.09);
}
.public-range-outlook-activity.has-historical-log:hover,
.public-range-outlook-activity.has-historical-log:focus-visible {
  border-color: #94a3b8;
  box-shadow: 0 6px 15px rgba(71, 85, 105, 0.14);
}
.public-range-outlook-activity.has-historical-log::before {
  background: #94a3b8;
}
.public-range-outlook-activity.has-historical-log .public-range-outlook-time strong,
.public-range-outlook-activity.has-historical-log h3,
.public-range-outlook-activity.has-historical-log .public-range-outlook-meta strong,
.public-range-outlook-activity.has-historical-log .public-range-outlook-duration {
  color: #64748b;
}
.public-range-outlook-activity.has-historical-log .public-range-outlook-kind {
  background: #e2e8f0;
  color: #64748b;
}
body.theme-dark .public-range-outlook-activity.has-historical-log {
  border-color: #475569;
  background: linear-gradient(145deg, rgba(51, 65, 85, 0.94), rgba(30, 41, 59, 0.96) 68%);
  color: #94a3b8;
}
body.theme-dark .public-range-outlook-activity.has-historical-log .public-range-outlook-time strong,
body.theme-dark .public-range-outlook-activity.has-historical-log h3,
body.theme-dark .public-range-outlook-activity.has-historical-log .public-range-outlook-meta strong,
body.theme-dark .public-range-outlook-activity.has-historical-log .public-range-outlook-duration {
  color: #cbd5e1;
}
body.theme-dark .public-range-outlook-activity.has-historical-log .public-range-outlook-kind {
  background: #475569;
  color: #e2e8f0;
}
.public-range-outlook-activity::before {
  position: absolute;
  inset: 8px auto 8px 0;
  width: 4px;
  border-radius: 0 999px 999px 0;
  background: var(--activity-color, var(--focus-color, #1767a7));
  content: "";
}
.public-range-outlook-activity-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}
.public-range-outlook-time span,
.public-range-outlook-meta span,
.public-range-outlook-footer span {
  display: block;
  color: var(--public-range-muted);
  font-size: 9px;
  font-weight: 650;
  letter-spacing: 0.045em;
  line-height: 1.15;
  text-transform: uppercase;
}
.public-range-outlook-time strong {
  display: block;
  margin-top: 2px;
  color: var(--focus-color, #1767a7);
  font-size: 14px;
  line-height: 1.15;
}
.public-range-outlook-kind {
  flex: 0 0 auto;
  padding: 4px 8px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--activity-color, var(--focus-color, #1767a7)) 13%, var(--public-range-soft));
  color: color-mix(in srgb, var(--activity-color, var(--focus-color, #1767a7)) 82%, var(--public-range-ink));
  font-size: 8.5px;
  font-weight: 800;
  letter-spacing: 0.04em;
  line-height: 1;
  text-transform: uppercase;
}
.public-range-outlook-activity h3 {
  margin: 10px 0 0;
  color: var(--public-range-ink);
  font-size: 15px;
  line-height: 1.25;
}
.public-range-outlook-duration {
  margin-top: 3px;
  color: var(--public-range-muted);
  font-size: 10.5px;
  line-height: 1.2;
}
.public-range-outlook-meta {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-top: 11px;
}
.public-range-outlook-meta > div {
  min-width: 0;
  padding: 8px 9px;
  border-radius: 9px;
  background: color-mix(in srgb, var(--focus-color, #1767a7) 6%, var(--public-range-soft));
}
.public-range-outlook-meta > div:only-child {
  grid-column: 1 / -1;
}
.public-range-outlook-meta strong {
  display: block;
  margin-top: 3px;
  overflow: hidden;
  color: var(--public-range-ink);
  font-size: 11.5px;
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.public-range-outlook-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin: 11px -12px 0 -15px;
  padding: 9px 12px 9px 15px;
  border-top: 1px solid var(--public-range-line);
  background: color-mix(in srgb, var(--focus-color, #1767a7) 4%, var(--public-range-soft));
}
.public-range-outlook-footer strong {
  color: var(--focus-color, #1767a7);
  font-size: 14px;
  line-height: 1;
}
.public-range-outlook-log-footer {
  background: rgba(226, 232, 240, 0.72);
}
body.theme-dark .public-range-outlook-log-footer {
  background: rgba(15, 23, 42, 0.45);
}
.public-range-outlook-log-link {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 8px;
  border: 1px solid currentColor;
  border-radius: 999px;
  color: var(--focus-color, #1767a7) !important;
  font-size: 11px !important;
  font-weight: 700;
  line-height: 1 !important;
  text-decoration: underline;
}

/* Detailed public range cards use the same legend colors as compact mode. */
.public-range-outlook-activity.pill,
.public-range-outlook-activity.has-historical-log,
body.theme-dark .public-range-outlook-activity.has-historical-log {
  border-color: color-mix(in srgb, var(--activity-text, #fff) 30%, var(--activity-color, var(--focus-color, #1767a7)));
  background: var(--activity-color, var(--focus-color, #1767a7));
  color: var(--activity-text, #fff);
  box-shadow: 0 5px 14px color-mix(in srgb, var(--activity-color, var(--focus-color, #1767a7)) 26%, transparent);
}
.public-range-outlook-activity.pill:hover,
.public-range-outlook-activity.pill:focus-visible,
.public-range-outlook-activity.has-historical-log:hover,
.public-range-outlook-activity.has-historical-log:focus-visible {
  border-color: color-mix(in srgb, var(--activity-text, #fff) 58%, var(--activity-color, var(--focus-color, #1767a7)));
  box-shadow: 0 8px 20px color-mix(in srgb, var(--activity-color, var(--focus-color, #1767a7)) 38%, transparent);
}
.public-range-outlook-activity::before,
.public-range-outlook-activity.has-historical-log::before {
  background: color-mix(in srgb, var(--activity-text, #fff) 72%, transparent);
}
.public-range-outlook-activity .public-range-outlook-time span,
.public-range-outlook-activity .public-range-outlook-meta span,
.public-range-outlook-activity .public-range-outlook-footer span {
  color: var(--activity-text, #fff);
  opacity: 0.76;
}
.public-range-outlook-activity .public-range-outlook-time strong,
.public-range-outlook-activity h3,
.public-range-outlook-activity .public-range-outlook-duration,
.public-range-outlook-activity .public-range-outlook-meta strong,
.public-range-outlook-activity .public-range-outlook-footer strong,
.public-range-outlook-activity.has-historical-log .public-range-outlook-time strong,
.public-range-outlook-activity.has-historical-log h3,
.public-range-outlook-activity.has-historical-log .public-range-outlook-meta strong,
.public-range-outlook-activity.has-historical-log .public-range-outlook-duration,
body.theme-dark .public-range-outlook-activity.has-historical-log .public-range-outlook-time strong,
body.theme-dark .public-range-outlook-activity.has-historical-log h3,
body.theme-dark .public-range-outlook-activity.has-historical-log .public-range-outlook-meta strong,
body.theme-dark .public-range-outlook-activity.has-historical-log .public-range-outlook-duration {
  color: var(--activity-text, #fff);
}
.public-range-outlook-activity .public-range-outlook-duration {
  opacity: 0.82;
}
.public-range-outlook-activity .public-range-outlook-kind,
.public-range-outlook-activity.has-historical-log .public-range-outlook-kind,
body.theme-dark .public-range-outlook-activity.has-historical-log .public-range-outlook-kind {
  background: color-mix(in srgb, var(--activity-text, #fff) 16%, transparent);
  color: var(--activity-text, #fff);
}
.public-range-outlook-activity .public-range-outlook-meta > div {
  background: color-mix(in srgb, var(--activity-text, #fff) 12%, transparent);
}
.public-range-outlook-activity .public-range-outlook-footer,
.public-range-outlook-activity .public-range-outlook-log-footer,
body.theme-dark .public-range-outlook-activity .public-range-outlook-log-footer {
  border-top-color: color-mix(in srgb, var(--activity-text, #fff) 22%, transparent);
  background: color-mix(in srgb, var(--activity-text, #fff) 10%, transparent);
}
.public-range-outlook-activity .public-range-outlook-log-link {
  color: var(--activity-text, #fff) !important;
}
.public-range-outlook-divider {
  height: 0;
  margin: 1px 3px;
  border-top: 1px solid var(--public-range-line);
}
.public-range-outlook-empty {
  display: flex;
  min-height: 155px;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 20px;
  border: 1px dashed var(--public-range-line);
  border-radius: 13px;
  background: var(--public-range-soft);
  color: var(--public-range-muted);
  text-align: center;
}
.public-range-outlook-empty > span {
  color: color-mix(in srgb, var(--focus-color, #1767a7) 68%, var(--public-range-muted));
  font-size: 26px;
  line-height: 1;
}
.public-range-outlook-empty strong {
  margin-top: 8px;
  color: var(--public-range-ink);
  font-size: 12px;
}
.public-range-outlook-empty small {
  margin-top: 4px;
  font-size: 10px;
  line-height: 1.35;
}
@media (max-width: 1650px) {
  #calGrid.public-range-outlook.public-range-outlook-days-7 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
@media (max-width: 1100px) {
  #calGrid.public-range-outlook.public-range-outlook-days-7,
  #calGrid.public-range-outlook.public-range-outlook-days-3 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 620px) {
  .cal-range-detail-separator {
    flex-basis: 100%;
    width: 34px;
    height: 1px;
    border-top: 1px solid color-mix(in srgb, var(--focus-color, #1767a7) 35%, transparent);
    border-left: 0;
  }
  #calGrid.public-range-outlook.public-range-outlook-days-7,
  #calGrid.public-range-outlook.public-range-outlook-days-3 {
    grid-template-columns: 1fr;
  }
  #calGrid.public-range-outlook {
    gap: 10px;
    padding: 9px !important;
  }
  .public-range-outlook-day-header {
    min-height: 66px;
    padding: 9px 11px;
  }
  .public-range-outlook-date {
    width: 44px;
    height: 46px;
    flex-basis: 44px;
  }
  .public-range-outlook-date strong {
    font-size: 19px;
  }
}
.book-meta { font-size: 12px; color: #9ca3af; margin-bottom: 6px; margin-top: 6px; text-align: center; }
.book-roster summary {
  cursor: pointer;
  font-weight: 600;
}
.book-roster-summary {
  display: none;
  list-style: none;
}
.book-roster-summary::-webkit-details-marker {
  display: none;
}
.book-roster .roster-body {
  padding-top: 6px;
  font-size: 12px;
}
.book-nav i {
  --fa-primary-color: var(--focus-color, #1767a7);
  --fa-secondary-color: var(--focus-color, #1767a7);
}
.pagebar-tooltip.actionbar-tip {
  background: var(--focus-color, #1767a7) !important;
  color: var(--focus-contrast, #fff) !important;
}

.scuba-quick-search {
  position: relative;
  /* Keep search results above the calendar, but below W3 roster/modal layers. */
  z-index: 2;
  display: flex;
  justify-content: center;
  margin: 8px 14px 12px;
}
.scuba-quick-search-field {
  position: relative;
  width: min(760px, 100%);
}
.scuba-quick-search-input {
  width: 100%;
  height: 42px;
  box-sizing: border-box;
  padding: 0 44px 0 40px;
  border: 1px solid color-mix(in srgb, var(--focus-color, #1767a7) 42%, #cbd5e1);
  border-radius: 7px;
  outline: none;
  background: color-mix(in srgb, var(--theme-shade-panel, #ffffff) 94%, transparent);
  color: var(--theme-text, #172033);
  box-shadow: 0 2px 8px rgba(15, 23, 42, 0.08);
  font-size: 14px;
}
.scuba-quick-search-input::-webkit-search-cancel-button {
  display: none;
}
.scuba-quick-search-input:focus {
  border-color: var(--focus-color, #1767a7);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--focus-color, #1767a7) 16%, transparent);
}
.scuba-quick-search-input::placeholder {
  color: #64748b;
  opacity: 1;
}
.scuba-quick-search-icon {
  position: absolute;
  top: 50%;
  left: 14px;
  z-index: 2;
  color: var(--focus-color, #1767a7);
  transform: translateY(-50%);
  pointer-events: none;
}
.scuba-quick-search-loading,
.scuba-quick-search-clear {
  position: absolute;
  top: 50%;
  right: 8px;
  z-index: 3;
  transform: translateY(-50%);
}
.scuba-quick-search-loading {
  right: 15px;
  color: var(--focus-color, #1767a7);
}
.scuba-quick-search-loading[hidden],
.scuba-quick-search-clear[hidden] {
  display: none !important;
}
.scuba-quick-search-clear {
  width: 32px;
  height: 32px;
  padding: 0;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: #64748b;
  cursor: pointer;
}
.scuba-quick-search-clear:hover,
.scuba-quick-search-clear:focus-visible {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 10%, transparent);
  color: var(--focus-color, #1767a7);
  outline: none;
}
.scuba-quick-search-results {
  position: absolute;
  top: calc(100% + 5px);
  right: 0;
  left: 0;
  z-index: 80;
  max-height: min(440px, 58vh);
  overflow-y: auto;
  border: 1px solid color-mix(in srgb, var(--focus-color, #1767a7) 30%, #cbd5e1);
  border-radius: 7px;
  background: #ffffff;
  box-shadow: 0 16px 34px rgba(15, 23, 42, 0.24);
}
.scuba-quick-search-results[hidden] {
  display: none !important;
}
.scuba-quick-search-result {
  display: grid;
  grid-template-columns: 108px minmax(0, 1fr) 38px;
  align-items: stretch;
  border-bottom: 1px solid rgba(100, 116, 139, 0.18);
}
.scuba-quick-search-result:last-child {
  border-bottom: 0;
}
.scuba-quick-result-main {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  min-width: 0;
  padding: 10px 12px;
  border: 0;
  background: transparent;
  color: #172033;
  cursor: pointer;
  text-align: left;
}
.scuba-quick-result-main:hover,
.scuba-quick-result-main:focus-visible,
.scuba-quick-result-action:hover,
.scuba-quick-result-action:focus-visible {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 9%, #ffffff);
  outline: none;
}
.scuba-quick-result-type {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 58px;
  min-height: 24px;
  padding: 3px 7px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
}
.scuba-quick-result-type.is-activity {
  background: #dcfce7;
  color: #166534;
}
.scuba-quick-result-type.is-trip {
  background: #e0f2fe;
  color: #075985;
}
.scuba-quick-result-type.is-class {
  background: #fef3c7;
  color: #854d0e;
}
.scuba-quick-result-copy {
  min-width: 0;
}
.scuba-quick-result-title {
  display: block;
  overflow: hidden;
  color: inherit;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.scuba-quick-result-meta {
  display: block;
  margin-top: 3px;
  overflow: hidden;
  color: #64748b;
  font-size: 12px;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.scuba-quick-result-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  min-height: 44px;
  padding: 0;
  border: 0;
  border-left: 1px solid rgba(100, 116, 139, 0.18);
  background: transparent;
  color: var(--focus-color, #1767a7);
  cursor: pointer;
  font-size: 16px;
}
.scuba-quick-result-action.is-jump {
  width: auto;
  gap: 6px;
  padding: 0 10px;
  border-right: 1px solid rgba(100, 116, 139, 0.18);
  border-left: 0;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.15;
  text-align: center;
}
.scuba-quick-result-action.is-jump i {
  flex: 0 0 auto;
  font-size: 13px;
}
.scuba-quick-search-status {
  padding: 14px 16px;
  color: #64748b;
  font-size: 13px;
  text-align: center;
}
body.theme-dark .scuba-quick-search-input,
body.theme-dark .scuba-quick-search-results {
  border-color: rgba(255, 255, 255, 0.2);
  background: #111827;
  color: #f8fafc;
}
body.theme-dark .scuba-quick-search-input::placeholder,
body.theme-dark .scuba-quick-result-meta,
body.theme-dark .scuba-quick-search-status {
  color: #aebdce;
}
body.theme-dark .scuba-quick-search-results {
  box-shadow: 0 18px 38px rgba(0, 0, 0, 0.48);
}
body.theme-dark .scuba-quick-search-result {
  border-bottom-color: rgba(255, 255, 255, 0.13);
}
body.theme-dark .scuba-quick-result-main {
  color: #f8fafc;
}
body.theme-dark .scuba-quick-result-main:hover,
body.theme-dark .scuba-quick-result-main:focus-visible,
body.theme-dark .scuba-quick-result-action:hover,
body.theme-dark .scuba-quick-result-action:focus-visible {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 20%, #111827);
}
body.theme-dark .scuba-quick-result-action {
  border-left-color: rgba(255, 255, 255, 0.13);
}
body.theme-dark .scuba-quick-result-action.is-jump {
  border-right-color: rgba(255, 255, 255, 0.13);
  border-left: 0;
}

.scuba-calendar-filter-card {
  margin: 0 14px 12px;
  overflow: visible;
  border: 1px solid color-mix(in srgb, var(--focus-color, #1767a7) 30%, #cbd5e1);
  border-radius: 8px;
  background: color-mix(in srgb, var(--theme-shade-panel, #ffffff) 90%, transparent);
  box-shadow: 0 2px 8px rgba(15, 23, 42, 0.06);
}
.scuba-calendar-filter-toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  min-height: 38px;
  padding: 7px 12px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: var(--theme-text, #1f2937);
  cursor: pointer;
  text-align: left;
}
.scuba-calendar-filter-toggle:hover,
.scuba-calendar-filter-toggle:focus-visible {
  background: color-mix(in srgb, var(--focus-color, #1767a7) 9%, transparent);
  outline: none;
}
.scuba-calendar-filter-title {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: var(--focus-color, #1767a7);
  font-size: 13px;
  font-weight: 700;
}
.scuba-calendar-filter-arrow {
  color: var(--focus-color, #1767a7);
  font-size: 13px;
  transition: transform 0.18s ease;
}
.scuba-calendar-filter-card.is-open .scuba-calendar-filter-arrow {
  transform: rotate(90deg);
}
.scuba-calendar-filter-card.is-open .scuba-calendar-filter-toggle {
  border-radius: 8px 8px 0 0;
}
.scuba-calendar-filter-content {
  padding: 12px 12px 10px;
  border-top: 1px solid color-mix(in srgb, var(--focus-color, #1767a7) 18%, #cbd5e1);
}
.scuba-calendar-filter-content[hidden] {
  display: none !important;
}
.scuba-filter-image-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(145px, 185px));
  justify-content: center;
  gap: 11px;
  margin: 9px 22px 18px;
}
.scuba-filter-image-wrap {
  position: relative;
  min-width: 0;
}
.scuba-filter-image {
  position: relative;
  width: 100%;
  height: 100%;
  min-width: 0;
  padding: 0;
  overflow: hidden;
  border: 1px solid rgba(15, 23, 42, 0.14);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.94);
  color: #0f172a;
  cursor: pointer;
  text-align: left;
  box-shadow: 0 3px 10px rgba(15, 23, 42, 0.12);
  transition: transform 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
}
.scuba-filter-image:hover,
.scuba-filter-image:focus-visible {
  transform: translateY(-2px);
  border-color: var(--focus-color, #1767a7);
  box-shadow: 0 7px 16px rgba(15, 23, 42, 0.17);
  outline: none;
}
.scuba-filter-image.is-active {
  border-color: var(--focus-color, #1767a7);
  box-shadow: 0 0 0 2px var(--focus-color, #1767a7), 0 7px 16px rgba(15, 23, 42, 0.18);
}
.scuba-filter-image-media {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  aspect-ratio: 16 / 8;
  background-color: color-mix(in srgb, var(--focus-color, #1767a7) 10%, #e2e8f0);
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  color: var(--focus-color, #1767a7);
  font-size: 24px;
}
.scuba-filter-image-all .scuba-filter-image-media {
  flex-direction: column;
  gap: 5px;
}
.scuba-filter-image-all-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
}
.scuba-filter-image-name {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 33px;
  padding: 6px 8px;
  background: color-mix(in srgb, var(--focus-color, #1767a7) 92%, #0f172a);
  color: #ffffff;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.2;
  text-align: center;
}
.scuba-filter-image-count {
  position: absolute;
  top: 0;
  left: 50%;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 30px;
  height: 30px;
  padding: 0 7px;
  border: 1px solid rgba(255, 255, 255, 0.38);
  border-radius: 999px;
  background: rgba(15, 23, 42, 0.66);
  color: #ffffff;
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  box-shadow: 0 2px 6px rgba(15, 23, 42, 0.2);
  pointer-events: none;
  transform: translate(-50%, -66.667%);
}
.scuba-calendar-filter-groups {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0;
  flex-wrap: wrap;
  margin: 2px 0 0;
}
.scuba-calendar-filter-group {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  flex-wrap: wrap;
  padding: 7px 14px;
}
.scuba-calendar-filter-group + .scuba-calendar-filter-group {
  border-left: 3px solid color-mix(in srgb, var(--focus-color, #1767a7) 38%, transparent);
}
.scuba-filter-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 32px;
  padding: 5px 11px;
  border: 1px solid color-mix(in srgb, var(--focus-color, #1767a7) 42%, #cbd5e1);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.84);
  color: var(--focus-color, #1767a7);
  cursor: pointer;
  font-size: 12px;
  font-weight: 500;
  white-space: nowrap;
}
.scuba-filter-pill:not(.is-active) {
  color: var(--focus-color, #1767a7) !important;
}
.scuba-filter-pill:hover,
.scuba-filter-pill:focus-visible {
  border-color: var(--focus-color, #1767a7);
  background: color-mix(in srgb, var(--focus-color, #1767a7) 10%, #ffffff);
  outline: none;
}
.scuba-filter-pill.is-active {
  border-color: var(--focus-color, #1767a7);
  background: var(--focus-color, #1767a7);
  color: var(--focus-contrast, #ffffff) !important;
}
.scuba-filter-tank-icons {
  display: inline-flex;
  align-items: center;
  gap: 2px;
}
.scuba-filter-tank-icon {
  position: relative;
  display: inline-block;
  width: 7px;
  height: 16px;
  border: 1.5px solid currentColor;
  border-radius: 3px;
}
.scuba-filter-tank-icon::before {
  content: "";
  position: absolute;
  top: -4px;
  left: 1px;
  width: 3px;
  height: 3px;
  border: 1px solid currentColor;
  border-bottom: 0;
  border-radius: 2px 2px 0 0;
}
body.theme-dark .scuba-calendar-filter-card {
  border-color: rgba(255, 255, 255, 0.18);
  background: rgba(15, 23, 42, 0.58);
}
body.theme-dark .scuba-calendar-filter-toggle {
  color: #e2e8f0;
}
body.theme-dark .scuba-calendar-filter-title,
body.theme-dark .scuba-calendar-filter-arrow {
  color: #ffffff;
}
body.theme-dark .scuba-calendar-filter-content {
  border-top-color: rgba(255, 255, 255, 0.14);
}
body.theme-dark .scuba-filter-image {
  border-color: rgba(255, 255, 255, 0.16);
  background: #111827;
  color: #f8fafc;
}
body.theme-dark .scuba-filter-pill {
  border-color: rgba(255, 255, 255, 0.24);
  background: rgba(15, 23, 42, 0.86);
  color: #e2e8f0;
}
body.theme-dark .scuba-filter-pill:not(.is-active) {
  color: #e2e8f0 !important;
}
body.theme-dark .scuba-filter-pill.is-active {
  border-color: var(--focus-color, #1767a7);
  background: var(--focus-color, #1767a7);
  color: var(--focus-contrast, #ffffff) !important;
}
@media (max-width: 760px) {
  .scuba-quick-search {
    margin-right: 8px;
    margin-left: 8px;
  }
  .scuba-quick-search-result {
    grid-template-columns: 96px minmax(0, 1fr) 42px;
  }
  .scuba-quick-result-main {
    padding-right: 8px;
    padding-left: 8px;
  }
  .scuba-quick-result-type {
    min-width: 50px;
  }
  .scuba-calendar-filter-card {
    margin-right: 8px;
    margin-left: 8px;
  }
  .scuba-filter-image-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin-right: 8px;
    margin-left: 8px;
  }
  .scuba-calendar-filter-groups {
    align-items: stretch;
    flex-direction: column;
  }
  .scuba-calendar-filter-group + .scuba-calendar-filter-group {
    border-top: 3px solid color-mix(in srgb, var(--focus-color, #1767a7) 38%, transparent);
    border-left: 0;
  }
}

.cal-color-legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px 18px;
  margin: 2px 12px 12px;
  padding: 10px 12px 4px;
  border-top: 1px solid color-mix(in srgb, var(--focus-color, #1767a7) 22%, transparent);
  color: var(--theme-text, #334155);
}
.cal-color-legend-control {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  flex: 0 0 auto;
}
.cal-color-legend-control > i {
  color: var(--focus-color, #1767a7);
  font-size: 16px;
}
.cal-color-legend-select {
  min-width: 180px;
  height: 34px;
  padding: 4px 30px 4px 10px;
  border: 1px solid color-mix(in srgb, var(--focus-color, #1767a7) 38%, #cbd5e1);
  border-radius: 5px;
  background: var(--theme-surface, #fff);
  color: var(--theme-text, #1f2937);
  font: inherit;
  font-size: 13px;
}
.cal-color-legend-items {
  display: flex;
  flex: 1 1 420px;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 8px 20px;
  min-height: 28px;
}
.cal-color-legend-item {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 24px;
  font-size: 13px;
  font-weight: 400;
}
.cal-color-legend-empty {
  color: color-mix(in srgb, var(--theme-text, #334155) 62%, transparent);
  font-size: 12px;
}
.cal-color-legend-swatch {
  width: 15px;
  height: 15px;
  flex: 0 0 15px;
  border: 1px solid rgba(15, 23, 42, 0.28);
  border-radius: 50%;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.15);
}
body.theme-dark .cal-color-legend {
  color: #e2e8f0;
  border-top-color: rgba(255, 255, 255, 0.16);
}
body.theme-dark .cal-color-legend-select {
  background: #111827;
  border-color: rgba(255, 255, 255, 0.24);
  color: #f8fafc;
}
body.theme-dark .cal-color-legend-swatch {
  border-color: rgba(255, 255, 255, 0.42);
}
@media (max-width: 720px) {
  .cal-color-legend {
    align-items: stretch;
  }
  .cal-color-legend-control,
  .cal-color-legend-select {
    width: 100%;
  }
  .cal-color-legend-items {
    justify-content: flex-start;
  }
}

:is(#excRosterTbl, .book-roster-table) button.solo-pill.is-buddy { padding:0; cursor:pointer; }
:is(#excRosterTbl, .book-roster-table) button.solo-pill.is-buddy:hover { filter:brightness(.95); }
:is(#excRosterTbl, .book-roster-table) button.solo-pill.is-buddy:focus-visible { outline:2px solid var(--focus-color, #1767a7); outline-offset:2px; }

#rosterGuideModal [hidden] { display:none !important; }

/* Keep the POS legend readable over store background images. */
#posScubaEmbedWrap .cal-color-legend {
  border:1px solid color-mix(in srgb, var(--focus-color, #1767a7) 48%, transparent);
  border-radius:20px;
  padding:8px 12px;
  background:rgba(248,250,252,.88);
  color:#334155;
}
#posScubaEmbedWrap .cal-color-legend-control {
  padding:3px 8px;
  border:0;
  background:transparent;
}
#posScubaEmbedWrap .cal-color-legend-select:focus-visible {
  outline:2px solid var(--focus-color, #1767a7);
  outline-offset:2px;
}
#posScubaEmbedWrap .cal-color-legend-select { border-radius:999px; }
body.theme-dark #posScubaEmbedWrap .cal-color-legend { border-color:rgba(148,163,184,.55); }
body.theme-dark #posScubaEmbedWrap .cal-color-legend { background:rgba(15,23,42,.9); color:#e2e8f0; }

    /* Keep inactive calendar filter pills readable after all shared styles load. */
    body.theme-light .scuba-calendar-filter-group .scuba-filter-pill:not(.is-active),
    body.theme-grays .scuba-calendar-filter-group .scuba-filter-pill:not(.is-active) {
      color: var(--focus-color, #1767a7) !important;
      -webkit-text-fill-color: var(--focus-color, #1767a7) !important;
      opacity: 1 !important;
    }
    body.theme-dark .scuba-calendar-filter-group .scuba-filter-pill:not(.is-active) {
      color: #e2e8f0 !important;
      -webkit-text-fill-color: #e2e8f0 !important;
      opacity: 1 !important;
    }
    .scuba-calendar-filter-group .scuba-filter-pill.is-active {
      color: var(--focus-contrast, #ffffff) !important;
      -webkit-text-fill-color: var(--focus-contrast, #ffffff) !important;
      opacity: 1 !important;
    }

/* Named alternative prices stay visible without crowding the balance/actions row. */
.book-roster-table .roster-price-point {
  display: block;
  width: fit-content;
  max-width: 100%;
  box-sizing: border-box;
  margin: 3px 0;
  padding: 2px 7px;
  border-radius: 8px;
  border: 1px solid color-mix(in srgb, var(--focus-color, #1767a7) 35%, #fff);
  background: color-mix(in srgb, var(--focus-color, #1767a7) 12%, #fff);
  color: color-mix(in srgb, var(--focus-color, #1767a7) 65%, #111827);
  font-size: 11px;
  line-height: 1.3;
  overflow-wrap: anywhere;
}
.book-roster-table .roster-price-point:focus-visible {
  outline: 2px solid var(--focus-color, #1767a7);
  outline-offset: 1px;
}

/* Payment collection outside POS: hover and keyboard help for disabled actions. */
#owePayModal .owe-pay-disabled-hint { position:relative; display:inline-flex; cursor:help; }
#owePayModal .owe-pay-disabled-hint > button:disabled { pointer-events:none; }
#owePayModal .owe-pay-disabled-hint-text {
  position:absolute; bottom:calc(100% + 8px); left:0; z-index:10;
  width:230px; max-width:calc(100vw - 64px); padding:9px 12px;
  border-radius:8px; background:#172b3d; color:#fff;
  font-size:12px; font-weight:400; line-height:1.45; text-align:left;
  box-shadow:0 4px 14px #0003; visibility:hidden; opacity:0; pointer-events:none;
}
#owePayModal .owe-pay-disabled-hint:hover .owe-pay-disabled-hint-text,
#owePayModal .owe-pay-disabled-hint:focus .owe-pay-disabled-hint-text { visibility:visible; opacity:1; }
#owePayModal .owe-pay-disabled-hint:focus-visible { outline:2px solid var(--focus-color,#1767a7); outline-offset:2px; border-radius:4px; }

#autobillCardCaptureModal { z-index:10090; padding:3vh 12px; }
#autobillCardCaptureModal .autobill-card-capture-content { width:100%; max-width:560px; max-height:94vh; overflow:auto; }
#autobillCardCaptureModal header { position:relative; padding:14px 48px 14px 18px; }
#autobillCardCaptureModal header h5 { margin:0; }
#autobillCardCaptureModal .autobill-card-capture-choices { display:flex; flex-wrap:wrap; gap:12px; margin:18px 0; }
#autobillCardCaptureModal .autobill-card-capture-choices button { flex:1 1 180px; }
#autobillCardCaptureModal footer { display:flex; justify-content:flex-end; }
#autobillCardPayapiFrame { display:block; width:100%; height:360px; border:0; background:#fff; margin-bottom:12px; }
#autobillCardCaptureMsg { min-height:22px; margin:16px 0; overflow-wrap:anywhere; }
