/* ============================================================
   TBANav DASHBOARD.CSS
   Complete dashboard stylesheet
   ============================================================ */


/* ============================================================
   1. DASHBOARD FOUNDATION
   ============================================================ */

.frozen-dashboard {
    width: 100%;
    max-width: none;
    min-width: 0;
    margin: 0 auto;
}


/* ============================================================
   2. TODAY'S NAVIGATION OVERVIEW
   ============================================================ */

.frozen-overview-card {
    width: 100%;
    box-sizing: border-box;

    padding: 8px 10px 10px;

    background: #fff;

    border: 1px solid #dfe6ee;
    border-radius: 10px;

    box-shadow: 0 2px 8px rgba(20,45,75,.05);

    overflow: hidden;
}

.frozen-overview-heading {
    margin: 0 0 7px;

    color: #0b3f7f !important;

    font-size: 14px;
    line-height: 1;
    font-weight: 900 !important;
}


/* ============================================================
   3. OVERVIEW GRID
   ============================================================ */

.frozen-overview-grid {
    width: 100%;

    display: grid;

    grid-template-columns:
        minmax(330px, 1.35fr)
        repeat(3, minmax(0, 1fr));

    grid-template-rows:
        repeat(2, minmax(250px, auto));

    gap: 8px;

    align-items: stretch;
}


/* ============================================================
   DESKTOP SIX-CARD PLACEMENT
   ============================================================ */

.frozen-overview-grid > :first-child {
    grid-column: 1;
    grid-row: 1 / span 2;
}

.frozen-overview-grid > :nth-child(2) {
    grid-column: 2;
    grid-row: 1;
}

.frozen-overview-grid > :nth-child(3) {
    grid-column: 3;
    grid-row: 1;
}

.frozen-overview-grid > :nth-child(4) {
    grid-column: 4;
    grid-row: 1;
}

.frozen-overview-grid > :nth-child(5) {
    grid-column: 2;
    grid-row: 2;
}

.frozen-overview-grid > :nth-child(6) {
    grid-column: 3;
    grid-row: 2;
}

.frozen-overview-grid > :nth-child(7) {
    grid-column: 4;
    grid-row: 2;
}


/* ============================================================
   4. CONDITION CARDS
   ============================================================ */

.frozen-condition-tile {
    min-width: 0;
    min-height: 250px;

    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;

    box-sizing: border-box;

    padding: 18px 10px;

    background: #fff;

    border: 1px solid #d5e0eb;
    border-radius: 8px;

    color: #063c7d;

    text-align: center;
    text-decoration: none;

    transition:
        border-color .15s ease,
        box-shadow .15s ease,
        transform .15s ease;
}

.frozen-condition-tile:hover {
    border-color: #9db8d5;

    box-shadow: 0 3px 10px rgba(20,45,75,.08);

    transform: translateY(-1px);
}


/* ============================================================
   5. CONDITION ICON
   ============================================================ */

.frozen-condition-tile .tile-icon {
    width: 48px;
    height: 48px;

    display: flex;
    align-items: center;
    justify-content: center;

    flex: 0 0 48px;

    margin-bottom: 13px;

    color: #064b8f;

    font-size: 32px;
    line-height: 1;
}


/* ============================================================
   6. CONDITION TITLE
   ============================================================ */

.frozen-condition-tile > strong {
    display: block;

    width: 100%;
    max-width: 100%;

    margin-bottom: 10px;

    color: #063c7d;

    font-size: 13px;
    line-height: 1.12;
    font-weight: 900;

    text-align: center;
}


/* ============================================================
   7. CONDITION STATUS
   ============================================================ */

.frozen-condition-tile .tile-status {
    display: block;

    margin-bottom: 11px;

    color: #f28c00;

    font-size: 15px;
    line-height: 1;
    font-weight: 900;

    white-space: nowrap;
}

.frozen-condition-tile .tile-status i {
    display: inline-block;

    width: 7px;
    height: 7px;

    margin-right: 4px;

    border-radius: 50%;

    background: #f28c00;

    vertical-align: middle;
}


/* ============================================================
   8. SUPPORTING TEXT
   ============================================================ */

.frozen-condition-tile small {
    display: block;

    width: 100%;
    max-width: 150px;

    color: #123d70;

    font-size: 9px;
    line-height: 1.35;

    text-align: center;
}


/* ============================================================
   9. LOCKS & ACCESS
   ============================================================ */

.lock-access-card.lock-status-open {
    border-color: #079658;
}

.lock-access-card.lock-status-open .tile-status {
    color: #079658;
}

.lock-access-card.lock-status-open .tile-status i {
    background: #079658;
}

.lock-access-card.lock-status-pending {
    border-color: #f28c00;
}

.lock-access-card.lock-status-pending .tile-status {
    color: #f28c00;
}

.lock-access-card.lock-status-pending .tile-status i {
    background: #f28c00;
}

.lock-access-card.lock-status-alert {
    border-color: #c62828;
}

.lock-access-card.lock-status-alert .tile-status {
    color: #c62828;
}

.lock-access-card.lock-status-alert .tile-status i {
    background: #c62828;
}


/* ============================================================
   10. WEATHER
   ============================================================ */

.weather-card.weather-status-dry {
    border-color: #079658;
}

.weather-card.weather-status-dry .tile-status {
    color: #079658;
}

.weather-card.weather-status-dry .tile-status i {
    background: #079658;
}

.weather-card.weather-status-rain {
    border-color: #f28c00;
}

.weather-card.weather-status-rain .tile-status {
    color: #f28c00;
}

.weather-card.weather-status-rain .tile-status i {
    background: #f28c00;
}

.weather-card.weather-status-wind {
    border-color: #f28c00;
}

.weather-card.weather-status-wind .tile-status {
    color: #f28c00;
}

.weather-card.weather-status-wind .tile-status i {
    background: #f28c00;
}


/* ============================================================
   11. TIDAL DATA
   ============================================================ */

.tidal-card.tidal-status-high {
    border-color: #079658;
}

.tidal-card.tidal-status-high .tile-status {
    color: #079658;
}

.tidal-card.tidal-status-high .tile-status i {
    background: #079658;
}

.tidal-card.tidal-status-low {
    border-color: #f28c00;
}

.tidal-card.tidal-status-low .tile-status {
    color: #f28c00;
}

.tidal-card.tidal-status-low .tile-status i {
    background: #f28c00;
}

.tidal-card.tidal-status-flood {
    border-color: #0756a6;
}

.tidal-card.tidal-status-flood .tile-status {
    color: #0756a6;
}

.tidal-card.tidal-status-flood .tile-status i {
    background: #0756a6;
}

.tidal-card.tidal-status-ebb {
    border-color: #0756a6;
}

.tidal-card.tidal-status-ebb .tile-status {
    color: #0756a6;
}

.tidal-card.tidal-status-ebb .tile-status i {
    background: #0756a6;
}

.tidal-movement {
    margin-bottom: 5px;

    color: #063c7d !important;

    font-size: 10px !important;
    line-height: 1 !important;
    font-weight: 900;

    text-transform: uppercase;
}

.tidal-summary {
    max-width: 145px !important;
}


/* ============================================================
   12. NAVIGATION NOTICES
   ============================================================ */

.navigation-notices-card {
    min-width: 0;
    min-height: 250px;

    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;

    box-sizing: border-box;

    padding: 18px 10px;

    background: #fff;

    /*
     * Strong blue border matching Tidal Data.
     * !important prevents the generic condition-card
     * border from overriding this card.
     */
    border: 1px solid #0756a6 !important;

    border-radius: 8px !important;

    color: #063c7d;

    text-align: center;
    text-decoration: none;

    overflow: hidden;
}


/* Navigation notice groups */

.navigation-notice-group {
    width: 100%;
    max-width: 170px;

    display: flex;
    flex-direction: column;
    align-items: center;

    margin-bottom: 8px;

    text-align: center;
}


/* TIDAL / NON-TIDAL heading */

.navigation-notice-section {
    display: block;

    margin-bottom: 3px;

    color: #063c7d;

    font-size: 8px;
    line-height: 1.05;
    font-weight: 900;

    text-transform: uppercase;
}


/* Notice status */

.navigation-notice-status {
    display: block;

    font-size: 13px;
    line-height: 1;
    font-weight: 900;

    white-space: nowrap;
}

.navigation-notice-status i {
    display: inline-block;

    width: 7px;
    height: 7px;

    margin-right: 4px;

    border-radius: 50%;

    vertical-align: middle;
}


/* PENDING */

.navigation-notice-pending {
    color: #f28c00;
}

.navigation-notice-pending i {
    background: #f28c00;
}


/* ACTIVE */

.navigation-notice-active {
    color: #c62828;
}

.navigation-notice-active i {
    background: #c62828;
}


/* Navigation notice summary */

.navigation-notice-summary {
    max-width: 155px !important;

    margin-top: 3px;

    color: #123d70;

    font-size: 8px !important;
    line-height: 1.3 !important;

    text-align: center;
}


