/* ==========================================================
   mobile.css  —  iAlert Mobile-Responsive Overrides

   Two scoping approaches used intentionally:

   1. #hamburger-btn / #mob-nav / .mob-nav-* rules are NOT
      scoped to body.mobile-ready because those elements only
      exist on opted-in pages (added via _nav_mobile.php).
      Scoping would be redundant.

   2. Layout overrides ARE scoped to body.mobile-ready so they
      have zero effect on production pages that haven't been
      converted yet. Add class="mobile-ready" to <body> to
      opt a page in.
   ========================================================== */


/* ----------------------------------------------------------
   HAMBURGER BUTTON
   Hidden by default everywhere; @media block below reveals it
   on mobile-ready pages only.
   ---------------------------------------------------------- */
#hamburger-btn {
    display: none;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    background: none;
    border: none;
    cursor: pointer;
    padding: 10px;
    position: absolute;
    right: 10px;
    top: 10px;
    z-index: 100;
}
#hamburger-btn span {
    display: block;
    width: 24px;
    height: 2px;
    background: #fff;
    transition: transform .3s, opacity .3s;
}
#hamburger-btn.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
#hamburger-btn.open span:nth-child(2) { opacity: 0; }
#hamburger-btn.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }


/* ----------------------------------------------------------
   MOBILE NAV PANEL
   Hidden by default; JS toggles .open class.
   ---------------------------------------------------------- */
#mob-nav {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: #1a3a5c;
    z-index: 9997;
    border-top: 2px solid #C41226;
    max-height: 80vh;
    overflow-y: auto;
}
#mob-nav.open { display: block; }

.mob-nav-item { border-bottom: 1px solid rgba(255,255,255,.1); }

.mob-nav-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 13px 20px;
    color: #fff !important;
    font-size: 14px;
    font-weight: 600;
    text-decoration: none !important;
    cursor: pointer;
    background: none;
    border: none;
    width: 100%;
    text-align: left;
    font-family: inherit;
}
.mob-nav-top.has-sub::after  { content: '+';       font-size: 18px; opacity: .55; line-height: 1; }
.mob-nav-top.has-sub.expanded::after { content: '\2212'; }

.mob-nav-sub { display: none; background: rgba(0,0,0,.18); }
.mob-nav-sub.open { display: block; }

.mob-nav-sub-label {
    padding: 9px 20px 4px 28px;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: rgba(255,255,255,.4);
}
.mob-nav-sub a {
    display: block;
    padding: 9px 20px 9px 28px;
    color: rgba(255,255,255,.85) !important;
    font-size: 13px;
    text-decoration: none !important;
    border-bottom: 1px solid rgba(255,255,255,.06);
}
.mob-nav-sub a:hover { background: rgba(255,255,255,.1); }


/* ==========================================================
   MOBILE BREAKPOINT  —  max-width: 1024px
   All rules below scoped to body.mobile-ready
   ========================================================== */
@media (max-width: 1024px) {

    /* ── Member menu bar (logged-in only) ───────────────── */
    body.mobile-ready .mbr-menu table {
        width: 100% !important;
    }
    body.mobile-ready .mbr-menu td:first-child {
        display: none;
    }
    body.mobile-ready .mbr-menu td {
        text-align: center !important;
        display: block;
        width: 100% !important;
    }

    /* ── Core layout ─────────────────────────────────────── */
    body.mobile-ready {
        overflow-x: hidden;
    }
    body.mobile-ready #wrapper {
        min-width: 0 !important;
        width: 100%;
    }
    body.mobile-ready .main-container {
        width: 100% !important;
        padding: 0 15px;
        box-sizing: border-box;
    }

    /* ── Header ──────────────────────────────────────────── */
    body.mobile-ready #inner-banner-bg,
    body.mobile-ready #home-banner-bg {
        position: relative;
        min-height: 0 !important;
    }
    body.mobile-ready #left-logo-holder {
        width: auto !important;
        margin: 12px 0 !important;
    }
    body.mobile-ready #left-logo-holder img {
        max-height: 46px;
        width: auto;
    }
    body.mobile-ready #right-menu-holder {
        display: none !important;
    }
    body.mobile-ready #hamburger-btn {
        display: flex !important;
    }

    /* ── Search bar ──────────────────────────────────────── */
    body.mobile-ready .wx-hdr-center-search {
        position: static !important;
        transform: none !important;
        top: auto !important;
        left: auto !important;
        width: 100%;
        box-sizing: border-box;
        padding: 8px 15px;
        justify-content: center;
        background: #2a5298;
        white-space: normal;
    }
    body.mobile-ready .wx-hdr-center-search::before {
        display: none !important;
    }
    body.mobile-ready .wx-hdr-center-bg {
        display: none !important;
    }
    body.mobile-ready .wx-hdr-center-search input[type="text"] {
        flex: 1;
        width: auto !important;
        border-radius: 4px 0 0 4px;
    }

    /* ── Footer ──────────────────────────────────────────── */
    body.mobile-ready footer .footer-container {
        width: 100% !important;
        padding: 0 20px !important;
        box-sizing: border-box;
    }
    body.mobile-ready footer .footer-nav-wrapper {
        width: 100% !important;
        margin: 12px 0 0 !important;
    }
    body.mobile-ready footer .footer-nav-col-1,
    body.mobile-ready footer .footer-nav-col-2 {
        width: 100% !important;
        float: none !important;
        padding: 0 0 20px !important;
        text-align: center !important;
    }
    body.mobile-ready footer h6.footer-subtitle {
        text-align: center !important;
    }
    body.mobile-ready footer .ftr-menu li {
        display: inline-block !important;
        float: none !important;
        padding: 0 10px !important;
        font-size: 14px !important;
        line-height: 36px !important;
        background: none !important;
    }

}


/* ==========================================================
   weather_location.php  —  loc-page
   Content area already uses max-width/fluid CSS — minimal
   overrides needed. Main addition: extend the sticky mobile
   CTA bar (coded at 768px inline) to cover the full 1024px
   mobile breakpoint.
   ========================================================== */
body.mobile-ready .loc-page {
    padding-top: 8px !important;
}

.mob-cta-bar { display: none; }

@media (max-width: 1024px) {

    body.mobile-ready .loc-page {
        padding-top: 32px !important;
    }

    body.mobile-ready .mob-cta-bar {
        display: flex !important;
        align-items: center;
        justify-content: center;
        position: fixed;
        bottom: 0; left: 0; right: 0;
        background: #1a3a5c;
        border-top: 3px solid #C41226;
        padding: 12px 16px;
        z-index: 999;
        box-shadow: 0 -3px 12px rgba(0,0,0,.25);
    }
    body.mobile-ready .mob-cta-bar a {
        display: block !important;
        width: 100%;
        max-width: 420px;
        background: #C41226;
        color: #fff !important;
        padding: 13px 20px;
        border-radius: 5px;
        text-align: center;
        text-decoration: none !important;
        font-weight: 700;
        font-size: 1em;
    }
    body.mobile-ready #testimonials-content-bg {
        padding-bottom: 70px;
    }

}


/* ==========================================================
   individual.php  —  .phonetext-login two-column layout
   Stack: features (right col) first, signup form (left col)
   second. CSS order property handles reordering — no HTML
   changes needed.
   ========================================================== */
@media (max-width: 1024px) {

    body.mobile-ready #phonetext-login-content-bg {
        min-height: 0 !important;
        background-image: none !important;
    }
    body.mobile-ready .phonetext-login-container {
        width: 100% !important;
        display: flex;
        flex-direction: column;
    }

    /* Features column — rendered first on mobile */
    body.mobile-ready .phonetext-login-right-col {
        order: 1;
        width: 100% !important;
        float: none !important;
        padding: 0 15px 20px;
        box-sizing: border-box;
    }
    body.mobile-ready .phonetext-login-right-col h3 {
        margin-top: 20px !important;
        font-size: 22px !important;
        text-align: center;
    }
    body.mobile-ready .phonetext-login-right-col h3.subtitle {
        font-size: 16px !important;
        margin-bottom: 16px !important;
        text-align: center;
    }
    body.mobile-ready .phonetext-login-right-col > img {
        display: none;
    }
    body.mobile-ready .phonetext-login-cont-box-bg {
        width: 100% !important;
        min-height: 0 !important;
        background-image: none !important;
        border: 1px solid #e0e0e0;
        border-radius: 6px;
        box-sizing: border-box;
        padding: 14px;
        margin-bottom: 12px;
        display: flex;
        align-items: flex-start;
        gap: 12px;
    }
    body.mobile-ready .phonetext-login-first-box-img-holder {
        width: 36px !important;
        flex-shrink: 0;
    }
    body.mobile-ready .phonetext-login-first-box-img-holder .step-num {
        padding: 0 !important;
        font-size: 26px;
        line-height: 1.2;
        text-align: center;
    }
    body.mobile-ready .phonetext-login-first-box-content-holder {
        width: auto !important;
        float: none !important;
        flex: 1;
    }
    body.mobile-ready .phonetext-login-first-box-content-holder h2 {
        padding-top: 0 !important;
        font-size: 17px !important;
        margin-bottom: 6px;
    }
    body.mobile-ready .phonetext-login-btn-holder {
        margin: 10px 0 20px !important;
        float: none;
        text-align: center;
    }
    body.mobile-ready .learn-btn {
        display: inline-block;
        float: none;
    }

    /* Signup form column — rendered second on mobile */
    body.mobile-ready .phonetext-login-left-col {
        order: 2;
        width: 100% !important;
        float: none !important;
        min-height: 0 !important;
        background-image: none !important;
    }
    body.mobile-ready .phonetext-login-left-textholder {
        margin: 16px auto !important;
        width: 95%;
    }
    body.mobile-ready .phonetext-login-left-textholder h1 {
        font-size: 20px !important;
        margin-bottom: 14px;
    }
    body.mobile-ready .login-form-holder {
        width: 100% !important;
        padding: 0;
        box-sizing: border-box;
    }
    body.mobile-ready .login-form-holder input[type="text"],
    body.mobile-ready .login-form-holder input[type="email"],
    body.mobile-ready .login-form-holder input[type="password"] {
        width: 100% !important;
        box-sizing: border-box;
    }
    body.mobile-ready .login-form-holder input.signup {
        float: none;
        width: 100% !important;
        display: block;
    }

}


/* ==========================================================
   forecast.php  —  fc-obs-data desktop baseline
   Flex divs replace the legacy data <table>; this block makes
   them render correctly at desktop widths on wrk_forecast.php.
   ========================================================== */
body.mobile-ready .fc-obs-data {
    display: table;
    border-collapse: collapse;
    border-spacing: 0;
}
body.mobile-ready .fc-obs-row {
    display: table-row;
}
body.mobile-ready .fc-obs-label {
    display: table-cell;
    text-align: right;
    font-weight: bold;
    white-space: nowrap;
    padding: 1px 8px 1px 2px;
}
body.mobile-ready .fc-obs-val {
    display: table-cell;
    padding: 1px 2px;
}
body.mobile-ready .fc-cond-icon {
    width: 134px;
    height: 134px;
    display: block;
}
body.mobile-ready #fc-subs-standalone {
    display: none;
}
body.mobile-ready .fc-subs-grid {
    display: grid;
    grid-template-columns: repeat(4, auto);
    gap: 12px;
    justify-content: center;
    margin: 0 auto 4px;
}
body.mobile-ready .fc-subs-item {
    text-align: center;
    padding: 4px;
}


