.boat-schedule {
  --schedule-hour-width: 3.5rem;
  --schedule-boat-width: 9rem;
}

.boat-schedule__toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem 1rem;
}

.boat-schedule__nav {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}

.boat-schedule__nav-button,
.boat-schedule__view-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.25rem;
  padding: 0 0.75rem;
  border-radius: 0.375rem;
  border: 1px solid #cbd5e1;
  background-color: #ffffff;
  color: #334155;
  font-size: 0.875rem;
  font-weight: 500;
  transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.boat-schedule__nav-button:hover,
.boat-schedule__view-button:not(.boat-schedule__view-button--active):hover {
  background-color: #f1f5f9;
  border-color: #94a3b8;
  color: #0f172a;
}

.boat-schedule__view-button--active {
  background-color: #1e293b;
  border-color: #1e293b;
  color: #f8fafc;
}

.boat-schedule__view-button--active:hover {
  background-color: #334155;
  border-color: #334155;
  color: #f8fafc;
}

.boat-schedule__legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem 1rem;
  font-size: 0.875rem;
  color: #475569;
}

.boat-schedule__period-title {
  margin-left: auto;
  font-size: 0.875rem;
  font-weight: 700;
  color: #0f172a;
}

.boat-schedule__legend-item {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
}

.boat-schedule__legend-swatch {
  width: 0.875rem;
  height: 0.875rem;
  border-radius: 0.25rem;
}

.boat-schedule__legend-swatch--approved {
  background-color: #16a34a;
}

.boat-schedule__legend-swatch--pending {
  background-color: #f59e0b;
  border: 1px dashed #b45309;
}

.boat-schedule__grid {
  overflow-x: auto;
}

.boat-schedule__week-table {
  min-width: 48rem;
}

.boat-schedule__week-head,
.boat-schedule__week-row {
  display: grid;
  grid-template-columns: var(--schedule-boat-width) repeat(7, minmax(6rem, 1fr));
}

.boat-schedule__week-head {
  border-bottom: 1px solid #e2e8f0;
  background-color: #f8fafc;
}

.boat-schedule__week-head-cell,
.boat-schedule__boat-label,
.boat-schedule__day-cell {
  padding: 0.75rem;
  border-right: 1px solid #e2e8f0;
}

.boat-schedule__week-head-cell:last-child,
.boat-schedule__day-cell:last-child {
  border-right: none;
}

.boat-schedule__week-head-cell {
  text-align: center;
  font-size: 0.75rem;
  font-weight: 600;
  color: #475569;
}

.boat-schedule__week-head-cell--today {
  background-color: #eff6ff;
  color: #1d4ed8;
}

.boat-schedule__day-cell--today {
  background-color: #f8fbff;
}

.boat-schedule__week-head-date {
  display: block;
  margin-top: 0.125rem;
  font-size: 0.875rem;
  color: #0f172a;
}

.boat-schedule__week-row {
  border-bottom: 1px solid #e2e8f0;
}

.boat-schedule__week-row:last-child {
  border-bottom: none;
}

.boat-schedule__boat-label {
  font-size: 0.875rem;
  font-weight: 600;
  color: #0f172a;
  background-color: #ffffff;
}

.boat-schedule__day-cell {
  min-height: 5rem;
  background-color: #ffffff;
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
}

.boat-schedule__day-view {
  min-width: 56rem;
}

.boat-schedule__day-head,
.boat-schedule__day-row {
  display: grid;
  grid-template-columns: var(--schedule-boat-width) 1fr;
}

.boat-schedule__day-head {
  border-bottom: 1px solid #e2e8f0;
  background-color: #f8fafc;
}

.boat-schedule__hour-ruler {
  display: grid;
  grid-template-columns: repeat(16, minmax(var(--schedule-hour-width), 1fr));
  border-right: 1px solid #e2e8f0;
}

.boat-schedule__hour-label {
  padding: 0.5rem 0.25rem;
  text-align: center;
  font-size: 0.75rem;
  font-weight: 500;
  color: #64748b;
  border-right: 1px solid #f1f5f9;
}

.boat-schedule__hour-label:last-child {
  border-right: none;
}