/* ============================================================
   13. VESSEL RESTRICTIONS
   ============================================================ */

.frozen-condition-tile.review {
    border-color: #079658;
}

.frozen-condition-tile.review .tile-status {
    color: #079658;
}

.frozen-condition-tile.review .tile-status i {
    background: #079658;
}


/* ============================================================
   14. JOURNEY PLANNER
   ============================================================ */

.frozen-journey-banner {
    width: 100%;
    min-height: 96px;

    margin-top: 7px;

    display: grid;

    grid-template-columns:
        145px
        minmax(0, 1fr)
        430px
        150px;

    align-items: center;

    box-sizing: border-box;

    padding: 10px 12px;

    background: #075398;

    border-radius: 8px;

    color: #fff;

    overflow: hidden;
}

.journey-art {
    min-width: 0;

    display: flex;
    align-items: center;
    justify-content: center;
}

.journey-art img {
    display: block;

    width: 125px;
    max-width: 100%;
    height: auto;
}

.journey-copy {
    min-width: 0;
    padding-right: 12px;
}

.journey-copy h2 {
    margin: 0;

    color: #fff;

    font-size: 23px;
    line-height: 1;
    font-weight: 900;
}

.journey-copy h3 {
    margin: 2px 0 0;

    color: #fff;

    font-size: 15px;
    line-height: 1.05;
    font-weight: 900;
}

.journey-copy p {
    margin: 3px 0 0;

    color: #fff;

    font-size: 10px;
    line-height: 1.2;
}

.journey-steps {
    height: 72px;

    display: grid;

    grid-template-columns:
        repeat(4, minmax(0, 1fr));

    align-items: stretch;

    border-left: 1px solid rgba(255,255,255,.45);
}

.journey-steps > div {
    min-width: 0;

    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;

    padding: 2px 7px;

    text-align: center;

    border-right: 1px solid rgba(255,255,255,.45);
}

.journey-steps img {
    width: 27px;
    height: 27px;

    object-fit: contain;

    margin-bottom: 4px;
}

.journey-steps span {
    color: #fff;

    font-size: 9px;
    line-height: 1.05;
    font-weight: 700;
}

.journey-action {
    min-width: 0;

    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;

    padding-left: 10px;

    text-align: center;
}

.journey-button {
    width: 100%;
    min-height: 38px;

    display: flex;
    align-items: center;
    justify-content: center;

    gap: 12px;

    box-sizing: border-box;

    padding: 7px 10px;

    background: #079658;

    border-radius: 6px;

    color: #fff;

    font-size: 12px;
    line-height: 1;
    font-weight: 900;
}

.journey-button:hover {
    background: #07854f;
}

.journey-button span {
    font-size: 20px;
}

.journey-action small {
    display: block;

    margin-top: 4px;

    color: #fff;

    font-size: 8px;
}


/* ============================================================
   15. NAVIGATION DISCLAIMER
   ============================================================ */

.navigation-disclaimer {
    width: 100%;

    margin-top: 7px;

    box-sizing: border-box;

    background: #fff;

    border: 1px solid #cfd8e2;
    border-radius: 7px;

    box-shadow: 0 2px 7px rgba(20,45,75,.04);

    overflow: hidden;
}

.navigation-disclaimer details {
    width: 100%;
}

.navigation-disclaimer summary {
    min-height: 27px;

    display: flex;
    align-items: center;

    box-sizing: border-box;

    padding: 0 9px;

    background: #4f5b66;

    color: #fff;

    cursor: pointer;

    list-style: none;
}

.navigation-disclaimer summary::-webkit-details-marker {
    display: none;
}

.disclaimer-summary-icon {
    width: 17px;
    height: 17px;

    display: flex;
    align-items: center;
    justify-content: center;

    margin-right: 6px;

    border: 1px solid rgba(255,255,255,.75);
    border-radius: 50%;

    font-size: 10px;
    font-weight: 900;
}

.disclaimer-summary-text {
    font-size: 10px;
    font-weight: 900;
}

.disclaimer-summary-action {
    margin-left: auto;

    display: flex;
    align-items: center;

    gap: 5px;

    font-size: 8px;
    font-weight: 900;
}

.disclaimer-chevron {
    font-size: 10px;
}

.navigation-disclaimer details[open]
.disclaimer-chevron {
    transform: rotate(180deg);
}

.disclaimer-content {
    box-sizing: border-box;

    padding: 12px 16px 13px;

    color: #082f5e;

    font-size: 11px;
    line-height: 1.38;
}

.disclaimer-heading {
    margin-bottom: 10px;

    color: #063c7d;

    font-size: 15px;
    line-height: 1.1;
    font-weight: 900;
}

.disclaimer-content p {
    margin: 0 0 9px;
}

.disclaimer-content p:last-child {
    margin-bottom: 0;
}

.disclaimer-content strong {
    font-weight: 900;
}

.disclaimer-final {
    margin-top: 10px !important;

    padding-top: 9px;

    border-top: 1px solid #d5dce4;

    color: #102a50;
}


/* ============================================================
   16. AHOY SECTION
   ============================================================ */

.frozen-ahoy {
    width: 100%;
    min-height: 205px;

    margin-top: 7px;

    display: grid;

    grid-template-columns:
        38%
        minmax(0, 62%);

    align-items: center;

    box-sizing: border-box;

    padding: 16px 14px;

    background: #fff;

    border: 1px solid #dce4ec;
    border-radius: 8px;

    box-shadow: 0 2px 8px rgba(20,45,75,.05);

    overflow: hidden;
}


/* ============================================================
   17. AHOY BRAND
   ============================================================ */

.ahoy-brand {
    min-width: 0;

    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;

    text-align: center;
}


/* ============================================================
   18. AHOY WORDMARK
   ============================================================ */

.ahoy-art {
    min-width: 300px;

    display: flex;
    align-items: center;
    justify-content: center;

    white-space: nowrap;

    box-sizing: border-box;
}

.ahoy-art > span {
    display: block;

    flex: 0 0 auto;

    color: #0756a6;

    font-size: 68px;
    line-height: .85;

    font-weight: 900;
    letter-spacing: -4px;
}


/* ============================================================
   AHOY WORDMARK — FINAL CREST SPACING
   ============================================================ */

.ahoy-art > span:nth-of-type(2) {
    margin-right: 5px !important;
}

.ahoy-art > img {
    margin-right: -2px !important;
}


/* TBA crest */

.ahoy-art > img {
    display: block;

    width: 70px;
    height: 70px;

    flex: 0 0 70px;

    object-fit: contain;
}

.ahoy-art > span:nth-of-type(3) {
    margin-left: 0;
}


/* ============================================================
   19. AHOY BRAND WORDING
   ============================================================ */

.ahoy-brand-copy {
    margin-top: 5px;

    text-align: center;
}

.ahoy-brand-copy h2 {
    margin: 0;

    color: #063c7d;

    font-size: 17px;
    line-height: 1.05;
    font-weight: 900;
}

.ahoy-brand-copy p {
    margin: 3px 0 0;

    color: #123d70;

    font-size: 10px;
    line-height: 1.1;

    font-style: italic;
}


/* ============================================================
   20. AHOY CONTENT
   ============================================================ */

.ahoy-content {
    min-width: 0;

    display: flex;
    align-items: center;
}


/* ============================================================
   21. AHOY ACTION CARDS
   ============================================================ */

.ahoy-actions {
    width: 100%;

    display: grid;

    grid-template-columns:
        repeat(6, minmax(0, 1fr));

    gap: 7px;
}

.ahoy-actions a {
    min-width: 0;
    min-height: 86px;

    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;

    box-sizing: border-box;

    padding: 9px 5px;

    background: #fff;

    border: 1px solid #d5e0eb;
    border-radius: 6px;

    text-align: center;
    text-decoration: none;

    transition:
        border-color .15s ease,
        box-shadow .15s ease;
}

.ahoy-actions a:hover {
    border-color: #9db8d5;

    box-shadow: 0 2px 7px rgba(20,45,75,.08);
}

.ahoy-actions b {
    display: block;

    margin-bottom: 6px;

    color: #0756a6;

    font-size: 18px;
    line-height: 1;
}

.ahoy-actions strong {
    display: block;

    color: #063c7d;

    font-size: 10px;
    line-height: 1.1;
    font-weight: 900;
}

.ahoy-actions small {
    display: block;

    margin-top: 4px;

    color: #16355e;

    font-size: 8px;
    line-height: 1.1;
}


/* ============================================================
   22. STATUS DOTS
   ============================================================ */

.green-dot,
.amber-dot {
    display: inline-block;

    width: 6px;
    height: 6px;

    margin-right: 3px;

    border-radius: 50%;

    vertical-align: middle;
}

.green-dot {
    background: #079658;
}

.amber-dot {
    background: #f28c00;
}

/* ============================================================
   CONTACTS & LINKS
   ============================================================ */

.contacts-links-card {
    border-color: #0756a6 !important;
}