/* ==========================================================
   forecast.php  —  fc-page layout
   ========================================================== */
@media (max-width: 1024px) {

    /* ── Alert links bar: center on mobile ── */
    body.mobile-ready .fc-alert-links {
        justify-content: center !important;
        gap: 16px;
    }

    /* ── Current conditions ── */
    body.mobile-ready #fc-current-cond {
        padding-top: 8px !important;
    }
    body.mobile-ready #fc-current-cond > table,
    body.mobile-ready #fc-current-cond > table > tbody,
    body.mobile-ready #fc-current-cond > table > tr,
    body.mobile-ready #fc-current-cond > table > tbody > tr {
        display: block;
        width: 100%;
    }
    body.mobile-ready #fc-current-cond > table > tr > td,
    body.mobile-ready #fc-current-cond > table > tbody > tr > td {
        display: block;
        width: 100% !important;
        box-sizing: border-box;
    }
    /* Space above Alert Subscriptions column */
    body.mobile-ready #fc-current-cond > table > tr > td:nth-child(2),
    body.mobile-ready #fc-current-cond > table > tbody > tr > td:nth-child(2) {
        padding-top: 0;
        text-align: center;
    }
    /* Alert Subscriptions section header — matches .tcb forecast section style */
    body.mobile-ready .fc-subs-header {
        display: block;
        width: 100%;
        box-sizing: border-box;
        margin: 0 0 12px !important;
        padding: 28px 0 6px;
        font-size: 1.15em !important;
        font-weight: bold;
        color: #1a3a5c !important;
        border-bottom: 2px solid #2a5298;
        text-align: left !important;
    }
    body.mobile-ready .fc-subs-header a {
        color: #1a3a5c !important;
        text-decoration: none !important;
    }

    /* Data row (icon | weather+temp | data table) → icon+text same line, data below */
    body.mobile-ready .fc-cond-left-tbl {
        width: 100%;
    }
    body.mobile-ready .fc-cond-left-tbl tr:nth-child(2) {
        display: flex;
        flex-wrap: wrap;
        align-items: flex-start;
        justify-content: center;
    }
    body.mobile-ready .fc-cond-left-tbl tr:nth-child(2) td:nth-child(1) {
        flex: 0 0 90px !important;
        width: 90px !important;
        max-width: 90px !important;
        padding: 0 !important;
    }
    body.mobile-ready .fc-cond-left-tbl tr:nth-child(2) td:nth-child(2) {
        flex: 0 0 auto !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }
    body.mobile-ready .fc-cond-left-tbl tr:nth-child(2) td:nth-child(3) {
        flex: 0 0 100%;
        padding-top: 12px;
    }
    /* ── Obs data rows: centered flex block ── */
    body.mobile-ready .fc-obs-data {
        display: flex;
        flex-direction: column;
        align-items: center;
    }
    body.mobile-ready .fc-obs-row {
        display: flex;
        margin: 0;
    }
    body.mobile-ready .fc-obs-label {
        width: 110px;
        flex-shrink: 0;
        text-align: right;
        font-weight: bold;
        padding-right: 10px;
        white-space: nowrap;
    }
    body.mobile-ready .fc-obs-val {
        text-align: left;
    }
    /* Icon */
    body.mobile-ready .fc-cond-icon {
        width: 90px !important;
        height: 90px !important;
    }
    /* Condition text */
    body.mobile-ready .fc-cond-left-tbl h2 {
        font-size: .95em !important;
        font-weight: normal !important;
        margin: 0 0 4px !important;
    }
    /* Temperature — large and prominent */
    body.mobile-ready .fc-cond-left-tbl h1 {
        font-size: 2.2em !important;
        font-weight: bold !important;
        margin: 0 !important;
        color: #1a3a5c;
    }
    /* Space above and below timestamp */
    body.mobile-ready .fc-cond-left-tbl tr:nth-child(3) td {
        padding-top: 14px !important;
        padding-bottom: 24px !important;
        text-align: center;
    }

    /* ── 5-day forecast: horizontal scroll slider ── */
    body.mobile-ready #fc-5day-scroll {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        padding-bottom: 6px;
    }
    body.mobile-ready #fc-5day-table {
        min-width: 680px;
    }
    body.mobile-ready #fc-5day-table > tr > td,
    body.mobile-ready #fc-5day-table > tbody > tr > td {
        min-width: 76px;
        width: auto !important;
    }
    body.mobile-ready #fc-5day-table img {
        width: 68px !important;
        height: 68px !important;
    }

    /* ── Detailed forecast: stack sidebar below rows ── */
    body.mobile-ready #fc-detail-flex {
        flex-direction: column;
    }
    /* Narrow the period label so forecast text has more room */
    body.mobile-ready #fc-detail-flex > div:first-child > div > div:first-child {
        width: 82px !important;
        padding-left: 4px !important;
        padding-right: 8px !important;
    }
    body.mobile-ready #det-forecast-sidebar {
        width: 100% !important;
        border-left: none !important;
        border-top: 1px solid #ccd6e0;
        flex-direction: row;
        flex-wrap: wrap;
        gap: 16px;
        padding: 12px 15px;
        box-sizing: border-box;
    }
    body.mobile-ready #det-forecast-sidebar > div {
        flex: 1;
        min-width: 140px;
    }

    /* ── Promo signup strip: space below before footer ── */
    body.mobile-ready #fc-promo-signup {
        margin-bottom: 24px;
    }

    /* ── Observation History: hidden on mobile ── */
    body.mobile-ready #fc-obs-history {
        display: none;
    }

    /* ── Footer gap: base CSS adds 30px, weather_location rule adds 70px;
       scope this override to forecast-only via :has(.wx-page) ── */
    body.mobile-ready #testimonials-content-bg:has(.wx-page) {
        padding-bottom: 8px !important;
    }

    /* ── Regional Weather Observations: stack columns ── */
    body.mobile-ready #fc-regional-tbl,
    body.mobile-ready #fc-regional-tbl > tbody,
    body.mobile-ready #fc-regional-tbl > tbody > tr,
    body.mobile-ready #fc-regional-tbl > tr {
        display: block;
        width: 100%;
    }
    body.mobile-ready #fc-regional-tbl > tbody > tr > td,
    body.mobile-ready #fc-regional-tbl > tr > td {
        display: block;
        width: 100% !important;
        box-sizing: border-box;
        border-bottom: 1px solid #e8eef5;
        padding-bottom: 10px;
        margin-bottom: 4px;
    }

    /* ── Subscriptions: hide desktop td, show standalone block ── */
    body.mobile-ready .fc-subs-col-desktop {
        display: none !important;
    }
    body.mobile-ready #fc-subs-standalone {
        display: block;
    }
    body.mobile-ready .fc-subs-grid {
        grid-template-columns: repeat(2, 1fr);
    }

}


/* ==========================================================
   analysis.php / wrkanalysis.php  —  .wx-page content
   Three-tab page: Active Alerts, Storm Reports, Radar.
   Inline <style> in the page already covers:
     — .wx-cards 2-col @640px
     — #wx-map-conus 280px @640px
     — #wx-map-legend flex-wrap @640px
     — .wx-map-insets hide @480px
     — .radar-sidebar 100px wide + row layout @640px
     — #radar-map 320px @640px
   Rules here cover the remaining gaps.
   ========================================================== */

@media (max-width: 1024px) {
    body.mobile-ready .wx-page {
        padding: 0 10px 40px;
    }
}

@media (max-width: 768px) {
    body.mobile-ready #wx-page-title-card {
        padding: 14px 14px !important;
    }
    body.mobile-ready #wx-page-title-h1 {
        font-size: 1.2em !important;
    }
    body.mobile-ready .wx-outlook-maps {
        display: grid !important;
        grid-template-columns: repeat(2, 1fr) !important;
        gap: 12px !important;
    }
    body.mobile-ready #sr-map {
        height: 320px;
    }
    body.mobile-ready .sr-filters {
        flex-wrap: wrap;
    }
    body.mobile-ready .sr-filter-group {
        flex: 1 1 140px;
    }
}

@media (max-width: 640px) {
    body.mobile-ready #wx-page-title-card {
        padding: 12px 12px !important;
    }
    body.mobile-ready #wx-page-title-h1 {
        font-size: 1.1em !important;
    }
    body.mobile-ready #sr-map {
        height: 260px;
    }
    /* Pack the 6 filter controls into a 2-column grid: 3 rows instead of 6.
       Row 1 Event|State, Row 2 Start|End, Row 3 Apply|Reset. */
    body.mobile-ready .sr-filters {
        display: grid !important;
        grid-template-columns: 1fr 1fr !important;
        gap: 10px !important;   /* equal-width columns + clear gap between Start/End dates */
        align-items: end !important;
    }
    body.mobile-ready .sr-filter-group {
        flex: none !important;
        width: auto !important;
        min-width: 0 !important;
    }
    body.mobile-ready .sr-filter-group select,
    body.mobile-ready .sr-filter-group input[type="date"] {
        width: 100% !important;
        box-sizing: border-box !important;
        min-width: 0 !important;
    }
    body.mobile-ready .sr-filter-btn,
    body.mobile-ready .sr-filter-reset {
        width: 100% !important;
        box-sizing: border-box !important;
        align-self: end !important;
    }
    body.mobile-ready .sr-list-scroll {
        max-height: 380px !important;
    }
    body.mobile-ready .wx-outlook-maps {
        display: grid !important;
        grid-template-columns: 1fr !important;
    }
    body.mobile-ready .spc-map {
        height: 208px !important;   /* was 160; +30% to match desktop spc-map bump (190->247) */
    }
    body.mobile-ready #wx-map-filters {
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 8px !important;
    }
    body.mobile-ready .wx-map-filter-group {
        width: 100% !important;
    }
    body.mobile-ready .wx-map-filter-group select {
        width: 100% !important;
        box-sizing: border-box !important;
        min-width: 0 !important;
    }
    body.mobile-ready #wx-map-filter-reset {
        width: 100% !important;
        box-sizing: border-box !important;
    }
}

@media (max-width: 480px) {
    body.mobile-ready .radar-map-wrap {
        flex-direction: column !important;
    }
    body.mobile-ready .radar-sidebar {
        width: 100% !important;
        min-width: 0 !important;
        height: auto !important;
        flex-direction: row !important;
        flex-wrap: wrap !important;
        gap: 10px 16px !important;
        border-right: none !important;
        border-bottom: 1px solid #dde3ec !important;
        border-radius: 4px 0 0 0 !important;
        overflow-y: visible !important;
        padding: 10px 12px !important;
    }
    body.mobile-ready .radar-ctrl-group {
        flex: 1 1 130px !important;
        width: auto !important;
    }
    body.mobile-ready #radar-animate-btn {
        flex: 0 0 100% !important;
        order: 99 !important;
    }
    body.mobile-ready #radar-map {
        height: 260px !important;
    }
    body.mobile-ready #wx-map-conus {
        height: 240px !important;
    }
    body.mobile-ready #sr-map {
        height: 220px !important;
    }
    body.mobile-ready .sr-table {
        table-layout: auto !important;
    }
    body.mobile-ready .sr-table td:nth-child(4),
    body.mobile-ready .sr-table th:nth-child(4),
    body.mobile-ready .sr-table td:nth-child(5),
    body.mobile-ready .sr-table th:nth-child(5) {
        display: none !important;
    }
    body.mobile-ready .sr-table col.c-time  { width: 100px !important; }
    body.mobile-ready .sr-table col.c-loc   { width: 120px !important; }
    body.mobile-ready .sr-table col.c-event { width: auto !important;  }
    body.mobile-ready .wx-card {
        padding: 14px 8px 10px !important;
    }
    body.mobile-ready .wx-card-count {
        font-size: 2em !important;
    }
    body.mobile-ready .radar-legend-bar {
        width: 180px !important;
    }
}

