.vessel-schedule{max-width:1200px;margin:40px auto;padding:0 20px;font-family:inherit}
.vessel-schedule-filters{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:20px;background:#f8f9fa;padding:16px 20px;border-radius:12px;border:1px solid #e9ecef;align-items:center}
.vessel-schedule-filters select,.vessel-schedule-filters input{padding:10px 14px;border:1px solid #dee2e6;border-radius:8px;font-size:14px;background:#fff;transition:border-color .2s;width:100%}
.vessel-schedule-filters select:focus,.vessel-schedule-filters input:focus{border-color:#0d6efd;outline:none;box-shadow:0 0 0 3px rgba(13,110,253,.15)}
.vessel-schedule-count{text-align:center;font-size:13px;color:#6c757d;font-weight:500;margin-top:8px}
/* What does not fit scrolls inside the box, never the page. */
.vessel-schedule-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.06)}
.vessel-schedule-table{width:100%;border-collapse:separate;border-spacing:0;font-size:14px}
.vessel-schedule-table thead{background:linear-gradient(135deg,#e8572a 0%,#c44520 100%)}
.vessel-schedule-table th{padding:12px 14px;text-align:left;vertical-align:bottom;font-weight:600;white-space:nowrap;line-height:1.3;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:#fff;cursor:pointer;user-select:none;position:relative}
.vessel-schedule-table th:hover{background:rgba(255,255,255,.1)}
.vessel-schedule-table th .sort-arrow{margin-left:4px;opacity:.5;font-size:10px}
.vessel-schedule-table th.sorted-asc .sort-arrow,.vessel-schedule-table th.sorted-desc .sort-arrow{opacity:1}
.vessel-schedule-table td{padding:10px 14px;border-bottom:1px solid #f0f0f0;vertical-align:middle}
.vessel-schedule-table tbody tr{transition:background .15s}
.vessel-schedule-table tbody tr:hover{background:#fff5f2}
.vessel-schedule-table tbody tr:nth-child(even){background:#fafafa}
.vessel-schedule-table tbody tr:nth-child(even):hover{background:#fff5f2}
.vessel-schedule-badge{display:inline-block;padding:4px 12px;border-radius:6px;font-size:11px;font-weight:700;white-space:nowrap;letter-spacing:.3px}
.vessel-schedule-date{white-space:nowrap;font-size:13px;color:#444}
.vessel-schedule-vessel{font-weight:700;color:#1c1c1c;font-size:14px;white-space:nowrap}
.vessel-schedule img.vessel-schedule-logo{height:20px;max-height:20px;width:auto;max-width:72px;object-fit:contain;vertical-align:middle;margin-right:8px}
.vessel-schedule-logo-fallback{display:inline-block;margin-right:8px;padding:1px 6px;border:1px solid #dee2e6;border-radius:4px;font-size:11px;font-weight:600;color:#6c757d;vertical-align:middle}
.vessel-schedule-reefer-erd,.vessel-schedule-reefer-cutoff,.vessel-schedule-dry-erd,.vessel-schedule-dry-cutoff,.vessel-schedule-eta{white-space:nowrap;font-size:13px;color:#444}
.vessel-schedule-table tbody tr{cursor:pointer}
.vessel-schedule-table tbody tr:focus-visible{outline:2px solid #0d6efd;outline-offset:-2px}
.vessel-schedule-dialog{max-width:560px;width:calc(100% - 32px);border:0;border-radius:12px;padding:24px;box-shadow:0 10px 40px rgba(0,0,0,.25)}
.vessel-schedule-dialog::backdrop{background:rgba(0,0,0,.45)}
.vessel-schedule-dialog h3{margin:0 32px 16px 0;font-size:18px}
.vessel-schedule-dialog dl{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px;margin:0;font-size:14px}
.vessel-schedule-dialog dt{color:#6c757d}
.vessel-schedule-dialog dd{margin:0;font-weight:600;color:#1c1c1c;overflow-wrap:anywhere}
.vessel-schedule-dialog-close{position:absolute;top:12px;right:12px;border:0;background:none;font-size:24px;line-height:1;cursor:pointer;color:#6c757d}
.vessel-schedule-error{color:#dc3545;font-style:italic;padding:40px;text-align:center;font-size:16px}
@media(max-width:768px){
    .vessel-schedule-filters{grid-template-columns:1fr}
    .vessel-schedule-table{font-size:11px}
    .vessel-schedule-table th,.vessel-schedule-table td{padding:6px 8px}
    /* On a phone: name, inbound voyage, ETA and terminal only. */
    .vessel-schedule-table th:nth-child(3),.vessel-schedule-voyage-ob,
    .vessel-schedule-table th:nth-child(4),.vessel-schedule-reefer-erd,
    .vessel-schedule-table th:nth-child(5),.vessel-schedule-reefer-cutoff,
    .vessel-schedule-table th:nth-child(6),.vessel-schedule-dry-erd,
    .vessel-schedule-table th:nth-child(7),.vessel-schedule-dry-cutoff,
    .vessel-schedule-table th:nth-child(10),.vessel-schedule-imo{display:none}
}