.contacts-links-card .tile-icon {
    color: #0756a6;
}

.contacts-links-card:hover {
    border-color: #0756a6 !important;
}

/* ============================================================
   DASHBOARD AMENDMENT 01 — SUMMARY CARD BORDERS
   ============================================================
   All five summary cards use the same blue as the
   Planning a Journey banner.

   Status colours remain unchanged.
   ============================================================ */

.frozen-overview-grid > .frozen-condition-tile {
    border-color: #0756a6 !important;
}

.frozen-overview-grid > .navigation-notices-card {
    border-color: #0756a6 !important;
    border-radius: 8px !important;
}
/* ============================================================
   TBANav
   NAVIGATION NOTICES CARD — CENTRED STATISTICS
   ============================================================

   Presentation-only refinement.

   Does NOT alter:
   - notice data
   - notice counts
   - adapter
   - controller
   - dashboard state
   - ABP processing

   ============================================================ */

.navigation-notices-card
.navigation-notice-section {

    display: block;
    width: 100%;
    box-sizing: border-box;

    text-align: center;
}


.navigation-notices-card
.navigation-notice-section > b {

    display: block;
    width: 100%;

    text-align: center;
}


.navigation-notices-card
.navigation-notice-status.current {

    display: block;
    width: 100%;

    margin-left: auto;
    margin-right: auto;

    text-align: center;

    box-sizing: border-box;
}


/*
 * The current-status indicator is not required for these
 * numerical presentation values. Removing it prevents the
 * indicator from affecting horizontal centring.
 */

.navigation-notices-card
.navigation-notice-status.current > i {

    display: none;
}


/*
 * Keep the explanatory text centred as well.
 */

.navigation-notices-card > small {

    display: block;

    width: 100%;

    margin-left: auto;
    margin-right: auto;

    text-align: center;
}
/* ============================================================
   TBANAV — AHOY / SPONSOR AREA
   FINAL LAYOUT
   ============================================================ */

.frozen-ahoy {
    width: 100%;
    box-sizing: border-box;

    display: grid !important;

    grid-template-columns:
        minmax(430px, 0.8fr)
        minmax(520px, 1.2fr);

    gap: 24px;

    align-items: stretch;

    padding: 20px;

    background: #fff;

    border: 1px solid #d8e0ea;

    border-radius: 8px;

    overflow: hidden;
}


/* ============================================================
   LEFT AHOY AREA
   ============================================================ */

.frozen-ahoy .ahoy-left {
    min-width: 0;

    display: flex !important;

    flex-direction: column;

    align-items: stretch;

    justify-content: center;
}


/* ============================================================
   AHOY BRAND
   ============================================================ */

.frozen-ahoy .ahoy-brand {
    width: 100%;

    text-align: center;

    margin: 0 0 14px 0;
}


.frozen-ahoy .ahoy-art {
    display: flex !important;

    align-items: center;

    justify-content: center;

    width: 100%;

    line-height: 1;

    color: #0756a6;

    font-size: 58px;

    font-weight: 800;
}


.frozen-ahoy .ahoy-art img {
    display: block;

    width: 58px;

    height: 58px;

    object-fit: contain;

    margin: 0 -2px;
}


.frozen-ahoy .ahoy-brand-copy h2 {
    margin: 3px 0 2px;

    color: #0756a6;

    font-size: 16px;

    line-height: 1.1;

    font-weight: 800;
}


.frozen-ahoy .ahoy-brand-copy p {
    margin: 0;

    color: #0756a6;

    font-size: 10px;

    font-style: italic;
}


/* ============================================================
   ACTION CARDS — 3 × 2
   ============================================================ */

.frozen-ahoy .ahoy-actions {
    width: 100%;

    display: grid !important;

    grid-template-columns:
        repeat(3, minmax(0, 1fr));

    grid-template-rows:
        repeat(2, minmax(78px, auto));

    gap: 7px;
}


.frozen-ahoy .ahoy-actions a {
    min-width: 0;

    min-height: 78px;

    box-sizing: border-box;

    display: flex !important;

    flex-direction: column;

    align-items: center;

    justify-content: center;

    text-align: center;

    padding: 7px 5px;

    background: #fff;

    border: 1px solid #c9d9ea;

    border-radius: 5px;

    text-decoration: none;

    color: #0756a6;

    overflow: hidden;

    transition:
        transform 0.18s ease,
        box-shadow 0.18s ease,
        border-color 0.18s ease;
}


.frozen-ahoy .ahoy-actions a:hover {
    transform: translateY(-2px);

    border-color: #0756a6;

    box-shadow:
        0 4px 12px rgba(0, 0, 0, 0.08);
}


.frozen-ahoy .ahoy-actions b {
    display: block;

    margin: 0 0 4px;

    font-size: 16px;

    line-height: 1;
}


.frozen-ahoy .ahoy-actions strong {
    display: block;

    font-size: 10px;

    line-height: 1.15;

    font-weight: 800;
}


.frozen-ahoy .ahoy-actions small {
    display: block;

    margin-top: 3px;

    font-size: 8px;

    line-height: 1.15;

    color: #35506f;
}


/* ============================================================
   RIGHT-HAND SPONSOR PANEL
   ============================================================ */

.frozen-ahoy .ahoy-sponsors {
    min-width: 0;

    width: 100%;

    box-sizing: border-box;

    display: flex !important;

    flex-direction: column !important;

    align-items: stretch !important;

    justify-content: center !important;

    padding: 12px;

    background: #f7fafd;

    border: 1px solid #d8e0ea;

    border-radius: 7px;

    overflow: hidden;
}


/* ============================================================
   SPONSOR HEADING
   ============================================================ */

.frozen-ahoy .ahoy-sponsors-heading {
    display: block;

    width: 100%;

    margin: 0 0 8px;

    text-align: center;

    color: #0756a6;

    font-size: 12px;

    line-height: 1.2;

    font-weight: 800;

    letter-spacing: 0.08em;
}


/* ============================================================
   SPONSOR STAGE
   ============================================================ */

.frozen-ahoy .ahoy-sponsor-stage {
    position: relative;

    display: block !important;

    width: 100%;

    height: 190px;

    min-height: 190px;

    box-sizing: border-box;

    overflow: hidden;

    background: #fff;

    border: 1px solid #d8e0ea;

    border-radius: 5px;
}


/* ============================================================
   SPONSOR SLIDES
   ============================================================ */

.frozen-ahoy .ahoy-sponsor-slide {
    position: absolute;

    inset: 0;

    width: 100%;

    height: 100%;

    box-sizing: border-box;

    display: flex !important;

    align-items: center;

    justify-content: center;

    padding: 12px;

    opacity: 0;

    visibility: hidden;

    text-decoration: none;

    transition:
        opacity 0.7s ease,
        visibility 0.7s ease;
}


.frozen-ahoy .ahoy-sponsor-slide.active {
    opacity: 1;

    visibility: visible;
}


.frozen-ahoy .ahoy-sponsor-slide img {
    display: block;

    width: 100%;

    height: 100%;

    max-width: 100%;

    max-height: 166px;

    object-fit: contain;
}


/* ============================================================
   SPONSOR PLACEHOLDER
   ============================================================ */

.frozen-ahoy .ahoy-sponsor-placeholder {
    width: 100%;

    height: 100%;

    min-height: 190px;

    box-sizing: border-box;

    display: flex !important;

    flex-direction: column !important;

    align-items: center !important;

    justify-content: center !important;

    text-align: center;

    color: #0756a6;
}


.frozen-ahoy .ahoy-sponsor-placeholder strong {
    display: block;

    margin: 0;

    font-size: 18px;

    line-height: 1.2;

    font-weight: 800;
}


.frozen-ahoy .ahoy-sponsor-placeholder span {
    display: block;

    margin-top: 7px;

    font-size: 12px;

    line-height: 1.3;
}


.frozen-ahoy .ahoy-sponsor-placeholder small {
    display: block;

    margin-top: 10px;

    font-size: 10px;

    line-height: 1.3;

    color: #5c7085;
}


/* ============================================================
   SPONSOR DOTS
   ============================================================ */

.frozen-ahoy .ahoy-sponsor-dots {
    display: flex !important;

    align-items: center;

    justify-content: center;

    gap: 5px;

    width: 100%;

    margin-top: 8px;
}


.frozen-ahoy .ahoy-sponsor-dots span {
    display: block;

    width: 6px;

    height: 6px;

    border-radius: 50%;

    background: #c7d4e2;
}


.frozen-ahoy .ahoy-sponsor-dots span.active {
    background: #0756a6;
}

/* ============================================================
   23. RESPONSIVE LAYOUT — CONSOLIDATED
   ============================================================

   The responsive rules below replace the previous overlapping
   desktop/tablet/mobile/landscape overrides.

   Goals:
   - keep the desktop six-card overview intact
   - make tablet widths progressively tighter
   - give portrait phones a simple one-column flow
   - give landscape phones a compact 3-column dashboard
   - prevent the River Level Assessment from forcing the
     landscape grid to become excessively tall
   - keep the AHOY / sponsor area proportional
   ============================================================ */