@media (max-width: 390px) {
    body.mobile-ready .wx-cards {
        grid-template-columns: 1fr !important;
    }
    body.mobile-ready #wx-map-conus {
        height: 220px !important;
    }
    body.mobile-ready #sr-map {
        height: 200px !important;
    }
    body.mobile-ready #radar-map {
        height: 220px !important;
    }
    body.mobile-ready #wx-page-title-card {
        padding: 10px 10px !important;
    }
    body.mobile-ready #wx-page-title-h1 {
        font-size: 1em !important;
    }
    body.mobile-ready #wx-page-title-sub {
        font-size: .82em !important;
    }
}


/* ==========================================================
   Member pages (gam.html, settings.html)  —  .mbr-page
   body.mobile-ready.mbr-page scoping prevents any bleed onto
   pages that haven't opted in.

   Key problems solved:
   1. .mbr-bar member submenu hidden on mobile; member links
      are injected into the site header's #ialert-mob-nav panel
      so there is one hamburger, matching system-status.php.
   2. gam.html fixed-width tables (926 / 808 / 862px) converted
      to fluid so the user list doesn't overflow on phones.
   3. settings.html label/field two-column layout stacked.
   ========================================================== */

/* ==========================================================
   parmeterforecast.html — section cards (desktop base)
   Applies at all widths. The @media (max-width: 1024px) block
   below overrides borders and radius so each section becomes
   its own full card on mobile instead of the unified two-column
   panel used on desktop.
   ========================================================== */

/* pf-loc-alertby-tbl: two-column unified card on desktop.
   loc (left) and alertby (right) share the same table rows.
   Asymmetric borders form one connected card with a centre divider. */
body.mobile-ready.mbr-page .pf-card-loc-hdr,
body.mobile-ready.mbr-page .pf-card-alertby-hdr {
    background: #e6eff8;
    padding: 8px 12px;
    border-top: 1px solid #c4d6ec;
    border-bottom: none;
}
body.mobile-ready.mbr-page .pf-card-loc-hdr {
    border-left: 1px solid #c4d6ec;
    border-right: 1px solid #c4d6ec;
    border-radius: 8px 0 0 0;
}
body.mobile-ready.mbr-page .pf-card-alertby-hdr {
    border-left: none;
    border-right: 1px solid #c4d6ec;
    border-radius: 0 8px 0 0;
}
body.mobile-ready.mbr-page .pf-card-loc-body {
    background: #ffffff;
    padding: 12px;
    border-bottom: 1px solid #c4d6ec;
    border-top: none;
}
body.mobile-ready.mbr-page .pf-card-alertby-body {
    background: #ffffff;
    padding: 12px;
    border-bottom: 1px solid #c4d6ec;
    border-top: none;
}
body.mobile-ready.mbr-page .pf-card-loc-body {
    border-left: 1px solid #c4d6ec;
    border-right: 1px solid #c4d6ec;
    border-radius: 0 0 0 8px;
}
body.mobile-ready.mbr-page .pf-card-alertby-body {
    border-left: none;
    border-right: 1px solid #c4d6ec;
    border-radius: 0 0 8px 0;
}

/* Sections 3-5: full-width card header stacked above card body */
body.mobile-ready.mbr-page .pf-sel-loc-section,
body.mobile-ready.mbr-page .pf-sel-time-section,
body.mobile-ready.mbr-page .pf-sel-param-section {
    background: #e6eff8;
    padding: 8px 12px !important;
    border: 1px solid #c4d6ec;
    border-bottom: none;
    border-radius: 8px 8px 0 0;
    height: auto;
}
body.mobile-ready.mbr-page .pf-sel-loc-body,
body.mobile-ready.mbr-page .pf-sel-time-body,
body.mobile-ready.mbr-page .pf-sel-param-body {
    background: #ffffff;
    padding: 12px;
    border: 1px solid #c4d6ec;
    border-top: none;
    border-radius: 0 0 8px 8px;
    height: auto;
}

/* Between-card spacer rows: visible at all widths — height creates gap between cards */
body.mobile-ready.mbr-page .pf-spacer-hide {
    display: table-row;
}
body.mobile-ready.mbr-page .pf-spacer-hide td {
    height: 14px;
    padding: 0 !important;
    line-height: 0;
    font-size: 0;
    border: none !important;
    background: transparent !important;
}
/* Within-card spacer row (between Alert Time header and body): always hidden */
body.mobile-ready.mbr-page .pf-incard-hide {
    display: none;
}

/* Strip margins from section headers inside card headers — lets card padding control vertical centering */
body.mobile-ready.mbr-page .pf-card-loc-hdr .sra-section-hdr,
body.mobile-ready.mbr-page .pf-card-alertby-hdr .sra-section-hdr,
body.mobile-ready.mbr-page .pf-sel-loc-section .sra-section-hdr,
body.mobile-ready.mbr-page .pf-sel-time-section .sra-section-hdr,
body.mobile-ready.mbr-page .pf-sel-param-section .sra-section-hdr {
    margin: 0;
}

/* Vertically center card header content — desktop table cells */
body.mobile-ready.mbr-page .pf-card-loc-hdr,
body.mobile-ready.mbr-page .pf-card-alertby-hdr,
body.mobile-ready.mbr-page .pf-sel-loc-section,
body.mobile-ready.mbr-page .pf-sel-time-section,
body.mobile-ready.mbr-page .pf-sel-param-section {
    vertical-align: middle;
}


/* ── Member pages: close gap between member icon and hamburger ── */
@media (max-width: 1024px) {
    body.mobile-ready.mbr-page .ialert-header__inner {
        gap: 16px !important;
    }
    body.mobile-ready.mbr-page .ialert-header__hamburger {
        margin-left: 0 !important;
    }
    body.mobile-ready.mbr-page .ialert-header__member,
    body.mobile-ready.mbr-page a.ialert-header__profile {
        margin-right: 0 !important;
    }
}