.boat-schedule__timeline-track {
  position: relative;
  min-height: 4.5rem;
  border-right: 1px solid #e2e8f0;
  background-image: repeating-linear-gradient(
    to right,
    #f8fafc,
    #f8fafc calc(100% / 16 - 1px),
    #f1f5f9 calc(100% / 16 - 1px),
    #f1f5f9 calc(100% / 16)
  );
}

.boat-schedule__block {
  position: relative;
  z-index: 1;
  display: block;
  padding: 0.375rem 0.5rem;
  border-radius: 0.375rem;
  font-size: 0.75rem;
  line-height: 1.25;
  text-decoration: none;
  color: #0f172a;
  overflow: hidden;
}

.boat-schedule__block--approved {
  background-color: #dcfce7;
  border: 1px solid #16a34a;
}

.boat-schedule__block--pending {
  background-color: #fef3c7;
  border: 1px dashed #d97706;
}

.boat-schedule__block:hover {
  filter: brightness(0.97);
}

.boat-schedule__block-time {
  display: block;
  font-weight: 600;
}

.boat-schedule__block-skipper {
  display: block;
  color: #475569;
}

.boat-schedule__block-purpose {
  display: block;
  color: #64748b;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.boat-schedule__day-block {
  position: absolute;
  top: 0.375rem;
  bottom: 0.375rem;
  z-index: 1;
  min-width: 4rem;
}

.boat-schedule__filters {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1rem;
  font-size: 0.875rem;
  color: #334155;
}

.boat-schedule__filters label {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
}

.boat-schedule__day-table-head,
.boat-schedule__day-table-row {
  grid-template-columns: var(--schedule-boat-width) minmax(12rem, 1fr);
}

.boat-schedule__day-table .boat-schedule__day-cell {
  min-height: 3.5rem;
}

.boat-schedule__block--name-only {
  font-weight: 600;
}
turbo-frame#app_modal:empty {
  display: none;
}

turbo-frame#app_modal:not(:empty) {
  position: fixed;
  inset: 0;
  z-index: 50;
  display: block;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
}
.pagy.series-nav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.25rem;
}

.pagy.series-nav a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.25rem;
  height: 2.25rem;
  padding: 0 0.625rem;
  border-radius: 0.375rem;
  border: 1px solid #cbd5e1;
  background-color: #ffffff;
  color: #334155;
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1;
  text-decoration: none;
  transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.pagy.series-nav a[href]:hover {
  background-color: #f1f5f9;
  border-color: #94a3b8;
  color: #0f172a;
}

.pagy.series-nav a[aria-current="page"] {
  background-color: #1e293b;
  border-color: #1e293b;
  color: #f8fafc;
  cursor: default;
}

.pagy.series-nav a[role="separator"] {
  min-width: auto;
  padding: 0 0.25rem;
  border: none;
  background: transparent;
  color: #64748b;
  cursor: default;
}

.pagy.series-nav a[role="link"][aria-disabled="true"]:not([aria-current]) {
  opacity: 0.45;
  cursor: not-allowed;
}