/* ============================================================
   23.1 MEDIUM DESKTOP
   ============================================================ */

@media screen and (max-width: 1250px) and (min-width: 801px) {

    .frozen-overview-grid {
        grid-template-columns:
            minmax(300px, 1.3fr)
            repeat(3, minmax(0, 1fr));

        grid-template-rows:
            repeat(2, minmax(225px, auto));

        gap: 7px;
    }

    .frozen-condition-tile,
    .navigation-notices-card {
        min-height: 225px;
        padding-left: 7px;
        padding-right: 7px;
    }

    .frozen-condition-tile .tile-icon {
        width: 44px;
        height: 44px;
        flex-basis: 44px;
        font-size: 29px;
    }

    .frozen-condition-tile > strong {
        font-size: 12px;
    }

    .frozen-condition-tile .tile-status {
        font-size: 14px;
    }

    .frozen-journey-banner {
        grid-template-columns:
            125px
            minmax(0, 1fr)
            370px
            135px;
    }

    .journey-copy h2 {
        font-size: 20px;
    }

    .journey-copy h3 {
        font-size: 13px;
    }
}


/* ============================================================
   23.2 NARROW DESKTOP / TABLET
   ============================================================ */

@media screen and (max-width: 1050px) and (min-width: 801px) {

    .frozen-overview-grid {
        grid-template-columns:
            minmax(285px, 1.2fr)
            repeat(3, minmax(0, 1fr));

        grid-template-rows:
            repeat(2, minmax(210px, auto));

        gap: 6px;
    }

    .frozen-condition-tile,
    .navigation-notices-card {
        min-height: 210px;
    }

    .frozen-condition-tile .tile-icon {
        width: 40px;
        height: 40px;
        flex-basis: 40px;
        font-size: 26px;
        margin-bottom: 9px;
    }

    .frozen-condition-tile > strong {
        font-size: 11px;
    }

    .frozen-condition-tile .tile-status {
        font-size: 13px;
    }

    .frozen-journey-banner {
        grid-template-columns:
            105px
            minmax(0, 1fr)
            315px
            120px;
    }

    .journey-art img {
        width: 95px;
    }

    .journey-copy h2 {
        font-size: 18px;
    }

    .journey-copy h3 {
        font-size: 12px;
    }

    .journey-copy p {
        font-size: 9px;
    }
}


/* ============================================================
   23.3 GENERAL MOBILE
   ============================================================ */

@media screen and (max-width: 800px) {

    .frozen-overview-card {
        padding: 8px;
    }

    .frozen-overview-grid {
        grid-template-columns: 1fr 1fr;
        gap: 7px;
    }

    .frozen-overview-grid > * {
        grid-column: auto;
        grid-row: auto;
    }

    .frozen-condition-tile:first-child {
        grid-column: 1 / -1;
    }

    .frozen-condition-tile,
    .navigation-notices-card {
        min-height: 185px;
    }

    .frozen-journey-banner {
        grid-template-columns: 1fr;
        gap: 10px;
        padding: 15px;
    }

    .journey-art {
        justify-content: flex-start;
    }

    .journey-copy {
        padding-right: 0;
    }

    .journey-steps {
        height: auto;
        border-left: 0;
        border-top: 1px solid rgba(255,255,255,.35);
        border-bottom: 1px solid rgba(255,255,255,.35);
    }

    .journey-steps > div {
        min-height: 65px;
    }

    .journey-action {
        padding-left: 0;
    }

    .journey-button {
        max-width: 260px;
    }
}


/* ============================================================
   23.4 PORTRAIT PHONE
   ============================================================ */

@media screen and (max-width: 600px) and (orientation: portrait) {

    .frozen-overview-card {
        padding: 10px;
    }

    .frozen-overview-heading {
        font-size: 17px;
        line-height: 1.2;
        text-align: center;
        margin-bottom: 10px;
    }

    .frozen-overview-grid {
        display: grid !important;
        grid-template-columns: 1fr !important;
        gap: 10px !important;
        width: 100%;
    }

    .frozen-overview-grid > * {
        grid-column: auto !important;
        grid-row: auto !important;
    }

    .frozen-overview-grid .tbanav-river-card,
    .frozen-overview-grid .river-level-card,
    .frozen-overview-grid .frozen-river-card {
        grid-column: auto !important;
        grid-row: auto !important;
        width: 100%;
        min-width: 0;
        min-height: 0 !important;
        box-sizing: border-box;
    }

    .frozen-condition-tile {
        width: 100%;
        min-width: 0;
        min-height: 185px;
        padding: 14px 10px;
    }

    .frozen-condition-tile .tile-icon {
        font-size: 34px;
    }

    .frozen-condition-tile > strong {
        font-size: 15px;
        line-height: 1.15;
    }

    .frozen-condition-tile small {
        max-width: 240px;
        font-size: 11px;
        line-height: 1.35;
    }

    .navigation-notices-card {
        min-height: 220px;
    }

    .navigation-notices-card .navigation-notice-section {
        width: 100%;
        max-width: 220px;
        margin-left: auto;
        margin-right: auto;
    }

    .navigation-disclaimer {
        margin-top: 10px;
    }

    .frozen-ahoy {
        grid-template-columns: 1fr !important;
        gap: 16px !important;
        padding: 14px !important;
    }

    .frozen-ahoy .ahoy-art {
        font-size: 50px !important;
    }

    .frozen-ahoy .ahoy-art img {
        width: 50px !important;
        height: 50px !important;
        flex-basis: 50px !important;
    }

    .frozen-ahoy .ahoy-brand-copy h2 {
        font-size: 15px !important;
    }

    .frozen-ahoy .ahoy-actions {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        grid-template-rows: repeat(3, auto) !important;
        gap: 7px !important;
    }

    .frozen-ahoy .ahoy-actions a {
        min-height: 82px !important;
    }

    .frozen-ahoy .ahoy-sponsors {
        width: 100%;
    }

    .frozen-ahoy .ahoy-sponsor-stage {
        height: 150px;
        min-height: 150px;
    }
}


/* ============================================================
   23.5 VERY SMALL PORTRAIT PHONES
   ============================================================ */

@media screen and (max-width: 500px) and (orientation: portrait) {

    .frozen-condition-tile,
    .navigation-notices-card {
        min-height: 170px;
    }

    .ahoy-art > span {
        font-size: 54px;
    }

    .ahoy-art > img {
        width: 58px;
        height: 58px;
        flex-basis: 58px;
    }
}


/* ============================================================
   23.6 LANDSCAPE PHONE / SMALL TABLET
   ============================================================

   SIX-CARD OVERVIEW

   River Level Assessment occupies the left two rows.
   The six supporting cards form a balanced 3 x 2 grid.

   This deliberately avoids a stretched final card. Every
   supporting card has an equal footprint, which keeps the
   dashboard visually consistent with desktop and portrait.
   ============================================================ */