@media (max-width: 1024px) {

    /* iOS Safari: overflow-x:hidden on body alone does NOT prevent horizontal
       scroll — Safari scrolls the html element, not body. Must set it on html
       too. :has() is Safari 15.4+. 100vw pins to actual viewport width,
       not a % of an ancestor that may have computed its own width from content. */
    html:has(body.mobile-ready.mbr-page) {
        overflow-x: hidden;
        max-width: 100vw;
    }

    /* Contain body to exact viewport width.
       position:relative helps iOS Safari treat this as the scroll boundary. */
    body.mobile-ready.mbr-page {
        overflow-x: hidden;
        max-width: 100vw;
        width: 100%;
        position: relative;
    }

    /* WebKit renders <center> with text-align:-webkit-center, which can cause
       the element to compute its own width from content (913px natural table
       width) rather than from its parent — so width:100% on the child table
       resolves to 913px instead of viewport width.
       Fix: force center and centering divs to exact viewport width with vw units,
       and override display to plain block (removes -webkit-center behavior). */
    body.mobile-ready.mbr-page center {
        display: block !important;
        width: 100% !important;
        max-width: 100vw !important;
        box-sizing: border-box;
        text-align: left;
    }
    body.mobile-ready.mbr-page div[align="center"] {
        width: 100% !important;
        max-width: 100vw !important;
        box-sizing: border-box;
    }

    /* ── Hide the member submenu bar; hamburger takes its place ─ */
    body.mobile-ready.mbr-page .mbr-bar {
        display: none !important;
    }

    /* ── Collapse spacer that reserves room for .mbr-bar ───────── */
    body.mobile-ready.mbr-page .mbr-bar-spacer {
        height: 55px !important;
    }

    /* ── GAM page: 4-column mobile layout ───────────────────── */

    /* Outer wrapper and inner tables lose fixed px widths */
    body.mobile-ready.mbr-page table[width="926"],
    body.mobile-ready.mbr-page table[width="808"],
    body.mobile-ready.mbr-page table[width="862"] {
        width: 100% !important;
    }

    /* Hide checkbox outer column and right spacer */
    body.mobile-ready.mbr-page .gam-cb-col {
        display: none !important;
    }

    /* Hide bulk-delete footer row (Check All / Go) */
    body.mobile-ready.mbr-page .gam-bulk-footer {
        display: none !important;
    }

    /* Hide: count (#), separate First, separate Last, Status */
    body.mobile-ready.mbr-page .gam-col-count,
    body.mobile-ready.mbr-page .gam-col-fname,
    body.mobile-ready.mbr-page .gam-col-lname,
    body.mobile-ready.mbr-page .gam-col-status {
        display: none !important;
    }

    /* Show combined Name column (hidden on desktop) */
    body.mobile-ready.mbr-page .gam-col-fullname {
        display: table-cell !important;
        width: 28% !important;
        font-size: 12px;
    }

    /* Header cells: left-align, normal line-height, smaller font */
    body.mobile-ready.mbr-page .top-hding-col .group-red-hding {
        text-align: left !important;
        line-height: normal !important;
        font-size: 11px !important;
        padding: 6px 4px !important;
        white-space: nowrap;
    }

    /* Data cells: left-align, normal line-height, smaller font */
    body.mobile-ready.mbr-page .group-nrml-list {
        text-align: left !important;
        line-height: normal !important;
        font-size: 12px !important;
        padding: 6px 4px !important;
        vertical-align: middle !important;
    }

    /* Explicit widths for the 4 visible columns */
    body.mobile-ready.mbr-page .gam-col-fullname  { width: 28% !important; }
    body.mobile-ready.mbr-page .gam-col-nickname  { width: 23% !important; }
    body.mobile-ready.mbr-page .gam-col-group     { width: 22% !important; }
    body.mobile-ready.mbr-page .gam-col-actions   { width: 27% !important; }

    /* Row separator */
    body.mobile-ready.mbr-page .top-hding-col {
        border-bottom: 1px solid #dde3ea;
        padding: 0 !important;
        height: auto !important;
        line-height: normal !important;
    }

    /* Actions: tighter gap, smaller tap targets, no overflow */
    body.mobile-ready.mbr-page .gam-actions {
        gap: 2px !important;
        flex-wrap: nowrap;
    }
    body.mobile-ready.mbr-page .gam-action-icon {
        width: 26px !important;
        height: 26px !important;
        padding: 1px !important;
    }

    /* Pagination: nav left, rows right, hide count */
    body.mobile-ready.mbr-page .pager-info {
        display: none !important;
    }
    body.mobile-ready.mbr-page .pager-bar {
        justify-content: space-between !important;
        align-items: center;
        flex-wrap: nowrap;
        padding: 6px 4px;
    }
    body.mobile-ready.mbr-page .pager-rows-wrap {
        display: flex;
        align-items: center;
        gap: 4px;
        flex-shrink: 0;
    }
    body.mobile-ready.mbr-page .pager-rows-lbl {
        font-size: 12px;
        color: #555;
        white-space: nowrap;
    }

    /* Search bar: single row with icon buttons on mobile */
    body.mobile-ready.mbr-page .search-bar {
        padding: 8px 4px;
        width: 100%;
        box-sizing: border-box;
    }
    body.mobile-ready.mbr-page .search-controls {
        flex-direction: row;
        align-items: center;
        flex-wrap: nowrap;
        gap: 4px;
        width: 100%;
    }
    body.mobile-ready.mbr-page .search-input {
        flex: 1 1 0 !important;
        min-width: 0 !important;
        width: 0 !important;
        font-size: 12px !important;
        padding: 5px 6px !important;
        box-sizing: border-box;
    }
    body.mobile-ready.mbr-page .search-select {
        flex: 0 0 82px;
        width: 82px !important;
        min-width: 0 !important;
        font-size: 11px !important;
        padding: 5px 2px !important;
        box-sizing: border-box;
    }
    body.mobile-ready.mbr-page .search-btn,
    body.mobile-ready.mbr-page .reset-btn {
        flex: none;
        width: 32px !important;
        min-width: 32px;
        height: 32px;
        padding: 0 !important;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        box-sizing: border-box;
    }
    /* Switch to icon on mobile */
    body.mobile-ready.mbr-page .srch-label { display: none; }
    body.mobile-ready.mbr-page .srch-icon  { display: inline; }

    /* Add User button: full width on mobile */
    body.mobile-ready.mbr-page a.add-user-btn {
        display: block;
        text-align: center;
        width: 100%;
        box-sizing: border-box;
    }

    /* Modal: full-width on small screens */
    body.mobile-ready.mbr-page .modal-box {
        width: 96%;
        padding: 18px 16px;
    }

    /* ── Settings page: stacked label/field layout ──────────── */

    /* Outer wrapper goes full-width */
    body.mobile-ready.mbr-page .pay-page-wrap {
        padding: 0 10px;
    }

    /* Settings table: block layout so rows stack */
    body.mobile-ready.mbr-page .sett-table,
    body.mobile-ready.mbr-page .sett-table tbody,
    body.mobile-ready.mbr-page .sett-table tr {
        display: block;
        width: 100%;
    }
    body.mobile-ready.mbr-page .sett-table td {
        display: block;
        width: 100% !important;
        box-sizing: border-box;
        text-align: left !important;
        padding: 4px 8px !important;
        border-bottom: none !important;
    }

    /* Label cell: un-right-align, uppercase micro-label */
    body.mobile-ready.mbr-page .sett-lbl {
        width: 100% !important;
        text-align: left !important;
        padding-right: 8px !important;
        padding-bottom: 2px !important;
        font-size: 11px;
        text-transform: uppercase;
        letter-spacing: 0.04em;
    }

    /* Hide blank label spacer cells (desktop alignment only) */
    body.mobile-ready.mbr-page .sett-lbl-blank {
        display: none !important;
    }

    /* Inputs go full-width */
    body.mobile-ready.mbr-page .sett-input {
        width: 100% !important;
    }

    /* Section header rows: remove top border and excess space above */
    body.mobile-ready.mbr-page .sett-section td,
    body.mobile-ready.mbr-page .sett-section-first td {
        border-top: none !important;
        border-bottom: 1px solid #e0e8f0 !important;
        padding: 8px 8px 4px !important;
        margin-top: 6px;
    }

    /* Active / format columns: flow inline under the field */
    body.mobile-ready.mbr-page .sett-active,
    body.mobile-ready.mbr-page .sett-format {
        width: 100% !important;
        text-align: left !important;
    }

    /* Hide validation checkmark column on mobile */
    body.mobile-ready.mbr-page .sett-vcheck {
        display: none !important;
    }

    /* Center Save Changes button */
    body.mobile-ready.mbr-page .sett-save-row td {
        text-align: center !important;
    }

    /* Tabs row: allow wrapping on narrow screens */
    body.mobile-ready.mbr-page .pay-tabs {
        flex-wrap: wrap;
    }
    body.mobile-ready.mbr-page .pay-tab-btn {
        flex: 1 1 auto;
        text-align: center;
        padding: 10px 12px;
        font-size: 13px;
    }

    /* ── Payment page ───────────────────────────────────── */

    /* Reduce tab frame padding to recover screen width */
    body.mobile-ready.mbr-page .pay-tab-frame {
        padding: 14px 12px !important;
    }

    /* Notice slot: fixed 52px clips on narrow screens if message wraps */
    body.mobile-ready.mbr-page .pay-notice-slot {
        height: auto !important;
        min-height: 0 !important;
        padding-bottom: 4px;
    }

    /* Section header: allow h2 + action button to stack */
    body.mobile-ready.mbr-page .pay-section-hdr {
        flex-wrap: wrap;
        gap: 8px;
    }

    /* Subscriptions table: smaller font, tighter padding */
    body.mobile-ready.mbr-page .pay-svc-table thead th,
    body.mobile-ready.mbr-page .pay-svc-table tbody td,
    body.mobile-ready.mbr-page .pay-svc-table tfoot td {
        padding: 8px 6px !important;
        font-size: 12px !important;
    }

    body.mobile-ready.mbr-page .pay-hist-table thead th,
    body.mobile-ready.mbr-page .pay-hist-table tbody td {
        padding: 8px 6px !important;
        font-size: 12px !important;
    }

    /* Add CC form: reduce outer padding */
    body.mobile-ready.mbr-page .add-cc-wrap {
        padding: 16px 12px !important;
        margin-top: 16px !important;
    }

    /* CC columns already flex-wrap; reduce min-width so they stack cleanly */
    body.mobile-ready.mbr-page .add-cc-billing-col,
    body.mobile-ready.mbr-page .add-cc-card-col {
        min-width: 0 !important;
        flex: 1 1 100% !important;
    }

    /* Member since / close account footer row */
    body.mobile-ready.mbr-page .pay-page-wrap > div[style*="justify-content:space-between"] {
        flex-wrap: wrap;
        gap: 6px;
    }

    /* ── Reseller config page ───────────────────────────── */

    /* Outer 913px wrapper → fluid; 100vw cap beats any over-wide ancestor */
    body.mobile-ready.mbr-page table[width="913"] {
        width: 100% !important;
        max-width: 100vw !important;
    }

    /* Hide decorative green panel (empty colspan=3 rowspan=5 block) */
    body.mobile-ready.mbr-page td[bgcolor="green"] {
        display: none !important;
    }

    /* Stack label/value rows */
    body.mobile-ready.mbr-page .rs-info-table,
    body.mobile-ready.mbr-page .rs-info-table tbody,
    body.mobile-ready.mbr-page .rs-info-table tr {
        display: block;
        width: 100%;
    }
    body.mobile-ready.mbr-page .rs-info-table td {
        display: block;
        width: 100% !important;
        box-sizing: border-box;
        text-align: left !important;
        white-space: normal !important;
        padding: 3px 8px !important;
        height: auto !important;
    }

    /* Label cells: uppercase small caps style above the value */
    body.mobile-ready.mbr-page .rs-info-table td:first-child h3 {
        margin: 8px 0 2px;
        font-size: 11px !important;
        text-transform: uppercase;
        letter-spacing: 0.04em;
        color: #555;
        text-align: left !important;
    }

    /* Textareas: override inline min-width:550px */
    body.mobile-ready.mbr-page .rs-info-table textarea {
        min-width: 0 !important;
        width: 100% !important;
        box-sizing: border-box;
    }

    /* Password reveal spans: full-width on mobile */
    body.mobile-ready.mbr-page .rs-info-table input[type="password"],
    body.mobile-ready.mbr-page .rs-info-table input[type="text"] {
        width: 100% !important;
        box-sizing: border-box;
    }

    /* ── Lightning Detection page ───────────────────────── */

    /* Section headers have white-space:nowrap in template CSS — 480–510px wide
       at 15px bold uppercase, wider than any phone screen. Override to wrap. */
    body.mobile-ready.mbr-page .lda-section-hdr {
        white-space: normal !important;
    }

    /* Reduce the 40px gap above Distance Monitoring Rings and Intensity on mobile */
    body.mobile-ready.mbr-page .lda-section-hdr[style*="margin-top:40px"] {
        margin-top: 16px !important;
    }

    /* Info box: show as collapsible toggle on mobile */
    body.mobile-ready.mbr-page .lda-info-summary {
        display: flex !important;
        align-items: center;
        justify-content: space-between;
        padding: 9px 14px;
        background: #edf2f8;
        border: 1px solid #c6d5ea;
        border-radius: 4px;
        cursor: pointer;
        font-size: 12px;
        font-weight: 600;
        color: #1a3a5c;
        user-select: none;
    }
    body.mobile-ready.mbr-page details.lda-info-details .infowizard {
        margin-top: 0;
        border-radius: 0 0 4px 4px;
        border-top: none;
    }
    body.mobile-ready.mbr-page details.lda-info-details:not([open]) .infowizard {
        display: none;
    }

    /* Safety net: no table should exceed viewport width.
       Use 100vw so the cap is always the physical viewport, not
       a percentage of an ancestor that may itself be over-wide. */
    body.mobile-ready.mbr-page table {
        max-width: 100vw !important;
        box-sizing: border-box;
    }

    /* All fixed-width wrapper tables → fluid */
    body.mobile-ready.mbr-page table[width="913"],
    body.mobile-ready.mbr-page table[width="875"],
    body.mobile-ready.mbr-page table[width="816"],
    body.mobile-ready.mbr-page table[width="716"],
    body.mobile-ready.mbr-page table[width="92%"] {
        width: 100% !important;
        max-width: 100vw !important;
    }

    /* Contain all horizontal overflow within the page content wrapper.
       Use 100vw (viewport units) not 100% so this is always pinned to the
       actual device width, regardless of any ancestor computing its width
       from content rather than from the viewport. */
    body.mobile-ready.mbr-page #testimonials-content-bg {
        overflow-x: hidden;
        max-width: 100vw;
        width: 100%;
        box-sizing: border-box;
    }

    /* Tab bar: pin to viewport width with vw units */
    body.mobile-ready.mbr-page ol#toc {
        width: 100%;
        max-width: 100vw;
        overflow: hidden;
        box-sizing: border-box;
    }

    /* div.content: fluid width, tighter padding, and overflow clipping.
       Use 100vw cap so the box never exceeds the physical viewport regardless
       of how its ancestor chain was computed. */
    body.mobile-ready.mbr-page div.content {
        width: 100% !important;
        max-width: 100vw !important;
        box-sizing: border-box !important;
        padding: 12px 8px !important;
        overflow-x: hidden;
    }

    /* Success / error message bar: Perl hard-codes width:913px inline */
    body.mobile-ready.mbr-page div[style*="width:913px"][style*="margin:10px auto"] {
        width: 100% !important;
        max-width: 100vw !important;
        box-sizing: border-box !important;
    }

    /* Decorative top border image forces 913px layout — hide on mobile */
    body.mobile-ready.mbr-page img[src$="body_top.jpg"] {
        display: none !important;
    }

    /* Location+Delivery nested table has align="left" (creates a CSS float).
       Override to block so cells stack as expected. */
    body.mobile-ready.mbr-page .lda-loc-delivery-tbl {
        display: block !important;
        float: none !important;
        width: 100% !important;
    }
    body.mobile-ready.mbr-page .lda-loc-delivery-tbl tbody,
    body.mobile-ready.mbr-page .lda-loc-delivery-tbl tr,
    body.mobile-ready.mbr-page .lda-loc-delivery-tbl td {
        display: block !important;
        width: 100% !important;
        padding-right: 0 !important;
        box-sizing: border-box;
    }
    body.mobile-ready.mbr-page .lda-loc-delivery-tbl td {
        padding-bottom: 10px !important;
    }

    /* State select and city select: full width when stacked */
    body.mobile-ready.mbr-page select[name="state"] {
        width: 100% !important;
        box-sizing: border-box;
    }
    body.mobile-ready.mbr-page #txtHint,
    body.mobile-ready.mbr-page #txtHint select {
        width: 100% !important;
        min-width: 0 !important;
        box-sizing: border-box;
    }

    /* Rings bullseye + legend: stack bullseye on top, summary below */
    body.mobile-ready.mbr-page .lda-rings-flex {
        flex-wrap: wrap !important;
        gap: 12px !important;
    }
    body.mobile-ready.mbr-page .lda-rings-flex > div:first-child {
        margin: 0 auto;
    }
    body.mobile-ready.mbr-page .lda-rings-flex > div:last-child {
        min-width: 0 !important;
        width: 100%;
    }

    /* Active alerts header: hide checkbox(1), #(2), Energy(5) columns — show Location(3), Rings(4), Delivery(6), Action(7) */
    body.mobile-ready.mbr-page .lda-alert-hdr-tbl tr td:nth-child(1),
    body.mobile-ready.mbr-page .lda-alert-hdr-tbl tr td:nth-child(2),
    body.mobile-ready.mbr-page .lda-alert-hdr-tbl tr td:nth-child(5),
    body.mobile-ready.mbr-page #lda-alert-rows tr td:nth-child(1),
    body.mobile-ready.mbr-page #lda-alert-rows tr td:nth-child(2),
    body.mobile-ready.mbr-page #lda-alert-rows tr td:nth-child(5) {
        display: none !important;
    }

    /* Tighten alert list cell padding and font */
    body.mobile-ready.mbr-page .lda-alert-hdr-tbl td,
    body.mobile-ready.mbr-page #lda-alert-rows td {
        padding: 6px 4px !important;
        font-size: 11px !important;
    }

    /* Hide Select All / Delete Selected / Go footer — not usable on mobile */
    body.mobile-ready.mbr-page .lda-del-footer {
        display: none !important;
    }

    /* Show only the current alert tab — hide the rest (applies to all alert pages) */
    body.mobile-ready.mbr-page ol#toc li:not(.current) {
        display: none !important;
    }

    /* ── Severe Weather Alert config (alertsbycity.html) ─────── */

    /* Info box: collapsible toggle on mobile */
    body.mobile-ready.mbr-page .abc-info-summary {
        display: flex !important;
        align-items: center;
        justify-content: space-between;
        padding: 9px 14px;
        background: #edf2f8;
        border: 1px solid #c6d5ea;
        border-radius: 4px;
        cursor: pointer;
        font-size: 12px;
        font-weight: 600;
        color: #1a3a5c;
        user-select: none;
    }
    body.mobile-ready.mbr-page details.abc-info-details .infowizard {
        margin-top: 0;
        border-radius: 0 0 4px 4px;
        border-top: none;
    }
    body.mobile-ready.mbr-page details.abc-info-details:not([open]) .infowizard {
        display: none;
    }

    /* Outer wrapper tables → fluid */
    body.mobile-ready.mbr-page table[width="740"],
    body.mobile-ready.mbr-page table[width="724"] {
        width: 100% !important;
        max-width: 100vw !important;
    }

    /* Alert select dropdown table: flex row so select fills space next to trash icon */
    body.mobile-ready.mbr-page table[width="400"][cellpadding="3"] {
        width: 100% !important;
        float: none !important;
    }
    body.mobile-ready.mbr-page table[width="400"][cellpadding="3"] tr {
        display: flex !important;
        align-items: center !important;
        width: 100%;
    }
    body.mobile-ready.mbr-page table[width="400"][cellpadding="3"] td:first-child {
        flex: 1 1 auto !important;
        width: auto !important;
        display: block !important;
        min-width: 0;
        padding: 0 !important;
    }
    body.mobile-ready.mbr-page table[width="400"][cellpadding="3"] td:last-child {
        flex: 0 0 auto !important;
        width: auto !important;
        display: flex !important;
        align-items: center !important;
        line-height: 1;
    }
    body.mobile-ready.mbr-page #memberform select[name="menu2"] {
        width: 100% !important;
        max-width: 100% !important;
        box-sizing: border-box;
        margin: 0 !important;
    }
    body.mobile-ready.mbr-page table[width="400"] {
        width: 100% !important;
    }

    /* Fix the 62%/38% header split for Row 1 only.
       Scoping to :first-child prevents display:block from interacting with the
       malformed HTML (unclosed td before General Settings tr), which was causing
       General Settings and Save to render at the top on mobile. */
    body.mobile-ready.mbr-page #alert-form-layout {
        width: 100% !important;
    }
    body.mobile-ready.mbr-page #alert-form-layout > tbody > tr:first-child,
    body.mobile-ready.mbr-page #alert-form-layout > tr:first-child {
        display: flex !important;
        flex-direction: column !important;
        width: 100% !important;
    }
    body.mobile-ready.mbr-page #alert-form-layout > tbody > tr:first-child > td,
    body.mobile-ready.mbr-page #alert-form-layout > tr:first-child > td {
        width: 100% !important;
        box-sizing: border-box;
    }
    body.mobile-ready.mbr-page #alert-form-layout > tbody > tr > td[width="38%"],
    body.mobile-ready.mbr-page #alert-form-layout > tr > td[width="38%"] {
        text-align: center;
        padding: 4px 0 2px;
    }

    /* Location row: stack state + city dropdowns vertically */
    body.mobile-ready.mbr-page table[width="400"][cellspacing="1"] tr {
        display: flex !important;
        flex-wrap: wrap;
        gap: 0;
        align-items: center;
    }
    body.mobile-ready.mbr-page table[width="400"][cellspacing="1"] td {
        display: block !important;
        width: auto !important;
        flex: 0 0 100%;
        height: auto !important;
        white-space: nowrap;
        padding: 0 !important;
    }
    body.mobile-ready.mbr-page table[width="400"][cellspacing="1"] td:first-child {
        padding-top: 6px !important;
    }
    body.mobile-ready.mbr-page table[width="400"][cellspacing="1"] td:nth-child(2) {
        display: none !important;
    }

    /* Weather event selection tables (7 categories, all 700px) → fluid */
    body.mobile-ready.mbr-page table[width="700"] {
        width: 100% !important;
        border-collapse: separate !important;
        border-spacing: 0 6px !important;
    }

    /* Section collapse headers: flex row so arrow and label stay on same line.
       Native marker wraps below because the label is width:100% inline-block,
       leaving no room for the marker on the same line. */
    body.mobile-ready.mbr-page details:not(.abc-info-details) > summary {
        display: flex !important;
        align-items: center !important;
        gap: 6px;
        cursor: pointer;
    }
    body.mobile-ready.mbr-page details:not(.abc-info-details) > summary::-webkit-details-marker,
    body.mobile-ready.mbr-page details:not(.abc-info-details) > summary::marker {
        display: none !important;
    }
    body.mobile-ready.mbr-page details:not(.abc-info-details) > summary::before {
        content: "\25B6";
        font-size: 10px;
        flex-shrink: 0;
        transition: transform 0.2s;
    }
    body.mobile-ready.mbr-page details[open]:not(.abc-info-details) > summary::before {
        transform: rotate(90deg);
    }
    body.mobile-ready.mbr-page details:not(.abc-info-details) > summary .icon {
        flex: 1;
    }
    body.mobile-ready.mbr-page details:not(.abc-info-details) > p {
        margin: 0;
        padding: 0;
    }

    /* Section label toggle buttons: override 700px inline width */
    body.mobile-ready.mbr-page .abc-section-label {
        width: 100% !important;
        height: auto !important;
        box-sizing: border-box;
        padding: 4px 8px;
    }

    /* Hazard name column: allow wrap so event names don't overflow */
    body.mobile-ready.mbr-page table[width="700"] tr td:first-child {
        white-space: normal !important;
        word-break: normal !important;
        min-width: 100px;
    }

    /* Vertically center all cells in every hazard row */
    body.mobile-ready.mbr-page table[width="700"] tr td {
        vertical-align: middle !important;
    }

    /* Thin separator line below last hazard row, above select-all row */
    body.mobile-ready.mbr-page table[width="700"] tr:nth-last-child(2) td {
        border-bottom: 1px solid #999 !important;
    }

    /* Select-all row: hide arrows, center all checkboxes, collapse &nbsp; spacers */
    body.mobile-ready.mbr-page table[width="700"] tr:last-child img {
        display: none !important;
    }
    body.mobile-ready.mbr-page table[width="700"] tr:last-child td {
        text-align: center !important;
        font-size: 0 !important;
        padding-bottom: 10px !important;
    }

    /* Shorten "Text Message" → "Text" across all alert sections on mobile.
       ::after is inline-block with min-width matching phone column width so it
       wraps to the next line naturally — same behavior as Email and Phone. */
    body.mobile-ready.mbr-page .group-svr-text label,
    body.mobile-ready.mbr-page .group-winter-text label,
    body.mobile-ready.mbr-page .group-nonprecp-text label,
    body.mobile-ready.mbr-page .group-flood-text label,
    body.mobile-ready.mbr-page .group-cst-text label,
    body.mobile-ready.mbr-page .group-fw-text label,
    body.mobile-ready.mbr-page .group-trop-text label {
        font-size: 0 !important;
    }
    body.mobile-ready.mbr-page .group-svr-text label::after,
    body.mobile-ready.mbr-page .group-winter-text label::after,
    body.mobile-ready.mbr-page .group-nonprecp-text label::after,
    body.mobile-ready.mbr-page .group-flood-text label::after,
    body.mobile-ready.mbr-page .group-cst-text label::after,
    body.mobile-ready.mbr-page .group-fw-text label::after,
    body.mobile-ready.mbr-page .group-trop-text label::after {
        content: " Text";
        font-size: 13px;
        display: inline-block;
        min-width: 32px;
    }

    /* Shorten "Phone Call" → "Phone" across all alert sections on mobile */
    body.mobile-ready.mbr-page .group-svr-phone label,
    body.mobile-ready.mbr-page .group-winter-phone label,
    body.mobile-ready.mbr-page .group-nonprecp-phone label,
    body.mobile-ready.mbr-page .group-flood-phone label,
    body.mobile-ready.mbr-page .group-cst-phone label,
    body.mobile-ready.mbr-page .group-fw-phone label,
    body.mobile-ready.mbr-page .group-trop-phone label {
        font-size: 0 !important;
    }
    body.mobile-ready.mbr-page .group-svr-phone label::after,
    body.mobile-ready.mbr-page .group-winter-phone label::after,
    body.mobile-ready.mbr-page .group-nonprecp-phone label::after,
    body.mobile-ready.mbr-page .group-flood-phone label::after,
    body.mobile-ready.mbr-page .group-cst-phone label::after,
    body.mobile-ready.mbr-page .group-fw-phone label::after,
    body.mobile-ready.mbr-page .group-trop-phone label::after {
        content: " Phone";
        font-size: 13px;
    }

    /* Shorten "Alert by" → "by" in event table column headers on mobile */
    body.mobile-ready.mbr-page table[width="700"] tr:first-child td:nth-child(n+2) {
        font-size: 0 !important;
    }
    body.mobile-ready.mbr-page table[width="700"] tr:first-child td:nth-child(n+2)::after {
        content: "by";
        font-size: 11px;
        font-weight: bold;
        text-decoration: underline;
    }

    /* Hide Quiet Hours A and B rows on mobile.
       > td > select ensures only the direct-parent tr is matched,
       not outer ancestor tr elements that would wipe the whole page. */
    body.mobile-ready.mbr-page tr:has(> td > select[name="qha_begin_hr"]),
    body.mobile-ready.mbr-page tr:has(> td > select[name="qhb_begin_hr"]) {
        display: none !important;
    }

    /* ── Storm Reports page ─────────────────────────────────── */

    /* Section headers: same nowrap issue as lightning */
    body.mobile-ready.mbr-page .sra-section-hdr {
        white-space: normal !important;
    }

    /* Info box: collapsible toggle on mobile */
    body.mobile-ready.mbr-page .sra-info-summary {
        display: flex !important;
        align-items: center;
        justify-content: space-between;
        padding: 9px 14px;
        background: #edf2f8;
        border: 1px solid #c6d5ea;
        border-radius: 4px;
        cursor: pointer;
        font-size: 12px;
        font-weight: 600;
        color: #1a3a5c;
        user-select: none;
    }
    body.mobile-ready.mbr-page details.sra-info-details .infowizard {
        margin-top: 0;
        border-radius: 0 0 4px 4px;
        border-top: none;
    }
    body.mobile-ready.mbr-page details.sra-info-details:not([open]) .infowizard {
        display: none;
    }

    /* 613px form table and its location flex row: override inline fixed widths */
    body.mobile-ready.mbr-page .sra-form-tbl {
        width: 100% !important;
    }
    body.mobile-ready.mbr-page .sra-loc-flex {
        flex-wrap: wrap !important;
        width: 100% !important;
        gap: 6px !important;
    }
    body.mobile-ready.mbr-page .sra-loc-flex > * {
        flex: 1 1 100% !important;
        width: 100% !important;
    }

    /* #txtHint and #txtcity: remove fixed min-widths set in template CSS */
    body.mobile-ready.mbr-page #txtHint,
    body.mobile-ready.mbr-page #txtcity {
        width: 100% !important;
        min-width: 0 !important;
        flex-shrink: 1 !important;
    }
    body.mobile-ready.mbr-page #txtHint select,
    body.mobile-ready.mbr-page #txtcity select {
        width: 100% !important;
        box-sizing: border-box;
    }

    /* Event Type select: override inline width:260px */
    body.mobile-ready.mbr-page select[name="hazard"] {
        width: 100% !important;
        box-sizing: border-box;
    }

    /* Alert By row: wrap Email/Text checkboxes */
    body.mobile-ready.mbr-page .sra-alertby-flex {
        flex-wrap: wrap !important;
        gap: 6px !important;
    }
    body.mobile-ready.mbr-page .sra-alertby-flex .sra-check-label {
        white-space: normal !important;
    }

    /* Active alerts: hide checkbox(1) and #(2) — Event Type, Location, Alert By, Actions visible */
    body.mobile-ready.mbr-page .sra-alert-hdr-tbl tr td:nth-child(1),
    body.mobile-ready.mbr-page .sra-alert-hdr-tbl tr td:nth-child(2),
    body.mobile-ready.mbr-page #sra-alert-rows tr td:nth-child(1),
    body.mobile-ready.mbr-page #sra-alert-rows tr td:nth-child(2) {
        display: none !important;
    }
    /* Switch to auto layout so hidden columns don't leave dead space.
       min-width: 0 required — min-width beats max-width in CSS, so 380px here
       would override the 100vw safety net and overflow narrow phones. */
    body.mobile-ready.mbr-page .sra-alert-hdr-tbl,
    body.mobile-ready.mbr-page #sra-alert-rows {
        table-layout: auto !important;
        min-width: 0 !important;
    }
    body.mobile-ready.mbr-page .sra-alert-hdr-tbl td,
    body.mobile-ready.mbr-page #sra-alert-rows td {
        padding: 6px 4px !important;
        font-size: 11px !important;
    }
    /* Alert By: narrow column — "Email, Text" wraps to two lines */
    body.mobile-ready.mbr-page .sra-alert-hdr-tbl tr td:nth-child(5),
    body.mobile-ready.mbr-page #sra-alert-rows tr td:nth-child(5) {
        width: 50px !important;
        max-width: 50px !important;
        white-space: normal !important;
    }
    /* Actions: two icon buttons, no wrap — freed space goes to data columns */
    body.mobile-ready.mbr-page .sra-alert-hdr-tbl tr td:nth-child(6),
    body.mobile-ready.mbr-page #sra-alert-rows tr td:nth-child(6) {
        width: 52px !important;
        max-width: 52px !important;
    }

    /* Stack Event Type → dropdown → Alert By → checkboxes vertically.
       Template now uses a flex div (sra-type-alertby-wrap) instead of a
       two-row table, so flex-direction:column gives correct column order. */
    body.mobile-ready.mbr-page .sra-type-alertby-wrap {
        flex-direction: column !important;
        gap: 0 !important;
    }
    body.mobile-ready.mbr-page .sra-event-type-col,
    body.mobile-ready.mbr-page .sra-alert-by-col {
        width: 100% !important;
        flex-shrink: 1 !important;
    }
    body.mobile-ready.mbr-page .sra-alert-by-col {
        margin-top: 12px;
    }

    /* Active alerts card: keep overflow hidden so the card doesn't push page width.
       The inner sra-data-scroll is its own scroll container — its overflow-x:auto
       still works; the card clipping its edges doesn't affect internal scrolling. */
    body.mobile-ready.mbr-page .sra-alerts-card {
        overflow: hidden !important;
    }
    body.mobile-ready.mbr-page .sra-data-scroll {
        overflow-x: auto !important;
        -webkit-overflow-scrolling: touch;
    }

    /* Hide Select All / Delete Selected / Go footer */
    body.mobile-ready.mbr-page .sra-del-footer {
        display: none !important;
    }

    /* Make inner wrapper tables fluid so form card fills iPhone width */
    body.mobile-ready.mbr-page table[width="89%"],
    body.mobile-ready.mbr-page table[width="94%"],
    body.mobile-ready.mbr-page table[width="100%"] {
        width: 100% !important;
        box-sizing: border-box;
    }

    /* Collapse centering td padding so card reaches edge-to-edge */
    body.mobile-ready.mbr-page table[width="816"] > tbody > tr > td {
        padding: 0 !important;
    }

    /* Stack Lightning Flash Intensity checkboxes vertically */
    body.mobile-ready.mbr-page .lda-energy-row {
        flex-direction: column !important;
        gap: 6px !important;
    }
    body.mobile-ready.mbr-page .lda-energy-label {
        width: 100% !important;
        box-sizing: border-box;
    }

    /* State + City row: wrap so state stacks above city */
    body.mobile-ready.mbr-page .lda-state-city-row {
        flex-wrap: wrap !important;
    }
    body.mobile-ready.mbr-page .lda-state-city-row > div {
        flex: 1 1 100% !important;
        width: 100% !important;
    }

    /* Delivery row: override explicit nowrap; Email/Text stack vertically */
    body.mobile-ready.mbr-page .lda-delivery-row {
        flex-wrap: wrap !important;
        gap: 6px !important;
    }
    body.mobile-ready.mbr-page .lda-delivery-row .lda-energy-label {
        width: 100% !important;
    }

    /* Bullseye left panel + slider + tick labels: inline width:240px overrides */
    body.mobile-ready.mbr-page .lda-rings-flex > div:first-child {
        width: 100% !important;
        max-width: 100% !important;
        box-sizing: border-box;
    }
    /* Slider: larger track + thumb for finger tap targets on iPhone */
    body.mobile-ready.mbr-page #lda-ring-slider {
        width: 100% !important;
        box-sizing: border-box;
        height: 6px;
        -webkit-appearance: none;
        appearance: none;
        border-radius: 3px;
        background: #ccd6e0;
        accent-color: #1a3a5c;
        margin-bottom: 20px !important;
    }
    body.mobile-ready.mbr-page #lda-ring-slider::-webkit-slider-thumb {
        -webkit-appearance: none;
        appearance: none;
        width: 32px;
        height: 32px;
        border-radius: 50%;
        background: #1a3a5c;
        cursor: pointer;
        border: 2px solid #fff;
        box-shadow: 0 1px 4px rgba(0,0,0,0.3);
    }
    body.mobile-ready.mbr-page #lda-ring-slider::-webkit-slider-runnable-track {
        height: 6px;
        border-radius: 3px;
        background: #ccd6e0;
    }
    body.mobile-ready.mbr-page .lda-ring-ticks {
        width: 100% !important;
        box-sizing: border-box;
    }
    /* Buffer between tick labels and the selected-zones summary below */
    body.mobile-ready.mbr-page .lda-rings-flex > div:last-child {
        margin-top: 18px !important;
    }

    /* ── parmeterforecast.html  —  Hourly Forecast Alert config ── */

    /* Fixed-width wrapper tables */
    body.mobile-ready.mbr-page table[width="748"],
    body.mobile-ready.mbr-page table[width="845"] {
        width: 100% !important;
    }

    /* ── OB Monitoring: location/station section ──────────────── */
    body.mobile-ready.mbr-page table[width="555"] {
        width: 100% !important;
    }
    body.mobile-ready.mbr-page td[width="575"],
    body.mobile-ready.mbr-page td[width="363"] {
        width: 100% !important;
        box-sizing: border-box;
        white-space: normal !important;
    }

    /* ── OB Monitoring: 7-column alert settings table ─────────── */
    /* Hide 24/7 and Time Range columns — too wide for small screens */
    body.mobile-ready.mbr-page table[height="19"][cellpadding="5"][cellspacing="5"] td:nth-child(6),
    body.mobile-ready.mbr-page table[height="19"][cellpadding="5"][cellspacing="5"] td:nth-child(7) {
        display: none !important;
    }

    /* Alert Type column: wrap so long names don't force overflow */
    body.mobile-ready.mbr-page table[height="19"][cellpadding="5"][cellspacing="5"] td:first-child {
        white-space: normal !important;
        font-size: 13px;
        min-width: 80px;
    }

    /* Alert For nested table and its cells: fluid */
    body.mobile-ready.mbr-page table[width="100"][cellspacing="5"][cellpadding="5"] {
        width: 100% !important;
    }
    body.mobile-ready.mbr-page table[width="100"][cellspacing="5"][cellpadding="5"] td {
        display: block !important;
        width: 100% !important;
    }

    /* Range selects: shrink inline width; value selects: compact */
    body.mobile-ready.mbr-page select[name$="range"] {
        width: 130px !important;
        font-size: 12px;
        max-width: 130px;
    }
    body.mobile-ready.mbr-page select[name$="value"] {
        width: 60px !important;
        font-size: 12px;
    }
    body.mobile-ready.mbr-page select[name="weathertype"] {
        width: 160px !important;
        font-size: 12px;
    }

    /* Fluid 787px td cells throughout the form */
    body.mobile-ready.mbr-page td[width="787"] {
        width: 100% !important;
        box-sizing: border-box;
    }

    /* Location dropdown: override 525px inline width */
    body.mobile-ready.mbr-page select[name="menu2"] {
        width: 100% !important;
        box-sizing: border-box;
    }

    /* Location + Alert By: flatten table into a flex column so we can reorder
       the four cells independently. display:contents on tbody/tr removes them
       from layout while keeping DOM selectors intact for order assignment. */
    body.mobile-ready.mbr-page .pf-loc-alertby-tbl {
        display: flex !important;
        flex-direction: column;
        width: 100%;
    }
    body.mobile-ready.mbr-page .pf-loc-alertby-tbl tbody,
    body.mobile-ready.mbr-page .pf-loc-alertby-tbl tr {
        display: contents !important;
    }
    body.mobile-ready.mbr-page .pf-loc-alertby-tbl td {
        display: block !important;
        width: 100% !important;
        box-sizing: border-box;
        padding: 4px 0 !important;
    }
    /* Desired mobile order:
       1. "Select New or Existing Location to Edit" header
       2. Location dropdown (menu2)
       3. "Alert By" header
       4. Email / Text checkboxes */
    body.mobile-ready.mbr-page .pf-loc-alertby-tbl tr:nth-child(1) td:nth-child(1) { order: 1; }
    body.mobile-ready.mbr-page .pf-loc-alertby-tbl tr:nth-child(2) td:nth-child(1) { order: 2; }
    body.mobile-ready.mbr-page .pf-loc-alertby-tbl tr:nth-child(1) td:nth-child(2) { order: 3; }
    body.mobile-ready.mbr-page .pf-loc-alertby-tbl tr:nth-child(2) td:nth-child(2) { order: 4; }

    /* State + station row: remove nowrap, stack txtHint below state select */
    body.mobile-ready.mbr-page .pf-loc-row {
        white-space: normal !important;
        display: block !important;
        width: 100% !important;
    }
    body.mobile-ready.mbr-page .pf-loc-row #txtHint {
        display: block !important;
        width: 100% !important;
        margin-left: 0 !important;
        margin-top: 6px;
    }

    /* Quick Setup selects: stack below label on mobile, override inline fixed widths */
    body.mobile-ready.mbr-page #pf-send-quick-setup,
    body.mobile-ready.mbr-page #pf-quick-setup {
        display: block !important;
        width: 100% !important;
        box-sizing: border-box;
        margin-top: 6px;
    }

    /* Alert Send Range + Day of Week table: stack the two columns */
    body.mobile-ready.mbr-page .pf-send-tbl,
    body.mobile-ready.mbr-page .pf-send-tbl tbody,
    body.mobile-ready.mbr-page .pf-send-tbl tr {
        display: block;
        width: 100%;
    }
    body.mobile-ready.mbr-page .pf-send-tbl td {
        display: block;
        width: 100% !important;
        box-sizing: border-box;
        padding: 6px 0 !important;
        text-align: left !important;
        white-space: normal !important;
    }

    /* Day of week checkboxes: nowrap — "All" is moved to send-range row via JS,
       leaving 7 abbreviated labels that fit on one line at mobile widths. */
    body.mobile-ready.mbr-page .sra-day-row {
        flex-wrap: nowrap !important;
        justify-content: space-between;
    }
    /* Compact day labels so M Tu W Th F Sa Su fit in one row */
    body.mobile-ready.mbr-page .sra-day-row .sra-check-label {
        padding: 3px 5px !important;
        font-size: 11px !important;
        gap: 2px !important;
    }
    /* Hide "All" checkbox on mobile — 7 abbreviated days fit on one line without it */
    body.mobile-ready.mbr-page .pf-day-all-label {
        display: none !important;
    }

    /* Sameday / Crossover / Nextday: allow wrapping */
    body.mobile-ready.mbr-page .pf-daytype-row {
        flex-wrap: wrap !important;
        gap: 4px !important;
    }

    /* Validation error spans: allow text to wrap on narrow screens */
    body.mobile-ready.mbr-page .pf-error {
        white-space: normal !important;
    }

    /* Forecast Parameter table: stack each row as label + selects + active */
    body.mobile-ready.mbr-page .pf-param-tbl {
        width: 100% !important;
    }
    /* Hide column header row — each data row is self-labeling */
    body.mobile-ready.mbr-page .pf-param-tbl tr:first-child {
        display: none !important;
    }
    /* Each data row: label full width on line 1, selects + On checkbox on line 2 */
    body.mobile-ready.mbr-page .pf-param-tbl tr {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        border-bottom: 1px solid #e8eef5;
        padding: 8px 0;
        gap: 4px;
    }
    /* Label: full width — forces selects and checkbox onto line 2 */
    body.mobile-ready.mbr-page .pf-param-tbl td:nth-child(1) {
        flex: 0 0 100%;
        text-align: left !important;
        white-space: normal !important;
        padding: 0 !important;
        font-size: 13px;
    }
    /* Selects: flex-grow fills line 2, leaving room for On checkbox */
    body.mobile-ready.mbr-page .pf-param-tbl td:nth-child(2) {
        flex: 1 1 auto;
        display: flex;
        gap: 4px;
        align-items: center;
        padding: 0 !important;
    }
    body.mobile-ready.mbr-page .pf-param-tbl td:nth-child(2) select {
        flex: 1 1 auto;
        width: auto !important;
        min-width: 60px;
        font-size: 12px !important;
    }
    /* On checkbox: end of line 2 alongside selects */
    body.mobile-ready.mbr-page .pf-param-tbl td:nth-child(3) {
        flex: 0 0 auto;
        padding: 0 !important;
    }

    /* ── Paramfst section card grouping — mobile overrides ─── */

    /* Between-card spacers: tighter on mobile than desktop */
    body.mobile-ready.mbr-page .pf-spacer-hide td {
        height: 14px !important;
    }
    body.mobile-ready.mbr-page .pf-incard-hide {
        display: none !important;
    }

    /* On mobile each column becomes its own full card.
       Override the desktop asymmetric two-column borders.
       Use td.class selectors (specificity 0,4,2) to beat the generic
       .pf-loc-alertby-tbl td rule (specificity 0,3,2) and restore padding. */
    body.mobile-ready.mbr-page .pf-loc-alertby-tbl td.pf-card-loc-hdr,
    body.mobile-ready.mbr-page .pf-loc-alertby-tbl td.pf-card-alertby-hdr {
        display: flex !important;
        align-items: center;
        border: 1px solid #c4d6ec !important;
        border-bottom: none !important;
        border-radius: 8px 8px 0 0 !important;
        margin-top: 14px !important;
        padding: 8px 12px !important;
    }
    body.mobile-ready.mbr-page .pf-loc-alertby-tbl td.pf-card-alertby-hdr {
        padding: 4px 12px !important;
    }
    body.mobile-ready.mbr-page .pf-loc-alertby-tbl td.pf-card-loc-body {
        border: 1px solid #c4d6ec !important;
        border-top: none !important;
        border-radius: 0 0 8px 8px !important;
        padding: 10px 12px 36px !important;
    }
    body.mobile-ready.mbr-page .pf-loc-alertby-tbl td.pf-card-alertby-body {
        border: 1px solid #c4d6ec !important;
        border-top: none !important;
        border-radius: 0 0 8px 8px !important;
        padding: 10px 12px !important;
    }
    /* iOS Safari resolves width:100% on flex-item children against the border
       box, not the content box — select overflows the padding. max-width clamps it. */
    body.mobile-ready.mbr-page .pf-loc-alertby-tbl td.pf-card-loc-body select[name="menu2"] {
        max-width: 100% !important;
        box-sizing: border-box !important;
    }

    /* Param table needs full card width — no horizontal padding so the flex
       rows don't lose the 24px that would push On checkboxes off the line. */
    body.mobile-ready.mbr-page .pf-sel-param-body {
        padding-left: 0 !important;
        padding-right: 0 !important;
    }

    /* Wind Speed + Wind Gust: range dropdown has "greater than equal to (>=)"
       which is the widest option; cap it so the On checkbox stays on line 2. */
    body.mobile-ready.mbr-page select[name="windrange"],
    body.mobile-ready.mbr-page select[name="windgustrange"] {
        max-width: 110px !important;
    }

    /* ── DailyWeatherForecast.html — Daily Forecast Alert config ── */

    /* Info box: collapsible toggle on mobile */
    body.mobile-ready.mbr-page .fcast-info-summary {
        display: flex !important;
        align-items: center;
        justify-content: space-between;
        padding: 9px 14px;
        background: #edf2f8;
        border: 1px solid #c6d5ea;
        border-radius: 4px;
        cursor: pointer;
        font-size: 12px;
        font-weight: 600;
        color: #1a3a5c;
        user-select: none;
    }
    body.mobile-ready.mbr-page details.fcast-info-details .infowizard {
        margin-top: 0;
        border-radius: 0 0 4px 4px;
        border-top: none;
    }
    body.mobile-ready.mbr-page details.fcast-info-details:not([open]) .infowizard {
        display: none;
    }

    /* Form table: flatten into flex column, reorder cells for mobile */
    body.mobile-ready.mbr-page .fcast-form-tbl {
        display: flex !important;
        flex-direction: column;
        width: 100%;
    }
    body.mobile-ready.mbr-page .fcast-form-tbl tbody,
    body.mobile-ready.mbr-page .fcast-form-tbl tr {
        display: contents !important;
    }
    body.mobile-ready.mbr-page .fcast-form-tbl td {
        display: block !important;
        width: 100% !important;
        box-sizing: border-box;
        padding: 6px 0 !important;
        white-space: normal !important;
    }
    /* Mobile order: Location → State+City → AM Time hdr → Hour:Min → Day hdr → Day checkboxes → Alert By hdr → Alert By → Format hdr → Format */
    body.mobile-ready.mbr-page .fcast-form-tbl tr:nth-child(1) td:nth-child(1) { order: 1; }
    body.mobile-ready.mbr-page .fcast-form-tbl tr:nth-child(2) td:nth-child(1) { order: 2; }
    body.mobile-ready.mbr-page .fcast-form-tbl tr:nth-child(3) td:nth-child(1) { order: 3; }
    body.mobile-ready.mbr-page .fcast-form-tbl tr:nth-child(4) td:nth-child(1) { order: 4; }
    body.mobile-ready.mbr-page .fcast-form-tbl tr:nth-child(3) td:nth-child(2) { order: 5; }
    body.mobile-ready.mbr-page .fcast-form-tbl tr:nth-child(4) td:nth-child(2) { order: 6; }
    body.mobile-ready.mbr-page .fcast-form-tbl tr:nth-child(5) td:nth-child(1) { order: 7; }
    body.mobile-ready.mbr-page .fcast-form-tbl tr:nth-child(6) td:nth-child(1) { order: 8; }
    body.mobile-ready.mbr-page .fcast-form-tbl tr:nth-child(5) td:nth-child(2) { order: 9; }
    body.mobile-ready.mbr-page .fcast-form-tbl tr:nth-child(6) td:nth-child(2) { order: 10; }

    /* Location: remove absolute positioning — stack city dropdown below state */
    body.mobile-ready.mbr-page .fcast-loc-td {
        position: static !important;
        height: auto !important;
    }
    body.mobile-ready.mbr-page .fcast-loc-td select[name="state"] {
        width: 100% !important;
        box-sizing: border-box;
    }
    body.mobile-ready.mbr-page #fcast-city {
        position: static !important;
        left: auto !important;
        top: auto !important;
        display: block !important;
        width: 100% !important;
        margin-top: 8px;
        margin-left: 0 !important;
    }
    body.mobile-ready.mbr-page #fcast-city select {
        width: 100% !important;
        box-sizing: border-box;
    }

    /* Day-of-week: hide All checkbox, 7 days fit on one line */
    body.mobile-ready.mbr-page .fcast-day-all-label {
        display: none !important;
    }

    /* Active alerts: hide checkbox, #, Format in all rows */
    body.mobile-ready.mbr-page #srf-alert-rows tr td:nth-child(1),
    body.mobile-ready.mbr-page #srf-alert-rows tr td:nth-child(2),
    body.mobile-ready.mbr-page #srf-alert-rows tr td:nth-child(7) {
        display: none !important;
    }
    /* table-layout:fixed reads column widths from the first row before display:none
       is applied, so hidden cells still reserve their percentage. Force them to 0
       explicitly so the visible five columns get the full table width. */
    body.mobile-ready.mbr-page #srf-alert-rows thead td:nth-child(1),
    body.mobile-ready.mbr-page #srf-alert-rows thead td:nth-child(2),
    body.mobile-ready.mbr-page #srf-alert-rows thead td:nth-child(7) {
        width: 0 !important;
        max-width: 0 !important;
        padding: 0 !important;
        border: none !important;
    }
    /* Header labels must not wrap regardless of column width.
       word-break:normal overrides the break-all set on tr td:nth-child(5). */
    body.mobile-ready.mbr-page #srf-alert-rows thead td {
        white-space: nowrap !important;
        word-break: normal !important;
        overflow: hidden;
    }
    /* Visible cols sum to 100%: 30+14+12+16+28=100
       Days shrunk to allow Days to wrap freely; Actions widened to fit both icons. */
    body.mobile-ready.mbr-page #srf-alert-rows thead td:nth-child(3) { width: 30% !important; }
    body.mobile-ready.mbr-page #srf-alert-rows thead td:nth-child(4) { width: 14% !important; }
    body.mobile-ready.mbr-page #srf-alert-rows thead td:nth-child(5) { width: 12% !important; }
    body.mobile-ready.mbr-page #srf-alert-rows thead td:nth-child(6) { width: 16% !important; }
    body.mobile-ready.mbr-page #srf-alert-rows thead td:nth-child(8) { width: 28% !important; }
    /* Shorten header labels that don't fit the narrow mobile columns.
       font-size:0 hides the original text; ::after injects the replacement. */
    body.mobile-ready.mbr-page #srf-alert-rows thead td:nth-child(6) {
        font-size: 0 !important;
    }
    body.mobile-ready.mbr-page #srf-alert-rows thead td:nth-child(6)::after {
        content: "Send";
        font-size: 11px;
        font-weight: bold;
        text-transform: uppercase;
        color: #fff;
    }
    body.mobile-ready.mbr-page #srf-alert-rows thead td:nth-child(8) {
        font-size: 0 !important;
    }
    body.mobile-ready.mbr-page #srf-alert-rows thead td:nth-child(8)::after {
        content: "Action";
        font-size: 11px;
        font-weight: bold;
        text-transform: uppercase;
        color: #fff;
    }
    body.mobile-ready.mbr-page #srf-alert-rows td {
        padding: 6px 4px !important;
        font-size: 11px !important;
    }
    /* Days column: wrap freely at <wbr> points (commas) */
    body.mobile-ready.mbr-page #srf-alert-rows tr td:nth-child(5) {
        white-space: normal !important;
        word-break: break-all;
    }
    /* Card: allow x-axis overflow so the scroll div is not clipped by the card's
       overflow:hidden inline style on mobile. Y stays hidden for border-radius. */
    body.mobile-ready.mbr-page .fcast-alert-card {
        overflow-x: auto !important;
    }
    body.mobile-ready.mbr-page .fcast-alert-scroll {
        overflow-x: auto !important;
        -webkit-overflow-scrolling: touch;
        overflow-y: auto;
    }
    /* Hide Select All / Delete footer on mobile */
    body.mobile-ready.mbr-page .fcast-alert-footer {
        display: none !important;
    }

}

