
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
            background-color: #1a1a1a;
            color: #ffffff;
            line-height: 1.6;
            padding: 0 20px 20px 20px;
            min-height: 100vh;
        }

        .container {
            max-width: 1200px;
            margin: 0 auto;
        }

        .top-nav {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 16px 0 8px 0;
            gap: 16px;
            position: sticky;
            top: 0;
            z-index: 1000;
            background-color: #1a1a1a;
            border-bottom: 1px solid rgba(255, 255, 255, 0.1);
            margin-bottom: 20px;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
        }

        .nav-logo {
            display: flex;
            align-items: center;
            gap: 10px;
        }

        .site-logo {
            height: 64px;
            width: auto;
        }

        .nav-actions {
            display: flex;
            align-items: center;
            gap: 12px;
        }

        .nav-link {
            background: transparent;
            border: 1px solid #444;
            color: #ffffff;
            padding: 6px 12px;
            border-radius: 6px;
            font-size: 0.9rem;
            cursor: pointer;
            transition: background-color 0.2s, border-color 0.2s;
        }

        .nav-link:hover {
            background-color: rgba(255, 255, 255, 0.08);
            border-color: #666;
        }

        /* Location Page Navigation Tabs */
        .location-nav-tabs {
            display: flex;
            gap: 0;
            margin-bottom: 0;
            margin-top: 8px;
            align-items: flex-end;
            flex-wrap: wrap;
        }

        .location-nav-tabs-main {
            display: flex;
            gap: 0;
            flex-wrap: wrap;
            align-items: flex-end;
        }

        .location-nav-tab {
            background-color: #333548; /* Unselected */
            border: 1px solid rgba(255, 255, 255, 0.1);
            border-bottom: none;
            border-top-left-radius: 8px;
            border-top-right-radius: 8px;
            color: rgba(255, 255, 255, 0.6);
            padding: 10px 20px;
            font-size: 0.9rem;
            font-weight: 600;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            cursor: pointer;
            transition: all 0.2s;
            position: relative;
            z-index: 1;
            text-decoration: none;
        }

        .location-nav-tab:hover {
            color: rgba(255, 255, 255, 0.9);
            background-color: #3d4158;
        }

        .location-nav-tab.active {
            background-color: #465b2a; /* Highlight */
            color: #ffffff;
            border-color: rgba(255, 255, 255, 0.2);
            z-index: 2;
            box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.3);
        }
        
        /* Tab text: desktop shows nav-tab-desktop, mobile shows nav-tab-mobile */
        /* Use min-width so desktop rules only apply on wide viewports - prevents mobile layout applying on desktop */
        @media (min-width: 769px) {
            .location-nav-tabs .nav-tab-mobile {
                display: none;
            }
            .location-nav-tabs .nav-tab-desktop {
                display: inline;
            }
            /* Desktop: show full breadcrumb (Home : Country : Region : County : Location : Page), hide short */
            .header-breadcrumbs-full {
                display: flex !important;
                flex-wrap: wrap;
            }
            .header-breadcrumbs-short {
                display: none !important;
            }
        }

        /* Customise tab - special color; desktop shows text, no ::before */
        .location-nav-tab-customise::before {
            content: none;
            display: none;
        }
        .location-nav-tab[data-page="customise"]:not(.active) {
            background-color: #525d7f; /* Customise */
            color: rgba(255, 255, 255, 0.9);
        }
        
        .location-nav-tab[data-page="customise"]:not(.active):hover {
            background-color: #5d698f;
            color: #ffffff;
        }

        /* Heart tab: same structure as other tabs */
        .location-nav-tab-favourite.location-favourite-btn {
            position: static;
            display: flex;
            align-items: center;
            justify-content: center;
            text-decoration: none;
            flex-shrink: 0;
            box-sizing: border-box;
        }
        .location-nav-tab-favourite.location-favourite-btn svg {
            width: 20px;
            height: 20px;
        }
        /* Desktop: match tab dimensions (padding/min-height) */
        @media (min-width: 769px) {
            .location-nav-tab-favourite.location-favourite-btn {
                padding: 10px 20px;
                min-height: 44px;
            }
        }

        /* Desktop: hide Forecast dropdown, show individual tabs */
        @media (min-width: 769px) {
            .location-nav-forecast-dropdown {
                display: none !important;
            }
        }
        .location-nav-tab-favourite.location-favourite-btn:not(.active) {
            background-color: #525d7f;
            color: rgba(255, 255, 255, 0.9);
        }
        .location-nav-tab-favourite.location-favourite-btn:not(.active):hover {
            background-color: #5d698f;
            color: #ffffff;
        }
        .location-nav-tab-favourite.location-favourite-btn.active {
            background-color: rgba(212, 59, 149, 0.4);
            border-color: rgba(212, 59, 149, 0.6);
            color: #ffffff;
        }

        /* Footer link styles */
        .location-link {
            color: rgba(237, 166, 65, 1);
            text-decoration: none;
            transition: all 0.2s;
        }

        .location-link:hover {
            text-decoration: underline;
        }

        .location-link.same-page-link {
            color: #ffffff;
            text-decoration: none;
        }

        .location-link.same-page-link:hover {
            color: #ffffff;
            text-decoration: underline;
        }

        /* Footer Styles */
        .forecast-ideal-conditions h3 {
            font-size: 1.2rem;
            font-weight: 600;
            color: #ffffff;
            margin-bottom: 20px;
        }

        .forecast-condition-card {
            background: rgb(211, 60, 149);
            border: 1px solid rgba(0, 0, 0, 0.1);
            border-radius: 8px;
            padding: 20px;
        }

        .forecast-condition-card h4 {
            font-size: 0.9rem;
            font-weight: 600;
            color: #ffffff;
            margin: 0 0 8px 0;
            text-transform: uppercase;
            letter-spacing: 0.5px;
        }

        .forecast-condition-card p {
            font-size: 1rem;
            color: #ffffff;
            margin: 0;
        }

        .forecast-condition-card a {
            font-size: 0.85rem;
            color: #ffffff;
            text-decoration: underline;
            font-weight: 600;
            display: inline-block;
        }

        .forecast-condition-card a:hover {
            color: rgba(255, 255, 255, 0.9);
        }

        .location-footer-seo-section h3 {
            font-size: 1.1rem;
            font-weight: 600;
            color: #ffffff;
            margin-bottom: 16px;
        }

        .full-guide-button:hover {
            background: rgba(26, 26, 26, 1) !important;
            border-color: rgb(255, 69, 0) !important;
            color: rgb(255, 69, 0) !important;
        }
        
        .full-guide-button {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            background: rgb(255, 69, 0);
            border: 2px solid rgb(255, 69, 0);
            color: rgb(26, 26, 26);
            padding: 12px 24px;
            border-radius: 8px;
            text-decoration: none;
            font-weight: 600;
            font-size: 0.95rem;
            transition: all 0.2s;
            cursor: pointer;
        }

        .full-guide-button:hover {
            background: rgba(26, 26, 26, 1) !important;
            border-color: rgb(255, 69, 0) !important;
            color: rgb(255, 69, 0) !important;
            transform: translateX(4px);
        }

        .weekly-summary-columns.weekly-summary-14 {
            display: grid;
            grid-template-columns: repeat(14, 1fr);
            gap: 8px;
            margin-bottom: 20px;
        }

        .view-forecast-link {
            text-align: center;
            margin: 24px 0;
            padding: 16px;
        }

        .view-forecast-link a {
            color: #ff4500;
            text-decoration: none;
            font-weight: 600;
            font-size: 0.95rem;
            display: inline-block;
            padding: 8px 16px;
            border: 1px solid #ff4500;
            border-radius: 6px;
            transition: background-color 0.2s, color 0.2s;
        }

        .view-forecast-link a:hover {
            background-color: #ff4500;
            color: #ffffff;
        }

        header {
            margin-bottom: 0;
            padding: 0;
        }

        .header-content {
            display: flex;
            align-items: flex-start;
            gap: 12px;
            margin-left: auto; /* Align right to match content below */
            max-width: 100%;
        }

        .header-conditions-accent {
            display: none; /* Removed - too similar to Surfline, rating shown below instead */
        }

        .header-conditions-accent.poor {
            background-color: #dc4a6d;
        }

        .header-conditions-accent.poor-to-fair {
            background-color: #ff9800;
        }

        .header-conditions-accent.fair {
            background-color: #ffb74d;
        }

        .header-conditions-accent.fair-to-good {
            background-color: #81c784;
        }

        .header-conditions-accent.good {
            background-color: #4caf50;
        }

        .header-text {
            flex: 1;
        }

        .header-title {
            font-size: 1.75rem;
            font-weight: 500;
            letter-spacing: -0.3px;
            color: #ffffff;
            margin-bottom: 4px;
            line-height: 1.3;
        }

        .header-title.header-title-long {
            font-size: 1.4rem;
        }

        .header-subtitle {
            font-size: 0.75rem;
            font-weight: 400;
            color: rgba(255, 255, 255, 0.6);
            text-transform: uppercase;
            letter-spacing: 0.5px;
            margin-bottom: 12px;
            display: none;
        }

        .header-breadcrumbs {
            font-size: 0.85rem;
            font-weight: 400;
            color: rgba(255, 255, 255, 0.5);
            letter-spacing: 0.3px;
        }

        .header-breadcrumbs a {
            color: rgba(255, 255, 255, 0.6);
            text-decoration: none;
            transition: color 0.2s ease;
        }

        .header-breadcrumbs a:hover {
            color: rgba(255, 255, 255, 0.9);
        }

        .header-breadcrumbs span {
            margin: 0 6px;
            color: rgba(255, 255, 255, 0.3);
        }

        /* Compact top breadcrumbs bar (above favourites) – segment style with chevrons */
        .header-breadcrumbs.breadcrumbs-top {
            margin-bottom: 8px;
            padding: 4px 0;
        }

        .header-breadcrumbs.breadcrumbs-top .header-breadcrumbs-full,
        .header-breadcrumbs.breadcrumbs-top .header-breadcrumbs-short {
            flex-wrap: wrap;
            align-items: center;
            gap: 0;
        }

        .header-breadcrumbs.breadcrumbs-top .breadcrumb-segment {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 4px;
            padding: 4px 8px;
            min-height: 24px;
            background-color: transparent;
            color: rgba(255, 255, 255, 0.85);
            border-radius: 4px;
            font-size: 0.75rem;
            font-weight: 500;
            line-height: 1.2;
            text-decoration: none;
            transition: background-color 0.2s, color 0.2s;
        }

        .header-breadcrumbs.breadcrumbs-top .breadcrumb-segment:hover {
            background-color: rgba(255, 255, 255, 0.12);
            color: #fff;
        }

        .header-breadcrumbs.breadcrumbs-top .breadcrumb-segment-active {
            background-color: #465b2a;
            color: #fff;
            cursor: default;
        }

        .header-breadcrumbs.breadcrumbs-top .breadcrumb-chevron {
            margin: 0 2px;
            color: rgba(255, 255, 255, 0.35);
            font-size: 0.7rem;
            font-weight: 400;
            line-height: 1;
        }

        .header-breadcrumbs.breadcrumbs-top .breadcrumb-home-icon {
            width: 12px;
            height: 12px;
            flex-shrink: 0;
        }

        .ideal-conditions {
            display: none; /* Hidden on all pages - customization handled via dedicated customise page */
            margin-top: 12px;
            font-size: 0.85rem;
            color: rgba(255, 255, 255, 0.7);
            line-height: 1.5;
        }

        .ideal-conditions-label {
            font-weight: 400;
            color: rgba(255, 255, 255, 0.7);
        }
        
        .ideal-conditions-custom {
            display: flex;
            align-items: center;
            gap: 8px;
            flex-wrap: wrap;
        }
        
        .ideal-conditions-custom-label {
            font-weight: 600;
            color: #ff4500;
            font-size: 0.9rem;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            cursor: pointer;
            text-decoration: none;
        }
        
        .ideal-conditions-custom-label:hover {
            text-decoration: underline;
        }
        
        .ideal-conditions-compact {
            display: flex;
            flex-wrap: wrap;
            align-items: baseline;
            gap: 6px;
        }
        
        .ideal-conditions-spot-specific {
            font-weight: 500;
            color: rgba(255, 255, 255, 0.85);
        }
        
        .ideal-conditions-global-note {
            font-size: 0.8rem;
            color: rgba(255, 255, 255, 0.5);
            font-style: italic;
        }

        .ideal-conditions-customise {
            color: rgba(255, 255, 255, 0.6);
            text-decoration: none;
            margin-left: 4px;
            transition: color 0.2s ease;
            cursor: pointer;
        }

        .ideal-conditions-customise:hover {
            color: rgba(255, 255, 255, 0.9);
            text-decoration: underline;
        }

        /* Customization Modal */
        .customization-modal {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, 0.8);
            z-index: 10000;
            overflow-y: auto;
        }

        .customization-modal.active {
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 20px;
        }

        .customization-modal-content {
            background: #2a2a2a;
            border-radius: 12px;
            padding: 30px;
            max-width: 900px;
            width: 100%;
            max-height: 90vh;
            overflow-y: auto;
            box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
        }

        /* Tabs */
        .customization-tabs {
            display: flex;
            gap: 8px;
            margin-bottom: 24px;
            border-bottom: 1px solid rgba(255, 255, 255, 0.1);
        }

        .customization-tab {
            padding: 10px 20px;
            background: transparent;
            border: none;
            border-bottom: 2px solid transparent;
            color: rgba(255, 255, 255, 0.6);
            font-size: 0.9rem;
            font-weight: 600;
            cursor: pointer;
            transition: all 0.2s;
            margin-bottom: -1px;
        }

        .customization-tab:hover {
            color: rgba(255, 255, 255, 0.8);
        }

        .customization-tab.active {
            color: #ff4500;
            border-bottom-color: #ff4500;
        }

        .customization-tab-content {
            display: none;
        }

        .customization-tab-content.active {
            display: block;
        }

        /* Global Settings */
        .customization-global-section {
            background: rgba(255, 69, 0, 0.1);
            border: 1px solid rgba(255, 69, 0, 0.3);
            border-radius: 8px;
            padding: 16px;
            margin-bottom: 24px;
        }

        .customization-global-section-title {
            font-size: 1rem;
            font-weight: 600;
            color: #ff4500;
            margin-bottom: 12px;
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .customization-global-checkbox {
            display: flex;
            align-items: center;
            gap: 8px;
            margin-bottom: 12px;
        }

        .customization-global-checkbox input[type="checkbox"] {
            width: 18px;
            height: 18px;
            cursor: pointer;
        }

        .customization-global-checkbox label {
            font-size: 0.9rem;
            color: rgba(255, 255, 255, 0.8);
            cursor: pointer;
        }

        .customization-global-note {
            font-size: 0.8rem;
            color: rgba(255, 255, 255, 0.6);
            font-style: italic;
            margin-top: 8px;
        }

        .customization-modal-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 24px;
            padding-bottom: 16px;
            border-bottom: 1px solid rgba(255, 255, 255, 0.1);
        }

        .customization-modal-title {
            font-size: 1.5rem;
            font-weight: 700;
            color: #ffffff;
        }

        .customization-modal-close {
            background: transparent;
            border: none;
            color: #ffffff;
            font-size: 1.5rem;
            cursor: pointer;
            padding: 0;
            width: 32px;
            height: 32px;
            display: flex;
            align-items: center;
            justify-content: center;
            border-radius: 4px;
            transition: background-color 0.2s;
        }

        .customization-modal-close:hover {
            background: rgba(255, 255, 255, 0.1);
        }

        .customization-modal-reset:hover {
            background: rgba(255, 255, 255, 0.1);
            border-color: rgba(255, 255, 255, 0.5);
        }

        .customization-section {
            margin-bottom: 24px;
        }

        .customization-section-title {
            font-size: 1.1rem;
            font-weight: 600;
            color: #ffffff;
            margin-bottom: 12px;
        }

        .customization-field {
            margin-bottom: 16px;
        }

        .customization-field-label {
            display: block;
            font-size: 0.9rem;
            color: rgba(255, 255, 255, 0.8);
            margin-bottom: 6px;
        }

        .customization-field-input {
            width: 100%;
            padding: 8px 12px;
            background: #1a1a1a;
            border: 1px solid rgba(255, 255, 255, 0.2);
            border-radius: 6px;
            color: #ffffff;
            font-size: 0.9rem;
        }

        .customization-field-input:focus {
            outline: none;
            border-color: #ff4500;
        }

        .customization-field-row {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 12px;
        }
        
        /* Tide & Swell Two-Column Layout */
        .tide-swell-columns {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 24px;
        }
        
        .tide-swell-column {
            display: flex;
            flex-direction: column;
            gap: 16px;
        }
        
        /* Tide Type and Window Cards */
        .tide-type-window-cards {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 16px;
            margin-bottom: 8px;
        }
        
        .tide-type-card,
        .tide-window-card {
            background: rgba(255, 255, 255, 0.08);
            border: 1px solid rgba(255, 255, 255, 0.15);
            border-radius: 8px;
            padding: 16px;
            display: flex;
            flex-direction: column;
            gap: 12px;
        }
        
        .tide-window-card {
            background: rgba(32, 162, 6, 0.15);
            border-color: rgba(32, 162, 6, 0.3);
        }
        
        .tide-card-label {
            font-size: 0.75rem;
            color: rgba(255, 255, 255, 0.7);
            text-transform: uppercase;
            letter-spacing: 0.5px;
            font-weight: 600;
        }
        
        .tide-type-select,
        .tide-window-select {
            width: 100%;
            padding: 12px 16px;
            background: rgba(255, 255, 255, 0.1);
            border: 1px solid rgba(255, 255, 255, 0.2);
            border-radius: 6px;
            color: #ffffff;
            font-size: 1.1rem;
            font-weight: 600;
            font-family: 'Ubuntu', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
            cursor: pointer;
            appearance: none;
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23ffffff' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
            background-repeat: no-repeat;
            background-position: right 12px center;
            padding-right: 40px;
        }
        
        .tide-type-select:focus,
        .tide-window-select:focus {
            outline: none;
            border-color: #ff4500;
            background-color: rgba(255, 255, 255, 0.15);
        }
        
        .tide-window-select {
            font-size: 1.5rem;
            text-align: center;
        }
        
        .tide-card-subtitle {
            font-size: 0.7rem;
            color: rgba(255, 255, 255, 0.5);
            font-style: italic;
        }
        
        @media (max-width: 768px) {
            .tide-swell-columns {
                grid-template-columns: 1fr;
                gap: 24px;
            }
            
            .tide-type-window-cards {
                grid-template-columns: 1fr;
            }
        }

        /* Range Slider Styles */
        .range-slider-container {
            margin: 20px 0;
        }

        .range-slider-labels {
            display: flex;
            justify-content: space-between;
            font-size: 0.75rem;
            color: rgba(255, 255, 255, 0.6);
            margin-bottom: 4px;
        }

        .range-slider-track {
            position: relative;
            height: 6px;
            background: rgba(255, 255, 255, 0.2);
            border-radius: 3px;
            margin: 10px 0;
        }

        .range-slider-fill {
            position: absolute;
            height: 100%;
            background: #ff4500;
            border-radius: 3px;
            pointer-events: none;
        }

        .range-slider-values {
            display: flex;
            align-items: center;
            gap: 8px;
            margin-top: 10px;
            justify-content: center;
        }

        .range-slider-input {
            width: 60px;
            padding: 6px 8px;
            background: rgba(255, 255, 255, 0.1);
            border: 1px solid rgba(255, 255, 255, 0.2);
            border-radius: 4px;
            color: #fff;
            font-size: 0.9rem;
            text-align: center;
        }

        .range-slider-input:focus {
            outline: none;
            border-color: #ff4500;
        }

        .range-slider-handle {
            position: absolute;
            width: 20px;
            height: 20px;
            background: #ff4500;
            border: 2px solid #ffffff;
            border-radius: 50%;
            cursor: grab;
            top: 50%;
            transform: translate(-50%, -50%);
            z-index: 2;
            transition: transform 0.1s;
        }

        .range-slider-handle:active {
            cursor: grabbing;
            transform: translate(-50%, -50%) scale(1.2);
        }

        .range-slider-handle:hover {
            transform: translate(-50%, -50%) scale(1.1);
        }

        .range-slider-marker {
            position: absolute;
            width: 4px;
            height: 20px;
            background: #4caf50;
            border: 1px solid #ffffff;
            border-radius: 2px;
            cursor: grab;
            top: 50%;
            transform: translate(-50%, -50%);
            z-index: 3;
            transition: transform 0.1s;
            box-shadow: 0 0 4px rgba(76, 175, 80, 0.5);
        }

        .range-slider-marker:active {
            cursor: grabbing;
            transform: translate(-50%, -50%) scale(1.2);
        }

        .range-slider-marker:hover {
            transform: translate(-50%, -50%) scale(1.15);
            box-shadow: 0 0 6px rgba(76, 175, 80, 0.8);
        }

        .customization-checkbox-group {
            display: grid;
            grid-template-columns: repeat(8, 1fr);
            gap: 8px;
            margin-top: 8px;
        }

        /* Wind Rose */
        .wind-rose-container {
            display: flex;
            justify-content: center;
            align-items: center;
            margin: 24px 0;
        }

        .wind-rose {
            position: relative;
            width: 300px;
            height: 300px;
            border-radius: 50%;
            background: rgb(138 165 218 / 43%);
            border: 2px solid rgba(255, 255, 255, 0.2);
        }

        .wind-rose-point {
            position: absolute;
            width: 40px;
            height: 40px;
            border-radius: 50%;
            background: rgba(255, 255, 255, 0.1);
            border: 2px solid rgba(255, 255, 255, 0.3);
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            transition: all 0.2s;
            font-size: 0.75rem;
            font-weight: 600;
            color: rgba(255, 255, 255, 0.7);
        }

        .wind-rose-point:hover {
            background: rgba(255, 255, 255, 0.2);
            transform: scale(1.1);
        }

        .wind-rose-point.selected {
            background: #4caf50;
            border-color: #ffffff;
            color: #ffffff;
        }

        .wind-rose-point.favourite {
            background: #ff4500;
            border-color: #ffffff;
            color: #ffffff;
            box-shadow: 0 0 8px rgba(255, 69, 0, 0.6);
        }

        .wind-rose-point.least-favourite {
            background: #f44336;
            border-color: #ffffff;
            color: #ffffff;
        }

        .wind-rose-center {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            width: 60px;
            height: 60px;
            border-radius: 50%;
            background: rgba(255, 255, 255, 0.1);
            border: 2px solid rgba(255, 255, 255, 0.3);
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 0.7rem;
            color: rgba(255, 255, 255, 0.6);
            pointer-events: none;
        }

        .customization-checkbox-item {
            display: flex;
            align-items: center;
            gap: 6px;
        }

        .customization-checkbox-item input[type="checkbox"] {
            width: 18px;
            height: 18px;
            cursor: pointer;
        }

        .customization-checkbox-item label {
            font-size: 0.9rem;
            color: rgba(255, 255, 255, 0.8);
            cursor: pointer;
        }

        .customization-schedule-grid {
            display: grid;
            gap: 12px;
        }

        .customization-schedule-day {
            background: rgb(138 165 218 / 43%);
            border-radius: 8px;
            padding: 12px;
            border: 1px solid rgba(255, 255, 255, 0.1);
        }


        .customization-schedule-windows {
            display: grid;
            gap: 4px;
            margin-top: 6px;
            margin-left: 24px;
        }

        .customization-schedule-window {
            display: flex;
            align-items: center;
            gap: 6px;
            padding: 4px 6px;
            background: rgba(255, 255, 255, 0.02);
            border-radius: 4px;
        }

        .customization-schedule-window-time {
            display: flex;
            align-items: center;
            gap: 4px;
            flex: 1;
        }

        .customization-schedule-window-time input[type="time"] {
            flex: 0 0 auto;
            width: 80px;
            padding: 4px 6px;
            background: rgb(138 165 218 / 43%);
            border: 1px solid rgba(255, 255, 255, 0.15);
            border-radius: 4px;
            color: #ffffff;
            font-size: 0.8rem;
        }
        
        .customization-schedule-window-time span {
            font-size: 0.75rem;
            color: rgba(255, 255, 255, 0.5);
        }

        .customization-schedule-window-actions {
            display: flex;
            gap: 4px;
        }

        .customization-schedule-window-button {
            background: transparent;
            border: 1px solid rgba(255, 255, 255, 0.15);
            color: rgba(255, 255, 255, 0.7);
            padding: 3px 6px;
            border-radius: 3px;
            cursor: pointer;
            font-size: 0.7rem;
            transition: all 0.2s;
        }

        .customization-schedule-window-button:hover {
            background: rgba(255, 255, 255, 0.1);
        }

        .customization-schedule-window-button.danger:hover {
            background: rgba(244, 67, 54, 0.3);
            border-color: #f44336;
        }

        .customization-schedule-add-window {
            margin-top: 4px;
            margin-left: 24px;
        }

        .customization-schedule-all-day {
            display: flex;
            align-items: center;
            gap: 8px;
            margin-top: 8px;
        }

        .customization-schedule-all-day input[type="checkbox"] {
            width: 18px;
            height: 18px;
            cursor: pointer;
        }

        .customization-schedule-all-day label {
            font-size: 0.9rem;
            color: rgba(255, 255, 255, 0.7);
            cursor: pointer;
        }

        .customization-modal-actions {
            display: flex;
            justify-content: flex-end;
            gap: 12px;
            margin-top: 24px;
            padding-top: 24px;
            border-top: 1px solid rgba(255, 255, 255, 0.1);
        }

        .customization-button {
            padding: 10px 20px;
            border-radius: 6px;
            font-size: 0.9rem;
            font-weight: 600;
            cursor: pointer;
            transition: all 0.2s;
            border: none;
        }

        .customization-button-primary {
            background: #ff4500;
            color: #ffffff;
        }

        .customization-button-primary:hover {
            background: #ff5500;
        }

        .customization-button-secondary {
            background: rgba(255, 255, 255, 0.1);
            color: #ffffff;
        }

        .customization-button-secondary:hover {
            background: rgba(255, 255, 255, 0.2);
        }

        .customization-button-danger {
            background: rgba(244, 67, 54, 0.2);
            color: #f44336;
        }

        .customization-button-danger:hover {
            background: rgba(244, 67, 54, 0.3);
        }

        /* Step-based customization wizard */
        .customization-step-progress {
            margin-bottom: 24px;
            padding-bottom: 16px;
            border-bottom: 1px solid rgba(255, 255, 255, 0.1);
        }

        .customization-step-title {
            font-size: 1.1rem;
            font-weight: 600;
            color: #ff4500;
            margin-bottom: 8px;
        }

        .customization-step-description {
            font-size: 0.9rem;
            color: rgba(255, 255, 255, 0.7);
            margin-bottom: 24px;
        }

        .standard-settings-display {
            display: flex;
            align-items: center;
            gap: 12px;
            padding: 12px 16px;
            background: rgba(255, 255, 255, 0.05);
            border: 1px solid rgba(255, 255, 255, 0.1);
            border-radius: 8px;
            flex-wrap: wrap;
        }

        .standard-settings-label {
            font-size: 0.9rem;
            font-weight: 600;
            color: rgba(255, 255, 255, 0.8);
        }

        .standard-settings-value {
            font-size: 0.9rem;
            color: rgba(255, 255, 255, 0.9);
            font-weight: 500;
        }

        .standard-settings-reset-btn {
            padding: 6px 12px;
            background: rgba(255, 69, 0, 0.2);
            border: 1px solid rgba(255, 69, 0, 0.4);
            border-radius: 6px;
            color: #ff4500;
            font-size: 0.85rem;
            font-weight: 600;
            cursor: pointer;
            transition: all 0.2s;
        }

        .standard-settings-reset-btn:hover {
            background: rgba(255, 69, 0, 0.3);
            border-color: rgba(255, 69, 0, 0.6);
        }

        .customization-step-content {
            display: none;
            min-height: 400px;
        }

        .customization-step-content.active {
            display: block;
        }

        .customization-step-navigation {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-top: 32px;
            margin-bottom: 30px;
            padding-top: 24px;
            padding-bottom: 0;
            border-top: 1px solid rgba(255, 255, 255, 0.1);
            position: sticky;
            bottom: 0;
            background: #2a2a2a;
            z-index: 10;
            margin-bottom: 0;
        }

        .customization-step-nav-button {
            padding: 10px 24px;
            border-radius: 6px;
            font-size: 0.9rem;
            font-weight: 600;
            cursor: pointer;
            transition: all 0.2s;
            border: none;
        }

        .customization-step-nav-button:disabled {
            opacity: 0.5;
            cursor: not-allowed;
        }

        .customization-step-nav-back {
            background: rgba(255, 255, 255, 0.1);
            color: #ffffff;
        }

        .customization-step-nav-back:hover:not(:disabled) {
            background: rgba(255, 255, 255, 0.2);
        }

        .customization-step-nav-next {
            background: #ff4500;
            color: #ffffff;
            margin-left: auto;
        }

        .customization-step-nav-next:hover:not(:disabled) {
            background: #ff5500;
        }

        .customization-step-selected-directions {
            text-align: center;
            margin-top: 16px;
            font-size: 0.9rem;
            color: rgba(255, 255, 255, 0.8);
        }

        .customization-step-selected-directions strong {
            color: #ff4500;
        }

        /* Rating Visualization for Step 2 */
        .rating-visualization-container {
            margin: 24px 0;
        }

        .rating-visualization-bar {
            position: relative;
            width: 100%;
            height: 40px;
            background: rgba(255, 255, 255, 0.1);
            border-radius: 8px;
            overflow: hidden;
            margin-bottom: 16px;
        }

        .rating-segment {
            position: absolute;
            height: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 0.75rem;
            font-weight: 600;
            color: #ffffff;
            text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
            border-right: 1px solid rgba(0, 0, 0, 0.2);
        }

        .rating-segment.poor {
            background: rgba(244, 67, 54, 0.6);
        }

        .rating-segment.fair {
            background: rgba(255, 205, 30, 0.6);
        }

        .rating-segment.good {
            background: rgba(11, 214, 116, 0.6);
        }

        .rating-segment.very-good {
            background: rgba(33, 150, 243, 0.6);
        }

        .rating-segment.epic {
            background: rgba(92, 0, 208, 0.6);
        }

        .rating-thresholds-list {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
            gap: 12px;
            margin-top: 16px;
        }

        .rating-threshold-item {
            padding: 12px;
            border-radius: 6px;
            border: 1px solid rgba(255, 255, 255, 0.1);
        }

        .rating-threshold-label {
            font-size: 0.9rem;
            font-weight: 600;
            margin-bottom: 4px;
            color: #ffffff;
        }

        .rating-threshold-item.poor {
            background: #dc4a6d;
        }

        .rating-threshold-item.fair {
            background: #eda641;
        }

        .rating-threshold-item.good {
            background: #006736;
        }

        .rating-threshold-item.very-good {
            background: #2592c2;
        }

        .rating-threshold-item.epic {
            background: #592e83;
        }

        .rating-threshold-range {
            font-size: 0.8rem;
            color: rgba(255, 255, 255, 0.95);
        }

        /* Schedule Interface for Step 3 */
        .schedule-quick-buttons {
            display: flex;
            gap: 12px;
            flex-wrap: wrap;
            margin-top: 12px;
        }

        .schedule-quick-btn {
            padding: 8px 16px;
            background: rgb(138 165 218 / 43%);
            border: 1px solid rgba(255, 255, 255, 0.15);
            border-radius: 6px;
            color: rgba(255, 255, 255, 0.8);
            font-size: 0.9rem;
            font-weight: 500;
            cursor: pointer;
            transition: all 0.2s;
        }

        .schedule-quick-btn:hover {
            background: rgba(255, 255, 255, 0.1);
            border-color: rgba(255, 255, 255, 0.25);
        }

        .schedule-quick-btn.active {
            background: #ff4500;
            border-color: #ff4500;
            color: #ffffff;
        }

        /* Schedule Grid - Google Ads Style */
        .schedule-grid-container {
            margin-top: 16px;
            overflow-x: auto;
        }

        .schedule-grid-wrapper {
            display: flex;
            min-width: fit-content;
        }

        .schedule-time-column {
            flex-shrink: 0;
        }

        .schedule-time-header {
            height: 40px;
            border-bottom: 1px solid rgba(255, 255, 255, 0.2);
        }

        .schedule-time-labels {
            display: flex;
            flex-direction: column;
        }

        .schedule-time-label {
            height: 12px;
            display: flex;
            align-items: center;
            padding-right: 8px;
            font-size: 0.6rem;
            color: rgba(255, 255, 255, 0.7);
            border-bottom: 1px solid rgba(255, 255, 255, 0.1);
            justify-content: flex-end;
        }

        .schedule-days-container {
            display: flex;
            flex: 1;
            border: 1px solid rgba(255, 255, 255, 0.2);
            border-radius: 4px;
            overflow: hidden;
        }

        .schedule-day-column {
            flex: 1;
            min-width: 60px;
            border-right: 1px solid rgba(255, 255, 255, 0.1);
        }

        .schedule-day-column:last-child {
            border-right: none;
        }

        .schedule-day-header {
            height: 40px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-weight: 600;
            font-size: 0.85rem;
            color: rgba(255, 255, 255, 0.9);
            background: rgba(255, 255, 255, 0.03);
            border-bottom: 1px solid rgba(255, 255, 255, 0.2);
        }

        .schedule-day-hours {
            position: relative;
            height: 288px; /* 24 hours * 12px - compressed to fit modal */
            background: rgba(255, 255, 255, 0.02);
        }

        .schedule-time-block {
            position: absolute;
            left: 4px;
            right: 4px;
            background: #20A206;
            border-radius: 4px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            padding: 4px 6px;
            gap: 2px;
            min-height: 24px;
            z-index: 2;
        }

        .schedule-time-block input[type="time"] {
            width: 100%;
            padding: 2px 4px;
            background: rgba(255, 255, 255, 0.95);
            border: 1px solid rgba(0, 0, 0, 0.2);
            border-radius: 3px;
            color: #000000;
            font-family: 'Ubuntu', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
            font-size: 0.7rem;
            font-weight: 600;
            text-align: center;
        }

        .schedule-time-block input[type="time"]:focus {
            outline: none;
            border-color: rgba(0, 0, 0, 0.4);
            background: #ffffff;
        }

        .schedule-time-block input[type="time"]::-webkit-calendar-picker-indicator {
            opacity: 1;
            cursor: pointer;
            filter: brightness(0);
        }

        .schedule-time-block input[type="time"]::-webkit-calendar-picker-indicator:hover {
            opacity: 0.8;
        }

        .schedule-block-delete-btn {
            position: absolute;
            top: 2px;
            right: 2px;
            width: auto;
            height: auto;
            padding: 5px;
            background: #CB3A3A;
            border: none;
            border-radius: 3px;
            color: #ffffff;
            font-size: 14px;
            font-weight: bold;
            line-height: 1;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            opacity: 0.9;
            transition: opacity 0.2s, background 0.2s;
        }

        .schedule-block-delete-btn:hover {
            opacity: 1;
            background: #B83030;
        }

        .schedule-block-copy-btn {
            position: absolute;
            top: 2px;
            left: 2px;
            width: auto;
            height: auto;
            padding: 5px;
            background: rgba(0, 0, 0, 0.4);
            border: none;
            border-radius: 3px;
            color: #ffffff;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            opacity: 0.8;
            transition: opacity 0.2s, background 0.2s;
        }

        .schedule-block-copy-btn:hover {
            opacity: 1;
            background: rgba(0, 0, 0, 0.6);
        }

        .schedule-block-copy-btn svg {
            width: 12px;
            height: 12px;
            fill: #ffffff;
        }

        .schedule-add-block-btn {
            position: absolute;
            bottom: 8px;
            left: 50%;
            transform: translateX(-50%);
            padding: 4px 8px;
            background: rgba(255, 255, 255, 0.1);
            border: 1px dashed rgba(255, 255, 255, 0.3);
            border-radius: 4px;
            color: rgba(255, 255, 255, 0.7);
            font-size: 0.7rem;
            cursor: pointer;
            z-index: 1;
        }

        .schedule-add-block-btn:hover {
            background: rgba(255, 255, 255, 0.15);
            border-color: rgba(255, 255, 255, 0.5);
        }

        .schedule-help-text {
            text-align: center;
        }

        .status-card {
            background-color: #2a2a2a;
            border-radius: 12px;
            padding: 20px;
            margin-bottom: 30px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
            text-align: center;
        }

        .status-card.viable {
            border: 2px solid #4caf50;
        }

        .status-card.not-viable {
            border: 2px solid #f44336;
        }

        .status-message {
            font-size: 1.5rem;
            font-weight: 600;
            margin-bottom: 10px;
        }

        .status-details {
            color: #cccccc;
            font-size: 0.9rem;
        }

        .current-conditions {
            /* background-color: #2a2a2a; */
            border-radius: 12px;
            /* padding: 0 20px; */
            padding: 0;
            margin-bottom: 30px;
            margin-top: 24px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
        }

        .current-conditions-title {
            color: #ffffff;
            font-size: 1.5rem;
            font-weight: 600;
            margin-bottom: 20px;
        }

        .current-conditions-cards {
            background: transparent;
            border-radius: 0;
            overflow: visible;
            box-shadow: none;
        }

        .current-conditions-grid {
            display: grid;
            grid-template-columns: 1.2fr 1fr 1.5fr 1.2fr 1.5fr 0.8fr;
            gap: 20px;
            align-items: start;
            width: 100%;
        }

        /* Column 6: single cell containing temp (temp-row + swell inside) */
        .current-conditions-temp {
            grid-column: 6;
            grid-row: 1;
            display: flex;
            flex-direction: column;
            gap: 8px;
        }
        .current-conditions-temp .current-conditions-swell {
            margin-top: 6px;
            padding: 0;
            max-width: 200px;
            margin-left: auto;
            margin-right: auto;
        }
        
        .current-conditions-rating {
            display: flex;
            flex-direction: column;
            gap: 0;
        }
        
        .knotnow-rating-container {
            border-radius: 8px;
            padding: 12px 16px;
            height: 160px;
            display: flex;
            flex-direction: column;
            justify-content: space-between;
            box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.3);
        }
        
        .knotnow-rating-header {
            display: flex;
            align-items: flex-start;
            gap: 8px;
            margin-bottom: 12px;
        }
        
        .knotnow-rating-logo {
            display: flex;
            align-items: center;
            justify-content: center;
            width: 16px;
            height: 16px;
            flex-shrink: 0;
            margin-top: 4px;
        }
        
        .knotnow-rating-logo svg {
            width: 100%;
            height: 100%;
        }
        
        .knotnow-rating-label {
            color: rgba(255, 255, 255, 0.9);
            font-size: 0.65rem;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            font-weight: 600;
            display: flex;
            flex-direction: column;
            gap: 2px;
        }
        .knotnow-rating-label-main {
            display: block;
        }
        .knotnow-rating-label-sub {
            display: block;
            font-size: 0.55rem;
            opacity: 0.9;
        }
        
        .knotnow-rating-display {
            display: flex;
            flex-direction: column;
            gap: 10px;
            align-items: flex-start;
        }
        
        .knotnow-rating-text {
            font-size: 1.8rem;
            font-weight: 700;
            line-height: 1;
            color: #ffffff;
        }
        
        .knotnow-rating-bars {
            display: flex;
            gap: 4px;
            width: 100%;
        }
        
        .knotnow-rating-bar {
            flex: 1;
            height: 10px;
            border-radius: 5px;
            transition: all 0.2s;
        }
        
        .knotnow-rating-bar.filled {
            background-color: #ffffff;
            border: 1px solid rgba(255, 255, 255, 0.3);
        }

        .current-conditions > * {
            min-width: 0;
        }

        /* Desktop only: ensure 6-column layout and no mobile grid-area leakage */
        @media (min-width: 769px) {
            .current-conditions-cards {
                background: transparent;
                box-shadow: none;
            }
            .current-conditions-grid {
                display: grid;
                grid-template-columns: 1.2fr 1fr 1.5fr 1.2fr 1.5fr 0.8fr;
                grid-template-areas: none;
                grid-template-rows: auto;
                gap: 20px;
            }
            /* Explicit placement: column 6 is .current-conditions-temp (contains temp-row + swell) */
            .current-conditions .current-conditions-rating {
                grid-column: 1;
                grid-row: 1;
            }
            .current-conditions .current-conditions-wind {
                grid-column: 2;
                grid-row: 1;
            }
            .current-conditions .satellite-wind-container {
                grid-column: 3;
                grid-row: 1;
            }
            .current-conditions .current-conditions-water {
                grid-column: 4;
                grid-row: 1;
            }
            .current-conditions .current-conditions-tide {
                grid-column: 5;
                grid-row: 1;
            }
            .current-conditions .current-conditions-temp {
                grid-column: 6;
                grid-row: 1;
                display: flex;
                flex-direction: column;
                gap: 8px;
            }
            .current-conditions .current-conditions-temp .current-conditions-swell {
                margin-top: 6px;
                padding: 0;
                max-width: 200px;
                margin-left: auto;
                margin-right: auto;
            }
            .current-conditions .current-conditions-temp-row {
                display: flex;
                flex-direction: row;
                gap: 16px;
                align-items: flex-start;
                flex: 1;
            }
            .current-conditions .current-conditions-temp-item {
                display: flex;
                flex-direction: column;
                align-items: center;
                gap: 4px;
                flex: 1;
            }
        }

        .current-conditions-wind {
            display: flex;
            flex-direction: column;
            gap: 12px;
        }

        .current-conditions-water {
            display: flex;
            flex-direction: column;
            perspective: 1000px;
            gap: 12px;
        }

        .wind-speed-card {
            background-color: #1a1a1a;
            border-radius: 8px;
            padding: 12px 16px;
            text-align: center;
            height: 160px;
            display: flex;
            flex-direction: column;
            justify-content: flex-start;
            align-items: center;
            box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.3);
        }

        .water-quality-card {
            background-color: #1a1a1a;
            border-radius: 8px;
            padding: 12px 16px;
            text-align: center;
            height: 160px;
            width: 100%;
            display: flex;
            flex-direction: column;
            justify-content: flex-start;
            align-items: center;
            box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.3);
            position: relative;
            transition: transform 0.3s ease;
        }

        /* Water Quality Metrics Grid */
        .water-quality-metrics-grid {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 24px;
            margin-bottom: 32px;
        }

        .water-quality-metric-card {
            border-radius: 12px;
            padding: 24px;
            min-height: 220px;
            display: flex;
            flex-direction: column;
            background-color: #5d4037 !important; /* Dark brown/maroon for dodgy/poor rating */
            color: #ffffff;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
            border: 1px solid rgba(255, 255, 255, 0.1);
        }
        
        /* Override for good rating cards */
        .water-quality-metric-card[style*="background-color: #1565c0"],
        .water-quality-metric-card[style*="background-color: rgb(21, 101, 192)"] {
            background-color: #1565c0 !important; /* Dark blue for good rating */
        }
        
        /* Override for fair rating cards */
        .water-quality-metric-card[style*="background-color: #3a3a3a"],
        .water-quality-metric-card[style*="background-color: rgb(58, 58, 58)"] {
            background-color: #3a3a3a !important; /* Dark grey for fair rating */
        }

        .water-quality-metric-label {
            font-size: 0.9rem;
            color: rgba(255, 255, 255, 0.9);
            margin-bottom: 12px;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            font-weight: 600;
        }

        .water-quality-metric-rating {
            font-size: 2.5rem;
            font-weight: 700;
            color: #ffffff;
            margin-bottom: 12px;
        }

        .water-quality-active-discharge {
            display: flex;
            align-items: center;
            gap: 8px;
            margin-top: 8px;
            margin-bottom: 12px;
        }

        .water-quality-active-discharge-icon {
            font-size: 1.8rem;
        }

        .water-quality-active-discharge-text {
            font-size: 1.3rem;
            font-weight: 700;
            color: #ffffff;
        }

        .water-quality-event-details {
            font-size: 0.95rem;
            color: rgba(255, 255, 255, 0.95);
            margin-top: 20px;
            font-weight: 700;
            margin-bottom: 12px;
        }

        .water-quality-total-hours {
            font-size: 0.85rem;
            color: rgba(255, 255, 255, 0.8);
            margin-bottom: 16px;
        }

        .water-quality-discharge-list {
            margin-top: 8px;
            display: flex;
            flex-direction: column;
            gap: 8px;
        }

        .water-quality-discharge-item {
            font-size: 0.9rem;
            color: rgba(255, 255, 255, 0.9);
            padding: 8px;
            background: rgba(0, 0, 0, 0.2);
            border-radius: 4px;
        }

        .water-quality-discharge-hours {
            font-size: 0.85rem;
            opacity: 0.8;
        }

        .water-quality-discharge-distance {
            font-size: 0.85em;
            font-style: italic;
            opacity: 0.9;
        }

        .water-quality-discharge-status-active {
            color: #ffcc80;
            font-weight: 600;
        }

        .water-quality-discharge-status-stopped {
            color: #b0bec5;
            font-weight: 600;
        }

        .water-quality-discharge-hours-value {
            font-weight: 600;
            color: rgba(255, 255, 255, 0.95);
        }

        .water-quality-no-events {
            font-size: 0.9rem;
            color: rgba(255, 255, 255, 0.7);
            margin-top: 16px;
            text-align: center;
        }
        
        .water-quality-card {
            cursor: pointer;
            transition: transform 0.6s;
            transform-style: preserve-3d;
            perspective: 1000px;
            position: relative;
        }
        
        .water-quality-card:hover:not(.no-flip) {
            transform: rotateY(180deg);
        }
        
        /* Disable flip for "good" rating cards with no discharges */
        .water-quality-card.no-flip {
            cursor: default;
        }
        
        .water-quality-card.no-flip:hover {
            transform: none;
        }
        
        .water-quality-card-front {
            top: 0px !important;
        }

        .water-quality-card-front .water-label {
            position: relative;
            top: 0 !important;
            margin-top: 0 !important;
            padding-top: 0 !important;
            transform: translateY(0) !important;
        }

        .water-quality-card-front,
        .water-quality-card-back {
            position: absolute;
            width: 100%;
            height: 100%;
            backface-visibility: hidden;
            display: flex;
            flex-direction: column;
            justify-content: flex-start;
            align-items: center;
            padding: 12px 16px;
            box-sizing: border-box;
            top: 0;
            left: 0;
        }
        
        .water-quality-card-front {
            transform: rotateY(0deg);
            backface-visibility: hidden;
        }
        
        .water-quality-card-back {
            transform: rotateY(180deg);
            backface-visibility: hidden;
            justify-content: flex-start;
            padding-top: 12px;
        }

        .water-quality-card.rating-good {
            background-color: #1565c0; /* Dark blue - distinct from V. GOOD (#2592c2) and EPIC (#592e83), readable with white text */
        }

        .water-quality-card.rating-fair {
            background-color: #3a3a3a;
        }

        .water-quality-card.rating-poor {
            background-color: #5d4037;
        }

        .water-label {
            color: rgba(255, 255, 255, 0.7);
            font-size: 0.65rem;
            text-transform: uppercase;
            letter-spacing: 1px;
            margin-bottom: 8px;
            margin-top: 0;
            padding-top: 0;
            top: 0;
            position: relative;
            font-weight: 600;
            height: 14px; /* Match wind label height exactly */
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 6px;
            line-height: 14px;
        }

        .water-rating-value {
            font-size: 2rem;
            font-weight: 700;
            line-height: 1;
            margin-bottom: 8px;
            margin-top: 0;
            color: #ffffff;
        }
        
        .water-discharge-number {
            font-size: 1.4rem;
            font-weight: 700;
            line-height: 1;
            color: #ffffff;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 6px;
            /* margin-bottom: 4px; */
        }
        
        .water-discharge-number .hazard-icon {
            font-size: 1.2rem;
            line-height: 1;
        }

        .water-spills-list {
            width: 100%;
            font-size: 0.65rem;
            color: rgba(255, 255, 255, 0.9);
            margin-top: auto;
            text-align: center;
            display: flex;
            flex-direction: column;
            gap: 4px;
        }

        .water-spills-item {
            padding: 2px 0;
            font-size: 0.65rem;
            line-height: 1.4;
        }
        
        .water-spills-item-label {
            font-size: 0.55rem;
            color: rgba(255, 255, 255, 0.7);
            text-transform: uppercase;
            letter-spacing: 0.5px;
        }
        
        .water-discharge-details {
            font-size: 0.75rem;
            color: rgba(255, 255, 255, 0.9);
            line-height: 1.6;
            text-align: center;
            width: 100%;
        }
        
        .water-discharge-details-item {
            margin-bottom: 2px;
            font-weight: 500;
            line-height: 1.3;
        }

        .water-quality-info-link {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 16px;
            height: 16px;
            border-radius: 50%;
            background: rgba(255, 255, 255, 0.2);
            color: rgba(255, 255, 255, 0.8);
            text-decoration: none;
            font-size: 11px;
            font-weight: 600;
            transition: all 0.2s;
            line-height: 1;
            font-style: italic;
        }

        .water-quality-info-link:hover {
            background: rgba(255, 255, 255, 0.4);
            color: #ffffff;
            transform: scale(1.1);
        }

        .wind-label {
            color: rgba(255, 255, 255, 0.7);
            font-size: 0.65rem;
            text-transform: uppercase;
            letter-spacing: 1px;
            margin-bottom: 8px;
            font-weight: 600;
        }

        .wind-speed-value {
            font-size: 2rem;
            font-weight: 700;
            line-height: 1;
            margin-bottom: 4px;
        }

        .wind-speed-direction {
            font-size: 1rem;
            font-weight: 600;
            margin-bottom: 4px;
            opacity: 0.9;
        }

        .wind-speed-gusts {
            font-size: 0.85rem;
            opacity: 0.7;
            margin-top: 4px;
        }

        .current-conditions-tide {
            display: flex;
            flex-direction: column;
            gap: 0;
            height: 160px;
            background-color: transparent;
            border-radius: 8px;
            padding: 0;
            overflow: hidden;
            position: relative;
            justify-content: flex-start;
        }

        .tide-label {
            font-size: 0.65rem;
            color: rgba(255, 255, 255, 0.6);
            margin-bottom: 6px;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            font-weight: 600;
        }

        .tide-height-display {
            font-size: 1.5rem;
            position: relative;
            z-index: 10;
            font-weight: 700;
            color: #ffffff;
            line-height: 1.2;
            margin-bottom: 8px;
        }

        .tide-chart-wrapper {
            flex: 1;
            display: flex;
            align-items: flex-end;
            min-height: 0;
            overflow: hidden;
            position: relative;
            z-index: 1;
        }

        .tide-chart-wrapper > div {
            width: 100%;
            height: 100%;
            display: flex;
            align-items: flex-end;
        }

        .tide-chart-wrapper svg {
            display: block;
            width: 100%;
            height: auto;
            max-height: 100%;
        }

        .tide-current-wrapper {
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .tide-direction-arrow {
            width: 20px;
            height: 16px;
        }

        .current-conditions-temp {
            display: flex;
            flex-direction: column;
            gap: 8px;
            height: auto;
            min-height: 120px;
        }

        .current-conditions-swell {
            margin-top: 6px;
            padding: 0;
            max-width: 200px;
            margin-left: auto;
            margin-right: auto;
        }

        .swell-label {
            font-size: 0.65rem;
            color: rgba(255, 255, 255, 0.6);
            margin-bottom: 6px;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            font-weight: 600;
        }

        .swell-height {
            font-size: 18px;
            font-weight: 700;
            color: #ffffff;
            line-height: 1.2;
            margin-bottom: 4px;
            text-align: center;
        }

        .swell-details {
            display: flex;
            gap: 8px;
            align-items: baseline;
            justify-content: center;
            color: rgba(255, 255, 255, 0.8);
            font-size: 0.85rem;
            font-weight: 500;
        }

        .swell-direction {
            font-size: 0.85rem;
            color: rgba(255, 255, 255, 0.8);
        }

        .current-conditions-temp-row {
            display: flex;
            flex-direction: row;
            gap: 16px;
            align-items: flex-start;
            flex: 1;
        }

        .current-conditions-temp-item {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 4px;
            flex: 1;
        }

        .current-conditions-swell {
            margin-top: 6px;
            padding: 0;
            max-width: 200px;
            margin-left: auto;
            margin-right: auto;
        }

        .swell-label {
            font-size: 0.65rem;
            color: rgba(255, 255, 255, 0.6);
            margin-bottom: 6px;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            font-weight: 600;
        }

        .swell-height {
            font-size: 18px;
            font-weight: 700;
            color: #ffffff;
            line-height: 1.2;
            margin-bottom: 4px;
            text-align: center;
        }

        .swell-details {
            display: flex;
            gap: 8px;
            align-items: baseline;
            justify-content: center;
            color: rgba(255, 255, 255, 0.8);
            font-size: 0.85rem;
            font-weight: 500;
        }

        .swell-direction {
            font-size: 0.85rem;
            color: rgba(255, 255, 255, 0.7);
        }

        .temp-icon {
            width: 16px;
            height: 16px;
            margin-bottom: 4px;
        }

        .temp-value {
            font-size: 1.25rem;
            font-weight: 600;
            color: #ffffff;
            line-height: 1.2;
        }

        .temp-row {
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .temp-item {
            display: flex;
            align-items: center;
            gap: 6px;
            flex: 1;
        }

        .tide-current-display {
            font-size: 1.5rem;
            font-weight: 700;
            color: #ffffff;
            line-height: 1.2;
            margin-bottom: 4px;
        }

        .temp-label {
            font-size: 0.75rem;
            color: rgba(255, 255, 255, 0.7);
            margin-top: 2px;
        }

        .tide-times-list {
            display: flex;
            flex-direction: column;
            gap: 6px;
            font-size: 0.9rem;
        }

        .tide-time-item {
            display: flex;
            justify-content: space-between;
            padding: 4px 0;
            border-bottom: 1px solid rgba(255, 255, 255, 0.1);
        }

        .tide-time-item:last-child {
            border-bottom: none;
        }

        .tide-time-label {
            color: #66b3ff;
            font-weight: 600;
        }

        .tide-time-value {
            color: #ffffff;
        }

        .current-conditions-temp {
            display: flex;
            flex-direction: column;
            gap: 4px;
            width: 100%;
            max-width: 100%;
        }

        .wind-info-box {
            display: inline-block;
            background-color: #1a1a1a;
            border: 1px solid #444;
            border-radius: 6px;
            padding: 6px 10px;
            margin: 4px 4px 4px 0;
            font-size: 0.85rem;
            font-weight: 600;
            color: #ffffff;
        }

        .wind-info-label {
            font-size: 0.7rem;
            color: #888;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            margin-bottom: 4px;
        }

        .condition-card {
            display: flex;
            flex-direction: column;
            gap: 2px;
            min-width: 0;
        }

        .condition-card-title {
            color: #888;
            font-size: 0.7rem;
            text-transform: uppercase;
            letter-spacing: 1px;
            margin: 0 0 8px 0;
            line-height: 1.2;
            font-weight: 600;
        }

        .condition-card-value {
            color: #ffffff;
            font-size: 1rem;
            font-weight: 600;
            margin: 0;
            display: flex;
            align-items: center;
            gap: 4px;
            line-height: 1.3;
        }

        .condition-card-detail {
            color: #cccccc;
            font-size: 0.65rem;
            margin: 0;
            line-height: 1.2;
        }

        .condition-icon {
            width: 12px;
            height: 16px;
            display: inline-block;
            vertical-align: middle;
        }

        .condition-icon svg {
            width: 100%;
            height: 100%;
        }

        .satellite-wind-container {
            position: relative;
            width: 100%;
            height: 160px;
            border-radius: 8px;
            overflow: hidden;
            background: linear-gradient(135deg, #0d3a4a 0%, #1a5a6f 30%, #2d7a8f 60%, #4a9aaf 100%);
        }

        .satellite-image {
            width: 100%;
            height: 100%;
            position: absolute;
            top: 0;
            left: 0;
            background: linear-gradient(135deg, #1a4a5c 0%, #2d6a7f 50%, #4a8fa8 100%);
            background-size: cover;
            background-position: center;
        }

        .satellite-image img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            transition: opacity 0.3s;
        }

        .wind-rose-overlay {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
            z-index: 10;
        }

        .wind-rose-compass {
            width: 164px;
            height: 148px;
            position: relative;
        }

        .wind-arrow-overlay {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            z-index: 20;
        }

        .wind-arrow-svg {
            width: 55px;
            height: 55px;
            fill: #ffffff;
        }

        .wind-speed-display {
            position: absolute;
            bottom: 8px;
            left: 50%;
            transform: translateX(-50%);
            background: rgba(0, 0, 0, 0.6);
            padding: 4px 8px;
            border-radius: 4px;
            color: #ffffff;
            font-size: 0.75rem;
            font-weight: 600;
            z-index: 10;
        }

        .tide-chart-container {
            display: none !important; /* DISABLED - Old format */
            background-color: #2a2a2a;
            border-radius: 12px;
            padding: 20px;
            margin-bottom: 20px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
        }

        .tide-chart {
            position: relative;
            width: 100%;
            height: 200px;
            margin-top: 10px;
        }

        .tide-chart-title {
            color: #ff4500;
            font-size: 1.1rem;
            font-weight: 600;
            margin-bottom: 10px;
        }

        .tide-chart-info {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 10px;
            font-size: 0.9rem;
            color: #cccccc;
        }

        .tide-current {
            font-size: 1.5rem;
            font-weight: 600;
            color: #ffffff;
        }

        .tide-current-direction {
            font-size: 0.8rem;
            color: #888;
            margin-left: 5px;
        }

        .tide-chart-svg {
            width: 100%;
            height: 100%;
        }

        .tide-curve {
            fill: rgba(100, 150, 255, 0.3);
            stroke: #6496ff;
            stroke-width: 2;
        }

        .tide-current-line {
            stroke: #ffffff;
            stroke-width: 2;
            stroke-dasharray: 5, 5;
        }

        .tide-marker-text {
            fill: #ff4500;
            font-size: 11px;
            font-weight: 600;
        }

        .tide-time-marker {
            stroke: #444;
            stroke-width: 1;
        }

        .tide-time-label {
            fill: #888;
            font-size: 10px;
        }

        .loading {
            text-align: center;
            padding: 40px;
            color: #ff4500;
            font-size: 1.2rem;
        }

        .error {
            background-color: #2a2a2a;
            border-radius: 12px;
            padding: 20px;
            margin-bottom: 30px;
            border: 2px solid #f44336;
            color: #ffcccc;
        }

        .forecast-table-container {
            display: none !important; /* DISABLED - Old format */
            background-color: #2a2a2a;
            border-radius: 12px;
            padding: 20px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
            overflow-x: auto;
        }

        .tide-station-info {
            margin-top: 20px;
            padding-top: 15px;
            border-top: 1px solid rgba(255, 255, 255, 0.1);
            font-size: 0.85rem;
            color: rgba(255, 255, 255, 0.7);
            line-height: 1.6;
        }

        .tide-station-info a {
            color: rgba(255, 255, 255, 0.9);
            text-decoration: underline;
            text-decoration-color: rgba(255, 255, 255, 0.3);
            transition: text-decoration-color 0.2s;
        }

        .tide-station-info a:hover {
            text-decoration-color: rgba(255, 255, 255, 0.6);
        }

        table {
            width: 100%;
            border-collapse: collapse;
            margin-top: 10px;
        }

        thead {
            background-color: #333333;
        }

        th {
            padding: 12px;
            text-align: left;
            font-weight: 600;
            color: #ff4500;
            border-bottom: 2px solid #444444;
        }

        td {
            padding: 12px;
            border-bottom: 1px solid #444444;
        }

        tr:hover {
            background-color: #333333;
        }

        .wind-speed-too-light {
            color: #888888;
        }

        .wind-speed-light {
            color: #4caf50;
            font-weight: 600;
        }

        .wind-speed-moderate {
            color: #ffeb3b;
            font-weight: 600;
        }

        .wind-speed-strong {
            color: #ff9800;
            font-weight: 600;
        }

        .wind-speed-very-strong {
            color: #f44336;
            font-weight: 600;
        }

        .tide-window {
            color: #4caf50;
            font-weight: 600;
        }

        .schedule-valid {
            color: #4caf50;
        }

        .schedule-invalid {
            color: #f44336;
        }

        .wind-direction-valid {
            color: #4caf50;
            font-weight: 600;
        }

        .wind-direction-invalid {
            color: #f44336;
        }

        .session-viable {
            background-color: rgba(76, 175, 80, 0.2);
        }

        .session-not-viable {
            opacity: 0.5;
        }

        .info-section {
            background-color: #2a2a2a;
            border-radius: 12px;
            padding: 20px;
            margin-bottom: 20px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
        }

        .info-section h2 {
            color: #ff4500;
            margin-bottom: 15px;
            font-size: 1.3rem;
        }

        .info-item {
            margin-bottom: 10px;
            padding: 8px 0;
            border-bottom: 1px solid #444444;
        }

        .info-item:last-child {
            border-bottom: none;
        }

        .info-label {
            font-weight: 600;
            color: #ff4500;
            display: inline-block;
            width: 150px;
        }

        .compact-info {
            background-color: #2a2a2a;
            border-radius: 12px;
            padding: 15px 20px;
            margin-bottom: 20px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
            font-size: 1rem;
        }

        .settings-toggle {
            margin-top: 15px;
            padding: 10px;
            background-color: #333333;
            border-radius: 8px;
            cursor: pointer;
            user-select: none;
            transition: background-color 0.2s;
        }

        .settings-toggle:hover {
            background-color: #3a3a3a;
        }

        .settings-toggle::before {
            content: '▶ ';
            display: inline-block;
            transition: transform 0.2s;
            margin-right: 8px;
        }

        .settings-toggle.expanded::before {
            transform: rotate(90deg);
        }

        .settings-content {
            max-height: 0;
            overflow: hidden;
            transition: max-height 0.3s ease-out;
            margin-top: 10px;
        }

        .settings-content.expanded {
            max-height: 500px;
        }

        .settings-item {
            padding: 8px 0;
            border-bottom: 1px solid #444444;
        }

        .settings-item:last-child {
            border-bottom: none;
        }

        .settings-label {
            font-weight: 600;
            color: #ff4500;
            display: inline-block;
            width: 180px;
        }

        /* Load more – hidden on desktop, shown on mobile only (in @media 768px) */
        .wind-band-load-more {
            display: none;
        }

        .wind-band-section {
            background-color: #2a2a2a;
            border-radius: 12px;
            padding: 16px;
            margin-bottom: 20px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
            position: relative;
        .wind-band-global-toggle {
            position: absolute;
            top: 16px;
            right: 16px;
            z-index: 10;
        }
        
        .wind-band-toggle-btn {
            background: rgba(255, 255, 255, 0.1);
            border: 1px solid rgba(255, 255, 255, 0.2);
            border-radius: 4px;
            color: rgba(255, 255, 255, 0.8);
            padding: 4px 8px;
            font-size: 0.75rem;
            cursor: pointer;
            display: flex;
            align-items: center;
            gap: 4px;
            transition: all 0.2s;
        }
        
        .wind-band-toggle-btn:hover {
            background: rgba(255, 255, 255, 0.15);
            border-color: rgba(255, 255, 255, 0.3);
        }
        
        .wind-band-toggle-btn .toggle-label {
            font-size: 0.75rem;
            font-weight: 500;
        }

        }

        /* Desktop: wind-band expand – card-style like forecast-condition-card, left-aligned */
        .wind-band-expand-wrap {
            padding: 16px 12px;
            text-align: left;
            margin-top: 12px;
            border-top: 1px solid rgba(255, 255, 255, 0.15);
        }
        .wind-band-expand-btn {
            display: inline-block;
            padding: 14px 20px;
            background: rgb(211, 60, 149);
            border: 1px solid rgba(0, 0, 0, 0.1);
            border-radius: 8px;
            color: #ffffff;
            font-weight: 600;
            font-size: 0.95rem;
            cursor: pointer;
            transition: background 0.2s, border-color 0.2s;
        }
        .wind-band-expand-btn:hover {
            background: rgb(195, 50, 135);
            border-color: rgba(0, 0, 0, 0.15);
        }

        /* Mobile-only water quality bar: full-width bar replacing current-conditions on forecast pages */
        .water-quality-bar {
            display: none;
            margin-top: 24px;
            margin-bottom: 16px;
        }
        .water-quality-bar-inner {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 8px 16px;
            padding: 10px 14px;
            border-radius: 8px;
            color: #ffffff;
            font-size: 0.85rem;
        }
        .water-quality-bar-col {
            flex: 0 0 auto;
        }
        .water-quality-bar-label {
            opacity: 0.85;
        }
        .water-quality-bar-rating {
            font-weight: 600;
        }
        .water-quality-bar-link {
            color: #ffffff;
            text-decoration: underline;
            font-weight: 500;
        }

        .water-quality-snippet {
            background-color: #2a2a2a;
            border-radius: 12px;
            padding: 16px;
            margin-bottom: 20px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
        }

        .water-quality-snippet-content {
            display: flex;
            align-items: center;
            gap: 20px;
            flex-wrap: wrap;
        }

        .water-quality-snippet-card {
            background-color: #1a1a1a;
            border-radius: 8px;
            padding: 12px 16px;
            flex: 1;
            min-width: 200px;
            display: flex;
            flex-direction: column;
            gap: 8px;
        }

        .water-quality-snippet-card.rating-good {
            background-color: #1565c0; /* Dark blue - distinct from V. GOOD (#2592c2) and EPIC (#592e83), readable with white text */
        }

        .water-quality-snippet-card.rating-fair {
            background-color: #3a3a3a;
        }

        .water-quality-snippet-card.rating-poor {
            background-color: #5d4037;
        }

        .water-quality-snippet-label {
            color: rgba(255, 255, 255, 0.7);
            font-size: 0.65rem;
            text-transform: uppercase;
            letter-spacing: 1px;
            font-weight: 600;
        }

        .water-quality-snippet-rating {
            font-size: 1.5rem;
            font-weight: 700;
            color: #ffffff;
            line-height: 1;
        }

        .water-quality-snippet-spills {
            font-size: 0.75rem;
            color: rgba(255, 255, 255, 0.9);
            display: flex;
            flex-direction: column;
        }

        /* Tide Calendar Page Styles */
        .customise-page {
            max-width: 1200px;
            margin: 0 auto;
            padding: 20px;
        }

        .customise-page-content {
            background: #2a2a2a;
            border-radius: 12px;
            padding: 40px;
        }

        .customise-intro {
            margin-bottom: 40px;
        }

        .customise-intro h1 {
            color: #ffffff;
            font-size: 2rem;
            font-weight: 700;
            margin-bottom: 20px;
        }

        .customise-intro-text {
            color: rgba(255, 255, 255, 0.9);
            font-size: 1.1rem;
            line-height: 1.7;
            margin-bottom: 0;
        }

        .customise-intro-list {
            color: rgba(255, 255, 255, 0.9);
            font-size: 1.1rem;
            line-height: 1.7;
            margin: 16px 0;
            padding-left: 1.4em;
        }

        .customise-intro-list li {
            margin-bottom: 8px;
        }

        .customise-why-section {
            margin-bottom: 40px;
        }

        .customise-why-section h2 {
            color: #ffffff;
            font-size: 1.5rem;
            font-weight: 600;
            margin-bottom: 24px;
        }

        .customise-benefits {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 24px;
        }

        .customise-benefit-item {
            background: rgba(255, 255, 255, 0.05);
            border: 1px solid rgba(255, 255, 255, 0.1);
            border-radius: 8px;
            padding: 20px;
        }

        .customise-benefit-item h3 {
            color: #ffffff;
            font-size: 1.1rem;
            font-weight: 600;
            margin-bottom: 12px;
        }

        .customise-benefit-item p {
            color: rgba(255, 255, 255, 0.8);
            font-size: 0.95rem;
            line-height: 1.6;
            margin: 0;
        }

        .customization-content {
            margin-top: 40px;
        }

        .customization-settings-overview {
            margin-top: 40px;
            margin-bottom: 40px;
        }

        .customization-global-settings-section {
            background: rgba(0, 102, 153, 0.07);
            border: 1px solid rgba(0, 102, 153, 0.18);
            border-radius: 10px;
            padding: 20px 24px;
            margin: 24px 0;
        }

        .customization-global-settings-heading {
            font-size: 0.9rem;
            font-weight: 600;
            text-transform: uppercase;
            letter-spacing: 0.06em;
            color: #ffffff;
            margin: 0 0 6px 0;
        }

        .customization-global-settings-intro {
            font-size: 0.9rem;
            color: rgba(255, 255, 255, 0.6);
            margin: 0 0 20px 0;
            line-height: 1.5;
        }

        .customization-global-settings-section .customization-setting-card {
            margin-bottom: 20px;
        }

        .customization-global-settings-section .customization-setting-card:last-child {
            margin-bottom: 0;
        }

        .customization-setting-card {
            background: rgba(255, 255, 255, 0.05);
            border: 1px solid rgba(255, 255, 255, 0.1);
            border-radius: 8px;
            padding: 24px;
            margin-bottom: 20px;
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
        }

        .customization-setting-info {
            flex: 1;
        }
        
        .customization-setting-actions {
            display: flex;
            gap: 12px;
            align-items: center;
        }
        
        .customization-setting-reset-btn {
            background: transparent;
            border: 1px solid rgba(255, 255, 255, 0.3);
            color: rgba(255, 255, 255, 0.8);
            padding: 8px 16px;
            border-radius: 6px;
            font-size: 0.85rem;
            font-weight: 600;
            cursor: pointer;
            transition: all 0.2s;
        }
        
        .customization-setting-reset-btn:hover {
            background: rgba(255, 255, 255, 0.1);
            border-color: rgba(255, 255, 255, 0.5);
        }
        
        .wind-speed-thresholds-overview {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
            gap: 8px;
            margin-top: 12px;
        }
        
        .wind-speed-thresholds-overview .rating-threshold-item {
            display: flex;
            flex-direction: column;
            min-width: 0;
        }
        .wind-speed-thresholds-overview .rating-threshold-range {
            word-break: keep-all;
        }
        
        @media (max-width: 600px) {
            .wind-speed-thresholds-overview {
                grid-template-columns: repeat(2, minmax(0, 1fr));
            }
        }
        @media (max-width: 380px) {
            .wind-speed-thresholds-overview {
                grid-template-columns: 1fr;
            }
        }

        /* Customise page mobile: maximize usable width - strip padding that wastes space.
           On ~350px viewport, we need most of it for inputs; nested padding was leaving <150px usable. */
        @media (max-width: 768px) {
            body:has(#customise-page) {
                padding-left: 6px !important;
                padding-right: 6px !important;
            }
            #customise-page {
                padding: 12px 6px !important;
            }
            #customise-page .customise-page-content {
                padding: 16px 10px !important;
            }
            /* Override inline padding: 20px on .customization-global-section */
            #customise-page .customization-global-section {
                padding: 12px 8px !important;
            }
            #customise-page .customization-section {
                margin-left: 0;
                margin-right: 0;
            }
            .container:has(#customise-page) {
                padding-left: 6px !important;
                padding-right: 6px !important;
            }
        }

        /* Customise page mobile: cards stack, buttons below, centered */
        @media (max-width: 768px) {
            .customization-setting-card {
                flex-direction: column;
                align-items: center;
                text-align: center;
                padding: 20px 16px;
            }
            .customization-setting-info {
                text-align: center;
                width: 100%;
            }
            .customization-setting-actions {
                flex-direction: column;
                width: 100%;
                justify-content: center;
                align-items: center;
                margin-top: 16px;
                padding-top: 16px;
                border-top: 1px solid rgba(255, 255, 255, 0.1);
                gap: 10px;
            }
            .customization-setting-actions button {
                width: 100%;
                max-width: 200px;
            }
            /* Weekly schedule: one box per row on mobile */
            .schedule-overview-header,
            .schedule-overview-grid {
                grid-template-columns: 1fr !important;
            }
            /* Wind speed: full width on mobile */
            .wind-speed-thresholds-overview {
                grid-template-columns: 1fr !important;
            }
            /* Wind speed edit: hide squished dual-handle slider on mobile, full-width number inputs */
            #customise-page .range-slider-labels {
                display: none !important;
            }
            #customise-page .range-slider-track,
            #customise-page .range-slider-fill,
            #customise-page .range-slider-handle {
                display: none !important;
            }
            #customise-page .range-slider-values {
                display: flex !important;
                align-items: center;
                gap: 8px;
                margin-top: 0;
                width: 100%;
            }
            #customise-page .range-slider-input {
                flex: 1;
                min-width: 0;
                width: auto;
                max-width: none;
                padding: 10px 12px;
                font-size: 1.1rem;
                box-sizing: border-box;
            }
            #customise-page .range-slider-container {
                margin: 12px 0;
            }
            /* Wind speed range: strip padding/colour on mobile for more usable width */
            #customise-page .rating-visualization-container {
                display: none !important;
            }
            #customise-page .rating-thresholds-list {
                gap: 6px;
                margin-top: 12px;
            }
            #customise-page .rating-threshold-item {
                padding: 8px 6px;
                border-radius: 4px;
                border: none;
                background: rgba(255, 255, 255, 0.06) !important;
                border-left: 4px solid currentColor;
            }
            #customise-page .rating-threshold-item.poor { border-left-color: #dc4a6d; }
            #customise-page .rating-threshold-item.fair { border-left-color: #eda641; }
            #customise-page .rating-threshold-item.good { border-left-color: #006736; }
            #customise-page .rating-threshold-item.very-good { border-left-color: #2592c2; }
            #customise-page .rating-threshold-item.epic { border-left-color: #592e83; }
            #customise-page .rating-threshold-label {
                font-size: 0.85rem;
                margin-bottom: 2px;
            }
            #customise-page .rating-threshold-range {
                font-size: 0.9rem;
            }
            /* Schedule edit: stack days vertically on mobile for usable editing */
            #customise-page .schedule-grid-wrapper {
                flex-direction: column;
            }
            #customise-page .schedule-days-container {
                flex-direction: column;
                width: 100%;
            }
            #customise-page .schedule-day-column {
                min-width: 100%;
                width: 100%;
                border-right: none;
                border-bottom: 1px solid rgba(255, 255, 255, 0.2);
            }
            #customise-page .schedule-day-column:last-child {
                border-bottom: none;
            }
            #customise-page .schedule-time-column {
                display: none;
            }
            /* Sticky Save/Cancel on mobile so they're always visible when scrolling */
            #customise-page .customization-step-navigation {
                position: sticky;
                bottom: 0;
                left: 0;
                right: 0;
                background: rgba(26, 26, 26, 0.98);
                padding: 16px;
                margin-top: 24px;
                border-top: 1px solid rgba(255, 255, 255, 0.1);
                display: flex;
                gap: 12px;
                justify-content: center;
                z-index: 10;
            }
            #customise-page .customization-step-navigation button {
                flex: 1;
                max-width: 160px;
                padding: 12px 20px;
                font-size: 1rem;
            }
        }
        
        .schedule-grid-overview {
            margin-top: 12px;
        }
        
        .schedule-overview-header {
            display: grid;
            grid-template-columns: repeat(7, 1fr);
            gap: 4px;
            margin-bottom: 8px;
        }
        
        .schedule-overview-day-header {
            text-align: center;
            font-size: 0.75rem;
            color: rgba(255, 255, 255, 0.7);
            font-weight: 600;
            text-transform: uppercase;
        }
        
        .schedule-overview-grid {
            display: grid;
            grid-template-columns: repeat(7, 1fr);
            gap: 4px;
        }
        
        .schedule-overview-day-block {
            min-height: 60px;
            border-radius: 4px;
            padding: 8px;
            background: rgba(255, 255, 255, 0.05);
            display: flex;
            align-items: center;
            justify-content: center;
        }
        
        .schedule-overview-day-block.available {
            background: #006736;
        }
        
        .schedule-overview-day-block.unavailable {
            background: rgba(255, 255, 255, 0.05);
        }
        
        .schedule-overview-time-text {
            font-size: 0.7rem;
            color: #ffffff;
            text-align: center;
            line-height: 1.3;
            font-weight: 500;
        }
        
        .schedule-overview-time-text.unavailable-text {
            color: rgba(255, 255, 255, 0.4);
        }

        .customization-setting-label {
            font-size: 0.9rem;
            color: #ffffff;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            margin-bottom: 8px;
            font-weight: 600;
        }

        .customization-setting-value {
            font-size: 1.1rem;
            color: #ffffff;
            font-weight: 600;
        }

        .customization-setting-edit-btn {
            background: #ff4500;
            color: #ffffff;
            border: none;
            padding: 10px 20px;
            border-radius: 6px;
            font-size: 0.9rem;
            font-weight: 600;
            cursor: pointer;
            transition: background-color 0.2s;
        }

        .customization-setting-edit-btn:hover {
            background: #ff6633;
        }

        .customization-cancel-btn {
            background: transparent;
            border: 1px solid rgba(255, 255, 255, 0.3);
            color: #ffffff;
            padding: 6px 16px;
            border-radius: 6px;
            font-size: 0.85rem;
            cursor: pointer;
            transition: background-color 0.2s, border-color 0.2s;
        }

        .customization-cancel-btn:hover {
            background: rgba(255, 255, 255, 0.1);
            border-color: rgba(255, 255, 255, 0.5);
        }

        .customization-save-btn {
            background: #0d7377;
            border: 1px solid #0d7377;
            color: #ffffff;
            padding: 6px 16px;
            border-radius: 6px;
            font-size: 0.85rem;
            font-weight: 600;
            cursor: pointer;
            transition: background-color 0.2s, border-color 0.2s, color 0.2s;
        }

        .customization-save-btn:hover {
            background: #0e8a8f;
            border-color: #0e8a8f;
            color: #ffffff;
        }

        /* Desktop: Cancel/Save aligned right, same size as RESET/EDIT */
        @media (min-width: 769px) {
            #customise-page .customization-step-navigation {
                justify-content: flex-end;
                gap: 12px;
            }
            #customise-page .customization-cancel-btn,
            #customise-page .customization-save-btn {
                padding: 10px 20px;
                font-size: 0.9rem;
            }
        }

        /* Hide footer sections and nearby spots on customise page - handled in JavaScript */

        .guide-page {
            margin-top: 24px;
        }

        .tide-times-page {
            max-width: 1200px;
            margin: 0 auto;
        }

        .tide-times-page-section {
            max-width: 1200px;
            margin: 40px auto;
            padding: 0;
        }

        .tide-calendar-container {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 20px;
            margin-bottom: 40px;
        }

        .tide-calendar-day {
            background-color: #2a2a2a;
            border-radius: 12px;
            padding: 20px;
            border: 1px solid rgba(255, 255, 255, 0.1);
        }

        .tide-calendar-day.today {
            border: 2px solid rgba(237, 166, 65, 1);
            background-color: rgba(237, 166, 65, 0.1);
        }

        .tide-calendar-day-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: 15px;
            padding-bottom: 15px;
            border-bottom: 1px solid rgba(255, 255, 255, 0.1);
        }

        .tide-calendar-date {
            display: flex;
            flex-direction: column;
            gap: 4px;
        }

        .tide-calendar-day-name {
            font-size: 0.85rem;
            color: rgba(255, 255, 255, 0.6);
            text-transform: uppercase;
            letter-spacing: 1px;
        }

        .tide-calendar-day-number {
            font-size: 1.8rem;
            font-weight: 700;
            color: #ffffff;
            line-height: 1;
        }

        .tide-calendar-month {
            font-size: 0.9rem;
            color: rgba(255, 255, 255, 0.7);
        }

        .tide-type-badge {
            padding: 4px 12px;
            border-radius: 12px;
            font-size: 0.75rem;
            font-weight: 600;
            text-transform: uppercase;
            letter-spacing: 0.5px;
        }

        .tide-type-badge.spring {
            background-color: rgba(66, 179, 255, 1);
            color: #1a1a1a;
        }

        .tide-type-badge.neap {
            background-color: rgba(255, 205, 30, 1);
            color: #1a1a1a;
        }

        .moon-phase {
            font-size: 1.5rem;
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 4px;
        }

        .moon-phase-illumination {
            font-size: 0.65rem;
            color: rgba(255, 255, 255, 0.6);
            line-height: 1;
        }

        .tide-calendar-events {
            display: flex;
            flex-direction: column;
            gap: 8px;
        }

        .tide-event-row {
            display: flex;
            align-items: center;
            gap: 12px;
            padding: 8px 0;
        }

        .tide-event-type {
            font-weight: 700;
            font-size: 0.85rem;
            padding: 4px 8px;
            border-radius: 4px;
            min-width: 32px;
            text-align: center;
        }

        .tide-event-type.hw {
            background-color: rgba(102, 179, 255, 0.2);
            color: #66b3ff;
        }

        .tide-event-type.lw {
            background-color: rgba(128, 196, 255, 0.2);
            color: #80c4ff;
        }

        .tide-chart-mini {
            display: flex;
            align-items: flex-end;
            gap: 2px;
            height: 60px;
            margin-bottom: 8px;
            padding: 8px;
            background-color: rgba(0, 0, 0, 0.2);
            border-radius: 6px;
            position: relative;
        }
        
        .tide-chart-mini-wrapper {
            width: 100%;
        }

        .tide-chart-labels {
            display: flex;
            position: relative;
            margin-top: 4px;
            padding: 0;
            font-size: 0.65rem;
            color: rgba(255, 255, 255, 0.5);
        }

        .tide-chart-label {
            position: absolute;
            transform: translateX(-50%);
        }

        .tide-chart-label:first-child {
            left: 0%;
            transform: translateX(0);
            text-align: left;
        }

        .tide-chart-label:nth-child(2) {
            left: 25%; /* 06 is at 6/24 = 25% */
        }

        .tide-chart-label:nth-child(3) {
            left: 50%; /* 12 is at 12/24 = 50% */
        }

        .tide-chart-label:nth-child(4) {
            left: 75%; /* 18 is at 18/24 = 75% */
        }

        .tide-chart-label:last-child {
            left: 100%;
            transform: translateX(-100%);
            text-align: right;
        }

        .tide-chart-bar {
            flex: 1;
            background: linear-gradient(to top, rgba(102, 179, 255, 0.4), rgba(102, 179, 255, 0.7));
            border-radius: 2px 2px 0 0;
            min-height: 5%;
            transition: background 0.2s;
            position: relative;
            cursor: pointer;
        }

        .tide-chart-bar:hover {
            background: linear-gradient(to top, rgba(102, 179, 255, 0.6), rgba(102, 179, 255, 0.9));
        }
        
        .tide-bar-tooltip {
            position: absolute;
            bottom: calc(100% + 8px);
            left: 50%;
            transform: translateX(-50%);
            background: rgba(0, 0, 0, 0.95);
            color: #ffffff;
            padding: 8px 12px;
            border-radius: 6px;
            white-space: nowrap;
            z-index: 1000;
            font-size: 0.85rem;
            pointer-events: none;
            border: 1px solid rgba(255, 255, 255, 0.2);
            display: none;
        }
        
        .tide-chart-bar:hover .tide-bar-tooltip {
            display: block !important;
        }
        
        .tide-tooltip-time {
            font-weight: 600;
            margin-bottom: 4px;
            text-align: center;
        }
        
        .tide-tooltip-height {
            font-size: 0.9rem;
            opacity: 0.9;
        }

        .tide-event-time {
            font-weight: 600;
            color: #ffffff;
            min-width: 60px;
        }

        .tide-event-height {
            color: rgba(255, 255, 255, 0.7);
            font-size: 0.9rem;
        }

        .water-quality-snippet-spill-item {
            line-height: 1.4;
        }

        .favourites-section {
            background-color: #2a2a2a;
            border-radius: 12px;
            padding: 16px;
            margin-bottom: 20px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
        }

        .favourites-title {
            color: #ff4500;
            font-weight: 600;
            font-size: 1.1rem;
            margin-bottom: 12px;
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .favourites-columns {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
            gap: 8px;
        }

        .favourites-location-card {
            padding: 8px;
            border-radius: 8px;
            cursor: pointer;
            transition: all 0.2s ease;
            display: flex;
            flex-direction: column;
            justify-content: space-between;
            min-height: 100px;
            background-color: rgba(255, 255, 255, 0.05);
            border: 1px solid rgba(255, 255, 255, 0.1);
        }

        .favourites-location-card:hover {
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
            border-color: rgba(255, 255, 255, 0.2);
        }

        .favourites-location-name {
            font-weight: 600;
            color: #ffffff;
            text-align: center;
            font-size: 0.9rem;
            margin-bottom: 6px;
        }

        .favourites-location-status {
            text-align: center;
            font-size: 0.75rem;
            color: #cccccc;
            margin-top: auto;
        }

        .weekly-summary-title {
            color: #ff4500;
            font-weight: 600;
            font-size: 1.1rem;
            margin-bottom: 12px;
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .weekly-summary-heading {
            color: #ffffff;
            font-weight: 600;
            font-size: 1.2rem;
            margin-bottom: 16px;
        }

        .weekly-summary-columns {
            display: grid;
            grid-template-columns: repeat(5, 1fr);
            gap: 8px;
            margin-bottom: 12px;
        }
        
        /* Override for 14-day view - must come after base rule */
        .weekly-summary-columns.weekly-summary-14 {
            grid-template-columns: repeat(14, 1fr) !important;
        }
        
        /* 14-day view: smaller card width - make them fit better */
        .weekly-summary-columns.weekly-summary-14 .weekly-summary-day {
            min-width: 0;
            width: 100%;
            padding: 6px; /* Reduced padding */
            min-height: 100px; /* Reduced height */
        }
        
        /* Smaller fonts in 14-day view */
        .weekly-summary-columns.weekly-summary-14 .weekly-summary-day-star {
            font-size: 0.75rem;
            margin-bottom: 3px;
        }
        
        .weekly-summary-columns.weekly-summary-14 .weekly-summary-day-wind {
            font-size: 0.75rem;
        }
        
        .weekly-summary-columns.weekly-summary-14 .weekly-summary-day-wind-speed {
            font-size: 1.2rem; /* Reduced from 1.5rem */
        }
        
        .weekly-summary-columns.weekly-summary-14 .weekly-summary-day-wind-direction {
            font-size: 0.85rem; /* Reduced from 1rem */
        }
        
        .weekly-summary-columns.weekly-summary-14 .weekly-summary-day-wind-gusts {
            font-size: 0.7rem; /* Reduced from 0.75rem */
        }
        
        /* Nearby Spots Cards - Same style as weekly summary day cards */
        .nearby-spots-columns {
            display: grid;
            grid-template-columns: repeat(5, 1fr);
            gap: 8px;
            margin-bottom: 20px;
        }
        
        @media (max-width: 1200px) {
            .nearby-spots-columns {
                grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
            }
        }
        
        .nearby-spot-card {
            padding: 8px;
            border-radius: 8px;
            cursor: pointer;
            transition: all 0.2s ease;
            display: flex;
            flex-direction: column;
            justify-content: space-between;
            min-height: 120px;
            position: relative;
        }
        
        .nearby-spot-card:hover {
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
        }
        
        /* Apply same rating colors as weekly summary day cards */
        .nearby-spot-card.rating-1 {
            background-color: rgba(220, 74, 109, 0.15); /* Poor */
        }
        
        .nearby-spot-card.rating-1:hover {
            background-color: rgba(220, 74, 109, 0.25);
        }
        
        .nearby-spot-card.rating-2 {
            background-color: rgba(237, 166, 65, 0.15); /* Fair */
        }
        
        .nearby-spot-card.rating-2:hover {
            background-color: rgba(237, 166, 65, 0.25);
        }
        
        .nearby-spot-card.rating-3 {
            background-color: rgba(0, 103, 54, 0.15); /* Good */
        }
        
        .nearby-spot-card.rating-3:hover {
            background-color: rgba(0, 103, 54, 0.25);
        }
        
        .nearby-spot-card.rating-4 {
            background-color: rgba(37, 146, 194, 0.15); /* Very Good */
        }
        
        .nearby-spot-card.rating-4:hover {
            background-color: rgba(37, 146, 194, 0.25);
        }
        
        .nearby-spot-card.rating-5 {
            background-color: rgba(92, 0, 208, 0.15); /* Epic */
        }
        
        .nearby-spot-card.rating-5:hover {
            background-color: rgba(92, 0, 208, 0.25);
        }
        
        /* Location name link above card - allow 2 lines */
        .nearby-spot-name {
            font-size: 0.75rem;
            font-weight: 600;
            color: rgba(255, 255, 255, 0.9);
            text-decoration: none;
            margin-bottom: 4px;
            line-height: 1.2;
            display: block;
            transition: color 0.2s;
            min-height: 2.4em; /* Allow for 2 lines of text */
            word-wrap: break-word;
            hyphens: auto;
        }
        
        .nearby-spot-name:hover {
            color: #ffffff;
            text-decoration: underline;
        }
        
        /* Distance display at bottom of card */
        .nearby-spot-distance {
            font-size: 0.65rem;
            color: rgba(255, 255, 255, 0.6);
            margin-top: auto;
            padding-top: 4px;
            text-align: center;
        }
        
        /* Nearby spots wrapper - matches weekly summary columns layout */
        .weekly-summary-columns .nearby-spot-card-wrapper {
            display: flex;
            flex-direction: column;
        }
        
        /* Nearby spot cards use same styles as weekly-summary-day */
        .weekly-summary-columns .weekly-summary-day[data-location-id] {
            cursor: pointer;
        }

        /* Guide page: embedded map (full width, after Negatives & Hazards) */
        .guide-map-section {
            width: 100%;
            max-width: 100%;
        }
        .guide-map-container {
            width: 100%;
            height: 360px;
            border-radius: 8px;
            overflow: hidden;
            background: #1a1a1a;
        }
        .guide-map-container iframe {
            display: block;
            width: 100%;
            height: 100%;
            border: 0;
        }
        @media (max-width: 768px) {
            .guide-map-container {
                height: 280px;
            }
        }

        .weekly-summary-day {
            padding: 8px;
            border-radius: 8px;
            cursor: pointer;
            transition: all 0.2s ease;
            display: flex;
            flex-direction: column;
            justify-content: space-between;
            min-height: 120px;
        }

        .weekly-summary-day:hover {
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
        }

        .weekly-summary-day.rating-5 {
            background-color: #592e83; /* Epic - Purple */
        }

        .weekly-summary-day.rating-5:hover {
            background-color: #592e83;
        }

        .weekly-summary-day.rating-4 {
            background-color: #2592c2; /* Very Good - Medium Blue */
        }

        .weekly-summary-day.rating-4:hover {
            background-color: #2592c2;
        }

        .weekly-summary-day.rating-3 {
            background-color: #006736; /* Good - Dark Green */
        }

        .weekly-summary-day.rating-3:hover {
            background-color: #006736;
        }

        .weekly-summary-day.rating-2 {
            background-color: #eda641; /* Fair - Orange/Amber */
        }

        .weekly-summary-day.rating-2:hover {
            background-color: #eda641;
        }

        .weekly-summary-day.rating-1 {
            background-color: #dc4a6d; /* Poor - Pink/Red */
        }

        .weekly-summary-day.rating-1:hover {
            background-color: #dc4a6d;
        }

        .weekly-summary-day-star {
            text-align: center;
            font-size: 0.9rem;
            color: #ffffff;
            height: 1.2rem;
            margin-bottom: 4px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-weight: 400;
        }

        .weekly-summary-day-label {
            font-weight: 600;
            color: #ffffff;
            padding: 4px 8px;
            border-radius: 4px;
            text-align: center;
            font-size: 0.85rem;
            width: 100%;
            margin-bottom: 6px;
        }

        .weekly-summary-day-label.rating-5 {
            background-color: #592e83;
        }

        .weekly-summary-day-label.rating-4 {
            background-color: #2592c2;
        }

        .weekly-summary-day-label.rating-3 {
            background-color: #006736;
        }

        .weekly-summary-day-label.rating-2 {
            background-color: #eda641;
        }

        .weekly-summary-day-label.rating-1 {
            background-color: #dc4a6d;
        }

        .weekly-summary-day-wind {
            text-align: center;
            font-size: 0.85rem;
            color: #ffffff;
            margin-bottom: 6px;
        }

        .weekly-summary-day-wind-direction {
            font-size: 1rem;
            margin-bottom: 4px;
            text-align: center;
        }

        .weekly-summary-day-wind-speed {
            font-size: 1.5rem;
            font-weight: 700;
            color: #ffffff;
            line-height: 1.2;
        }
        
        .weekly-summary-day-wind-gusts {
            font-size: 0.85rem;
            font-weight: 400;
            color: rgba(255, 255, 255, 0.7);
            margin-top: 2px;
        }

        .weekly-summary-rating-summary {
            font-size: 0.7rem;
            color: rgba(255, 255, 255, 0.8);
            text-align: center;
            margin-top: 4px;
            line-height: 1.3;
            padding: 0 4px;
        }

        .weekly-summary-tide-temp {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 4px;
            padding: 4px 0;
        }

        .weekly-summary-tide {
            color: #cccccc;
            font-size: 0.7rem;
            text-align: center;
        }

        .weekly-summary-weather {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 4px;
        }

        .weekly-summary-weather-icon {
            width: 16px;
            height: 16px;
            display: block;
            margin-left: auto;
            margin-right: auto;
            filter: brightness(0) invert(1);
            opacity: 0.9;
        }

        .weekly-summary-temp {
            font-size: 0.7rem;
            color: #cccccc;
        }

        .weekly-rating-timeline {
            display: grid;
            grid-template-columns: repeat(5, 1fr);
            gap: 8px;
            margin-top: 8px;
            height: 15px;
            width: 100%;
        }

        /* 14-day view: rating timeline with 14 columns */
        .weekly-rating-timeline.weekly-summary-14 {
            grid-template-columns: repeat(14, minmax(0, 1fr)) !important; /* Use minmax to allow shrinking */
            gap: 2px; /* Even tighter spacing for 14 days */
        }

        .weekly-rating-timeline-day {
            display: flex;
            flex-direction: row;
            gap: 0;
            height: 100%;
            border-radius: 4px;
            overflow: visible; /* Changed from hidden to visible so tooltips can show */
            background-color: rgba(0, 0, 0, 0.2);
            width: 100%;
            position: relative;
            align-items: stretch;
        }

        .weekly-rating-timeline-segment {
            height: 100%;
            transition: opacity 0.1s;
            border-right: 1px solid rgba(0, 0, 0, 0.1);
            position: relative;
            flex: 1;
            min-width: 0;
        }

        .weekly-rating-timeline-segment:last-child {
            border-right: none;
        }

        .weekly-rating-timeline-segment:hover {
            opacity: 0.8;
            z-index: 10001; /* Ensure hovered segment tooltip appears above others */
        }
        .weekly-rating-timeline-segment.rating-1 {
            background-color: #dc4a6d;
        }

        .weekly-rating-timeline-segment.rating-2 {
            background-color: #eda641;
        }

        .weekly-rating-timeline-segment.rating-3 {
            background-color: #006736;
        }

        .weekly-rating-timeline-segment.rating-4 {
            background-color: #2592c2;
        }

        .weekly-rating-timeline-segment.rating-5 {
            background-color: #592e83;
        }

        .weekly-rating-timeline-segment.rating-0 {
            background-color: rgba(255, 255, 255, 0.1);
        }

        .weekly-wind-chart {
            display: grid;
            grid-template-columns: repeat(5, 1fr);
            grid-template-rows: 100px;
            gap: 8px;
            margin-top: 4px;
            height: 100px;
            min-height: 100px;
            align-items: stretch;
            width: 100%;
            overflow-x: auto;
            overflow-y: hidden;
        }
        
        /* 14-day view: wind chart with 14 columns - prevent wrapping */
        .weekly-wind-chart.weekly-summary-14 {
            grid-template-columns: repeat(14, minmax(0, 1fr)) !important; /* Use minmax to allow shrinking */
            gap: 2px; /* Even tighter spacing for 14 days */
            min-width: 0; /* Prevent overflow */
            overflow-x: visible; /* No scroll, just fit */
        }
        
        .custom-tooltip {
            display: none !important; /* Use !important to override inline styles */
            position: absolute;
            top: calc(100% + 8px); /* Position below the timeline */
            left: 50%;
            transform: translateX(-50%);
            padding: 8px 10px;
            background: rgba(0, 0, 0, 0.95);
            border-radius: 6px;
            white-space: normal;
            z-index: 10000; /* Increased z-index to ensure tooltips appear above everything */
            font-size: 0.8rem;
            line-height: 1.4;
            pointer-events: none;
            border: 1px solid rgba(255, 255, 255, 0.2);
            min-width: 160px;
            max-width: 200px;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
        }
        
        .weekly-rating-timeline-segment:hover .custom-tooltip {
            display: block !important;
        }
        /* Desktop: hide per-segment tooltips – use shared hover box in gap instead */
        .weekly-summary-desktop-timeline .weekly-rating-timeline-segment .custom-tooltip {
            display: none !important;
        }
        
        /* Ensure timeline container doesn't clip tooltips */
        .weekly-rating-timeline {
            overflow: visible;
            /* margin-bottom: 50px; */ /* Removed space below timeline */
        }
        
        /* Add margin to wind chart - reduced spacing */
        .weekly-wind-chart {
            margin-top: 4px;
        }
        
        /* Ensure containers don't constrain width and cause wrapping */
        #weekly-summary {
            width: 100%;
            max-width: 100%;
            overflow-x: visible;
        }

        /* Desktop: mobile day view hidden */
        .mobile-day-view {
            display: none;
        }
        /* Desktop: hide water-quality bar (current-conditions shows full card) */
        @media (min-width: 769px) {
            .water-quality-bar {
                display: none !important;
            }
        }
        
        .weekly-summary-columns {
            width: 100%;
            max-width: 100%;
        }
        
        .weekly-rating-timeline,
        .weekly-wind-chart,
        .weekly-wind-hour-labels,
        .weekly-summary-day-labels {
            width: 100%;
            max-width: 100%;
        }

        .weekly-summary-desktop-timeline {
            position: relative;
            margin-top: 2px;
        }
        .desktop-hover-gap {
            position: relative;
            min-height: 60px;
            margin-top: 4px;
        }
        .desktop-hover-box {
            display: none;
            position: absolute;
            top: 0;
            transform: translateX(-50%);
            z-index: 80;
            pointer-events: none;
        }
        .desktop-hover-box.visible {
            display: block;
            pointer-events: auto;
        }
        .desktop-hover-details-link {
            display: block;
            margin-top: 6px;
            padding-top: 4px;
            border-top: 1px solid rgba(255, 255, 255, 0.2);
            color: #2592c2;
            font-size: 0.75rem;
            font-weight: 600;
            text-decoration: none;
            cursor: pointer;
        }
        .desktop-hover-details-link:hover {
            color: #4ab4e8;
        }
        .desktop-hover-box-inner {
            padding: 4px 14px 6px 14px;
            background: rgba(0, 0, 0, 0.95);
            border-radius: 6px;
            font-size: 0.78rem;
            line-height: 1.35;
            min-width: 280px;
            max-width: 400px;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.5);
        }
        .desktop-hover-header {
            font-weight: 600;
            color: #fff;
            margin: -4px -14px 4px -14px;
            padding: 4px 14px;
            border-radius: 0; /* Sharp corners to match both sides */
        }
        .desktop-hover-line1 {
            color: rgba(255, 255, 255, 0.9);
        }
        .desktop-hover-line2 {
            color: rgba(255, 255, 255, 0.75);
            font-size: 0.72rem;
            margin-top: 2px;
        }
        .desktop-timeline-hover-line {
            display: none;
            position: absolute;
            top: 0;
            bottom: 0;
            left: 0;
            width: 1px;
            background: rgba(255, 255, 255, 0.4);
            transform: translateX(-50%);
            z-index: 50;
            pointer-events: none;
        }
        .desktop-timeline-hover-line.visible {
            display: block;
        }
        .desktop-timeline-hover-line::before {
            content: '';
            position: absolute;
            top: 10px;
            left: 50%;
            transform: translate(-50%, -50%);
            width: 8px;
            height: 8px;
            border-radius: 50%;
            background: rgba(255, 255, 255, 0.9);
            box-shadow: 0 0 4px rgba(0, 0, 0, 0.5);
        }

        .weekly-tide-chart-mini-wrap {
            width: 100%;
            min-width: 0;
        }
        .weekly-tide-charts .weekly-tide-chart-mini {
            height: 32px;
        }
        .desktop-tide-hover-target {
            cursor: pointer;
        }
        .weekly-tide-charts.weekly-summary-14 .weekly-tide-chart-mini {
            height: 28px;
        }

        .weekly-wind-day-column {
            display: flex;
            flex-direction: row;
            align-items: flex-end;
            gap: 1px;
            height: 100%;
            min-height: 100px;
            width: 100%;
            min-width: 0; /* Allow column to shrink */
        }
        
        /* 14-day view: wind day columns need to be narrower */
        .weekly-wind-chart.weekly-summary-14 .weekly-wind-day-column {
            min-width: 0;
            overflow: hidden; /* Prevent bars from overflowing */
        }

        .weekly-wind-hour-bar {
            flex: 1;
            border-radius: 1px;
            min-height: 3px;
            transition: opacity 0.2s;
        }

        .weekly-wind-hour-bar:hover {
            opacity: 0.8;
        }

        /* Stacked wind + gust bars: wind speed = solid base from 0 line, gusts stacked on top */
        .weekly-wind-hour-bar-stacked {
            display: flex;
            flex-direction: column;
            align-items: stretch;
            justify-content: flex-end;
            min-height: 24px;
        }

        .weekly-wind-bar-gust {
            flex-shrink: 0;
            min-height: 2px;
        }

        .weekly-wind-bar-wind {
            flex-shrink: 0;
            min-height: 2px; /* Allow proportional sizing - 5kt vs 20kt should show different heights */
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .weekly-wind-bar-arrow {
            font-size: 0.7rem;
            color: rgba(255, 255, 255, 0.95);
            line-height: 1;
            text-shadow: 0 0 2px rgba(0, 0, 0, 0.5);
        }

        .weekly-tide-charts {
            display: grid;
            grid-template-columns: repeat(7, 1fr);
            gap: 8px;
            margin-top: 4px;
        }


        .weekly-tide-chart-mini {
            display: flex;
            align-items: flex-end;
            gap: 1px;
            height: 40px;
            padding: 2px;
            background-color: rgba(0, 0, 0, 0.2);
            border-radius: 4px;
            position: relative;
        }

        .weekly-tide-charts > div {
            position: relative;
        }

        .weekly-tide-chart-bar {
            flex: 1;
            background: linear-gradient(to top, rgba(102, 179, 255, 0.4), rgba(102, 179, 255, 0.7));
            border-radius: 1px 1px 0 0;
            min-height: 5%;
        }

        .weekly-tide-chart-labels {
            display: flex;
            justify-content: space-between;
            margin-top: 2px;
            padding: 0;
            font-size: 0.5rem;
            color: rgba(255, 255, 255, 0.4);
            position: relative;
        }

        .weekly-tide-chart-label {
            position: absolute;
            transform: translateX(-50%);
        }

        .weekly-tide-chart-label:first-child {
            left: 0%;
            transform: translateX(0);
            text-align: left;
        }

        .weekly-tide-chart-label:nth-child(2) {
            left: 25%;
        }

        .weekly-tide-chart-label:nth-child(3) {
            left: 50%;
        }

        .weekly-tide-chart-label:nth-child(4) {
            left: 75%;
        }

        .weekly-tide-chart-label:last-child {
            left: 100%;
            transform: translateX(-100%);
            text-align: right;
        }

        .weekly-wind-hour-labels {
            display: grid;
            grid-template-columns: repeat(5, 1fr);
            gap: 8px;
            margin-top: 4px;
            font-size: 0.7rem;
            color: #888;
            text-align: center;
            width: 100%;
        }
        
        /* 14-day view: wind hour labels with 14 columns */
        .weekly-wind-hour-labels.weekly-summary-14 {
            grid-template-columns: repeat(14, 1fr) !important;
            gap: 4px;
        }
        
        /* 14-day view: wind hour labels with 14 columns */
        .weekly-summary-columns.weekly-summary-14 ~ .weekly-wind-hour-labels {
            grid-template-columns: repeat(14, 1fr);
        }

        .wind-band-day {
            margin-top: 12px;
            margin-bottom: 20px;
            padding: 16px;
            border-radius: 12px;
            transition: all 0.2s ease;
        }

        .wind-band-day.rating-5,
        .wind-band-day.rating-4,
        .wind-band-day.rating-3,
        .wind-band-day.rating-2,
        .wind-band-day.rating-1 {
            /* No background colors for ratings - keep transparent */
            background-color: transparent;
            border: none;
        }
        
        .wind-band-day .wind-band-title {
            color: #ffffff;
        }
        
        .wind-band-day .wind-band-description {
            color: #ffffff;
        }

        .wind-band-header {
            display: flex;
            flex-direction: column;
            gap: 6px;
            margin-bottom: 10px;
        }

        .wind-band-header-content {
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
            gap: 12px;
        }

        .wind-band-header-main {
            flex: 1;
            min-width: 0;
        }

        .wind-band-title {
            color: #ffffff;
            font-weight: 600;
            margin-bottom: 8px;
            font-size: 1.2rem;
        }

        /* Mobile: day summary - stack layout, smaller text, no overlap */
        @media (max-width: 768px) {
            .wind-band-header {
                gap: 8px;
                margin-bottom: 12px;
            }
            .wind-band-header-content {
                flex-direction: column;
                gap: 8px;
                align-items: stretch;
            }
            .wind-band-header-left,
            .wind-band-header-right {
                width: 100%;
            }
            .wind-band-header-right {
                order: 1; /* Alerts above description on mobile */
            }
            .wind-band-header-left {
                order: 2;
            }
            .wind-band-title {
                font-size: 1rem;
                margin-bottom: 4px;
            }
            .wind-band-description {
                font-size: 0.8rem;
                color: rgba(255, 255, 255, 0.9);
                line-height: 1.4;
            }
            .wind-band-tide-info {
                font-size: 0.75rem !important;
            }
            .wind-band-tide-info > div {
                font-size: 0.75rem !important;
            }
            /* Night hours button: flow in layout, don't overlap */
            .wind-band-global-toggle {
                position: static !important;
                display: block;
                margin-bottom: 12px;
                padding: 0;
            }
            .wind-band-global-toggle .wind-band-toggle-btn {
                width: 100%;
                justify-content: center;
            }
        }


        .wind-band-toggle-comments {
            background: transparent;
            border: none;
            border-radius: 6px;
            padding: 6px 12px;
            cursor: pointer;
            color: rgba(255, 255, 255, 0.5);
            font-size: 0.85rem;
            display: flex;
            align-items: center;
            gap: 6px;
            margin-top: 8px;
            transition: all 0.2s;
        }

        .wind-band-toggle-comments:hover {
            color: rgba(255, 255, 255, 0.8);
        }

        .comments-text {
            font-size: 0.85rem;
        }

        .comments-count {
            display: none;
        }

        .wind-band-toggle-comments.has-comments .comments-text {
            display: none;
        }

        .wind-band-toggle-comments.has-comments .comments-count {
            display: inline;
        }

        .wind-band-community {
            margin-top: 12px;
            padding-top: 12px;
        }

        .wind-band-community.has-comments {
            border-top: 1px solid rgba(255, 255, 255, 0.1);
        }

        .wind-band-comments-list {
            margin-bottom: 16px;
        }

        .wind-band-comment {
            display: flex;
            gap: 12px;
            margin-bottom: 12px;
            padding-bottom: 12px;
            border-bottom: 1px solid rgba(255, 255, 255, 0.05);
        }

        .wind-band-comment-avatar {
            width: 32px;
            height: 32px;
            border-radius: 50%;
            overflow: hidden;
            flex-shrink: 0;
            background: rgba(255, 255, 255, 0.1);
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            position: relative;
        }

        .user-avatar-img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }

        .user-avatar-placeholder {
            color: rgba(255, 255, 255, 0.4);
        }

        .wind-band-comment-content {
            flex: 1;
            min-width: 0;
        }

        .wind-band-comment-author {
            font-weight: 600;
            font-size: 0.9rem;
            color: #ffffff;
            margin-bottom: 4px;
        }

        .wind-band-comment-text {
            color: rgba(255, 255, 255, 0.8);
            font-size: 0.9rem;
            line-height: 1.4;
            margin-bottom: 4px;
        }

        .wind-band-comment-time {
            color: rgba(255, 255, 255, 0.4);
            font-size: 0.75rem;
        }

        .wind-band-comment-replies {
            margin-top: 8px;
            margin-left: 44px;
            padding-left: 12px;
            border-left: 2px solid rgba(255, 255, 255, 0.1);
        }

        .wind-band-comment-form {
            display: flex;
            gap: 12px;
            align-items: flex-start;
        }

        .wind-band-comment-input {
            flex: 1;
            background: rgb(138 165 218 / 43%);
            border: 1px solid rgba(255, 255, 255, 0.1);
            border-radius: 6px;
            padding: 8px 12px;
            color: #ffffff;
            font-size: 0.9rem;
            font-family: inherit;
            resize: vertical;
            min-height: 60px;
        }

        .wind-band-comment-input:focus {
            outline: none;
            border-color: rgba(212, 59, 149, 0.5);
            background: rgba(255, 255, 255, 0.08);
        }

        .wind-band-comment-input::placeholder {
            color: rgba(255, 255, 255, 0.4);
        }

        .wind-band-comment-submit {
            background: #d43b95;
            border: none;
            border-radius: 6px;
            padding: 8px 16px;
            color: #ffffff;
            font-weight: 600;
            cursor: pointer;
            transition: background 0.2s;
            align-self: flex-end;
        }

        .wind-band-comment-submit:hover {
            background: #b8327f;
        }

        .wind-band-comment-submit:disabled {
            background: rgba(255, 255, 255, 0.1);
            cursor: not-allowed;
        }

        .wind-band-tide-info {
            color: #66b3ff;
            font-size: 0.85rem;
            font-weight: 600;
            margin-bottom: 4px;
            text-align: right;
        }

        .wind-band-warnings {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            justify-content: flex-end;
            gap: 8px;
            font-size: 0.75rem;
            line-height: 1.3;
        }

        .wind-band-weather {
            display: flex;
            align-items: center;
            justify-content: flex-end;
            gap: 6px;
            margin-top: 4px;
        }

        .wind-band-weather-icon {
            width: 16px;
            height: 16px;
        }

        .wind-band-weather-temp {
            font-size: 0.85rem;
            color: #ffffff;
            font-weight: 500;
        }

        .wind-band-title.rating-5 {
            color: #592e83;
        }

        .wind-band-title.rating-4 {
            color: #2592c2;
        }

        .wind-band-title.rating-3 {
            color: #006736;
        }

        .wind-band-title.rating-2 {
            color: #eda641;
        }

        .wind-band-title.rating-1 {
            color: #dc4a6d;
        }

        .wind-band-row {
            display: grid;
            grid-template-columns: 30px 1fr; /* Narrow label + content area */
            gap: 8px;
            align-items: stretch;
            margin-bottom: 8px;
            width: 100%; /* Ensure full width */
            box-sizing: border-box; /* Include padding/border in width */
        }

        .wind-band-row:last-of-type {
            margin-bottom: 0;
        }

        .wind-band-row-label {
            display: flex;
            align-items: center;
            justify-content: center;
            padding-right: 8px; /* Match .wind-band-rating-label padding */
            position: relative;
            cursor: help;
            min-width: 0; /* Prevent grid item overflow */
            box-sizing: border-box; /* Include padding in width */
        }

        .wind-band-row-label-text {
            font-size: 0.6rem;
            color: rgba(255, 255, 255, 0.5);
            font-weight: 300;
            font-style: italic;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            line-height: 1.2;
            text-align: center;
        }

        .wind-band-row-label:hover .wind-band-row-label-text {
            color: rgba(255, 255, 255, 0.8);
        }

        .wind-band-row-label-tooltip {
            position: absolute;
            left: 100%;
            top: 50%;
            transform: translateY(-50%);
            margin-left: 8px;
            background: rgba(0, 0, 0, 0.9);
            color: #ffffff;
            padding: 6px 10px;
            border-radius: 4px;
            font-size: 0.75rem;
            white-space: nowrap;
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.2s;
            z-index: 1000;
            font-style: normal;
            font-weight: 400;
        }

        .wind-band-row-label:hover .wind-band-row-label-tooltip {
            opacity: 1;
        }

        .wind-band-row-content {
            display: grid;
            grid-template-columns: repeat(13, 1fr); /* 7am-7pm = 13 hours */
            gap: 4px;
            min-width: 0; /* Prevent grid item overflow */
            width: 100%; /* Ensure full width of grid column */
            max-width: 100%; /* Prevent expansion beyond grid column */
            box-sizing: border-box; /* Include padding/border in width */
            overflow: hidden; /* Prevent content from expanding grid */
        }
        
        /* 24-hour view uses different grid */
        .wind-band-section.show-24h .wind-band-row-content {
            grid-template-columns: repeat(24, 1fr);
        }

        .wind-band-hour {
            position: relative;
            min-height: 70px;
            border-radius: 6px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            color: #111;
            font-weight: 700;
            font-size: 0.95rem;
            text-shadow: 0 1px 2px rgba(0,0,0,0.35);
            transition: all 0.2s ease;
            cursor: pointer;
            text-align: center;
            overflow: hidden; /* Prevent content overflow */
            box-sizing: border-box; /* Include border in width */
        }

        /* Simple single-color wind bar (daily detail): wind speed only, gusts in parentheses */
        .wind-band-hour.wind-band-hour-simple {
            justify-content: flex-end;
            align-items: stretch;
        }

        .wind-band-hour-simple .wind-band-hour-bar-simple {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            min-height: 70px; /* Match cell height so arrow + legend never clipped */
            width: 100%;
            border-radius: 6px 6px 0 0;
            color: #111;
        }

        /* Legacy stacked (summary) - keep for any summary views that use it */
        .wind-band-hour.wind-band-hour-stacked {
            justify-content: flex-end;
            align-items: stretch;
        }

        .wind-band-hour-stacked .wind-band-hour-bar {
            display: flex;
            flex-direction: column;
            align-items: stretch;
            justify-content: flex-end;
            min-height: 20px;
            width: 100%;
            border-radius: 6px 6px 0 0;
        }

        .wind-band-hour-gust {
            flex-shrink: 0;
            min-height: 2px;
        }

        .wind-band-hour-wind {
            flex-shrink: 0;
            min-height: 2px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            color: #111;
        }

        .wind-band-hour .wind-arrow {
            display: block;
            font-size: 1.1rem;
            margin-bottom: 4px;
            text-align: center;
        }

        .wind-band-hour .wind-legend {
            display: block;
            font-size: 0.75rem;
            font-weight: 600;
            text-align: center;
            line-height: 1.2;
        }

        .wind-band-hour .wind-band-hour-gust-label {
            opacity: 0.9;
        }

        .wind-band-hour .gust {
            display: block;
            font-size: 0.75rem;
            opacity: 0.9;
            text-align: center;
            line-height: 1.2;
        }

        .wind-band-hour:hover {
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
        }

        .tide-band-hour {
            position: relative;
            min-height: 54px;
            border-radius: 6px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            background: #1f2833;
            color: #e0e0e0;
            font-weight: 700;
            font-size: 0.95rem;
            text-shadow: 0 1px 2px rgba(0,0,0,0.35);
            border: 1px solid #2f3946;
            transition: all 0.2s ease;
            cursor: pointer;
            text-align: center;
            overflow: hidden; /* Prevent content overflow */
            box-sizing: border-box; /* Include border in width */
        }

        .tide-band-hour:hover {
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
            background: #252f3a;
        }

        .tide-band-hour.hw {
            border-color: #66b3ff;
            background: rgba(102, 179, 255, 0.9) !important;
            color: #ffffff;
        }

        .tide-band-hour.lw {
            border-color: #80c4ff;
            background: rgba(128, 196, 255, 0.3) !important;
            color: #ffffff;
        }

        .tide-band-hour .tide-label {
            font-size: 0.75rem;
            font-weight: 600;
            text-align: center;
            display: block;
            width: 100%;
        }

        .tide-band-hour .tide-sub {
            font-size: 0.7rem;
            opacity: 0.85;
            text-align: center;
            display: block;
            width: 100%;
        }

        .swell-band-hour {
            position: relative;
            min-height: 40px;
            border-radius: 6px;
            background: rgba(79, 195, 247, 0.1);
            border: 1px solid rgba(79, 195, 247, 0.2);
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            padding: 4px;
            font-size: 0.7rem;
            color: #4fc3f7;
            transition: all 0.2s ease;
            cursor: pointer;
            overflow: hidden; /* Prevent content overflow */
            box-sizing: border-box; /* Include border in width */
        }

        .swell-band-hour:hover {
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
            background: rgba(79, 195, 247, 0.15);
        }

        .swell-band-hour .swell-label {
            font-size: 0.7rem;
            font-weight: 600;
            color: #4fc3f7;
            text-align: center;
            display: block;
            width: 100%;
        }

        .swell-band-hour .swell-sub {
            font-size: 0.65rem;
            opacity: 0.85;
            color: #cccccc;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 2px;
            text-align: center;
            width: 100%;
        }

        .swell-direction-arrow {
            font-size: 0.7rem;
            line-height: 1;
            opacity: 0.9;
        }

        .precip-band-hour {
            position: relative;
            min-height: 36px;
            border-radius: 6px;
            background: rgba(100, 149, 237, 0.08);
            border: 1px solid rgba(100, 149, 237, 0.15);
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 4px;
            font-size: 0.7rem;
            color: #87ceeb;
            transition: all 0.2s ease;
            box-sizing: border-box;
        }
        .precip-band-hour .precip-label {
            font-size: 0.7rem;
            font-weight: 600;
            color: #87ceeb;
            text-align: center;
            width: 100%;
            display: block;
        }

        .weather-band-hour {
            position: relative;
            min-height: 40px;
            border-radius: 6px;
            background: rgb(138 165 218 / 43%);
            border: 1px solid rgba(255, 255, 255, 0.1);
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            padding: 4px;
            gap: 2px;
            transition: all 0.2s ease;
            cursor: pointer;
            overflow: hidden; /* Prevent content overflow */
            box-sizing: border-box; /* Include border in width */
        }

        .weather-band-hour:hover {
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
            background: rgba(255, 255, 255, 0.08);
        }

        .weather-band-hour-icon {
            width: 14px;
            height: 14px;
            display: block;
            margin-left: auto;
            margin-right: auto;
            filter: brightness(0) invert(1);
            opacity: 0.9;
        }

        .weather-band-hour-temp {
            font-size: 0.7rem;
            color: #ffffff;
            font-weight: 500;
            text-align: center;
            width: 100%;
            display: block;
        }

        .wind-band-rating {
            display: grid;
            grid-template-columns: 30px 1fr; /* Label column + content */
            gap: 8px;
            margin-bottom: 4px;
            font-size: 0.75rem;
            text-align: center;
            width: 100%; /* Ensure full width */
            box-sizing: border-box; /* Include padding/border in width */
        }

        .wind-band-hours-label {
            /* Empty label space for alignment - no styles needed */
            display: block;
        }
        
        .wind-band-rating-label {
            display: flex;
            flex-direction: column;
            align-items: flex-start;
            justify-content: center;
            padding-right: 8px;
            min-width: 0; /* Prevent grid item overflow */
            box-sizing: border-box; /* Include padding in width */
        }

        .wind-band-hours-content,
        .wind-band-rating-content {
            display: grid;
            grid-template-columns: repeat(13, 1fr); /* 7am-7pm = 13 hours */
            gap: 4px;
            min-width: 0; /* Prevent grid item overflow */
            width: 100%; /* Ensure full width of grid column */
            max-width: 100%; /* Prevent expansion beyond grid column */
            box-sizing: border-box; /* Include padding/border in width */
            overflow: hidden; /* Prevent content from expanding grid */
        }
        
        /* 24-hour view uses different grid */
        .wind-band-section.show-24h .wind-band-hours-content,
        .wind-band-section.show-24h .wind-band-rating-content {
            grid-template-columns: repeat(24, 1fr);
        }

        .wind-band-hours-content > div {
            text-align: center;
            font-size: 0.75rem;
            color: rgba(255, 255, 255, 0.6);
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
            font-weight: 400;
        }

        .wind-band-rating-cell {
            height: 18px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-weight: 700;
            color: #ffffff;
            text-shadow: 0 1px 2px rgba(0,0,0,0.5);
            font-size: 0.85rem;
            transition: all 0.2s ease;
            cursor: pointer;
            border-radius: 3px;
            opacity: 0.8;
            min-width: 0; /* Prevent grid item overflow */
            max-width: 100%; /* Constrain to grid column */
            box-sizing: border-box; /* Include border in width */
        }
        
        .wind-band-rating-cell.rating-0 {
            background-color: rgba(255, 255, 255, 0.05);
            opacity: 0.3;
        }
        
        .wind-band-rating-cell.night-hour {
            background-color: rgba(0, 0, 0, 0.4);
            opacity: 0.5;
            border: 1px solid rgba(255, 255, 255, 0.1);
        }
        
        .weather-band-hour.night-hour {
            background-color: rgb(118 108 108 / 66%) !important;
        }
        
        /* Hide hours outside 7am-7pm by default (unless show24Hours is true) */
        .wind-band-section:not(.show-24h) [data-hour] {
            display: none !important;
        }
        
        /* Show only 7am-7pm (hours 7-19) in default view */
        .wind-band-section:not(.show-24h) .hour-label[data-hour="7"],
        .wind-band-section:not(.show-24h) .hour-label[data-hour="8"],
        .wind-band-section:not(.show-24h) .hour-label[data-hour="9"],
        .wind-band-section:not(.show-24h) .hour-label[data-hour="10"],
        .wind-band-section:not(.show-24h) .hour-label[data-hour="11"],
        .wind-band-section:not(.show-24h) .hour-label[data-hour="12"],
        .wind-band-section:not(.show-24h) .hour-label[data-hour="13"],
        .wind-band-section:not(.show-24h) .hour-label[data-hour="14"],
        .wind-band-section:not(.show-24h) .hour-label[data-hour="15"],
        .wind-band-section:not(.show-24h) .hour-label[data-hour="16"],
        .wind-band-section:not(.show-24h) .hour-label[data-hour="17"],
        .wind-band-section:not(.show-24h) .hour-label[data-hour="18"],
        .wind-band-section:not(.show-24h) .hour-label[data-hour="19"],
        .wind-band-section:not(.show-24h) [data-hour="7"],
        .wind-band-section:not(.show-24h) [data-hour="8"],
        .wind-band-section:not(.show-24h) [data-hour="9"],
        .wind-band-section:not(.show-24h) [data-hour="10"],
        .wind-band-section:not(.show-24h) [data-hour="11"],
        .wind-band-section:not(.show-24h) [data-hour="12"],
        .wind-band-section:not(.show-24h) [data-hour="13"],
        .wind-band-section:not(.show-24h) [data-hour="14"],
        .wind-band-section:not(.show-24h) [data-hour="15"],
        .wind-band-section:not(.show-24h) [data-hour="16"],
        .wind-band-section:not(.show-24h) [data-hour="17"],
        .wind-band-section:not(.show-24h) [data-hour="18"],
        .wind-band-section:not(.show-24h) [data-hour="19"] {
            display: block !important;
        }
        
        /* Show all 24 hours when expanded */
        .wind-band-section.show-24h [data-hour] {
            display: block !important;
        }
        
        .wind-band-rating-cell.rating-1 {
            background-color: #dc4a6d;
        }
        
        .wind-band-rating-cell.rating-2 {
            background-color: #eda641;
        }
        
        .wind-band-rating-cell.rating-3 {
            background-color: #006736;
        }
        
        .wind-band-rating-cell.rating-4 {
            background-color: #2592c2;
        }
        
        .wind-band-rating-cell.rating-5 {
            background-color: #592e83;
        }

        .wind-band-rating-cell:hover {
            transform: translateY(-1px);
            opacity: 1;
        }

        /* Desktop: hover tooltip for rating cells (same detail as summary view) */
        .wind-band-rating-cell-tooltip {
            display: none;
            position: fixed;
            transform: translate(-50%, -100%);
            z-index: 10000;
            pointer-events: none;
        }
        .wind-band-rating-cell-tooltip.visible {
            display: block;
        }
        .wind-band-rating-tooltip-inner {
            padding: 0;
            background: rgba(0, 0, 0, 0.95);
            border-radius: 6px;
            font-size: 0.78rem;
            line-height: 1.35;
            min-width: 280px;
            border: 2px solid #666;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
            overflow: hidden;
        }
        .wind-band-rating-tooltip-header {
            padding: 6px 10px;
            font-weight: 600;
            color: #ffffff;
            text-align: center;
            border-radius: 4px 4px 0 0;
        }
        .wind-band-rating-tooltip-line1 {
            margin-bottom: 4px;
            padding: 4px 14px 0 14px;
            color: rgba(255, 255, 255, 0.9);
        }
        .wind-band-rating-tooltip-line2 {
            font-size: 0.75rem;
            color: rgba(255, 255, 255, 0.8);
            padding: 4px 14px 6px 14px;
            border-top: 1px solid rgba(255, 255, 255, 0.1);
        }

        .wind-band-hour.highlight {
            outline: 2px solid #ffffffaa;
            box-shadow: 0 0 0 2px rgba(255,255,255,0.25);
        }

        .wind-band-hours {
            display: grid;
            grid-template-columns: 30px 1fr; /* Label column + content */
            gap: 8px;
            margin-top: 6px;
            font-size: 0.75rem;
            color: #cccccc;
            text-align: center;
        }

        .tide-mini {
            position: relative;
            height: 90px;
            margin-top: 10px;
            margin-bottom: 40px; /* prevent overlap with next row */
        }

        .tide-mini-svg {
            width: 100%;
            height: 100%;
            background: linear-gradient(180deg, rgba(100,150,255,0.05), rgba(100,150,255,0.01));
            border-radius: 6px;
        }

        .tide-labels {
            margin-top: 8px;
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
            font-size: 0.7rem;
            color: #cdd9e5;
        }

        /* Tablet (e.g. iPad Mini 768×1024, iPad landscape 1024×768): nav + tabs + 5-day summary fit viewport */
        @media (max-width: 1024px) {
            .location-nav-tabs {
                flex-wrap: wrap;
                overflow-x: auto;
                -webkit-overflow-scrolling: touch;
            }
            .location-nav-tabs-main .location-nav-tab {
                padding: 8px 10px;
                font-size: 0.8rem;
            }
            /* 5-day and 14-day: horizontal scroll so cards don't spill off screen */
            #weekly-summary {
                overflow-y: visible;
                padding-bottom: 8px;
            }
            #weekly-summary .weekly-summary-columns {
                min-width: max-content;
            }
        }

        @media (max-width: 768px) {
            /* Favourites bar: horizontal scroll on mobile instead of wrapping (saves vertical space) */
            .favourites-section .favourites-bar-row,
            #favourites-section .favourites-columns.favourites-bar-row {
                flex-wrap: nowrap !important;
                overflow-x: auto !important;
                -webkit-overflow-scrolling: touch;
                padding-bottom: 4px;
                margin-left: -4px;
                margin-right: -4px;
                padding-left: 4px;
                padding-right: 4px;
            }
            .favourites-section .favourites-bar-card,
            #favourites-section .favourites-bar-card {
                flex-shrink: 0;
            }
            /* Heart as tab: style the favourite button to match other tabs */
            .location-nav-tab-favourite.location-favourite-btn {
                display: flex;
                align-items: center;
                justify-content: center;
                padding: 8px 10px;
                background-color: #333548 !important;
                border: 1px solid rgba(255, 255, 255, 0.15);
                border-radius: 6px;
                cursor: pointer;
                flex-shrink: 0;
            }
            .location-nav-tab-favourite.location-favourite-btn:hover {
                background-color: #3d4158 !important;
            }
            .location-nav-tab-favourite.location-favourite-btn.active {
                background-color: rgba(212, 59, 149, 0.4) !important;
                border-color: rgba(212, 59, 149, 0.6);
            }
            .location-nav-tab-favourite.location-favourite-btn svg {
                width: 18px;
                height: 18px;
            }
            /* On mobile forecast pages: hide current-conditions, show water-quality bar instead (5-day forecast higher on page) */
            body.forecast-page #current-conditions {
                display: none !important;
            }
            body.forecast-page .water-quality-bar {
                display: block !important;
            }
            /* Maximize mobile width: reduce padding, full viewport */
            body {
                padding: 0 8px 20px 8px;
                overflow-x: hidden;
            }
            .container {
                max-width: 100%;
                padding-left: 0;
                padding-right: 0;
                overflow-x: hidden;
            }
            /* 5-day and 14-day: same format – horizontal scroll for cards, timeline, wind chart */
            #weekly-summary {
                overflow-y: visible;
                padding-bottom: 8px;
                margin-left: -6px;
                margin-right: -6px;
                padding-left: 6px;
                padding-right: 6px;
            }
            #weekly-summary .weekly-summary-day-labels {
                overflow-x: auto;
                -webkit-overflow-scrolling: touch;
                scrollbar-width: none;
                max-width: 100%;
                min-width: 0;
            }
            #weekly-summary .weekly-summary-day-labels::-webkit-scrollbar {
                display: none;
            }
            #weekly-summary .weekly-summary-columns {
                min-width: max-content;
                width: max-content;
            }
            #weekly-summary .weekly-summary-day {
                min-width: 72px;
                padding: 6px 4px;
                min-height: 90px;
            }
            #weekly-summary .weekly-summary-day-star {
                font-size: 0.9rem;
                margin-bottom: 2px;
            }
            #weekly-summary .weekly-summary-day-wind-speed {
                font-size: 0.9rem;
            }
            #weekly-summary .weekly-summary-day-wind-direction,
            #weekly-summary .weekly-summary-day-wind-gusts {
                font-size: 0.65rem;
            }
            /* Rating timeline + wind chart: horizontal scroll */
            #weekly-summary .weekly-rating-timeline {
                overflow-x: auto;
                -webkit-overflow-scrolling: touch;
                min-height: 48px;
                padding: 6px 0;
                min-width: 320px;
            }
            #weekly-summary .weekly-rating-timeline-segment {
                min-width: 28px;
            }
            #weekly-summary .weekly-wind-chart {
                overflow-x: auto;
                overflow-y: hidden;
                -webkit-overflow-scrolling: touch;
                min-height: 88px;
                padding: 6px 0;
            }
            #weekly-summary .weekly-wind-hour-bar {
                min-height: 28px;
                display: flex;
                align-items: flex-end;
                justify-content: center;
            }
            #weekly-summary .weekly-wind-bar-arrow {
                font-size: 0.65rem;
                color: rgba(255, 255, 255, 0.9);
                line-height: 1;
                padding-bottom: 2px;
            }
            /* 14-day: slightly smaller cards */
            #weekly-summary:has(.weekly-summary-14) .weekly-summary-day {
                min-width: 64px;
            }

            /* Surfline-style mobile day view: one day at a time, zoomed rating + wind chart */
            .mobile-day-view {
                display: block;
                margin-top: 16px;
            }
            .weekly-summary-desktop-timeline {
                display: none !important;
            }
            .mobile-day-nav {
                display: flex;
                align-items: center;
                justify-content: space-between;
                gap: 12px;
                margin-bottom: 12px;
                max-width: 100%;
                min-width: 0;
            }
            .mobile-day-nav-label {
                font-size: 1rem;
                font-weight: 600;
                color: #ffffff;
                flex: 1;
                text-align: center;
            }
            .mobile-day-nav-btn {
                width: 40px;
                height: 40px;
                border-radius: 50%;
                background: rgba(255, 255, 255, 0.1);
                border: 1px solid rgba(255, 255, 255, 0.2);
                color: #ffffff;
                font-size: 1.2rem;
                cursor: pointer;
                display: flex;
                align-items: center;
                justify-content: center;
                flex-shrink: 0;
            }
            .mobile-day-nav-btn:hover:not(:disabled) {
                background: rgba(255, 255, 255, 0.15);
            }
            .mobile-day-nav-btn:disabled {
                opacity: 0.4;
                cursor: default;
            }
            .mobile-day-slides-scroll {
                overflow-x: auto;
                overflow-y: visible;
                -webkit-overflow-scrolling: touch;
                scroll-snap-type: x mandatory;
                scrollbar-width: none;
            }
            .mobile-day-slides-scroll::-webkit-scrollbar {
                display: none;
            }
            .mobile-day-slides {
                display: flex;
                flex-direction: row;
                flex-wrap: nowrap;
                gap: 0;
            }
            .mobile-day-slide {
                flex: 0 0 100%;
                width: 100%;
                min-width: 100%;
                scroll-snap-align: start;
                scroll-snap-stop: always;
                position: relative;
            }
            .mobile-day-hover-hint {
                font-size: 0.7rem;
                color: rgba(255, 255, 255, 0.5);
                text-align: center;
                margin-bottom: 6px;
            }
            .mobile-day-hover-hint.hidden {
                display: none;
            }
            .mobile-day-charts-zone {
                position: relative;
            }
            .mobile-day-hour-indicator,
            .mobile-day-wind-indicator,
            .mobile-day-tide-indicator {
                display: none;
                position: absolute;
                top: 0;
                bottom: 0;
                width: 1px;
                background: rgba(255, 255, 255, 0.5);
                z-index: 50;
                pointer-events: none;
                transform: translateX(-50%);
            }
            .mobile-day-hour-indicator { top: 0; bottom: auto; height: 24px; }
            .mobile-day-hour-indicator::after {
                content: '';
                position: absolute;
                bottom: -4px;
                left: 50%;
                transform: translateX(-50%);
                width: 6px;
                height: 6px;
                border-radius: 50%;
                background: rgba(255, 255, 255, 0.8);
            }
            .mobile-day-hour-indicator.visible,
            .mobile-day-wind-indicator.visible,
            .mobile-day-tide-indicator.visible {
                display: block;
            }
            .mobile-day-slide-rating { position: relative; }
            .mobile-day-slide-wind { position: relative; }
            .mobile-day-tide { position: relative; }
            .mobile-day-tide-hover-layer {
                position: absolute;
                top: 0;
                left: 0;
                right: 0;
                bottom: 0;
                pointer-events: none;
            }
            .mobile-day-tide-hover-layer .mobile-day-tide-hover-zone {
                position: absolute;
                top: 0;
                bottom: 0;
                pointer-events: auto;
                cursor: pointer;
                z-index: 10;
            }
            .mobile-day-shared-tooltip {
                display: none;
                padding: 4px 10px 6px 10px;
                margin: 6px 0 8px 0;
                background: rgba(0, 0, 0, 0.95);
                border-radius: 6px;
                overflow: hidden;
                font-size: 0.75rem;
                line-height: 1.3;
                white-space: normal;
                z-index: 10001;
                pointer-events: none;
                border: 1px solid rgba(255, 255, 255, 0.2);
                box-shadow: 0 2px 8px rgba(0, 0, 0, 0.5);
            }
            .mobile-day-shared-tooltip.visible {
                display: block;
                pointer-events: none;
            }
            .mobile-tooltip-details-link {
                pointer-events: auto;
                display: block;
                margin-top: 6px;
                padding-top: 4px;
                border-top: 1px solid rgba(255, 255, 255, 0.2);
                color: #2592c2;
                font-size: 0.75rem;
                font-weight: 600;
                text-decoration: none;
                cursor: pointer;
            }
            .mobile-tooltip-details-link:hover,
            .mobile-tooltip-details-link:active {
                color: #4ab4e8;
            }
            .mobile-shared-tooltip-header {
                font-weight: 600;
                color: #fff;
                font-size: 0.8rem;
            }
            .mobile-shared-tooltip-data {
                color: rgba(255, 255, 255, 0.9);
                font-size: 0.75rem;
                margin-bottom: 2px;
                display: -webkit-box;
                -webkit-line-clamp: 2;
                -webkit-box-orient: vertical;
                overflow: hidden;
            }
            .mobile-shared-tooltip-reason {
                margin-top: 2px;
                font-size: 0.7rem;
                color: rgba(255, 255, 255, 0.7);
                display: -webkit-box;
                -webkit-line-clamp: 2;
                -webkit-box-orient: vertical;
                overflow: hidden;
            }
            /* Hide per-segment tooltips when using shared tooltip */
            .mobile-day-slide .weekly-rating-timeline-segment .custom-tooltip,
            .mobile-day-slide .mobile-wind-tooltip {
                display: none !important;
            }
            .mobile-day-slide-rating,
            .mobile-day-slide-wind {
                margin-bottom: 16px;
            }
            .mobile-day-rating-bar {
                display: flex;
                flex-direction: row;
                gap: 0;
                height: 24px;
                border-radius: 6px;
                overflow: hidden;
                position: relative;
                background: rgba(0, 0, 0, 0.2);
                cursor: pointer;
                touch-action: manipulation;
            }
            .mobile-day-rating-bar .weekly-rating-timeline-segment {
                flex: 1;
                min-width: 0;
                border-right: 1px solid rgba(0, 0, 0, 0.15);
                box-shadow: inset -1px 0 0 rgba(255, 255, 255, 0.06);
                cursor: pointer;
            }
            .mobile-day-rating-bar .weekly-rating-timeline-segment:last-child {
                border-right: none;
            }
            .mobile-day-now-marker {
                position: absolute;
                top: 0;
                bottom: 0;
                width: 2px;
                background: #fff;
                z-index: 10;
                pointer-events: none;
            }
            .mobile-day-now-marker::after {
                content: '';
                position: absolute;
                bottom: 0;
                left: 50%;
                transform: translateX(-50%);
                width: 8px;
                height: 8px;
                border-radius: 50%;
                background: #e53935;
            }
            .mobile-day-hour-axis {
                position: relative;
                height: 20px;
                margin-top: 4px;
            }
            .mobile-day-hour-label {
                position: absolute;
                transform: translateX(-50%);
                font-size: 0.7rem;
                color: rgba(255, 255, 255, 0.6);
            }
            .mobile-day-wind-chart {
                display: flex;
                flex-direction: row;
                align-items: flex-end;
                gap: 2px;
                padding: 4px 0;
            }
            .mobile-day-wind-chart .weekly-wind-hour-bar {
                flex: 1;
                min-width: 0;
                border-radius: 2px 2px 0 0;
                min-height: 4px;
            }

            /* Wind bar tooltips */
            .mobile-wind-bar-wrap {
                position: relative;
                flex: 1;
                min-width: 0;
                display: flex;
                align-items: flex-end;
                cursor: pointer;
                touch-action: manipulation;
            }
            .mobile-wind-tooltip {
                display: none;
                position: absolute;
                bottom: 100%;
                left: 50%;
                transform: translateX(-50%);
                margin-bottom: 4px;
                padding: 4px 8px;
                background: rgba(0, 0, 0, 0.95);
                border-radius: 6px;
                font-size: 0.75rem;
                white-space: nowrap;
                z-index: 10001;
                pointer-events: none;
                flex-direction: column;
                align-items: center;
                gap: 0;
            }
            .mobile-wind-tooltip.visible {
                display: flex;
            }
            .mobile-wind-tooltip-arrow {
                font-size: 1rem;
                color: #fff;
            }
            .mobile-wind-tooltip-speed {
                font-weight: 600;
                color: #fff;
            }
            .mobile-wind-tooltip-dir {
                font-size: 0.65rem;
                color: rgba(255, 255, 255, 0.8);
            }

            /* Tide curve */
            .mobile-day-tide {
                margin-bottom: 16px;
            }
            .mobile-day-tide-label,
            .mobile-day-swell-label {
                font-size: 0.7rem;
                font-weight: 600;
                color: rgba(255, 255, 255, 0.7);
                text-transform: uppercase;
                letter-spacing: 0.5px;
                margin-bottom: 4px;
            }
            .mobile-day-tide-svg {
                width: 100%;
                height: 28px;
                display: block;
            }
            .mobile-day-tide-path {
                vector-effect: non-scaling-stroke;
            }

            /* Swell bars */
            .mobile-day-swell-bars {
                display: flex;
                flex-direction: row;
                align-items: flex-end;
                gap: 2px;
                height: 48px;
            }
            .mobile-day-swell-bar {
                flex: 1;
                min-width: 0;
                background: rgba(102, 179, 255, 0.4);
                border-radius: 2px 2px 0 0;
                min-height: 2px;
            }

            /* 5-day cards: scroll container + selected highlight */
            .weekly-summary-cards-scroll {
                overflow-x: auto;
                -webkit-overflow-scrolling: touch;
                scrollbar-width: none;
            }
            .weekly-summary-cards-scroll::-webkit-scrollbar {
                display: none;
            }
            .weekly-summary-cards-scroll .weekly-summary-columns {
                min-width: max-content;
            }
            .weekly-summary-day.mobile-day-selected {
                box-shadow: 0 0 0 2px #d43b95;
            }

            /* Desktop: hide mobile day view, show original timeline */
            /* Top nav - mobile: logo | search | login | hamburger - forecasts/favourites/blog/about in hamburger menu */
            .top-nav-enhanced {
                flex-wrap: nowrap;
                gap: 10px;
                padding: 12px 0;
            }

            .top-nav-enhanced .nav-logo {
                flex-shrink: 0;
            }

            .top-nav-enhanced .site-logo {
                height: 56px;
            }

            /* Hide nav-center on mobile - moved into hamburger menu */
            .top-nav-enhanced .nav-center {
                display: none !important;
            }

            .top-nav-enhanced .nav-dropdown-btn-text-only {
                padding: 6px 10px;
                font-size: 0.8rem;
            }

            .top-nav-enhanced .nav-link.nav-link-text {
                display: none;
            }

            /* Mobile: icons only – hide search input until focus, hide auth text (Log in|Join, username|Logout) */
            .top-nav-enhanced .nav-inner-wrap {
                min-width: 0;
                flex: 1;
            }
            .top-nav-enhanced .nav-search {
                flex: 0 0 auto;
                margin: 0 4px;
                min-width: 0;
            }
            .top-nav-enhanced .nav-search-box {
                min-width: 40px;
                width: 40px;
                padding: 8px;
                border-radius: 50%;
            }
            .top-nav-enhanced .nav-search-box:not(:focus-within) .nav-search-input {
                width: 0;
                padding: 0;
                opacity: 0;
                pointer-events: none;
            }
            .top-nav-enhanced .nav-search-box:focus-within {
                width: 140px;
                border-radius: 24px;
                padding: 8px 12px;
            }
            .top-nav-enhanced .nav-auth-text {
                display: none !important; /* Icons only – login/logout via nav-auth-btn (avatar/icon) */
            }

            .nav-dropdown-forecasts .nav-dropdown-menu {
                width: calc(100vw - 24px);
                max-width: none;
                left: 50%;
            }

            /* Mobile hamburger button – must stay visible, never shrink; add spacing from login */
            .mobile-hamburger-btn {
                display: flex !important;
                flex-direction: column;
                justify-content: center;
                gap: 5px;
                width: 44px;
                height: 44px;
                padding: 10px;
                margin-left: 8px;
                background: rgba(255, 255, 255, 0.08);
                border: 1px solid rgba(255, 255, 255, 0.2);
                border-radius: 8px;
                cursor: pointer;
                flex-shrink: 0 !important;
                order: 99; /* Ensure it stays at end and visible */
            }
            .mobile-hamburger-btn .hamburger-bar {
                display: block;
                width: 100%;
                height: 2px;
                background: #fff;
                border-radius: 1px;
                transition: transform 0.2s, opacity 0.2s;
            }
            .mobile-hamburger-btn.active .hamburger-bar:nth-child(1) {
                transform: translateY(7px) rotate(45deg);
            }
            .mobile-hamburger-btn.active .hamburger-bar:nth-child(2) { opacity: 0; }
            .mobile-hamburger-btn.active .hamburger-bar:nth-child(3) {
                transform: translateY(-7px) rotate(-45deg);
            }

            /* Mobile nav overlay */
            .mobile-nav-overlay {
                position: fixed;
                inset: 0;
                background: rgba(0, 0, 0, 0.7);
                z-index: 9999;
                display: none;
                align-items: flex-start;
                justify-content: flex-end;
                padding: 0;
            }
            .mobile-nav-overlay.open {
                display: flex;
            }
            .mobile-nav-panel {
                width: 100%;
                max-width: 360px;
                height: 100%;
                background: #1a1a1a;
                overflow-y: auto;
                padding: 20px;
                box-shadow: -4px 0 20px rgba(0, 0, 0, 0.5);
            }
            .mobile-nav-search { margin-bottom: 20px; }
            .mobile-nav-search .nav-search-box { min-width: 100%; }
            .mobile-nav-auth { margin-bottom: 24px; }
            .mobile-nav-links { display: flex; flex-direction: column; gap: 0; }
            .mobile-nav-accordion-btn {
                display: flex;
                align-items: center;
                justify-content: space-between;
                width: 100%;
                padding: 14px 0;
                background: none;
                border: none;
                border-bottom: 1px solid rgba(255, 255, 255, 0.1);
                color: #fff;
                font-size: 0.95rem;
                font-weight: 600;
                text-align: left;
                cursor: pointer;
            }
            .mobile-nav-accordion-btn .accordion-arrow {
                transition: transform 0.2s;
                font-size: 0.7rem;
            }
            .mobile-nav-accordion-btn.active .accordion-arrow { transform: rotate(180deg); }
            .mobile-nav-accordion-content {
                max-height: 0;
                overflow: hidden;
                transition: max-height 0.3s;
            }
            .mobile-nav-accordion-content.open {
                max-height: 500px;
                overflow-y: auto;
                padding-left: 16px;
                padding-bottom: 12px;
            }
            .mobile-nav-region-toggle {
                display: flex;
                align-items: center;
                justify-content: space-between;
                width: 100%;
                padding: 10px 0;
                background: none;
                border: none;
                color: rgba(255, 255, 255, 0.9);
                font-size: 0.9rem;
                text-align: left;
                cursor: pointer;
            }
            .mobile-nav-region-link {
                display: block;
                padding: 10px 0;
                color: rgba(255, 255, 255, 0.8);
                text-decoration: none;
                font-size: 0.9rem;
            }
            .mobile-nav-region-link:hover { color: #d43b95; }
            .mobile-nav-regions {
                max-height: 0;
                overflow: hidden;
                transition: max-height 0.3s;
            }
            .mobile-nav-regions.open { max-height: 400px; overflow-y: auto; }
            .mobile-nav-link {
                display: block;
                padding: 14px 0;
                color: #fff;
                text-decoration: none;
                font-size: 0.95rem;
                border-bottom: 1px solid rgba(255, 255, 255, 0.1);
            }
            .mobile-nav-link:hover { color: #d43b95; }
            .favourites-login-prompt {
                padding: 12px;
                color: rgba(255, 255, 255, 0.6);
                font-size: 0.9rem;
            }

            .header-conditions-accent {
                width: 3px;
                margin-right: 12px;
            }

            /* Header: full width so centred title spans screen with padding each side */
            .header-content {
                width: 100%;
                margin-left: 0;
                margin-right: 0;
            }
            .header-text {
                width: 100%;
                max-width: 100%;
                padding-left: 12px;
                padding-right: 12px;
                box-sizing: border-box;
            }

            .header-title,
            .header-subtitle {
                text-align: center;
            }

            .header-title {
                font-size: 1.3rem;
            }

            .header-subtitle {
                font-size: 0.7rem;
            }

            /* Mobile: show short breadcrumb (Region : County only), hide full */
            .header-breadcrumbs-full {
                display: none !important;
            }
            .header-breadcrumbs-short {
                display: flex !important;
                flex-wrap: wrap;
                justify-content: center;
            }

            /* Mobile: center section headings */
            .current-conditions-title,
            .weekly-summary-heading,
            .wind-band-day .wind-band-title {
                text-align: center;
            }

            /* Mobile nav: FORECAST ▼ | GUIDE | COG | HEART – consistent on all pages */
            .location-nav-tabs {
                flex-direction: row;
                flex-wrap: nowrap;
                gap: 4px;
                overflow: visible;
            }

            .location-nav-tabs-main {
                display: flex;
                flex-wrap: nowrap;
                gap: 4px;
                align-items: stretch;
            }

            .location-nav-tabs-main .location-nav-tab {
                padding: 8px 10px;
                font-size: 0.8rem;
                flex-shrink: 0;
            }

            /* Mobile: hide individual forecast tabs, show dropdown instead */
            .location-nav-tabs-main .location-nav-tab-forecast-group {
                display: none !important;
            }

            /* Mobile: show Forecast dropdown */
            .location-nav-forecast-dropdown {
                display: flex;
                position: relative;
                flex-shrink: 0;
            }

            .location-nav-dropdown-trigger {
                display: flex;
                align-items: center;
                gap: 4px;
                padding: 8px 10px;
                font-size: 0.8rem;
                font-weight: 600;
                text-transform: uppercase;
                letter-spacing: 0.5px;
                background-color: #333548;
                border: 1px solid rgba(255, 255, 255, 0.15);
                border-radius: 6px;
                color: rgba(255, 255, 255, 0.9);
                cursor: pointer;
                white-space: nowrap;
            }

            .location-nav-dropdown-trigger:hover,
            .location-nav-forecast-dropdown.open .location-nav-dropdown-trigger {
                background-color: #3d4158;
            }

            .location-nav-dropdown-chevron {
                font-size: 0.6rem;
                opacity: 0.8;
                transition: transform 0.2s;
            }

            .location-nav-forecast-dropdown.open .location-nav-dropdown-chevron {
                transform: rotate(180deg);
            }

            .location-nav-dropdown-menu {
                display: none;
                position: absolute;
                top: 100%;
                left: 0;
                margin-top: 4px;
                min-width: 100%;
                background: #2a2d3a;
                border: 1px solid rgba(255, 255, 255, 0.15);
                border-radius: 8px;
                box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
                z-index: 100;
                overflow: hidden;
            }

            .location-nav-forecast-dropdown.open .location-nav-dropdown-menu {
                display: flex;
                flex-direction: column;
            }

            .location-nav-dropdown-item {
                display: block;
                padding: 10px 14px;
                font-size: 0.85rem;
                color: rgba(255, 255, 255, 0.9);
                text-decoration: none;
                border-bottom: 1px solid rgba(255, 255, 255, 0.08);
                white-space: nowrap;
            }

            .location-nav-dropdown-item:last-child {
                border-bottom: none;
            }

            .location-nav-dropdown-item:hover {
                background: rgba(255, 255, 255, 0.08);
                color: #fff;
            }

            /* Tab text: show mobile labels, hide desktop */
            .location-nav-tabs .nav-tab-desktop {
                display: none;
            }

            .location-nav-tabs .nav-tab-mobile {
                display: inline;
            }

            /* Customise tab: gear icon only on mobile – match GUIDE/TIDES/WATER style */
            .location-nav-tab-customise .nav-tab-customise-text {
                display: none;
            }
            .location-nav-tab-customise {
                padding: 8px 10px;
                /* Match other tabs: same background, border, radius as GUIDE/TIDES/WATER */
                background-color: #333548 !important;
            }
            .location-nav-tab-customise:not(.active):hover {
                background-color: #3d4158 !important;
            }
            .location-nav-tab-customise::before {
                content: "⚙";
                font-size: 1.4rem;
                line-height: 1;
                display: inline-block;
                vertical-align: middle;
            }

            th, td {
                padding: 8px;
                font-size: 0.9rem;
            }

            .info-label {
                width: 100%;
                margin-bottom: 5px;
            }

            .compact-info {
                padding: 12px 15px;
                font-size: 0.9rem;
            }

            .compact-info > div:first-child {
                display: flex;
                flex-direction: column;
                gap: 5px;
            }

            .settings-label {
                width: 100%;
                margin-bottom: 5px;
            }

            /* Desktop wind-band layout - keep for non-mobile hours */
            .wind-band-row {
                grid-template-columns: 30px 1fr;
            }

            .wind-band-hours,
            .wind-band-rating {
                grid-template-columns: 30px 1fr;
            }

            .wind-band-hours {
                grid-template-columns: repeat(5, 1fr);
            }

            /* Mobile: hide desktop layout, show vertical hour-by-hour list */
            .wind-band-section .wind-band-hours,
            .wind-band-section .wind-band-rating,
            .wind-band-section .wind-band-row {
                display: none !important;
            }

            .wind-band-section .wind-band-mobile-hours {
                display: block !important;
            }

            .wind-band-mobile-sticky-header {
                display: grid !important;
                grid-template-columns: 28px 20px 2fr 1fr;
                gap: 6px;
            }
            .wind-band-mobile-sticky-header .wind-band-mobile-header-swell {
                display: none !important;
            }
            .wind-band-section .wind-band-day.has-precipitation .wind-band-mobile-sticky-header {
                grid-template-columns: 28px 20px 2fr 1fr 0.6fr;
            }

            /* One horizontal row per hour: Time+weather | Rating | Wind | Tide | Swell. Tighter padding for consistent viewport. */
            .wind-band-section .wind-band-mobile-hours .wind-band-mobile-hour-row,
            .wind-band-section .wind-band-mobile-hour-row {
                display: flex !important;
                flex-direction: row !important;
                flex-wrap: nowrap !important;
                align-items: stretch;
                gap: 6px;
            }
            /* Prevent any child from taking full width (which would force stacking) */
            .wind-band-section .wind-band-mobile-hour-row > * {
                width: auto !important;
                max-width: none !important;
            }
            .wind-band-section .wind-band-mobile-hours .wind-band-mobile-hour-row > .wind-band-mobile-time-cell,
            .wind-band-section .wind-band-mobile-hour-row > .wind-band-mobile-time-cell {
                flex: 0 0 28px !important;
                min-width: 28px !important;
            }
            .wind-band-section .wind-band-mobile-hours .wind-band-mobile-hour-row > .wind-band-mobile-rating-block,
            .wind-band-section .wind-band-mobile-hour-row > .wind-band-mobile-rating-block {
                flex: 0 0 20px !important;
                width: 20px !important;
                max-width: 20px !important;
                min-width: 20px !important;
            }
            .wind-band-section .wind-band-mobile-hours .wind-band-mobile-hour-row > .wind-band-mobile-wind-card,
            .wind-band-section .wind-band-mobile-hour-row > .wind-band-mobile-wind-card {
                flex: 2 1 0 !important;
                min-width: 0 !important;
            }
            .wind-band-section .wind-band-mobile-hours .wind-band-mobile-hour-row > .wind-band-mobile-tide-card,
            .wind-band-section .wind-band-mobile-hour-row > .wind-band-mobile-tide-card {
                flex: 1 1 0 !important;
                min-width: 0 !important;
            }
            .wind-band-section .wind-band-mobile-hours .wind-band-mobile-hour-row > .wind-band-mobile-swell-card,
            .wind-band-section .wind-band-mobile-hour-row > .wind-band-mobile-swell-card {
                display: none !important;
            }
            .wind-band-section .wind-band-mobile-hours .wind-band-mobile-hour-row > .wind-band-mobile-precip-card,
            .wind-band-section .wind-band-mobile-hour-row > .wind-band-mobile-precip-card {
                flex: 0.5 1 0 !important;
                min-width: 0 !important;
            }

            /* More horizontal space on mobile: remove day block padding */
            .wind-band-day {
                padding: 0;
            }

            /* Reduce wind-band section padding so rows fill more of the screen */
            .wind-band-section {
                padding: 8px 4px 12px;
                margin-bottom: 12px;
            }

            .wind-band-mobile-sticky-header {
                padding: 6px 6px !important;
            }

            .wind-band-section .wind-band-mobile-hours {
                padding: 4px 6px !important;
            }

            .wind-band-section .wind-band-mobile-hour-row {
                padding: 4px 6px !important;
            }

            /* Current conditions - keep within viewport on mobile so edges line up */
            .current-conditions {
                padding: 10px 0;
                margin-left: 0;
                margin-right: 0;
                width: 100%;
                box-sizing: border-box;
            }

            .current-conditions-cards {
                background: transparent;
                border-radius: 0;
                overflow: visible;
                box-shadow: none;
            }

            /* Puzzle layout: row1 Rating | Wind; row2 Water (wider) | Tide. Swell hidden on mobile. */
            .current-conditions .current-conditions-temp-row {
                display: none !important;
            }
            .current-conditions .current-conditions-temp {
                display: none !important;
            }
            .current-conditions-grid {
                display: grid;
                grid-template-columns: 1fr minmax(0, 0.55fr);
                grid-template-rows: 120px auto;
                grid-template-areas:
                    "cc-rating cc-wind"
                    "cc-water cc-tide";
                gap: 8px;
                align-items: stretch;
            }

            .current-conditions .satellite-wind-container {
                display: none !important;
            }

            .current-conditions .current-conditions-rating {
                grid-area: cc-rating;
            }

            .current-conditions .current-conditions-wind {
                grid-area: cc-wind;
            }

            .current-conditions .current-conditions-water {
                grid-area: cc-water;
            }

            .current-conditions .current-conditions-tide {
                grid-area: cc-tide;
                align-self: stretch;
            }

            /* Temp/swell hidden on mobile - water gets more space */
            .current-conditions .current-conditions-temp .current-conditions-swell {
                max-width: 100%;
                margin-left: 0;
                margin-right: 0;
            }

            /* Nearby spots: stack cards vertically on mobile so they stay in viewport */
            .nearby-spots-section .weekly-summary-columns {
                grid-template-columns: 1fr !important;
                gap: 10px;
            }

            /* Row 1: Rating + Wind side-by-side (card style like mobile forecast) */
            .current-conditions .current-conditions-rating,
            .current-conditions .current-conditions-wind {
                min-width: 0;
            }

            .current-conditions .knotnow-rating-container {
                border-radius: 8px;
                box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
                height: 120px;
                min-height: 120px;
                padding: 10px 12px;
                display: flex;
                flex-direction: column;
                justify-content: center;
            }

            .current-conditions .knotnow-rating-header {
                margin-bottom: 4px;
            }

            .current-conditions .knotnow-rating-label {
                font-size: 0.6rem;
            }
            .current-conditions .knotnow-rating-label-sub {
                font-size: 0.5rem;
            }

            .current-conditions .knotnow-rating-text {
                font-size: 0.95rem;
                line-height: 1.2;
                overflow: hidden;
                text-overflow: ellipsis;
            }

            .current-conditions .knotnow-rating-bars {
                width: auto;
                margin-top: 4px;
            }

            .current-conditions .knotnow-rating-bar {
                flex: 0 0 20px;
                width: 20px;
                height: 8px;
            }

            .current-conditions .current-conditions-wind .wind-speed-card {
                height: 120px;
                min-height: 120px;
                padding: 10px 12px;
            }

            .current-conditions .wind-speed-value {
                font-size: 1.15rem;
            }

            .current-conditions .wind-speed-direction,
            .current-conditions .wind-speed-gusts {
                font-size: 0.75rem;
            }

            /* Row 2: Water and Tide - water gets more space */
            .current-conditions .current-conditions-water {
                min-width: 0;
            }

            .current-conditions .water-quality-card {
                height: auto;
                min-height: 125px;
                padding: 10px 12px;
                overflow: hidden;
            }

            /* Mobile: disable 3D flip - prevents text appearing mirrored on flip (desktop is correct) */
            .water-quality-card:hover:not(.no-flip) {
                transform: none;
            }

            /* Mobile no-flip cards: front uses relative positioning so card grows to fit (View forecast stays inside) */
            .current-conditions .water-quality-card.no-flip .water-quality-card-front {
                position: relative;
                height: auto;
                min-height: 100px;
            }

            .current-conditions .water-quality-card .water-rating-value {
                font-size: 1.1rem;
            }

            .current-conditions .water-quality-card .water-spills-list,
            .current-conditions .water-quality-card .water-spills-item {
                font-size: 0.8rem;
                color: rgba(255, 255, 255, 0.95);
            }

            .current-conditions .water-quality-card .water-spills-item a {
                color: #ffffff;
                font-weight: 600;
            }

            /* Tide card: cap height so it matches Water card visually (Water min-height 125px + padding) */
            .current-conditions .current-conditions-tide {
                min-width: 0;
                width: 100%;
                max-width: 100%;
                max-height: 125px;
                box-sizing: border-box;
                background: #1f2833;
                border-radius: 6px;
                padding: 6px 8px;
                box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
                display: flex;
                flex-direction: column;
                align-items: center;
                justify-content: flex-start;
                min-height: 0;
            }

            .current-conditions .current-conditions-tide .tide-label {
                font-size: 0.6rem;
                text-transform: uppercase;
                letter-spacing: 0.5px;
                color: rgba(255, 255, 255, 0.8);
                margin-bottom: 2px;
            }

            .current-conditions .current-conditions-tide .tide-height-display {
                font-size: 0.95rem;
                font-weight: 700;
                color: #ffffff;
                line-height: 1.2;
            }

            .current-conditions .tide-chart-wrapper,
            .current-conditions .tide-chart-mini-wrapper {
                display: none;
            }

            .current-conditions .current-conditions-swell {
                min-width: 0;
                width: 100%;
                max-width: 100%;
                box-sizing: border-box;
                background: rgba(255, 255, 255, 0.06);
                border-radius: 6px;
                padding: 6px 8px;
                box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
                display: flex;
                flex-direction: column;
                align-items: center;
                justify-content: center;
                gap: 1px;
                min-height: 0;
            }

            .current-conditions .current-conditions-swell .swell-label {
                font-size: 0.6rem;
                text-transform: uppercase;
                letter-spacing: 0.5px;
                color: rgba(255, 255, 255, 0.8);
                margin-bottom: 0;
            }

            .current-conditions .current-conditions-swell .swell-height {
                font-size: 0.9rem;
                font-weight: 700;
                color: #ffffff;
                line-height: 1.2;
            }

            .current-conditions .current-conditions-swell .swell-details {
                font-size: 0.65rem;
                color: rgba(255, 255, 255, 0.85);
            }

            /* Row 4: Temp line under swell area (right column only) */
            .current-conditions .current-conditions-temp {
                display: flex;
                align-items: center;
                justify-content: flex-start;
                padding: 8px 12px 0 12px;
                background: transparent;
                border: none;
                border-radius: 0;
                margin-top: 0;
            }

            .current-conditions .current-conditions-temp-row {
                display: flex;
                flex-wrap: nowrap;
                gap: 16px;
                justify-content: flex-start;
                align-items: baseline;
                font-size: 0.85rem;
                color: rgba(255, 255, 255, 0.85);
                font-weight: 500;
            }

            .current-conditions .current-conditions-temp-item {
                display: inline-flex;
                align-items: baseline;
                gap: 4px;
                flex-direction: row;
            }

            .current-conditions .current-conditions-temp-item .temp-icon {
                display: none;
            }

            .current-conditions .current-conditions-temp-item .temp-label {
                font-weight: 600;
                color: rgba(255, 255, 255, 0.7);
                margin: 0;
            }

            .current-conditions .current-conditions-temp-item .temp-label::after {
                content: ' :';
            }

            .current-conditions .current-conditions-temp-item .temp-value {
                font-weight: 600;
                color: #ffffff;
            }

            /* Water quality: stack NOW + 48hrs activity cards on mobile */
            .water-quality-metrics-grid {
                grid-template-columns: 1fr !important;
                gap: 16px !important;
            }

            .water-quality-metric-card {
                min-height: 180px;
            }

            /* Best winging / Ideal conditions - full width stacked rows on mobile */
            .spot-guide-ideal-conditions .ideal-conditions-grid,
            .ideal-conditions-grid,
            .forecast-ideal-conditions .forecast-ideal-conditions-grid,
            .forecast-ideal-conditions-grid,
            .forecast-ideal-conditions > div {
                grid-template-columns: 1fr !important;
                gap: 12px !important;
            }

            .forecast-ideal-conditions .forecast-condition-card,
            .forecast-condition-card {
                width: 100%;
                min-width: 0;
            }

            .spot-guide-ideal-conditions .ideal-condition-item,
            .ideal-condition-item {
                width: 100%;
                min-width: 0;
                padding: 14px 12px;
            }

            .spot-guide-ideal-conditions .ideal-condition-link {
                word-break: break-word;
            }

            /* Load more – 14 day forecast (mobile only, at end of 5-day forecast) */
            .wind-band-load-more {
                display: block !important;
                padding: 16px 12px;
                text-align: center;
                margin-top: 12px;
                border-top: 1px solid rgba(255, 255, 255, 0.15);
            }

            .wind-band-load-more-link {
                display: inline-block;
                padding: 10px 20px;
                background: rgba(237, 166, 65, 0.2);
                color: #eda641;
                font-weight: 600;
                font-size: 0.95rem;
                text-decoration: none;
                border-radius: 8px;
                border: 1px solid rgba(237, 166, 65, 0.4);
            }

            .wind-band-load-more-link:hover {
                background: rgba(237, 166, 65, 0.3);
                color: #ffffff;
            }
            .wind-band-expand-wrap {
                padding: 16px 12px;
                text-align: left;
                margin-top: 12px;
                border-top: 1px solid rgba(255, 255, 255, 0.15);
            }
            .wind-band-expand-btn {
                display: inline-block;
                padding: 14px 20px;
                background: rgb(211, 60, 149);
                border: 1px solid rgba(0, 0, 0, 0.1);
                border-radius: 8px;
                color: #ffffff;
                font-weight: 600;
                font-size: 0.95rem;
                cursor: pointer;
            }
            .wind-band-expand-btn:hover {
                background: rgb(195, 50, 135);
            }
        }

        /* Desktop: hide mobile layout */
        .wind-band-mobile-hours {
            display: none;
        }

        .wind-band-mobile-sticky-header {
            display: none;
        }

        @media (max-width: 768px) {
            /* Mobile: show sticky header and hour rows */
            .wind-band-mobile-sticky-header {
                display: grid;
                position: sticky;
                top: 56px; /* Below main nav when it's sticky */
                z-index: 50;
                grid-template-columns: 52px 24px 1.5fr 1fr 0.9fr;
                gap: 8px;
            }
            .wind-band-day.has-precipitation .wind-band-mobile-sticky-header {
                grid-template-columns: 52px 24px 1.5fr 1fr 0.9fr 0.6fr;
            }

            .wind-band-mobile-hours {
                display: block;
                margin-top: 0;
                padding: 6px 10px;
            }
        }

        /* One horizontal row: TIME+ICON | RATING | WIND | TIDE | SWL – compact for mobile (Surfline-style) */
        .wind-band-mobile-hour-row {
            display: flex;
            flex-direction: row;
            flex-wrap: nowrap;
            align-items: stretch;
            gap: 6px;
            margin-bottom: 8px;
            border-radius: 8px;
            padding: 6px 10px;
            background: rgba(255, 255, 255, 0.06);
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
            overflow: hidden;
        }

        .wind-band-mobile-hour-row > .wind-band-mobile-time-cell {
            flex: 0 0 28px;
            min-width: 28px;
        }

        .wind-band-mobile-hour-row > .wind-band-mobile-rating-block {
            flex: 0 0 20px;
            width: 20px;
            max-width: 20px;
            min-width: 20px;
            float: left;
        }

        .wind-band-mobile-hour-row > .wind-band-mobile-wind-card {
            flex: 2 1 0;
            min-width: 0;
        }

        .wind-band-mobile-hour-row > .wind-band-mobile-tide-card {
            flex: 1 1 0;
            min-width: 0;
        }

        .wind-band-mobile-hour-row > .wind-band-mobile-swell-card {
            flex: 0.9 1 0;
            min-width: 0;
        }

        .wind-band-mobile-hour-row > .wind-band-mobile-precip-card {
            flex: 0.5 1 0;
            min-width: 0;
        }

        /* Rating = vertical block (5 stacked segments), compact for single row */
        .wind-band-mobile-rating-block {
            display: flex;
            flex-direction: column;
            gap: 2px;
            justify-content: stretch;
        }

        .wind-band-mobile-rating-segment {
            flex: 0.4;
            min-height: 2px;
            border-radius: 1px;
        }

        .wind-band-mobile-time-cell {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 2px;
            font-size: 0.75rem;
            font-weight: 700;
            color: rgba(255, 255, 255, 0.9);
        }

        .wind-band-mobile-weather-icon {
            width: 22px;
            height: 22px;
            display: block;
            margin-left: auto;
            margin-right: auto;
            filter: brightness(0) invert(1);
            opacity: 0.9;
        }

        /* Card styles - no labels (sticky header has them) */
        .wind-band-mobile-card {
            border-radius: 8px;
            padding: 6px 8px;
            min-height: 36px;
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            text-align: center;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
        }

        .wind-band-mobile-value {
            font-size: 0.8rem;
            font-weight: 600;
            color: #ffffff;
            line-height: 1.2;
        }

        .wind-band-mobile-sub {
            font-size: 0.6rem;
            color: rgba(255, 255, 255, 0.85);
            margin-top: 2px;
        }

        /* Wind card - single line: arrow | speed | direction | gusts (max) */
        .wind-band-mobile-wind-inline {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 4px;
            flex-wrap: nowrap;
            white-space: nowrap;
            width: 100%;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .wind-band-mobile-wind-arrow {
            font-size: 0.85rem;
            line-height: 1;
            color: #ffffff;
            opacity: 0.95;
            flex-shrink: 0;
        }

        .wind-band-mobile-wind-value {
            font-size: 1rem;
            font-weight: 700;
            color: #ffffff;
            line-height: 1;
            flex-shrink: 0;
        }

        .wind-band-mobile-wind-direction {
            font-size: 0.75rem;
            font-weight: 600;
            color: rgba(255, 255, 255, 0.95);
            flex-shrink: 0;
        }

        .wind-band-mobile-gust {
            font-size: 0.7rem;
            color: rgba(255, 255, 255, 0.9);
            flex-shrink: 0;
        }

        /* Tide card - desktop style (blue gradient fill bar like tide-band-hour) */
        .wind-band-mobile-tide-card {
            position: relative;
            overflow: hidden;
            background: #1f2833;
        }

        .wind-band-mobile-tide-fill {
            position: absolute;
            bottom: 0;
            left: 0;
            right: 0;
            border-radius: 0 0 8px 8px;
            z-index: 0;
        }

        .wind-band-mobile-tide-card .wind-band-mobile-tide-value {
            position: relative;
            z-index: 1;
        }

        /* Swell card - no colour (neutral) */
        .wind-band-mobile-swell-card {
            background-color: #333;
            color: #ffffff;
        }

        .wind-band-mobile-precip-card {
            background-color: rgba(100, 149, 237, 0.15);
            color: #87ceeb;
        }
    