@media screen
    and (max-width: 1100px)
    and (orientation: landscape) {

    .frozen-overview-card {
        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
        padding: 9px;
        overflow: hidden;
    }

    .frozen-overview-heading {
        font-size: 15px;
        line-height: 1.1;
        margin-bottom: 7px;
    }

    .frozen-overview-grid {
        display: grid !important;

        grid-template-columns:
            minmax(250px, 1.55fr)
            repeat(3, minmax(115px, .9fr)) !important;

        grid-template-rows:
            repeat(2, minmax(150px, 1fr)) !important;

        gap: 7px !important;

        width: 100%;
        max-width: 100%;
        box-sizing: border-box;
        overflow: hidden;
    }

    /* River Level Assessment */

    .frozen-overview-grid > :first-child {
        grid-column: 1 !important;
        grid-row: 1 / span 2 !important;

        width: 100% !important;
        min-width: 0 !important;
        min-height: 0 !important;
        height: auto !important;

        box-sizing: border-box !important;
        align-self: stretch !important;
        overflow: hidden !important;
    }

    /* Supporting cards — 3 x 2 */

    .frozen-overview-grid > :nth-child(2) {
        grid-column: 2 !important;
        grid-row: 1 !important;
    }

    .frozen-overview-grid > :nth-child(3) {
        grid-column: 3 !important;
        grid-row: 1 !important;
    }

    .frozen-overview-grid > :nth-child(4) {
        grid-column: 4 !important;
        grid-row: 1 !important;
    }

    .frozen-overview-grid > :nth-child(5) {
        grid-column: 2 !important;
        grid-row: 2 !important;
    }

    .frozen-overview-grid > :nth-child(6) {
        grid-column: 3 !important;
        grid-row: 2 !important;
    }

    .frozen-overview-grid > :nth-child(7) {
        grid-column: 4 !important;
        grid-row: 2 !important;
    }

    .frozen-overview-grid .frozen-condition-tile,
    .frozen-overview-grid .navigation-notices-card {
        width: 100%;
        min-width: 0;
        min-height: 0 !important;
        height: 100%;
        box-sizing: border-box;
        overflow: hidden;
    }

    .frozen-overview-grid .frozen-condition-tile {
        padding: 9px 6px;
    }

    .frozen-overview-grid .navigation-notices-card {
        padding: 9px 6px;
    }

    .frozen-overview-grid .frozen-condition-tile .tile-icon {
        width: 34px;
        height: 34px;
        flex-basis: 34px;
        margin-bottom: 7px;
        font-size: 26px;
    }

    .frozen-overview-grid .frozen-condition-tile > strong {
        margin-bottom: 6px;
        font-size: 11px;
        line-height: 1.08;
    }

    .frozen-overview-grid .frozen-condition-tile .tile-status {
        margin-bottom: 6px;
        font-size: 12px;
        line-height: 1.05;
    }

    .frozen-overview-grid .frozen-condition-tile small {
        max-width: 125px;
        font-size: 8px;
        line-height: 1.2;
    }

    .frozen-overview-grid .navigation-notice-section {
        width: 100%;
        max-width: 125px;
        margin-left: auto;
        margin-right: auto;
        text-align: center;
    }

    .frozen-overview-grid .navigation-notice-section > b {
        display: block;
        width: 100%;
        font-size: 8px;
        line-height: 1.05;
        text-align: center;
    }

    .frozen-overview-grid .navigation-notice-status {
        display: block;
        width: 100%;
        font-size: 11px;
        line-height: 1.05;
        text-align: center;
    }

    .frozen-overview-grid .navigation-notices-card > small {
        display: block;
        width: 100%;
        max-width: 125px;
        margin-left: auto;
        margin-right: auto;
        font-size: 7px;
        line-height: 1.2;
        text-align: center;
    }

    /* Contacts & Links */

    .contacts-links-card .tile-icon {
        font-size: 26px;
    }

    /* Journey Planner */

    .frozen-journey-banner {
        width: 100%;
        max-width: 100%;
        min-height: 88px;
        box-sizing: border-box;
        overflow: hidden;
    }

    /* AHOY + Sponsors */

    .frozen-ahoy {
        display: grid !important;
        grid-template-columns:
            minmax(360px, 1fr)
            minmax(280px, .8fr) !important;
        gap: 12px !important;
        width: 100% !important;
        min-width: 0 !important;
        padding: 12px !important;
        box-sizing: border-box !important;
        align-items: stretch !important;
    }

    .frozen-ahoy .ahoy-left {
        width: 100% !important;
        min-width: 0 !important;
    }

    .frozen-ahoy .ahoy-brand {
        margin: 0 0 7px 0 !important;
    }

    .frozen-ahoy .ahoy-art {
        width: 100% !important;
        min-width: 0 !important;
        font-size: 44px !important;
        line-height: 1 !important;
    }

    .frozen-ahoy .ahoy-art img {
        width: 44px !important;
        height: 44px !important;
        flex: 0 0 44px !important;
    }

    .frozen-ahoy .ahoy-brand-copy h2 {
        font-size: 13px !important;
        margin: 2px 0 !important;
    }

    .frozen-ahoy .ahoy-brand-copy p {
        font-size: 8px !important;
    }

    .frozen-ahoy .ahoy-actions {
        grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
        grid-template-rows: repeat(2, minmax(60px, auto)) !important;
        gap: 6px !important;
    }

    .frozen-ahoy .ahoy-actions a {
        min-height: 60px !important;
        padding: 5px 4px !important;
    }

    .frozen-ahoy .ahoy-actions b {
        font-size: 14px !important;
        margin-bottom: 3px !important;
    }

    .frozen-ahoy .ahoy-actions strong {
        font-size: 8px !important;
        line-height: 1.1 !important;
    }

    .frozen-ahoy .ahoy-actions small {
        font-size: 6px !important;
        line-height: 1.1 !important;
    }

    .frozen-ahoy .ahoy-sponsors {
        width: 100% !important;
        min-width: 0 !important;
        height: 100% !important;
        padding: 8px !important;
        box-sizing: border-box !important;
    }

    .frozen-ahoy .ahoy-sponsors-heading {
        font-size: 10px !important;
        margin-bottom: 5px !important;
        text-align: center !important;
    }

    .frozen-ahoy .ahoy-sponsor-stage {
        width: 100% !important;
        height: 125px !important;
        min-height: 125px !important;
    }

    .frozen-ahoy .ahoy-sponsor-slide {
        padding: 8px !important;
    }

    .frozen-ahoy .ahoy-sponsor-slide img {
        max-height: 108px !important;
    }
}


/* ============================================================
   23.7 VERY SHORT LANDSCAPE PHONES
   ============================================================ */

@media screen
    and (max-width: 900px)
    and (orientation: landscape)
    and (max-height: 500px) {

    .frozen-overview-card {
        padding: 7px;
    }

    .frozen-overview-heading {
        font-size: 14px;
        margin-bottom: 5px;
    }

    .frozen-overview-grid {
        grid-template-columns:
            minmax(220px, 1.55fr)
            repeat(3, minmax(95px, .9fr)) !important;

        grid-template-rows:
            repeat(2, minmax(125px, 1fr)) !important;

        gap: 6px !important;
    }

    .frozen-overview-grid > :first-child {
        grid-column: 1 !important;
        grid-row: 1 / span 2 !important;
        min-height: 0 !important;
        height: auto !important;
    }

    .frozen-overview-grid > :nth-child(2) { grid-column: 2 !important; grid-row: 1 !important; }
    .frozen-overview-grid > :nth-child(3) { grid-column: 3 !important; grid-row: 1 !important; }
    .frozen-overview-grid > :nth-child(4) { grid-column: 4 !important; grid-row: 1 !important; }
    .frozen-overview-grid > :nth-child(5) { grid-column: 2 !important; grid-row: 2 !important; }
    .frozen-overview-grid > :nth-child(6) { grid-column: 3 !important; grid-row: 2 !important; }
    .frozen-overview-grid > :nth-child(7) { grid-column: 4 !important; grid-row: 2 !important; }

    .frozen-overview-grid .frozen-condition-tile {
        padding: 6px 5px;
    }

    .frozen-overview-grid .navigation-notices-card {
        padding: 6px 5px;
    }

    .frozen-overview-grid .frozen-condition-tile .tile-icon {
        width: 30px;
        height: 30px;
        flex-basis: 30px;
        font-size: 23px;
        margin-bottom: 5px;
    }

    .frozen-overview-grid .frozen-condition-tile > strong {
        font-size: 10px;
    }

    .frozen-overview-grid .frozen-condition-tile .tile-status {
        font-size: 11px;
    }

    .frozen-overview-grid .frozen-condition-tile small {
        max-width: 105px;
        font-size: 7px;
    }

    .frozen-overview-grid .navigation-notice-section {
        max-width: 95px;
    }

    .frozen-overview-grid .navigation-notice-status {
        font-size: 10px;
    }

    .frozen-overview-grid .navigation-notices-card > small {
        max-width: 95px;
        font-size: 6.5px;
    }

    .frozen-overview-grid .contacts-links-card small {
        max-width: 95px;
    }

    .frozen-ahoy {
        grid-template-columns:
            minmax(330px, 1fr)
            minmax(260px, .8fr) !important;
        gap: 9px !important;
        padding: 9px !important;
    }

    .frozen-ahoy .ahoy-art {
        font-size: 38px !important;
    }

    .frozen-ahoy .ahoy-art img {
        width: 38px !important;
        height: 38px !important;
        flex-basis: 38px !important;
    }

    .frozen-ahoy .ahoy-brand {
        margin-bottom: 4px !important;
    }

    .frozen-ahoy .ahoy-actions {
        grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
        grid-template-rows: repeat(2, minmax(52px, auto)) !important;
        gap: 5px !important;
    }

    .frozen-ahoy .ahoy-actions a {
        min-height: 52px !important;
        padding: 3px !important;
    }

    .frozen-ahoy .ahoy-actions b {
        font-size: 11px !important;
    }

    .frozen-ahoy .ahoy-actions strong {
        font-size: 7px !important;
    }

    .frozen-ahoy .ahoy-actions small {
        font-size: 5.5px !important;
    }

    .frozen-ahoy .ahoy-sponsor-stage {
        height: 100px !important;
        min-height: 100px !important;
    }
}
/* ============================================================
   TBANAV — CARD PLACEMENT LOCK
   Uses card classes instead of unreliable child positions.
   ============================================================ */