/* Sticky header row — works at all widths since table is now a single element */
body.mobile-ready.mbr-page #srf-alert-rows thead tr {
    position: sticky;
    top: 0;
    z-index: 2;
}

@media (max-width: 480px) {
    /* OB Monitoring alert table: portrait iPhone.
       display:block on the inner table causes the outer table-cell to collapse
       in iOS Safari, putting the Save button at the top. Avoid display conversion
       entirely — use table-layout:fixed to force 5 columns into 390px instead. */
    body.mobile-ready.mbr-page table[height="19"][cellpadding="5"][cellspacing="5"] {
        table-layout: fixed !important;
    }
    /* Col 1 — Alert Type: 26% */
    body.mobile-ready.mbr-page table[height="19"][cellpadding="5"][cellspacing="5"] td:nth-child(1) {
        width: 26% !important;
        min-width: unset !important;
        font-size: 11px !important;
        white-space: normal !important;
        padding: 3px !important;
    }
    /* Col 2 — Alert For: 32% */
    body.mobile-ready.mbr-page table[height="19"][cellpadding="5"][cellspacing="5"] td:nth-child(2) {
        width: 32% !important;
        padding: 3px !important;
    }
    /* Cols 3-4 — Init / Email: 11% each */
    body.mobile-ready.mbr-page table[height="19"][cellpadding="5"][cellspacing="5"] td:nth-child(3),
    body.mobile-ready.mbr-page table[height="19"][cellpadding="5"][cellspacing="5"] td:nth-child(4) {
        width: 11% !important;
        padding: 3px !important;
        font-size: 10px !important;
        text-align: center !important;
    }
    /* Col 5 — Text: 12% */
    body.mobile-ready.mbr-page table[height="19"][cellpadding="5"][cellspacing="5"] td:nth-child(5) {
        width: 12% !important;
        padding: 3px !important;
        font-size: 10px !important;
        text-align: center !important;
    }
    /* Header row: tighten so labels fit narrow columns */
    body.mobile-ready.mbr-page table[height="19"][cellpadding="5"][cellspacing="5"] > tbody > tr:first-child td {
        font-size: 9px !important;
        padding: 2px !important;
        white-space: normal !important;
    }
    /* Alert For nested table: full block cascade removes all anonymous table-cell
       wrapping. With display:table preserved on the nested table, iOS Safari wraps
       each display:block td in a separate anonymous table-cell (~42px each).
       Making table/tbody/tr all display:block collapses that structure so tds
       stack vertically and each select fills the full Alert For column. */
    body.mobile-ready.mbr-page table[width="100"][cellspacing="5"][cellpadding="5"],
    body.mobile-ready.mbr-page table[width="100"][cellspacing="5"][cellpadding="5"] > tbody,
    body.mobile-ready.mbr-page table[width="100"][cellspacing="5"][cellpadding="5"] > tbody > tr,
    body.mobile-ready.mbr-page table[width="100"][cellspacing="5"][cellpadding="5"] > tr {
        display: block !important;
        width: 100% !important;
        box-sizing: border-box !important;
    }
    body.mobile-ready.mbr-page table[width="100"][cellspacing="5"][cellpadding="5"] td {
        display: block !important;
        width: 100% !important;
        padding: 1px 0 !important;
        box-sizing: border-box !important;
    }
    /* Selects: block + border-box fills the td without overflow */
    body.mobile-ready.mbr-page select[name$="range"],
    body.mobile-ready.mbr-page select[name$="value"],
    body.mobile-ready.mbr-page select[name="weathertype"] {
        display: block !important;
        width: 100% !important;
        max-width: none !important;
        font-size: 10px !important;
        box-sizing: border-box !important;
    }
}