.pagy.info {
  font-variant-numeric: tabular-nums;
}
:root{--ss-primary-color: #2563eb;--ss-bg-color: #ffffff;--ss-font-color: #111827;--ss-placeholder-color: #6b7280;--ss-disabled-color: #e5e7eb;--ss-border-color: #9ca3af;--ss-highlight-color: #fef08a;--ss-focus-color: #2563eb;--ss-success-color: #16a34a;--ss-error-color: #dc2626;--ss-main-height: 42px;--ss-content-height: 300px;--ss-search-height: 40px;--ss-option-height: auto;--ss-spacing-l: 9px;--ss-spacing-m: 7px;--ss-spacing-s: 5px;--ss-animation-timing: 0.2s;--ss-border-radius: 0.375rem}@keyframes ss-valueIn{0%{transform:scale(0);opacity:0}100%{transform:scale(1);opacity:1}}@keyframes ss-valueOut{0%{transform:scale(1);opacity:1}100%{transform:scale(0);opacity:0}}.ss-hide{display:none !important}.ss-main{display:flex;flex-direction:row;position:relative;user-select:none;color:var(--ss-font-color);min-height:var(--ss-main-height);width:100%;padding:var(--ss-spacing-s);cursor:pointer;border:1px solid var(--ss-border-color);border-radius:var(--ss-border-radius);background-color:var(--ss-bg-color);outline:0;box-sizing:border-box;transition:background-color var(--ss-animation-timing);overflow:hidden}.ss-main:focus{box-shadow:0 0 5px var(--ss-focus-color)}.ss-main.ss-disabled{background-color:var(--ss-disabled-color);cursor:not-allowed}.ss-main.ss-disabled .ss-values .ss-disabled{color:var(--ss-font-color)}.ss-main.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}.ss-main.ss-dir-above{border-top-left-radius:0px;border-top-right-radius:0px}.ss-main.ss-dir-below{border-bottom-left-radius:0px;border-bottom-right-radius:0px}.ss-main .ss-values{display:inline-flex;flex-wrap:wrap;gap:var(--ss-spacing-m);flex:1 1 100%;min-width:0;max-width:100%;overflow:hidden}.ss-main .ss-values:has(.ss-multi-string){flex-wrap:nowrap;gap:0;align-items:center}.ss-main .ss-values .ss-placeholder{display:block;width:100%;min-width:0;padding:var(--ss-spacing-s) var(--ss-spacing-m) var(--ss-spacing-s) var(--ss-spacing-m);margin:auto 0px auto 0px;line-height:1em;color:var(--ss-placeholder-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ss-main .ss-values .ss-max{display:flex;user-select:none;align-items:center;width:fit-content;font-size:12px;color:var(--ss-bg-color);line-height:1;padding:var(--ss-spacing-s) var(--ss-spacing-m);background-color:var(--ss-primary-color);border-radius:var(--ss-border-radius)}.ss-main .ss-values .ss-single{display:block;margin:auto 0px auto var(--ss-spacing-s);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto;max-width:calc(100% - 20px)}.ss-main .ss-values .ss-multi-string{display:block;width:100%;min-width:0;padding:var(--ss-spacing-s) var(--ss-spacing-m) var(--ss-spacing-s) var(--ss-spacing-m);margin:auto 0px auto 0px;line-height:1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto;max-width:calc(100% - 20px)}.ss-main .ss-values .ss-value{display:flex;user-select:none;align-items:center;width:fit-content;max-width:100%;background-color:var(--ss-primary-color);border-radius:var(--ss-border-radius);animation-name:ss-valueIn;animation-duration:var(--ss-animation-timing);animation-timing-function:ease-out;animation-fill-mode:both}.ss-main .ss-values .ss-value.ss-value-out{animation-name:ss-valueOut;animation-duration:var(--ss-animation-timing);animation-timing-function:ease-out}.ss-main .ss-values .ss-value .ss-value-text{flex:1;min-width:0;font-size:12px;line-height:1;color:var(--ss-bg-color);padding:var(--ss-spacing-s) var(--ss-spacing-m);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ss-main .ss-values .ss-value .ss-value-delete{display:flex;align-items:center;height:var(--ss-spacing-l);width:var(--ss-spacing-l);padding:var(--ss-spacing-s) var(--ss-spacing-m);cursor:pointer;border-left:solid 1px var(--ss-bg-color);box-sizing:content-box}.ss-main .ss-values .ss-value .ss-value-delete svg{height:var(--ss-spacing-l);width:var(--ss-spacing-l)}.ss-main .ss-values .ss-value .ss-value-delete svg path{fill:none;stroke:var(--ss-bg-color);stroke-width:18;stroke-linecap:round;stroke-linejoin:round}.ss-main .ss-deselect{flex:0 1 auto;display:flex;align-items:center;justify-content:center;width:fit-content;height:auto;padding:0 var(--ss-spacing-m) 0 var(--ss-spacing-m)}.ss-main .ss-deselect svg{width:8px;height:8px}.ss-main .ss-deselect svg path{fill:none;stroke:var(--ss-font-color);stroke-width:20;stroke-linecap:round;stroke-linejoin:round}.ss-main .ss-arrow{flex:0 1 auto;display:flex;align-items:center;justify-content:flex-end;width:12px;height:12px;margin:auto var(--ss-spacing-m) auto var(--ss-spacing-m)}.ss-main .ss-arrow path{fill:none;stroke:var(--ss-font-color);stroke-width:18;stroke-linecap:round;stroke-linejoin:round;transition-timing-function:ease-out;transition:var(--ss-animation-timing)}.ss-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.ss-content{position:absolute;display:flex;height:auto;flex-direction:column;width:auto;max-height:var(--ss-content-height);box-sizing:border-box;border:solid 1px var(--ss-border-color);background-color:var(--ss-bg-color);transition:transform var(--ss-animation-timing),opacity var(--ss-animation-timing);opacity:0;transform:scaleY(0);overflow:hidden;z-index:10000}.ss-content.ss-relative{position:relative;height:100%}.ss-content.ss-fixed{position:fixed}.ss-content.ss-dir-above{transform-origin:center bottom;flex-direction:column-reverse;border-top-left-radius:var(--ss-border-radius);border-top-right-radius:var(--ss-border-radius)}.ss-content.ss-dir-below{transform-origin:center top;border-bottom-left-radius:var(--ss-border-radius);border-bottom-right-radius:var(--ss-border-radius)}.ss-content.ss-open{opacity:1;transform:scaleY(1)}.ss-content .ss-search{flex:0 1 auto;display:flex;flex-direction:row;border-bottom:1px solid var(--ss-border-color)}.ss-content .ss-search input{display:inline-flex;font-size:inherit;line-height:inherit;flex:1 1 auto;width:100%;min-width:0px;height:var(--ss-search-height);padding:var(--ss-spacing-m) var(--ss-spacing-l);margin:0;border:none;background-color:var(--ss-bg-color);outline:0;text-align:left;box-sizing:border-box}.ss-content .ss-search input::placeholder{color:var(--ss-placeholder-color);vertical-align:middle}.ss-content .ss-search input:focus{box-shadow:none}.ss-content .ss-search .ss-addable{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;flex:0 0 auto;height:auto;margin:0 0 0 var(--ss-spacing-m);border:1px solid var(--ss-border-color);border-radius:var(--ss-border-radius)}.ss-content .ss-search .ss-addable svg{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;width:12px;height:12px;margin:auto var(--ss-spacing-m) auto var(--ss-spacing-m)}.ss-content .ss-search .ss-addable svg path{fill:none;stroke:var(--ss-font-color);stroke-width:18;stroke-linecap:round;stroke-linejoin:round}.ss-content.ss-dir-above .ss-search{border-bottom:none;border-top:1px solid var(--ss-border-color)}.ss-content .ss-list{flex:1 1 auto;height:auto;overflow-x:hidden;overflow-y:auto}.ss-content .ss-list .ss-error{color:var(--ss-error-color);padding:var(--ss-spacing-l)}.ss-content .ss-list .ss-searching{color:var(--ss-font-color);padding:var(--ss-spacing-l)}.ss-content .ss-list .ss-optgroup .ss-option{transition:max-height var(--ss-animation-timing) ease,opacity var(--ss-animation-timing) ease,padding-top var(--ss-animation-timing) ease,padding-bottom var(--ss-animation-timing) ease,margin-top var(--ss-animation-timing) ease,margin-bottom var(--ss-animation-timing) ease}.ss-content .ss-list .ss-optgroup.ss-open .ss-option{max-height:100px;opacity:1;overflow:visible}.ss-content .ss-list .ss-optgroup.ss-close .ss-option{padding-top:0 !important;padding-bottom:0 !important;margin-top:0 !important;margin-bottom:0 !important;max-height:0;opacity:0;overflow:hidden}.ss-content .ss-list .ss-optgroup .ss-optgroup-label{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:var(--ss-spacing-m) var(--ss-spacing-l) var(--ss-spacing-m) var(--ss-spacing-l)}.ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-label-text{flex:1 1 auto;font-weight:bold;color:var(--ss-font-color)}.ss-content .ss-list .ss-optgroup .ss-optgroup-label:has(.ss-arrow){cursor:pointer}.ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions{flex:0 1 auto;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:var(--ss-spacing-m)}.ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall{flex:0 0 auto;display:flex;flex-direction:row;cursor:pointer}.ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall:hover{opacity:.5}.ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall.ss-selected svg path{stroke:var(--ss-error-color)}.ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall span{flex:0 1 auto;display:flex;align-items:center;justify-content:center;font-size:60%;text-align:center;padding:0 var(--ss-spacing-s) 0 0}.ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall svg{flex:0 1 auto;width:13px;height:13px}.ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall svg path{fill:none;stroke:var(--ss-success-color);stroke-linecap:round;stroke-linejoin:round}.ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall svg:first-child{stroke-width:5}.ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-selectall svg:last-child{stroke-width:11}.ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-closable{flex:0 1 auto;display:flex;flex-direction:row;cursor:pointer}.ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-closable .ss-arrow{flex:1 1 auto;width:10px;height:10px}.ss-content .ss-list .ss-optgroup .ss-optgroup-label .ss-optgroup-actions .ss-closable .ss-arrow path{fill:none;stroke:var(--ss-font-color);stroke-width:18;stroke-linecap:round;stroke-linejoin:round;transition-timing-function:ease-out;transition:var(--ss-animation-timing)}.ss-content .ss-list .ss-optgroup .ss-option{padding:var(--ss-spacing-s) var(--ss-spacing-s) var(--ss-spacing-s) calc(var(--ss-spacing-l)*3)}.ss-content .ss-list .ss-option{display:flex;align-items:center;min-height:var(--ss-option-height);padding:var(--ss-spacing-m) var(--ss-spacing-l) var(--ss-spacing-m) var(--ss-spacing-l);white-space:normal;color:var(--ss-font-color);cursor:pointer;user-select:none}.ss-content .ss-list .ss-option:hover:not(.ss-disabled){color:var(--ss-bg-color);background-color:var(--ss-primary-color);border-left:5px solid var(--ss-primary-color);transition:border-left var(--ss-animation-timing) ease}.ss-content .ss-list .ss-option.ss-highlighted,.ss-content .ss-list .ss-option:not(.ss-disabled).ss-selected{color:var(--ss-bg-color);background-color:var(--ss-primary-color)}.ss-content .ss-list .ss-option.ss-disabled{cursor:not-allowed;background-color:var(--ss-disabled-color)}.ss-content .ss-list .ss-option.ss-disabled:hover{color:var(--ss-font-color)}.ss-content .ss-list .ss-option .ss-search-highlight{display:inline-block;background-color:var(--ss-highlight-color)}.ss-content .ss-list .ss-search{display:flex;flex-direction:row;align-items:center;padding:var(--ss-spacing-m) var(--ss-spacing-l) var(--ss-spacing-m) var(--ss-spacing-l)}/*# sourceMappingURL=slimselect.css.map */
.stimulus-pagination {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.25rem;
}

.stimulus-pagination__page,
.stimulus-pagination__control {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.25rem;
  height: 2.25rem;
  padding: 0 0.625rem;
  border-radius: 0.375rem;
  border: 1px solid #cbd5e1;
  background-color: #ffffff;
  color: #334155;
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1;
  transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.stimulus-pagination__page:hover,
.stimulus-pagination__control:hover:not(:disabled) {
  background-color: #f1f5f9;
  border-color: #94a3b8;
  color: #0f172a;
}

.stimulus-pagination__page--current {
  background-color: #1e293b;
  border-color: #1e293b;
  color: #f8fafc;
  cursor: default;
}

.stimulus-pagination__control:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.stimulus-pagination-info {
  font-variant-numeric: tabular-nums;
}
/*
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *
 * Any CSS (and SCSS, if configured) file within this directory, lib/assets/stylesheets, or any plugin's
 * vendor/assets/stylesheets directory can be referenced here using a relative path.
 *
 * You're free to add application-wide styles to this file and they'll appear at the bottom of the
 * compiled file so the styles you add here take precedence over styles defined in any other CSS
 * files in this directory. Styles in this file should be added after the last require_* statement.
 * It is generally better to create a new file per style scope.
 *


 */