@media screen and (min-width: 801px) {

    .frozen-overview-grid > .tbanav-river-card {
        grid-column: 1 !important;
        grid-row: 1 / span 2 !important;
    }

    .frozen-overview-grid > .vessel-restrictions-card {
        grid-column: 2 !important;
        grid-row: 1 !important;
    }

    .frozen-overview-grid > .contacts-links-card {
        grid-column: 3 !important;
        grid-row: 1 !important;
    }

    .frozen-overview-grid > .lock-access-card {
        grid-column: 4 !important;
        grid-row: 1 !important;
    }

    .frozen-overview-grid > .weather-card {
        grid-column: 2 !important;
        grid-row: 2 !important;
    }

    .frozen-overview-grid > .tidal-card {
        grid-column: 3 !important;
        grid-row: 2 !important;
    }

    .frozen-overview-grid > .navigation-notices-card {
        grid-column: 4 !important;
        grid-row: 2 !important;
    }
}
/* ============================================================
   TBANAV — COMPACT DESKTOP CARD HEIGHTS
   ============================================================ */

@media screen and (min-width: 1101px) {

    .frozen-overview-grid {
        grid-template-rows:
            repeat(2, 155px) !important;
    }

    .frozen-overview-grid > .frozen-condition-tile,
    .frozen-overview-grid > .navigation-notices-card {
        min-height: 0 !important;
        height: 155px !important;
        padding-top: 8px !important;
        padding-bottom: 8px !important;
    }

    .frozen-overview-grid > .tbanav-river-card {
        min-height: 0 !important;
        height: auto !important;
        align-self: stretch !important;
    }
}
/* ============================================================
   TBANav — DESKTOP HORIZONTAL CONDITION CARDS
   Presentation-only amendment.

   Load after dashboard.css, or append this complete block to
   the end of public/css/dashboard.css.

   Scope: desktop widths above 1100px only.
   River Level Assessment, tablet and mobile layouts unchanged.
   ============================================================ */

@media screen and (min-width: 1101px) {

    /* --------------------------------------------------------
       SIX SUPPORTING CARDS
       Icon at left; information at right.
       -------------------------------------------------------- */

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card),
    .frozen-overview-grid > .navigation-notices-card {
        display: grid !important;
        grid-template-columns: 58px minmax(0, 1fr) !important;
        grid-auto-rows: auto;
        column-gap: 12px;
        row-gap: 4px;
        align-content: center !important;
        align-items: center;
        justify-content: stretch;
        justify-items: start !important;
        padding: 10px 12px !important;
        text-align: left !important;
        overflow: hidden;
    }

    /* Icon occupies the complete left side. */

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card) > .tile-icon,
    .frozen-overview-grid > .navigation-notices-card > .tile-icon {
        grid-column: 1 !important;
        grid-row: 1 / -1 !important;
        align-self: center !important;
        justify-self: center !important;
        width: 52px !important;
        height: 52px !important;
        min-width: 52px !important;
        min-height: 52px !important;
        margin: 0 !important;
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
        font-size: 34px !important;
        line-height: 1 !important;
    }

    /* Every information element remains in the right column. */

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card) > :not(.tile-icon),
    .frozen-overview-grid > .navigation-notices-card > :not(.tile-icon) {
        grid-column: 2 !important;
        width: 100%;
        max-width: none !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
        text-align: left !important;
        box-sizing: border-box;
    }

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card) > strong,
    .frozen-overview-grid > .navigation-notices-card > strong {
        margin: 0 !important;
        font-size: 13px !important;
        line-height: 1.05 !important;
    }

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card) > .tile-status {
        margin: 1px 0 !important;
        font-size: 15px !important;
        line-height: 1.1 !important;
    }

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card) > small,
    .frozen-overview-grid > .navigation-notices-card > small {
        margin-top: 1px !important;
        font-size: 9px !important;
        line-height: 1.25 !important;
    }

    /* --------------------------------------------------------
       NAVIGATION NOTICES
       Compact the three live summary rows within the same card.
       -------------------------------------------------------- */

    .frozen-overview-grid > .navigation-notices-card {
        grid-template-columns: 52px minmax(0, 1fr) !important;
        column-gap: 10px;
        row-gap: 2px;
    }

    .frozen-overview-grid > .navigation-notices-card > .tile-icon {
        width: 46px !important;
        height: 46px !important;
        min-width: 46px !important;
        min-height: 46px !important;
        font-size: 38px !important;
    }

    .frozen-overview-grid > .navigation-notices-card > strong {
        font-size: 12px !important;
    }

    .frozen-overview-grid > .navigation-notices-card > .navigation-notice-section {
        display: flex !important;
        align-items: baseline !important;
        justify-content: flex-start !important;
        gap: 6px;
        min-height: 0 !important;
        line-height: 1 !important;
    }

    .frozen-overview-grid > .navigation-notices-card .navigation-notice-section > b {
        flex: 0 0 auto;
        margin: 0 !important;
        font-size: 7px !important;
        line-height: 1 !important;
    }

    .frozen-overview-grid > .navigation-notices-card .navigation-notice-status {
        display: inline-flex !important;
        align-items: center;
        gap: 3px;
        margin: 0 !important;
        font-size: 10px !important;
        line-height: 1 !important;
        white-space: nowrap;
    }

    .frozen-overview-grid > .navigation-notices-card > small {
        font-size: 8px !important;
        line-height: 1.15 !important;
    }
}

/* ============================================================
   REVISION 02 — ALIGNMENT AND TEXT VISIBILITY
   Must remain after the primary horizontal-card rules above.
   ============================================================ */

@media screen and (min-width: 1101px) {

    /* Give the information column a little more usable width. */

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card),
    .frozen-overview-grid > .navigation-notices-card {
        grid-template-columns: 50px minmax(0, 1fr) !important;
        column-gap: 10px !important;
        padding-left: 10px !important;
        padding-right: 10px !important;
    }

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card) > .tile-icon,
    .frozen-overview-grid > .navigation-notices-card > .tile-icon {
        width: 46px !important;
        height: 46px !important;
        min-width: 46px !important;
        min-height: 46px !important;
        font-size: 31px !important;
    }

    /* Keep title, status and description on consistent baselines. */

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card) > strong {
        min-height: 28px;
        display: flex !important;
        align-items: flex-end !important;
        justify-content: flex-start !important;
    }

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card) > .tile-status {
        width: auto !important;
        min-height: 18px;
        display: flex !important;
        align-items: center !important;
        justify-content: flex-start !important;
        justify-self: start !important;
        text-align: left !important;
    }

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card) > small {
        min-height: 28px;
        display: block !important;
        overflow: visible !important;
        white-space: normal !important;
    }

    /* Navigation Notices: keep labels and values together. */

    .frozen-overview-grid > .navigation-notices-card > strong,
    .frozen-overview-grid > .navigation-notices-card > small,
    .frozen-overview-grid > .navigation-notices-card > .navigation-notice-section {
        justify-self: start !important;
        text-align: left !important;
    }

    .frozen-overview-grid > .navigation-notices-card > .navigation-notice-section {
        width: auto !important;
        max-width: 100% !important;
        justify-content: flex-start !important;
    }

    .frozen-overview-grid > .navigation-notices-card .navigation-notice-status {
        width: auto !important;
        flex: 0 0 auto !important;
        justify-content: flex-start !important;
        justify-self: start !important;
        text-align: left !important;
    }

    .frozen-overview-grid > .navigation-notices-card .navigation-notice-status i {
        flex: 0 0 auto;
    }

    .frozen-overview-grid > .navigation-notices-card > small {
        width: 100% !important;
        overflow: visible !important;
        white-space: normal !important;
    }
}
/* ============================================================
   TBANav — PROFESSIONAL DESKTOP CONDITION CARDS
   Prototype-aligned presentation amendment

   Load after dashboard.css, or append this complete block to
   the end of public/css/dashboard.css.

   Desktop only: 1101px and wider.
   River Assessment, tablet and mobile layouts are unchanged.
   ============================================================ */