/* =about.php page responsive ============================================
   Targets IDs and classes unique to v3/about/css/style.css content.
   The v3/about CSS uses fixed 1200px containers with no @media queries.
   These rules make the about page content fluid below 1220px.
======================================================================== */

@media (max-width: 1220px) {
    /* Make fixed 1200px content containers fluid */
    #about-content-bg .main-container,
    #user-logo-block .main-container,
    #about-bot .main-container,
    #about-mid .main-container {
        width: 100% !important;
        padding: 0 16px;
        box-sizing: border-box;
    }
}

@media (max-width: 900px) {
    /* Stack the two-column intro (YouTube left, text right) */
    .about-row { overflow: hidden; }
    .about-tp-l, .about-tp-r {
        width: 100% !important;
        float: none !important;
    }
    /* Make YouTube embed fluid */
    .about-tp-l iframe {
        width: 100% !important;
        height: auto;
        aspect-ratio: 16/9;
    }
}

@media (max-width: 768px) {
    .about-border-holder { width: 90% !important; }
    h2.mid-txt { font-size: 22px !important; padding-top: 30px !important; }

    /* Stack testimonial block and subscribe block */
    .testi-block, .subs-block {
        width: 100% !important;
        float: none !important;
    }
    .brdr-right {
        border-right: none;
        border-bottom: 1px solid #aaa;
        padding-bottom: 20px;
    }
    .subs-block { margin-top: 20px !important; }
    .subs-btn { float: none; display: inline-block; }

    /* Logo grid: 3 per row at tablet */
    ul.user-logo-list li, ul.user-logo-list-bot li {
        width: calc(33.33% - 20px) !important;
    }
}

@media (max-width: 480px) {
    h2.about-title { font-size: 15px !important; padding: 20px 0 0 !important; }
    h1.and-txt { font-size: 18px !important; }

    /* Logo grid: 2 per row on small phones */
    ul.user-logo-list li, ul.user-logo-list-bot li {
        width: calc(50% - 12px) !important;
        margin: 0 4px 20px !important;
    }

    h2.subscrb-txt { font-size: 16px !important; }
    .subs-btn { padding: 12px 30px !important; font-size: 16px !important; }
}
