/* Letswake planner (v0.9.0) — adapted from the letswake-booking free edition.
   Everything is scoped under .lwb / .lwb-sheet so it never touches Admidio's Bootstrap styles. */
.lwb, .lwb-sheet {
  --ink: #17324a; --ink-2: #2b4a63; --water: #dcebef; --water-2: #c5dde4; --line: #c9d6dc;
  --reed: #5b7280; --buoy: #c8461a; --buoy-soft: #fbe4d9; --taken: #eef2f4;
  --ok: #2e7d4f; --ok-soft: #e3f1e8; --slot-h: 2.75rem;
  color: var(--ink);
}
.lwb a { color: var(--ink); }
.lwb :focus-visible, .lwb-sheet :focus-visible { outline: 3px solid var(--buoy); outline-offset: 2px; }

/* tabs */
.lwb-tabs { display: flex; gap: .25rem; border-bottom: 1px solid var(--line); margin: 0 0 .75rem; }
.lwb-tabs a { text-decoration: none; padding: .5rem .75rem; font-weight: 600; color: var(--reed); }
.lwb-tabs a[aria-current="page"] { color: var(--ink); box-shadow: inset 0 -3px 0 var(--buoy); }

.lwb-flash { margin: 0 0 .75rem; padding: .625rem .875rem; border-left: 4px solid var(--ok); background: var(--ok-soft); border-radius: 0 .375rem .375rem 0; }
.lwb-flash.is-error { border-color: #a12a1c; background: #f8e6e3; }
.lwb-note { padding: .625rem .875rem; background: var(--taken); border-radius: .375rem; margin: .5rem 0; }
.lwb-h { font-size: 1.125rem; font-weight: 700; margin: 1rem 0 .5rem; }

/* week strip */
.lwb-week { display: grid; grid-template-columns: 2rem repeat(7, 1fr) 2rem; gap: .25rem; margin: .25rem 0 .5rem; }
.lwb-week a { text-decoration: none; border-radius: .5rem; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: .375rem 0; }
.lwb-step { font-size: 1.5rem; color: var(--reed) !important; }
.lwb-step:hover, .lwb-day:hover { background: var(--taken); }
.lwb-day .wd { font-size: .75rem; color: var(--reed); }
.lwb-day .dn { font-size: 1.125rem; font-weight: 700; font-variant-numeric: tabular-nums; }
.lwb-day.is-past .dn, .lwb-day.is-closed .dn { color: var(--reed); font-weight: 400; }
.lwb-day.is-today .dn { text-decoration: underline; text-decoration-color: var(--buoy); text-decoration-thickness: 3px; text-underline-offset: 4px; }
.lwb-day[aria-current="date"] { background: var(--ink); }
.lwb-day[aria-current="date"] .wd, .lwb-day[aria-current="date"] .dn { color: #fff; }
.lwb-dots { display: flex; gap: 3px; height: 7px; margin-top: 3px; }
.lwb-dots i, .lwb-legend i { display: inline-block; width: 7px; height: 7px; background: #cfd8dc; }
.lwb-dots i.r, .lwb-legend i.r { border-radius: 50%; }
.lwb-dots i.p, .lwb-legend i.p { border-radius: 1px; }
.lwb-dots i.on, .lwb-legend i.on { background: var(--ok); }
.lwb-day[aria-current="date"] .lwb-dots i:not(.on) { background: #4d6a80; }
.lwb-jump { display: flex; gap: 1rem; align-items: center; flex-wrap: wrap; margin-bottom: .75rem; font-size: .9375rem; }
.lwb-jump input { font: inherit; padding: .25rem .5rem; border: 1px solid var(--line); border-radius: .375rem; background: #fff; color: var(--ink); }
.lwb-legend { margin-left: auto; color: var(--reed); font-size: .8125rem; }

/* column heads + lanes: time | rider | pilot */
.lwb-cols, .lwb-lane { display: grid; grid-template-columns: 3.25rem minmax(0, 1fr) 6.5rem; }
.lwb-cols { font-size: .75rem; color: var(--reed); font-weight: 600; padding-bottom: .25rem; }
.lwb-cols span:nth-child(2) { padding-left: .875rem; }
.lwb-cols span:nth-child(3) { padding-left: .375rem; }
.lwb-lane { grid-template-rows: repeat(var(--rows), var(--slot-h)); margin-bottom: 1.25rem; }
.lwb-time { grid-column: 1; position: relative; font-size: .8125rem; font-weight: 700; font-variant-numeric: tabular-nums; text-align: right; padding-right: .75rem; transform: translateY(-.55em); scroll-margin-top: 6rem; }
.lwb-time.is-half { font-weight: 400; color: var(--reed); }
.lwb-time::after { content: ""; position: absolute; right: 0; top: .55em; width: .625rem; border-top: 2px solid var(--ink); }
.lwb-time.is-half::after { width: .375rem; border-top-color: var(--line); }

/* rider column */
.lwb-take, .lwb-closed, .lwb-booking { grid-column: 2; border-left: 2px solid var(--ink); min-width: 0; }
.lwb-take { display: flex; align-items: center; padding: 0 .875rem; background: var(--water); border: 0; border-left: 2px solid var(--ink); border-top: 1px solid #fff; font: inherit; font-size: .875rem; color: var(--ink-2); font-variant-numeric: tabular-nums; text-align: left; cursor: pointer; }
.lwb-take:hover { background: var(--water-2); color: var(--ink); }
.lwb-take:hover::after { content: var(--lwb-book, "Book"); margin-left: auto; font-weight: 700; color: var(--buoy); }
.lwb-closed { display: block; background: repeating-linear-gradient(135deg, transparent 0 6px, #edf1f3 6px 7px); border-top: 1px solid #fff; }
.lwb-booking { display: flex; align-items: flex-start; justify-content: space-between; gap: .5rem; padding: .3125rem .75rem; line-height: 1.3; background: var(--taken); border-top: 2px solid #fff; overflow: hidden; }
.lwb-booking.is-short { padding-top: .1875rem; padding-bottom: .1875rem; line-height: 1.2; }
.lwb-meta { flex-basis: 100%; min-width: 0; font-size: .75rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--ink-2); }
.lwb-meta .lwb-comment, .lwb-meta .lwb-by { font-size: inherit; }
.lwb-booking > div { display: flex; flex-wrap: wrap; column-gap: .5rem; row-gap: 0; align-items: baseline; min-width: 0; }
.lwb-booking.is-mine { background: var(--buoy-soft); box-shadow: inset 4px 0 0 var(--buoy); }
.lwb-booking.is-past { opacity: .6; }
.lwb-range { font-variant-numeric: tabular-nums; color: var(--reed); font-size: .875rem; }
.lwb-comment, .lwb-by { flex-basis: 100%; font-size: .8125rem; color: var(--ink-2); overflow-wrap: anywhere; }
.lwb-by { color: var(--reed); }
.lwb-nopilot { font-size: .75rem; font-weight: 700; color: var(--buoy); }
.lwb-link { background: none; border: 0; padding: 0 .125rem; font: inherit; font-size: .875rem; font-weight: 600; color: var(--buoy); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }

/* pilot column */
.lwb-pcell { grid-column: 3; display: flex; align-items: center; align-content: center; flex-wrap: wrap; gap: 2px; padding: 0 .375rem; background: #f6f8f9; border: 0; border-left: 1px solid var(--line); border-top: 1px solid #fff; font: inherit; text-align: left; min-width: 0; overflow: hidden; }
.lwb-pcell.has-pilot { background: var(--ok-soft); }
.lwb-pcell.is-past { opacity: .55; }
button.lwb-pcell { cursor: pointer; }
button.lwb-pcell:hover { box-shadow: inset 0 0 0 2px var(--ok); }
.lwb-chip { font-size: .6875rem; font-weight: 700; line-height: 1.45; background: var(--ok); color: #fff; border-radius: 999px; padding: 0 .375rem; white-space: nowrap; }
.lwb-chip.is-me { background: var(--ink); }
.lwb-chip.more { background: transparent; color: var(--ok); padding: 0 .125rem; }
.lwb-add { font-size: .75rem; font-weight: 600; color: var(--reed); }
.lwb-none { color: var(--line); padding-left: .25rem; }

/* my bookings */
.lwb-list { list-style: none; margin: .25rem 0 1rem; padding: 0; border-top: 1px solid var(--line); }
.lwb-list li { display: flex; align-items: center; justify-content: space-between; gap: .75rem; border-bottom: 1px solid var(--line); padding: .5rem 0; }
.lwb-list a { text-decoration: none; flex: 1; min-width: 0; }
.lwb-ldate { font-weight: 700; display: inline-block; min-width: 5.5rem; }
.lwb-ltime { font-variant-numeric: tabular-nums; }

/* sheets */
.lwb-sheet { border: 0; padding: 0; width: min(28rem, 100%); max-width: 100%; border-radius: .875rem; background: #fff; }
.lwb-sheet::backdrop { background: rgba(23, 50, 74, .45); }
.lwb-sheet form { padding: 1.25rem; display: grid; gap: .625rem; }
.lwb-sheet h2 { margin: 0; font-size: 1.25rem; font-weight: 700; }
.lwb-when { margin: -.375rem 0 .25rem; font-weight: 600; color: var(--buoy); font-variant-numeric: tabular-nums; }
.lwb-actions { display: flex; justify-content: flex-end; gap: .5rem; margin-top: .5rem; }
.lwb-plist { list-style: none; margin: 0; padding: 0; }
.lwb-plist li { display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--line); padding: .375rem 0; }
.lwb-plist li.empty { color: var(--reed); }

@media (max-width: 40rem) {
  .lwb-cols, .lwb-lane { grid-template-columns: 3rem minmax(0, 1fr) 5.75rem; }
  .lwb-legend { margin-left: 0; }
  .lwb-booking.is-short .lwb-range { display: none; } /* the time column already shows a single slot's time */
  .lwb-sheet { margin: auto 0 0; width: 100%; border-radius: .875rem .875rem 0 0; padding-bottom: env(safe-area-inset-bottom); }
}
@media (prefers-reduced-motion: no-preference) {
  .lwb-sheet[open] { animation: lwb-in .18s ease-out; }
  @keyframes lwb-in { from { transform: translateY(1.5rem); opacity: 0; } }
}

/* dark mode (data-bs-theme="dark" on <html>) */
[data-bs-theme="dark"] .lwb, [data-bs-theme="dark"] .lwb-sheet {
  --ink: #dbe7ee; --ink-2: #b4c7d3; --water: #17323d; --water-2: #1f4250; --line: #33505c;
  --reed: #9fb3bf; --buoy: #ff7a45; --buoy-soft: #4a2416; --taken: #23303a;
  --ok: #3fa56b; --ok-soft: #173826;
}
[data-bs-theme="dark"] .lwb-flash.is-error { border-color: #e06b5c; background: #3d1d19; }
[data-bs-theme="dark"] .lwb-jump input { background: #1d2a33; }
[data-bs-theme="dark"] .lwb-take, [data-bs-theme="dark"] .lwb-pcell { border-top-color: var(--bs-body-bg); }
[data-bs-theme="dark"] .lwb-closed { background: repeating-linear-gradient(135deg, transparent 0 6px, #24323b 6px 7px); border-top-color: var(--bs-body-bg); }
[data-bs-theme="dark"] .lwb-booking { border-top-color: var(--bs-body-bg); }
[data-bs-theme="dark"] .lwb-pcell { background: #1c2830; }
[data-bs-theme="dark"] .lwb-dots i, [data-bs-theme="dark"] .lwb-legend i { background: #4b5a63; }
[data-bs-theme="dark"] .lwb-sheet { background: var(--bs-body-bg); color: var(--ink); }
[data-bs-theme="dark"] .lwb-day[aria-current="date"] .wd, [data-bs-theme="dark"] .lwb-day[aria-current="date"] .dn { color: #0d1b24; }
[data-bs-theme="dark"] .lwb-day[aria-current="date"] .lwb-dots i:not(.on) { background: #8aa0ad; }

/* 1.12: guests, club gear, moving */
.lwb-guest { display: inline-block; font-size: .75rem; font-weight: 600; padding: .05rem .4rem; border-radius: .4rem; background: #efe3fb; color: #5b2a86; }
.lwb-gear { font-size: .78rem; color: var(--reed); }
.lwb-gear-row { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
.lwb-acts { display: inline-flex; flex-wrap: wrap; align-items: center; gap: .6rem; }
.lwb-list li { flex-wrap: wrap; }
.lwb-booking .lwb-link + .lwb-link, .lwb-booking form + .lwb-link { margin-left: .4rem; }
[data-bs-theme="dark"] .lwb-guest { background: #3a2550; color: #e3c8ff; }

/* Entry: no pilot times, so no pilot column */
.lwb-nopilots .lwb-cols, .lwb-nopilots .lwb-lane { grid-template-columns: 3.25rem minmax(0, 1fr); }
@media (max-width: 40rem) { .lwb-nopilots .lwb-cols, .lwb-nopilots .lwb-lane { grid-template-columns: 3rem minmax(0, 1fr); } }
/* a booking you may change: the text is a button that opens "Change booking" */
.lwb-booking > .lwb-edit { display: flex; flex-wrap: wrap; column-gap: .5rem; row-gap: 0; align-items: baseline; min-width: 0; flex: 1; padding: 0; margin: 0; border: 0;
  background: none; color: inherit; font: inherit; text-align: left; cursor: pointer; }
.lwb-booking > .lwb-edit:hover strong, .lwb-booking > .lwb-edit:focus-visible strong { text-decoration: underline; }
.lwb-edit-more { display: flex; justify-content: space-between; align-items: center; margin-top: .25rem; }
.lwb-edit-more form { margin: 0 0 0 auto; }
.lwb-sheet h2:focus { outline: none; }

/* 2.9: the boat is away; training outside the booking hours */
.lwb-day.is-away .dn { text-decoration: line-through; text-decoration-color: #dc3545; text-decoration-thickness: 2px; }
.lwb-booking.is-away { background: repeating-linear-gradient(-45deg, color-mix(in srgb, #dc3545 14%, var(--bs-body-bg)) 0 8px, color-mix(in srgb, #dc3545 6%, var(--bs-body-bg)) 8px 16px); border-color: color-mix(in srgb, #dc3545 45%, transparent); }
.lwb-closed.is-away { background: repeating-linear-gradient(-45deg, color-mix(in srgb, #dc3545 14%, transparent) 0 8px, transparent 8px 16px); }
.lwb-trainlist { list-style: none; padding: 0; margin: .25rem 0 .5rem; font-size: .9rem; }
.lwb-trainlist li { padding: .25rem .5rem; border-left: 3px solid var(--lw-brand); background: color-mix(in srgb, var(--lw-brand) 7%, var(--bs-body-bg)); border-radius: .25rem; margin-bottom: .25rem; }
.lwb-adminbar { margin: .25rem 0 .5rem; }
.lwb-train { margin-top: 1rem; border-top: 1px solid var(--bs-border-color); padding-top: .5rem; }
.lwb-train summary { font-weight: 600; cursor: pointer; padding: .25rem 0; }
.lwb-lane.is-training { grid-template-columns: 3.25rem minmax(0, 1fr); }
.lwb-booking.is-training { background: color-mix(in srgb, var(--lw-brand) 12%, var(--bs-body-bg)); }
@media (max-width: 40rem) { .lwb-lane.is-training { grid-template-columns: 3rem minmax(0, 1fr); } }