@media screen and (min-width: 1101px) {

    /* --------------------------------------------------------
       CARD FRAME AND INTERNAL GRID

       TITLE
       ICON     STATUS
       ICON     DESCRIPTION
       -------------------------------------------------------- */

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card),
    .frozen-overview-grid > .navigation-notices-card {
        display: grid !important;
        grid-template-columns: 76px minmax(0, 1fr) !important;
        grid-template-rows: 34px 27px minmax(0, 1fr) !important;
        column-gap: 12px !important;
        row-gap: 2px !important;
        align-items: center !important;
        align-content: stretch !important;
        justify-items: start !important;
        box-sizing: border-box !important;
        padding: 10px 14px 11px !important;
        text-align: left !important;
        overflow: hidden !important;
        border-radius: 10px !important;
    }

    /* --------------------------------------------------------
       FULL-WIDTH TITLE
       Existing title line breaks are suppressed on desktop.
       -------------------------------------------------------- */

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card) > strong,
    .frozen-overview-grid > .navigation-notices-card > strong {
        grid-column: 1 / -1 !important;
        grid-row: 1 !important;
        align-self: start !important;
        justify-self: center !important;
        width: 100% !important;
        max-width: none !important;
        min-height: 0 !important;
        margin: 0 !important;
        color: #0756a6 !important;
        font-size: 0 !important;
        line-height: 1.05 !important;
        font-weight: 900 !important;
        letter-spacing: 0 !important;
        text-align: center !important;
        white-space: nowrap !important;
    }

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card) > strong::after,
    .frozen-overview-grid > .navigation-notices-card > strong::after {
        display: block;
        width: 100%;
        color: #0756a6;
        font-size: 17px;
        line-height: 1.05;
        font-weight: 900;
        text-align: center;
        white-space: nowrap;
    }

    .frozen-overview-grid > .vessel-restrictions-card > strong::after {
        content: "VESSEL RESTRICTIONS";
    }

    .frozen-overview-grid > .contacts-links-card > strong::after {
        content: "CONTACTS & LINKS";
    }

    .frozen-overview-grid > .lock-access-card > strong::after {
        content: "LOCKS & ACCESS";
    }

    .frozen-overview-grid > .weather-card > strong::after {
        content: "WEATHER";
    }

    .frozen-overview-grid > .tidal-card > strong::after {
        content: "TIDAL DATA";
    }

    .frozen-overview-grid > .navigation-notices-card > strong::after {
        content: "NAVIGATION NOTICES";
    }

    /* --------------------------------------------------------
       LARGE LEFT-HAND ICON
       -------------------------------------------------------- */

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card) > .tile-icon,
    .frozen-overview-grid > .navigation-notices-card > .tile-icon {
        grid-column: 1 !important;
        grid-row: 2 / 4 !important;
        align-self: center !important;
        justify-self: center !important;
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
        width: 64px !important;
        height: 64px !important;
        min-width: 64px !important;
        min-height: 64px !important;
        margin: 0 !important;
        padding: 0 !important;
        font-size: 43px !important;
        line-height: 1 !important;
        text-align: center !important;
        overflow: visible !important;
    }

    /* --------------------------------------------------------
       STATUS
       -------------------------------------------------------- */

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card) > .tile-status {
        grid-column: 2 !important;
        grid-row: 2 !important;
        align-self: center !important;
        justify-self: start !important;
        display: flex !important;
        align-items: center !important;
        justify-content: flex-start !important;
        gap: 8px !important;
        width: auto !important;
        max-width: 100% !important;
        min-height: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
        font-size: 18px !important;
        line-height: 1 !important;
        font-weight: 900 !important;
        text-align: left !important;
        white-space: nowrap !important;
    }

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card) > .tile-status i {
        flex: 0 0 auto !important;
        margin: 0 !important;
    }

    /* --------------------------------------------------------
       DESCRIPTION
       -------------------------------------------------------- */

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card) > small {
        grid-column: 2 !important;
        grid-row: 3 !important;
        align-self: start !important;
        justify-self: start !important;
        display: block !important;
        width: 100% !important;
        max-width: none !important;
        min-height: 0 !important;
        margin: 2px 0 0 !important;
        padding: 0 !important;
        color: #111 !important;
        font-size: 11px !important;
        line-height: 1.38 !important;
        font-weight: 400 !important;
        text-align: left !important;
        white-space: normal !important;
        overflow: visible !important;
    }

    /* Contacts has no status line: centre its description. */

    .frozen-overview-grid > .contacts-links-card > small {
        grid-row: 2 / 4 !important;
        align-self: center !important;
        margin-top: 0 !important;
    }

    /* Tidal movement remains visible between status and text. */

    .frozen-overview-grid > .frozen-condition-tile.tidal-card {
        grid-template-rows: 30px 25px 18px minmax(0, 1fr) !important;
        row-gap: 3px !important;
    }

    .frozen-overview-grid > .frozen-condition-tile.tidal-card > .tile-icon {
        grid-row: 2 / 5 !important;
    }

    .frozen-overview-grid > .frozen-condition-tile.tidal-card > .tidal-movement,
    .frozen-overview-grid > .frozen-condition-tile.tidal-card > span:not(.tile-icon):not(.tile-status) {
        grid-column: 2 !important;
        grid-row: 3 !important;
        align-self: center !important;
        justify-self: start !important;
        width: auto !important;
        margin: 0 !important;
        font-size: 9px !important;
        line-height: 1 !important;
        text-align: left !important;
        position: static !important;
        transform: none !important;
    }

    .frozen-overview-grid > .frozen-condition-tile.tidal-card > small,
    .frozen-overview-grid > .frozen-condition-tile.tidal-card > .tidal-summary {
        grid-row: 4 !important;
        align-self: start !important;
        margin-top: 4px !important;
        position: static !important;
        transform: none !important;
    }

    /* --------------------------------------------------------
       NAVIGATION NOTICES
       Same hierarchy, with compact live figures at right.
       -------------------------------------------------------- */

    .frozen-overview-grid > .navigation-notices-card {
        grid-template-columns: 76px minmax(0, 1fr) !important;
        grid-template-rows: 28px repeat(4, 17px) minmax(18px, 1fr) !important;
        row-gap: 0 !important;
    }

    .frozen-overview-grid > .navigation-notices-card > .tile-icon {
        grid-row: 2 / 7 !important;
    }

    .frozen-overview-grid > .navigation-notices-card > .navigation-notice-section {
        grid-column: auto !important;
        display: grid !important;
        grid-template-columns: 20px minmax(0, 1fr) !important;
        align-items: center !important;
        justify-content: stretch !important;
        gap: 4px !important;
        width: auto !important;
        max-width: 100% !important;
        min-height: 0 !important;
        height: 17px !important;
        margin: 0 !important;
        padding: 0 !important;
        line-height: 1 !important;
        text-align: left !important;
        position: absolute !important;
        right: 14px !important;
        left: 10px !important;
        transform: none !important;
    }

    .frozen-overview-grid > .navigation-notices-card > .navigation-notice-section:nth-of-type(2) {
        top: 44px !important;
    }

    .frozen-overview-grid > .navigation-notices-card > .navigation-notice-section:nth-of-type(3) {
        top: 61px !important;
    }

    .frozen-overview-grid > .navigation-notices-card > .navigation-notice-section:nth-of-type(4) {
        top: 78px !important;
    }

    .frozen-overview-grid > .navigation-notices-card > .navigation-notice-section:nth-of-type(5) {
        top: 95px !important;
    }

    .frozen-overview-grid > .navigation-notices-card > .navigation-notice-section > b {
        flex: 0 0 auto !important;
        margin: 0 !important;
        grid-column: 2 !important;
        grid-row: 1 !important;
        align-self: center !important;
        font-size: 11px !important;
        line-height: 1.1 !important;
        font-weight: 400 !important;
        color: #111 !important;
        white-space: nowrap !important;
    }

    .frozen-overview-grid > .navigation-notices-card .navigation-notice-status {
        display: inline-flex !important;
        align-items: center !important;
        justify-content: flex-start !important;
        grid-column: 1 !important;
        grid-row: 1 !important;
        align-self: center !important;
        gap: 0 !important;
        flex: 0 0 auto !important;
        width: 100% !important;
        min-height: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
        font-size: 11px !important;
        line-height: 1.1 !important;
        font-weight: 400 !important;
        color: #111 !important;
        text-align: left !important;
        white-space: nowrap !important;
        justify-self: stretch !important;
        position: static !important;
        transform: none !important;
    }

    .frozen-overview-grid > .navigation-notices-card .navigation-notice-status > i {
        display: none !important;
    }

    .frozen-overview-grid > .navigation-notices-card > .navigation-notice-more {
        grid-column: auto !important;
        grid-row: auto !important;
        align-self: start !important;
        justify-self: start !important;
        width: auto !important;
        max-width: none !important;
        margin: 2px 0 0 !important;
        padding: 0 !important;
        color: #111 !important;
        font-size: 10.5px !important;
        line-height: 1.3 !important;
        text-align: left !important;
        position: absolute !important;
        top: 114px !important;
        right: 14px !important;
        left: 10px !important;
        transform: none !important;
    }

    .frozen-overview-grid > .navigation-notices-card > .navigation-notice-more > summary {
        display: block !important;
        margin: 0 !important;
        padding: 2px 0 !important;
        color: #0756a6 !important;
        font-size: 10.5px !important;
        line-height: 1.2 !important;
        font-weight: 900 !important;
        text-align: left !important;
        cursor: pointer !important;
        list-style: none !important;
    }

    .frozen-overview-grid > .navigation-notices-card > .navigation-notice-more > summary::-webkit-details-marker {
        display: none !important;
    }

    .frozen-overview-grid > .navigation-notices-card > .navigation-notice-more > summary::after {
        content: " +";
    }

    .frozen-overview-grid > .navigation-notices-card > .navigation-notice-more[open] > summary::after {
        content: " −";
    }

    .frozen-overview-grid > .navigation-notices-card > .navigation-notice-more > p {
        margin: 4px 0 0 !important;
        padding: 0 !important;
        color: #111 !important;
        font-size: 10.5px !important;
        line-height: 1.3 !important;
        font-weight: 400 !important;
    }

    .frozen-overview-grid > .navigation-notices-card > .navigation-notice-more > p > a {
        color: #0756a6 !important;
        font-weight: 800 !important;
        text-decoration: underline !important;
    }

    .frozen-overview-grid > .navigation-notices-card:has(> .navigation-notice-more[open]) {
        height: auto !important;
        min-height: 185px !important;
        max-height: none !important;
        align-self: start !important;
        overflow: visible !important;
        grid-template-rows: 28px repeat(4, 17px) minmax(48px, auto) !important;
    }

    .frozen-overview-grid:has(
        > .navigation-notices-card
        > .navigation-notice-more[open]
    ) {
        grid-template-rows: 140px minmax(185px, auto) !important;
        height: auto !important;
        max-height: none !important;
        overflow: visible !important;
    }

    .frozen-dashboard-overview:has(
        .navigation-notices-card
        > .navigation-notice-more[open]
    ) {
        height: auto !important;
        max-height: none !important;
        overflow: visible !important;
    }
}

/* ============================================================
   EXPANDED RIVER ASSESSMENT FLOW
   Allows the open detail panel to increase the dashboard height.
   ============================================================ */

@media screen and (min-width: 1101px) {

    .frozen-overview-grid:has(
        > .tbanav-river-card
        .tbanav-river-detail-button[aria-expanded="true"]
    ) {
        grid-template-rows:
            repeat(2, minmax(140px, auto)) !important;
    }

    .frozen-overview-grid > .tbanav-river-card:has(
        .tbanav-river-detail-button[aria-expanded="true"]
    ) {
        height: auto !important;
        min-height: 0 !important;
        max-height: none !important;
        align-self: start !important;
        overflow: visible !important;
    }

    .tbanav-river-card
    > .tbanav-river-details:not([hidden]) {
        display: block !important;
        position: static !important;
        height: auto !important;
        max-height: none !important;
        overflow: visible !important;
    }
}

/* ============================================================
   RIVER ASSESSMENT FOOTER LEGIBILITY
   Desktop only; leaves the assessment content unchanged.
   ============================================================ */

@media screen and (min-width: 1101px) {

    .tbanav-river-card .tbanav-river-footer,
    .tbanav-river-card .tbanav-river-footer > span,
    .tbanav-river-card .tbanav-river-detail-button,
    .tbanav-river-card .tbanav-river-certainty,
    .tbanav-river-card .tbanav-river-certainty > strong {
        color: #111 !important;
        font-size: 12px !important;
        line-height: 1.35 !important;
    }
}

/* ============================================================
   HEADER CENTRING LOCK
   Centres each title against the complete card width rather
   than the right-hand content column.
   ============================================================ */

@media screen and (min-width: 1101px) {

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card),
    .frozen-overview-grid > .navigation-notices-card {
        position: relative !important;
    }

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card) > strong,
    .frozen-overview-grid > .navigation-notices-card > strong {
        position: absolute !important;
        grid-column: auto !important;
        grid-row: auto !important;
        top: 10px !important;
        right: auto !important;
        left: -88px !important;
        z-index: 2 !important;
        display: block !important;
        width: calc(100% + 88px) !important;
        margin: 0 !important;
        padding: 0 8px !important;
        box-sizing: border-box !important;
        text-align: center !important;
    }

    .frozen-overview-grid > .frozen-condition-tile:not(.tbanav-river-card) > strong::after,
    .frozen-overview-grid > .navigation-notices-card > strong::after {
        width: 100% !important;
        text-align: center !important;
    }
}

/* ============================================================
   FINAL DESKTOP CARD ORDER
   Overrides the fixed class positions in dashboard.css.

   Row 1: Tidal Data | Weather | Locks & Access
   Row 2: Navigation Notices | Vessel Restrictions | Contacts
   ============================================================ */

@media screen and (min-width: 1101px) {

    .frozen-overview-grid > .tidal-card {
        grid-column: 2 !important;
        grid-row: 1 !important;
    }

    .frozen-overview-grid > .weather-card {
        grid-column: 3 !important;
        grid-row: 1 !important;
    }

    .frozen-overview-grid > .lock-access-card {
        grid-column: 4 !important;
        grid-row: 1 !important;
    }

    .frozen-overview-grid > .navigation-notices-card {
        grid-column: 2 !important;
        grid-row: 2 !important;
    }

    .frozen-overview-grid > .vessel-restrictions-card {
        grid-column: 3 !important;
        grid-row: 2 !important;
    }

    .frozen-overview-grid > .contacts-links-card {
        grid-column: 4 !important;
        grid-row: 2 !important;
    }
}

/* ============================================================
   TBANAV — 100% DESKTOP ZOOM FINAL HARDENING
   ============================================================
   Scope: desktop only (1101px+).

   Reason:
   The frozen desktop overview uses fixed 155px rows and later
   high-specificity / !important presentation amendments.
   These final rules work WITH that frozen geometry rather than
   trying to make the cards taller.

   Presentation only — no assessment or notice logic changed.
   ============================================================ */

@media screen and (min-width: 1101px) {

    /* --------------------------------------------------------
       RIVER LEVEL ASSESSMENT
       Keep the complete closed card inside its two-row slot.
       -------------------------------------------------------- */

    .frozen-overview-grid > .tbanav-river-card {
        height: 318px !important;
        min-height: 318px !important;
        max-height: 318px !important;
        align-self: stretch !important;
        padding: 10px 16px 7px !important;
        overflow: hidden !important;
    }

    .frozen-overview-grid > .tbanav-river-card .tbanav-river-kicker {
        font-size: 15px !important;
        line-height: 1.05 !important;
        margin-bottom: 1px !important;
    }

    .frozen-overview-grid > .tbanav-river-card .tbanav-river-colour {
        font-size: 40px !important;
        line-height: .95 !important;
        margin: 1px 0 7px !important;
    }

    .frozen-overview-grid > .tbanav-river-card .tbanav-river-banner {
        height: 46px !important;
        margin-bottom: 9px !important;
    }

    .frozen-overview-grid > .tbanav-river-card .tbanav-river-message-box {
        min-height: 70px !important;
        padding-top: 8px !important;
        padding-bottom: 8px !important;
    }

    .frozen-overview-grid > .tbanav-river-card .tbanav-river-footer {
        display: grid !important;
        grid-template-columns: minmax(0, 1fr) auto !important;
        align-items: center !important;
        column-gap: 6px !important;
        row-gap: 0 !important;
        width: 100% !important;
        margin-top: 6px !important;
        font-size: 11px !important;
        line-height: 1.15 !important;
        white-space: nowrap !important;
    }

    .frozen-overview-grid > .tbanav-river-card .tbanav-river-footer > span {
        min-width: 0 !important;
        font-size: 11px !important;
        line-height: 1.15 !important;
        white-space: nowrap !important;
    }

    .frozen-overview-grid > .tbanav-river-card .tbanav-river-detail-button {
        min-width: 0 !important;
        font-size: 11px !important;
        line-height: 1.15 !important;
        white-space: nowrap !important;
    }

    .frozen-overview-grid > .tbanav-river-card .tbanav-river-certainty {
        margin-top: 3px !important;
        padding-bottom: 1px !important;
        font-size: 11px !important;
        line-height: 1.15 !important;
        white-space: nowrap !important;
    }

    .frozen-overview-grid > .tbanav-river-card .tbanav-river-certainty > strong {
        font-size: 11px !important;
        line-height: 1.15 !important;
    }


    /* --------------------------------------------------------
       NAVIGATION NOTICES
       The PHP correctly supplies four label/value pairs.
       Keep every pair inside the right edge of the 155px card.
       -------------------------------------------------------- */

    .frozen-overview-grid > .navigation-notices-card {
        overflow: hidden !important;
    }

    .frozen-overview-grid > .navigation-notices-card
    > .navigation-notice-section {
        right: 8px !important;
        left: 8px !important;
        width: auto !important;
        max-width: none !important;
        grid-template-columns: 22px minmax(0, 1fr) !important;
        gap: 3px !important;
        box-sizing: border-box !important;
        overflow: hidden !important;
    }

    .frozen-overview-grid > .navigation-notices-card
    > .navigation-notice-section > b {
        min-width: 0 !important;
        max-width: 100% !important;
        overflow: hidden !important;
        font-size: 10px !important;
        line-height: 1.1 !important;
        letter-spacing: 0 !important;
        white-space: nowrap !important;
        text-overflow: clip !important;
    }

    .frozen-overview-grid > .navigation-notices-card
    .navigation-notice-status {
        width: 22px !important;
        min-width: 22px !important;
        max-width: 22px !important;
        font-size: 10px !important;
        line-height: 1.1 !important;
        white-space: nowrap !important;
        overflow: hidden !important;
    }

    .frozen-overview-grid > .navigation-notices-card
    > .navigation-notice-more {
        right: 8px !important;
        left: 8px !important;
    }
}
/* ============================================================
   NAVIGATION NOTICES — FINAL RIGHT EDGE CLEARANCE
   ============================================================ */

@media screen and (min-width: 1101px) {

    .frozen-overview-grid > .navigation-notices-card
    > .navigation-notice-section > b {

        font-size: 9.5px !important;
    }

}

