/* =====================================================================
   Metro45 theme for aMember Pro  —  theme.css  (v0.1.34 · Caribbean Events)
   ---------------------------------------------------------------------
   Layer 1: design tokens (Metronic palette/type ported to CSS vars)
   Layer 2: global frame (header / body / footer)
   Layer 3: bridge — restyle am-* components (cards, buttons, inputs,
            tables, dashboard widgets) into the Metronic look
   Layer 4: Overlay login/signup styling

   The marker below is replaced at runtime by aMember with the --am_*
   variables generated from this theme's config (see Theme.php).
   ===================================================================== */
:root {
    --am_logo_link: 1;
--am_primary_color: #A860A8;
--am_primary_hover: #8E4D8E;
--am_link_color: #A860A8;
--am_brand_cyan: #18BEEF;
--am_brand_lime: #8DC63F;
--am_brand_yellow: #F6C915;
--am_brand_dark: #231F20;
--am_font_family: Inter, Helvetica, 'sans-serif';
--am_font_size: 14;
--am_font_size_px: 14px;
--am_radius: 0.65rem;
--am_body_bg: #F9F9F9;
--am_card_bg: #FFFFFF;
--am_text_color: #071437;
--am_text_muted: #99A1B7;
--am_border_color: #F1F1F4;
--am_gray_100: #F9F9F9;
--am_gray_200: #F1F1F4;
--am_gray_300: #DBDFE9;
--am_gray_400: #C4CADA;
--am_gray_500: #99A1B7;
--am_gray_600: #78829D;
--am_gray_700: #4B5675;
--am_gray_800: #252F4A;
--am_gray_900: #071437;
--am_success: #17C653;
--am_danger: #F8285A;
--am_warning: #F6C000;
--am_info: #7239EA;
--am_max_width: 1140;
--am_max_width_px: 1140px;
--am_login_panel_title: Welcome;
--am_login_panel_text: Sign in to access your account.;
--am_primary_color_15: #A860A826;
--am_logo_url: url('/account/application/default/themes/metro45/public/img/header-logo.png');


    /* ---- Metronic tokens (consumed below) ---------------------------- */
    --m-font:            var(--am_font_family, "Inter, Helvetica, sans-serif");
    --m-font-size:       var(--am_font_size_px, 14px);

    --m-primary:         var(--am_primary_color, #1B84FF);
    --m-primary-hover:   var(--am_primary_hover, #056EE9);
    --m-primary-soft:    var(--am_primary_color_15, rgba(27,132,255,.15));

    --m-body-bg:         var(--am_body_bg, #F9F9F9);
    --m-card-bg:         var(--am_card_bg, #FFFFFF);
    --m-text:            var(--am_text_color, #071437);
    /* muted UI text — darkened from Metronic's #99A1B7 (~2.6:1 on white, fails
       WCAG AA) to ~5.6:1 so small labels/table headers/descriptions pass AA */
    --m-muted:           #5E6674;
    --m-muted-soft:      var(--am_text_muted, #99A1B7); /* decorative only (icons) */
    --m-border:          var(--am_border_color, #F1F1F4);

    --m-gray-100:        var(--am_gray_100, #F9F9F9);
    --m-gray-200:        var(--am_gray_200, #F1F1F4);
    --m-gray-300:        var(--am_gray_300, #DBDFE9);
    --m-gray-400:        var(--am_gray_400, #C4CADA);
    --m-gray-500:        var(--am_gray_500, #99A1B7);
    --m-gray-700:        var(--am_gray_700, #4B5675);
    --m-gray-800:        var(--am_gray_800, #252F4A);

    --m-success:         var(--am_success, #17C653);
    --m-danger:          var(--am_danger,  #F8285A);
    --m-warning:         var(--am_warning, #F6C000);
    --m-info:            var(--am_info,    #7239EA);

    /* ---- Caribbean Events brand accents (multi-accent) --------------- */
    --m-brand-purple:    var(--am_primary_color, #A860A8);
    --m-brand-cyan:      var(--am_brand_cyan,   #18BEEF);
    --m-brand-lime:      var(--am_brand_lime,   #8DC63F);
    --m-brand-yellow:    var(--am_brand_yellow, #F6C915);
    --m-brand-dark:      var(--am_brand_dark,   #231F20);
    /* signature ring gradient (yellow → lime → cyan → purple) */
    --m-brand-gradient:  linear-gradient(90deg,
                            var(--m-brand-yellow) 0%,
                            var(--m-brand-lime)   33%,
                            var(--m-brand-cyan)   66%,
                            var(--m-brand-purple) 100%);

    --m-radius:          var(--am_radius, 0.65rem);
    --m-radius-sm:       0.45rem;
    --m-radius-lg:       0.75rem;

    --m-shadow-sm:       0 3px 9px rgba(0,0,0,.06);
    --m-shadow:          0 6px 24px rgba(0,0,0,.08);

    --m-maxw:            var(--am_max_width_px, 1140px);
}

/* =====================================================================
   Layer 2 — global frame
   ===================================================================== */
html { background: var(--m-body-bg); }

body, html {
    font-size: var(--m-font-size);
    background: var(--m-body-bg);
}

.am-common {
    font-family: var(--m-font);
    color: var(--m-text);
    -webkit-font-smoothing: antialiased;
}

.am-main { max-width: var(--m-maxw); }

.am-layout { background: none; min-height: initial; }

/* header */
.am-header {
    background: var(--m-card-bg);
    border-bottom: 1px solid var(--m-border);
    box-shadow: var(--m-shadow-sm);
    position: relative;
}
/* signature Caribbean ring strip across the top of the header */
.am-header::before {
    content: "";
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 4px;
    background: var(--m-brand-gradient);
}
.am-header .am-header-content-wrapper { border: none; background: none; }
.am-header-line { display: none; }

.am-header-menu a {
    color: var(--m-gray-700);
    font-weight: 600;
    border-radius: var(--m-radius-sm);
    transition: color .15s, background-color .15s;
}
.am-header-menu a:hover,
.am-header-menu .active > a {
    color: var(--m-primary);
    background: var(--m-primary-soft);
}

/* header layout: logo left, member nav, user chip right (logged-in) */
body.am-logged-in .am-header-content { display: flex; align-items: center; gap: 1rem; flex-wrap: nowrap; }
body.am-logged-in .am-header-logo-wrapper { flex: 0 0 auto; }
.m-header-nav { flex: 1 1 auto; min-width: 0; overflow-x: auto; }
.m-header-nav ul.m-header-menu {
    display: flex;
    gap: .15rem;
    list-style: none;
    margin: 0;
    padding: 0;
    align-items: center;
    flex-wrap: nowrap;
}
.m-header-menu li { margin: 0; list-style: none !important; }
.m-header-menu li::marker { content: ""; }
.m-header-menu li a {
    display: block;
    padding: .5rem .8rem;
    border-radius: var(--m-radius-sm);
    color: var(--m-gray-700);
    font-weight: 600;
    text-decoration: none;
    white-space: nowrap;
    font-size: .9rem;
}
.m-header-menu li a:hover { color: var(--m-primary); background: var(--m-gray-200); }
.m-header-menu li.active a { color: #fff; background: var(--m-primary); }
.m-header-user {
    position: relative;
    flex: 0 0 auto;
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    background: var(--m-gray-200);
    border-radius: 50rem;
    padding: .4rem .8rem;
    font-weight: 600;
    color: var(--m-gray-800);
    font-size: .9rem;
    white-space: nowrap;
    cursor: pointer;
}
/* keyboard focus: the chip is tabindex=0, so focusing it opens the menu
   (via :focus-within below) and shows a visible ring */
.m-header-user:focus-visible {
    outline: 2px solid var(--m-primary);
    outline-offset: 2px;
}
.m-header-user::before {
    content: "\f007"; /* fa-user */
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    color: var(--m-muted);
    font-size: .85rem;
}
.m-header-user .m-caret {
    font-size: .7rem;
    color: var(--m-muted);
    transition: transform .15s ease;
}
.m-header-user:hover .m-caret,
.m-header-user:focus-within .m-caret { transform: rotate(180deg); }

/* dropdown menu (Profile / Change Password / Logout) */
.m-user-menu {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    min-width: 190px;
    background: var(--m-card-bg);
    border: 1px solid var(--m-border);
    border-radius: var(--m-radius);
    box-shadow: 0 6px 24px rgba(0, 0, 0, .08);
    padding: .35rem;
    display: none;
    z-index: 200;
    text-align: left;
}
/* invisible bridge so the hover chain isn't broken by the 8px gap */
.m-user-menu::before {
    content: "";
    position: absolute;
    top: -8px; left: 0; right: 0;
    height: 8px;
}
.m-header-user:hover .m-user-menu,
.m-header-user:focus-within .m-user-menu { display: block; }
.m-user-menu a {
    display: flex !important;
    align-items: center;
    gap: .6rem;
    padding: .55rem .75rem;
    border-radius: var(--m-radius-sm);
    color: var(--m-gray-800) !important;
    font-weight: 500;
    font-size: .9rem;
    text-decoration: none;
    white-space: nowrap;
}
.m-user-menu a i { width: 1rem; text-align: center; color: var(--m-muted); font-size: .85rem; }
.m-user-menu a:hover { background: var(--m-gray-200); color: var(--m-primary) !important; }
.m-user-menu a:hover i { color: var(--m-primary); }

/* let the dropdown escape the header's clipping */
.am-header,
.am-header .am-header-content-wrapper,
body.am-logged-in .am-header-content,
.am-header-logo-wrapper { overflow: visible; }

/* the member nav + identity now live in the header — hide the in-content versions */
body.am-logged-in .am-body .am-tabs-wrapper,
body.am-logged-in .am-body .am-user-identity-block { display: none !important; }

/* header Login / Sign Up buttons (logged-out visitors) */
body.am-logged-out .am-header-content { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
.m-header-auth { margin-left: auto; display: flex; gap: .5rem; align-items: center; }
.m-btn, .m-btn-ghost {
    display: inline-flex;
    align-items: center;
    font-weight: 600;
    font-size: .9rem;
    padding: .55em 1.1em;
    border-radius: var(--m-radius);
    text-decoration: none;
    line-height: 1;
    transition: background-color .15s, color .15s, border-color .15s;
}
.m-btn { background: var(--m-primary); color: #fff !important; }
.m-btn:hover { background: var(--m-primary-hover); color: #fff !important; }
.m-btn-ghost { color: var(--m-gray-700) !important; border: 1px solid var(--m-gray-300); background: transparent; }
.m-btn-ghost:hover { color: var(--m-primary) !important; border-color: var(--m-primary); }

/* never show the outer content "square" wrapper anywhere — the card sits
   directly on the page background */
.am-body { background: var(--m-body-bg); }
.am-body-content-wrapper {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
}

/* body content card */
.am-body-content {
    background: var(--m-card-bg);
    border: 1px solid var(--m-border);
    border-radius: var(--m-radius-lg);
    box-shadow: var(--m-shadow-sm);
    padding: 2rem;
}
.am-body-content-top h1 {
    color: var(--m-text);
    font-weight: 700;
    letter-spacing: -.01em;
}

/* footer */
.am-footer { background: none; height: auto; }
.am-footer-content { color: var(--m-muted); }
.am-footer-content a { color: var(--m-gray-700); }

/* links */
a, .am-common a { color: var(--m-primary); text-decoration: none; }
a:hover, .am-common a:hover { color: var(--m-primary-hover); }

/* =====================================================================
   Layer 3 — bridge: am-* components -> Metronic look
   ===================================================================== */

/* ---- buttons -------------------------------------------------------- */
.am-common input[type=submit],
.am-common button,
.am-button,
button.am-button,
a.am-button,
input.am-button,
.am-common a.button,
.am-common input.button,
.am-common button.button {
    background: var(--m-primary);
    color: #fff !important;
    border: none;
    border-radius: var(--m-radius);
    padding: .75em 1.25em;
    font-weight: 600;
    font-family: var(--m-font);
    line-height: 1.2;
    cursor: pointer;
    text-decoration: none;
    box-shadow: var(--m-shadow-sm);
    transition: background-color .15s, transform .05s, box-shadow .15s;
}
.am-common input[type=submit]:hover,
.am-common button:hover,
.am-button:hover,
.am-common a.button:hover,
.am-common input.button:hover,
.am-common button.button:hover {
    background: var(--m-primary-hover);
    color: #fff !important;
}
.am-common input[type=submit]:active,
.am-button:active { transform: translateY(1px); }

/* keyboard focus indicator for non-input controls (WCAG 2.4.7):
   buttons, header nav tabs, plan-cards, footer/legal + dropdown links */
.am-common input[type=submit]:focus-visible,
.am-common button:focus-visible,
.am-button:focus-visible,
.am-common a.button:focus-visible,
.m-btn:focus-visible,
.m-btn-ghost:focus-visible,
.m-header-menu li a:focus-visible,
.m-user-menu a:focus-visible,
.m-legal-links a:focus-visible,
label:has(.am-product-title):focus-within,
.am-list-resources li a:focus-visible,
.m-overlay-card input[type=submit]:focus-visible,
.m-overlay-card a:focus-visible,
.m-overlay-card .am-switch-reveal:focus-visible {
    outline: 2px solid var(--m-primary);
    outline-offset: 2px;
    border-radius: var(--m-radius-sm);
}

/* secondary / cancel buttons */
.am-button.am-button-secondary,
a.cancel, .am-button.cancel {
    background: var(--m-gray-200);
    color: var(--m-gray-800);
    box-shadow: none;
}
.am-button.am-button-secondary:hover { background: var(--m-gray-300); color: var(--m-gray-800); }

/* ---- form fields ---------------------------------------------------- */
.am-common input[type=text],
.am-common input[type=email],
.am-common input[type=password],
.am-common input[type=tel],
.am-common input[type=number],
.am-common input[type=search],
.am-common select,
.am-common textarea {
    width: 100%;
    background: var(--m-card-bg);
    color: var(--m-text);
    border: 1px solid var(--m-gray-300);
    border-radius: var(--m-radius);
    padding: .65em .9em;
    font-size: 1rem;
    font-family: var(--m-font);
    transition: border-color .15s, box-shadow .15s;
    box-sizing: border-box;
}
.am-common input:focus,
.am-common select:focus,
.am-common textarea:focus {
    outline: none;
    border-color: var(--m-primary);
    box-shadow: 0 0 0 3px var(--m-primary-soft);
}
.am-common input::placeholder,
.am-common textarea::placeholder { color: var(--m-muted); }

.am-element-title label,
.am-form label { color: var(--m-gray-800); font-weight: 600; }

.am-row { border-color: var(--m-border); }

/* field validation states */
.am-error input, .am-row-error input,
.am-element-error input { border-color: var(--m-danger); }
.am-error, .error, .am-element-error { color: var(--m-danger); }

/* ---- cards / widgets (dashboard) ----------------------------------- */
.am-widget {
    background: var(--m-card-bg);
    border: 1px solid var(--m-border);
    border-radius: var(--m-radius-lg);
    box-shadow: var(--m-shadow-sm);
    padding: 1.5rem;
    margin-bottom: 1.5rem;
}
.am-widget > h2 {
    color: var(--m-text);
    font-weight: 700;
    font-size: 1.15rem;
    margin: 0 0 1rem;
    padding-bottom: .75rem;
    border-bottom: 1px solid var(--m-border);
    position: relative;
}
/* brand-coloured accent under each widget heading */
.am-widget > h2::after {
    content: "";
    position: absolute;
    left: 0; bottom: -1px;
    width: 2.5rem; height: 3px;
    border-radius: 3px;
    background: var(--m-brand-purple);
}
/* rotate accent colour per widget for a lively, multi-accent dashboard */
.am-widget:nth-of-type(4n+1) > h2::after { background: var(--m-brand-purple); }
.am-widget:nth-of-type(4n+2) > h2::after { background: var(--m-brand-cyan); }
.am-widget:nth-of-type(4n+3) > h2::after { background: var(--m-brand-lime); }
.am-widget:nth-of-type(4n+4) > h2::after { background: var(--m-brand-yellow); }

/* kill aMember's legacy wrapper boxes so the widgets are the only cards:
   - .am-layout-two-coll draws a grey (#F5F5F5) panel with a #D9D9D9 border
     around both columns
   - .am-widget .am-block adds a second bordered box inside each widget
   Both are flattened to transparent/borderless (card-in-card cleanup). */
.am-layout-two-coll {
    background: transparent !important;
    border: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
}
.am-widget .am-block {
    background: transparent !important;
    border: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
}
/* member forms (e.g. Customer Profile) draw their own bordered box inside the
   content card — flatten it so the fields sit directly in the card. Excludes
   the signup/buy-access flow, which is styled separately. */
body:not(.am-page-signup) .am-body-content-content form.am-form,
form.am-profile-form {
    background: transparent !important;
    border: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
    box-shadow: none !important;
}

/* two-column dashboard gutters */
.am-layout-two-coll .am-coll-left .am-coll-content { margin-right: .75rem; }
.am-layout-two-coll .am-coll-right .am-coll-content { margin-left: .75rem; }

/* ---------------------------------------------------------------------
   Resource / event lists (e.g. "Available Events") -> Metronic list rows
   Each <li> becomes a card: brand-coloured icon badge (rotating), bold
   title, muted date sub-line, chevron, and a hover lift.
   --------------------------------------------------------------------- */
.am-list-resources {
    display: flex;
    flex-direction: column;
    gap: .55rem;
    margin: .25rem 0 0;
    padding: 0;
    list-style: none;
}
.am-list-resources li {
    list-style: none;
    margin: 0;
    display: grid;
    grid-template-columns: auto 1fr auto;
    column-gap: .85rem;
    align-items: center;
    padding: .7rem .85rem;
    background: var(--m-card-bg);
    border: 1px solid var(--m-border);
    border-radius: var(--m-radius);
    transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
}
.am-list-resources li::marker { content: ""; }
/* calendar icon badge — rotates through the Caribbean ring colours */
.am-list-resources li::before {
    grid-row: 1 / span 2;
    grid-column: 1;
    align-self: center;
    content: "\f133"; /* fa-calendar */
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    font-size: 1rem;
    width: 2.4rem;
    height: 2.4rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: .55rem;
    background: rgba(168, 96, 168, .12);
    color: var(--m-brand-purple);
}
.am-list-resources li:nth-child(4n+2)::before { background: rgba(24, 190, 239, .14); color: #0FA6D4; }
.am-list-resources li:nth-child(4n+3)::before { background: rgba(141, 198, 63, .16); color: #6FA52E; }
.am-list-resources li:nth-child(4n+4)::before { background: rgba(246, 201, 21, .18); color: #C99A00; }
.am-list-resources li > a.am-resource-page {
    grid-row: 1;
    grid-column: 2;
    align-self: center;
    font-weight: 600;
    color: var(--m-gray-800) !important;
    text-decoration: none;
    font-size: .95rem;
    line-height: 1.25;
}
.am-list-resources li > .am-list-resources-desc {
    grid-row: 2;
    grid-column: 2;
    align-self: start;
    font-size: .8rem;
    color: var(--m-muted);
    font-weight: 500;
    margin-top: .1rem;
}
/* nudge the title up to sit tight above the date when a date exists */
.am-list-resources li:has(.am-list-resources-desc) > a.am-resource-page { align-self: end; }
.am-list-resources li::after {
    grid-row: 1 / span 2;
    grid-column: 3;
    align-self: center;
    content: "\f054"; /* fa-chevron-right */
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    font-size: .75rem;
    color: var(--m-gray-400);
    transition: transform .15s ease, color .15s ease;
}
.am-list-resources li:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(0, 0, 0, .06);
    border-color: var(--m-gray-300);
}
.am-list-resources li:hover::after { transform: translateX(3px); color: var(--m-primary); }
.am-list-resources li:hover > a.am-resource-page { color: var(--m-primary) !important; }

/* ---------------------------------------------------------------------
   Member dashboard — segmented tabs, identity chip, card-in-card cleanup
   --------------------------------------------------------------------- */
/* drop the outer content card on the dashboard so the widgets are the cards */
body.am-page-main .am-body-content {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0 !important;
}

/* member navigation → Metronic segmented tabs */
ul.am-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem;
    list-style: none;
    margin: 0 0 1.5rem;
    padding: .35rem;
    background: var(--m-gray-200);
    border-radius: var(--m-radius);
    border: none !important;
}
ul.am-tabs li { margin: 0; background: none !important; border: none !important; }
ul.am-tabs li a {
    display: block;
    padding: .5rem 1rem !important;
    border-radius: var(--m-radius-sm);
    color: var(--m-gray-700) !important;
    background: none !important;
    font-weight: 600;
    text-decoration: none;
    border: none !important;
    box-shadow: none !important;
}
ul.am-tabs li a:hover { color: var(--m-primary) !important; background: var(--m-card-bg) !important; }
ul.am-tabs li.active a {
    color: #fff !important;
    background: var(--m-primary) !important;
    box-shadow: var(--m-shadow-sm);
}

/* user identity chip */
.am-user-identity-block {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    background: var(--m-gray-200);
    border-radius: 50rem;
    padding: .4rem .9rem .4rem .8rem;
    font-weight: 600;
    color: var(--m-gray-800);
    margin-bottom: 1rem;
}
.am-user-identity-block::before {
    content: "\f007"; /* fa-user */
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    color: var(--m-muted);
    font-size: .9rem;
}
.am-user-identity-block_login { color: var(--m-text); }
.am-user-identity-block a { color: var(--m-primary) !important; text-decoration: none; }

/* ---- tables --------------------------------------------------------- */
.am-common table,
table.am-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
}
table.am-table th {
    text-align: left;
    color: var(--m-muted);
    font-weight: 600;
    text-transform: uppercase;
    font-size: .8rem;
    letter-spacing: .03em;
    padding: .75rem 1rem;
    border-bottom: 1px solid var(--m-border);
}
table.am-table td {
    padding: .85rem 1rem;
    border-bottom: 1px solid var(--m-border);
    color: var(--m-gray-800);
}
table.am-table tr:last-child td { border-bottom: none; }

/* aMember's data grid (e.g. Payments History) — same Metronic table look.
   Overrides the default grey (#D3DCE3) header. */
table.am-grid {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    border: 1px solid var(--m-border);
    border-radius: var(--m-radius);
    overflow: hidden;
}
table.am-grid th {
    text-align: left;
    background: var(--m-gray-100) !important;
    color: var(--m-muted) !important;
    font-weight: 600 !important;
    text-transform: uppercase;
    font-size: .72rem !important;
    letter-spacing: .04em;
    padding: .7rem 1rem !important;
    border-bottom: 1px solid var(--m-border) !important;
}
table.am-grid td {
    padding: .8rem 1rem !important;
    border-bottom: 1px solid var(--m-border) !important;
    color: var(--m-gray-800) !important;
    background: transparent !important;
    font-size: .9rem;
}
table.am-grid tr:last-child td { border-bottom: none !important; }
table.am-grid tbody tr:hover td { background: var(--m-gray-100) !important; }
/* grid heading subtitle, e.g. Helpdesk "showing 1 record" */
.am-grid-title-desc { font-size: .85rem; font-weight: 500; color: var(--m-muted); margin-left: .5rem; }

/* ---- Payment History: section headings + subscription cards --------- */
/* content section headings get the same brand accent underline as widgets
   (the page title itself lives in .am-body-content-top and is unaffected) */
.am-body-content-content h1 {
    position: relative;
    font-size: 1.2rem !important;
    font-weight: 700 !important;
    color: var(--m-text) !important;
    margin: 0 0 1rem !important;
    padding-bottom: .6rem !important;
    border-bottom: 1px solid var(--m-border);
}
.am-body-content-content h1::after {
    content: "";
    position: absolute;
    left: 0; bottom: -1px;
    width: 2.5rem; height: 3px;
    border-radius: 3px;
    background: var(--m-brand-purple);
}
/* active subscription blocks -> clean cards with checkmark product lists */
.am-active-invoice {
    background: var(--m-card-bg) !important;
    border: 1px solid var(--m-border) !important;
    border-radius: var(--m-radius) !important;
    padding: 1rem 1.15rem !important;
    margin-bottom: .75rem !important;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .03);
}
.am-active-invoice-header { font-weight: 600; color: var(--m-gray-800); margin-bottom: .4rem; }
.am-active-invoice-product-list {
    margin: .25rem 0 0;
    padding-left: 0 !important;
    list-style: none !important;
}
.am-active-invoice-product-list li {
    position: relative;
    padding-left: 1.4rem;
    margin-left: 0 !important;
    color: var(--m-gray-700);
    font-size: .9rem;
    line-height: 1.6;
    list-style: none !important;
}
.am-active-invoice-product-list li::marker { content: "" !important; }
.am-active-invoice-product-list li::before {
    content: "\f00c"; /* fa-check */
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    position: absolute;
    left: 0; top: .15rem;
    color: var(--m-brand-lime);
    font-size: .75rem;
}

/* ---- Buy Access / checkout: product selection + cart summary -------- */
/* each product becomes a selectable plan-card: checkbox, title, muted
   description, and a price pill; the checked state gets an accent highlight */
label:has(.am-product-title) {
    display: grid;
    grid-template-columns: auto 1fr auto;
    column-gap: .85rem;
    align-items: center;
    padding: .85rem 1rem;
    border: 1px solid var(--m-border);
    border-radius: var(--m-radius);
    background: var(--m-card-bg);
    cursor: pointer;
    margin: 0 0 .6rem !important;
    transition: border-color .15s, background-color .15s, box-shadow .15s;
}
label:has(.am-product-title) input[type=checkbox] {
    grid-row: 1 / span 2;
    grid-column: 1;
    align-self: center;
    width: 1.15rem; height: 1.15rem;
    accent-color: var(--m-primary);
    margin: 0;
    cursor: pointer;
}
label:has(.am-product-title) .am-product-title {
    grid-row: 1; grid-column: 2;
    font-weight: 600;
    color: var(--m-gray-800);
    font-size: .95rem;
    line-height: 1.3;
    font-style: normal;
}
label:has(.am-product-title) .am-product-desc {
    grid-row: 2; grid-column: 2;
    font-size: .82rem;
    color: var(--m-muted);
    font-weight: 400;
    font-style: normal;
    margin-top: .15rem;
}
label:has(.am-product-title) .am-product-terms {
    grid-row: 1 / span 2; grid-column: 3;
    align-self: center;
    font-weight: 700;
    color: var(--m-primary);
    background: var(--m-primary-soft);
    padding: .3rem .65rem;
    border-radius: 50rem;
    white-space: nowrap;
    font-size: .82rem;
    font-style: normal;
}
label:has(.am-product-title):hover { border-color: var(--m-gray-300); }
label:has(.am-product-title):has(input:checked) {
    border-color: var(--m-primary);
    background: var(--m-primary-soft);
    box-shadow: 0 0 0 1px var(--m-primary);
}
.am-element br { display: none; }

/* fieldset section headers (e.g. "Address Information") -> clean underline */
body.am-page-signup fieldset > legend {
    background: transparent !important;
    border: none !important;
    border-bottom: 1px solid var(--m-border) !important;
    border-radius: 0 !important;
    font-weight: 700 !important;
    color: var(--m-text) !important;
    font-size: 1rem !important;
    padding: 0 0 .5rem !important;
    margin-bottom: .9rem !important;
    width: 100% !important;
}

/* order / cart summary box */
.am-invoice-summary {
    background: var(--m-card-bg) !important;
    border: 1px solid var(--m-border) !important;
    border-radius: var(--m-radius) !important;
    padding: 1rem 1.15rem !important;
    margin-top: 1rem;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .03);
}
.am-invoice-summary-items { width: 100%; border-collapse: collapse; }
.am-invoice-summary-item-title { padding: .35rem 0 !important; color: var(--m-gray-800); font-size: .9rem; }
.am-invoice-summary-item-num { color: var(--m-muted); margin-right: .4rem; }
.am-invoice-summary-item-total { padding: .35rem 0 !important; text-align: right; color: var(--m-gray-800); white-space: nowrap; font-size: .9rem; }
.am-invoice-summary-delimeter hr { border: none; border-top: 1px solid var(--m-border); margin: .4rem 0; }
.am-invoice-summary-total { text-align: left; padding-top: .35rem !important; }
.am-invoice-summary-total strong { color: var(--m-text); font-weight: 700; }
.am-invoice-summary-price { text-align: right; font-weight: 700; color: var(--m-primary); white-space: nowrap; padding-top: .35rem !important; font-size: 1rem; }

/* payment step (am-page-cc): receipt table + Stripe card form card.
   The Stripe fields themselves are iframes and keep their own styling. */
table.am-receipt-table { width: 100%; border-collapse: separate; border-spacing: 0; }
.am-receipt-table td, .am-receipt-table th { background: transparent !important; border: none !important; }
.am-receipt-am-row-head th, .am-receipt-am-row-head td {
    color: var(--m-muted) !important;
    font-weight: 600 !important;
    text-transform: uppercase;
    font-size: .72rem !important;
    letter-spacing: .04em;
    padding: .65rem 1rem !important;
    border-bottom: 1px solid var(--m-border) !important;
    text-align: left;
}
.am-receipt-table td { padding: .65rem 1rem !important; color: var(--m-gray-800) !important; font-size: .9rem; }
.am-receipt-row-delimiter td { padding: 0 !important; border-bottom: 1px solid var(--m-border) !important; height: 1px; }
.am-receipt-row-total td { font-weight: 700 !important; color: var(--m-text) !important; padding-top: .7rem !important; }
.am-receipt-row-total td:last-child { color: var(--m-primary) !important; font-size: 1.05rem; }
.am-receipt-row-terms td { color: var(--m-muted) !important; font-size: .82rem; font-weight: 500; }
/* Stripe card form -> clean Metronic card */
body.am-page-cc .am-body-content-content > form {
    border: 1px solid var(--m-border) !important;
    border-radius: var(--m-radius) !important;
}

/* ---- flash / messages ---------------------------------------------- */
.am-info, .am-message, .am-success {
    background: color-mix(in srgb, var(--m-success) 12%, #fff);
    border: 1px solid color-mix(in srgb, var(--m-success) 30%, #fff);
    color: color-mix(in srgb, var(--m-success) 62%, #000);
    border-radius: var(--m-radius);
    padding: 1rem 1.25rem;
}
.am-error-message, .am-errors {
    background: color-mix(in srgb, var(--m-danger) 10%, #fff);
    border: 1px solid color-mix(in srgb, var(--m-danger) 30%, #fff);
    color: color-mix(in srgb, var(--m-danger) 72%, #000);
    border-radius: var(--m-radius);
    padding: 1rem 1.25rem;
}

/* ---- pricing / signup ---------------------------------------------- */
.am-signup .am-row-buttons input[type=submit] { font-size: 1.05rem; padding: .85em 1.5em; }

/* =====================================================================
   Layer 4 — Overlay login / signup
   (markup produced by themes/metro45/layout-login.phtml)
   ===================================================================== */
body.am-page-login,
body.am-page-overlay {
    min-height: 100vh;
    margin: 0;
    background: var(--m-body-bg);
}

/* single, centred column — logo + welcome stacked above the form */
.m-overlay {
    box-sizing: border-box;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 2.5rem 1.25rem;
    background-size: cover;
    background-position: center;
    background-attachment: fixed;
    overflow-x: hidden; /* guard against child padding overflow on mobile */
}
/* every element inside the login/signup overlay respects border-box so
   width:100% + padding never exceeds the viewport (fixes mobile h-overflow) */
.m-overlay *, .m-overlay *::before, .m-overlay *::after { box-sizing: border-box; }

.m-overlay-card {
    background: var(--m-card-bg);
    border-radius: 1.25rem;
    box-shadow: var(--m-shadow);
    width: 100%;
    max-width: 460px;
    padding: 2.75rem 2.5rem;
    position: relative;
    overflow: hidden;
    text-align: center;
}
/* signature ring strip across the top of the login card */
.m-overlay-card::before {
    content: "";
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 5px;
    background: var(--m-brand-gradient);
}

/* header block (logo + welcome) above the form */
.m-overlay-head { margin-bottom: 1.75rem; }
.m-overlay-head .m-overlay-logo {
    max-width: 240px;
    width: 100%;
    height: auto;
    margin: 0 auto 1.25rem;
    display: block;
}
.m-overlay-head h1 {
    color: var(--m-text);
    font-size: 1.7rem;
    font-weight: 700;
    margin: 0 0 .5rem;
    letter-spacing: -.01em;
}
.m-overlay-head p { color: var(--m-gray-700); font-size: 1.02rem; margin: 0; }

/* ---------------------------------------------------------------------
   Login form inside the card.
   The login page body has NO .am-common class, so the global component
   bridge (Layer 3) does not reach it — these rules style the form directly.
   --------------------------------------------------------------------- */
/* the whole form sits transparently on the white card (amember.css tints AND
   box-shadows the form / rows / fieldset, so these need !important to win) */
.m-overlay-card form,
.m-overlay-card .am-login-form-form,
.m-overlay-card .am-sendpass-form-form,
.m-overlay-card .am-auth-form,
.m-overlay-card .am-form {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
}
.m-overlay-card fieldset { border: none !important; background: none !important; padding: 0 !important; margin: 0; }
.m-overlay-card .am-flash-mask { display: none !important; }

/* heading (override aMember's default grey legend bar) */
.m-overlay-card legend,
.m-overlay-card .am-page-login-title {
    display: block;
    width: 100% !important;
    background: none !important;
    border: none !important;
    padding: 0 !important;
    margin: 0 0 1.25rem;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--m-text);
    text-align: center;
    box-shadow: none !important;
}
/* the login form's "Login to your Account" legend is redundant with the
   "Welcome" panel heading above — hide it (sendpass form keeps its title) */
.m-overlay-card .am-login-form-form legend { display: none !important; }

/* stack each row: label above a full-width field, centred
   (amember.css floats .am-element-title left, so !important is required) */
.m-overlay-card .am-row {
    display: block;
    background: transparent !important;
    border: none !important;
    margin: 0 0 .9rem !important;
    padding: 0;
    text-align: center;
}
.m-overlay-card .am-row > .am-element-title,
.m-overlay-card .am-row > .am-element {
    display: block !important;
    width: 100% !important;
    float: none !important;
    margin: 0;
    padding: 0;
}
/* hide the field labels — the input placeholder already names each field */
.m-overlay-card .am-row > .am-element-title { display: none !important; }
.m-overlay-card .am-element-title label {
    display: block;
    text-align: center;
    margin: 0 0 .4rem;
    color: var(--m-gray-800);
    font-weight: 600;
}

/* text fields — Metronic "solid" style: soft fill, no hard border/shadow */
.m-overlay-card input[type=text],
.m-overlay-card input[type=email],
.m-overlay-card input[type=password] {
    width: 100%;
    box-sizing: border-box;
    text-align: left;
    background: var(--m-gray-200) !important;
    color: var(--m-text);
    border: 1px solid transparent !important;
    box-shadow: none !important;
    border-radius: var(--m-radius);
    padding: .75em .9em;
    font-size: 1rem;
    font-family: var(--m-font);
    transition: background-color .15s, border-color .15s, box-shadow .15s;
}
.m-overlay-card input[type=text]:focus,
.m-overlay-card input[type=email]:focus,
.m-overlay-card input[type=password]:focus {
    outline: none;
    background: var(--m-card-bg) !important;
    border-color: var(--m-primary) !important;
    box-shadow: 0 0 0 3px var(--m-primary-soft) !important;
}
.m-overlay-card input::placeholder { color: var(--m-muted); }

/* ---------------------------------------------------------------------
   Icon fields — a leading Font Awesome glyph inside the field.
   FA 6 is already loaded by aMember core, so no extra assets are needed.
   Extend the pattern per row for other forms (e.g. signup name/email).
   --------------------------------------------------------------------- */
.m-overlay-card .am-row-login-login .am-element,
.m-overlay-card .am-row-login-pass  .am-element { position: relative; }
.m-overlay-card .am-row-login-login .am-element::before,
.m-overlay-card .am-row-login-pass  .am-element::before {
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    position: absolute;
    left: 1rem;
    top: 0;
    height: 100%;
    display: flex;
    align-items: center;
    color: var(--m-muted);
    font-size: .95rem;
    pointer-events: none;
    z-index: 2;
}
.m-overlay-card .am-row-login-login .am-element::before { content: "\f007"; } /* fa-user */
.m-overlay-card .am-row-login-pass  .am-element::before { content: "\f023"; } /* fa-lock */
.m-overlay-card .am-row-login-login input,
.m-overlay-card .am-row-login-pass  input { padding-left: 2.7rem !important; }

/* forgot-password (sendpass) field — same user icon as the login username */
.m-overlay-card .am-row-sendpass-email .am-element { position: relative; }
.m-overlay-card .am-row-sendpass-email .am-element::before {
    content: "\f007"; /* fa-user */
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    position: absolute;
    left: 1rem;
    top: 0;
    height: 100%;
    display: flex;
    align-items: center;
    color: var(--m-muted);
    font-size: .95rem;
    pointer-events: none;
    z-index: 2;
}
.m-overlay-card .am-row-sendpass-email input { padding-left: 2.7rem !important; }

/* keep the password reveal toggle aligned to the right of its field */
.m-overlay-card .am-element { position: relative; }
.m-overlay-card .am-switch-reveal { position: absolute; right: .75rem; top: .8rem; cursor: pointer; opacity: .6; }

/* primary submit button — purple, full width, trailing arrow icon.
   NOTE: use background-color (not the `background` shorthand) so the arrow
   background-image survives, including on :hover. */
.m-overlay-card .am-row-buttons { margin-top: 1.6rem !important; }
.m-overlay-card input[type=submit] {
    width: 100%;
    background-color: var(--m-primary);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512' fill='%23ffffff'%3E%3Cpath d='M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 1.3rem center;
    background-size: 1rem;
    color: #fff;
    border: none;
    border-radius: var(--m-radius);
    padding: .9em 1.25em;
    margin-top: 0;
    font-size: 1.05rem;
    font-weight: 600;
    font-family: var(--m-font);
    line-height: 1.2;
    cursor: pointer;
    box-shadow: var(--m-shadow-sm);
    transition: background-color .15s, transform .05s;
}
.m-overlay-card input[type=submit]:hover { background-color: var(--m-primary-hover); }
.m-overlay-card input[type=submit]:active { transform: translateY(1px); }

/* "Forgot password?" + signup links */
.m-overlay-card .am-form-login-switch-wrapper { display: block; text-align: center; margin-top: 1rem; }
.m-overlay-card .am-form-login-switch-wrapper a { color: var(--m-primary); font-weight: 600; }
.am-signup-link { text-align: center; margin-top: 1.5rem; color: var(--m-muted); }
.am-signup-link a { color: var(--m-primary); font-weight: 600; }

/* checkbox rows (e.g. "Stay signed in") stay readable */
.m-overlay-card .am-row label { font-weight: 500; color: var(--m-gray-700); }

/* hide standard chrome on the overlay pages */
body.am-page-overlay .am-header,
body.am-page-overlay .am-header-line,
body.am-page-overlay .am-footer { display: none; }

/* =====================================================================
   Form error messages → Metronic danger alert (global)
   aMember renders errors as ul.am-errors / ul.am-error / div.am-errors ul,
   with a red box in amember.css — restyle as a soft Metronic alert + icon.
   ===================================================================== */
ul.am-errors,
ul.am-error,
div.am-errors ul {
    list-style: none !important;
    margin: 0 0 1.2rem !important;
    padding: .85rem 1rem .85rem 2.75rem !important;
    background: color-mix(in srgb, var(--m-danger) 10%, #fff) !important;
    border: 1px solid color-mix(in srgb, var(--m-danger) 30%, #fff) !important;
    color: color-mix(in srgb, var(--m-danger) 72%, #000) !important;
    border-radius: var(--m-radius) !important;
    position: relative !important;
    text-align: left !important;
    font-size: .95rem;
}
ul.am-errors::before,
ul.am-error::before,
div.am-errors ul::before {
    content: "\f06a"; /* fa-circle-exclamation */
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    position: absolute;
    left: 1rem;
    top: .9rem;
    color: var(--m-danger);
    font-size: 1rem;
}
ul.am-errors li,
ul.am-error li,
div.am-errors ul li {
    padding: .1rem 0 !important;
    background: none !important;
    border: none !important;
    list-style: none !important;
}

/* per-field inline error text (Metronic style) */
.am-element .am-error,
.am-row-error .am-error,
span.am-error { color: var(--m-danger) !important; font-size: .85rem; font-weight: 500; }

/* =====================================================================
   Signup page (renders in the standard layout) — Metronic card,
   stacked labels, soft icon fields, icon submit button.
   ===================================================================== */
/* tame the oversized header logo (also improves member pages) */
.am-header-content-logo { max-height: 46px !important; width: auto !important; }

/* overlay look — clean centred card with logo + gradient strip, no site chrome.
   Only for LOGGED-OUT visitors; a logged-in member (e.g. "Buy Access") keeps the
   normal header + navigation row. */
body.am-logged-out.am-page-signup .am-header,
body.am-logged-out.am-page-signup .am-header-line { display: none !important; }
/* keep the footer (legal links + copyright) but strip the extra bits for a clean look */
body.am-page-signup .am-footer { background: none !important; }
body.am-page-signup .am-credits,
body.am-page-signup .am-footer-actions,
body.am-page-signup .am-footer-sm,
body.am-page-signup .am-footer-text { display: none !important; }
body.am-logged-out.am-page-signup .am-body { padding-top: 2.5rem; }
/* (the outer "square" wrapper is removed globally in Layer 2) */
body.am-page-signup .am-body-content {
    max-width: 100%;
    margin: 1.5rem 0 3rem;
    padding: 2.5rem 2.25rem !important;
    position: relative;
    overflow: hidden;
    background: var(--m-card-bg) !important;
    border: none !important;
    border-radius: 1.25rem;
    box-shadow: var(--m-shadow);
}
body.am-page-signup .am-body-content::before {
    content: "";
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 5px;
    background: var(--m-brand-gradient);
}
/* clickable logo inside the signup card (real <a><img>, from _content.phtml).
   Shown only for the logged-out overlay; logged-in members see the header logo. */
.m-content-logo { display: none; }
body.am-logged-out.am-page-signup .m-content-logo {
    display: block;
    text-align: center;
    margin: 0 auto 1.75rem;
}
body.am-page-signup .m-content-logo img {
    max-width: 210px;
    height: auto;
    display: inline-block;
}
body.am-page-signup .am-body-content-top h1 {
    text-align: center;
    font-size: 1.6rem;
    margin: .25rem 0 1.25rem;
}
/* remove aMember's default 1px border / shadow around the signup form */
body.am-page-signup .am-signup-form { border: none !important; box-shadow: none !important; }

/* signup info notice → Metronic info alert */
body.am-page-signup .am-info {
    background: color-mix(in srgb, var(--m-success) 12%, #fff) !important;
    border: 1px solid color-mix(in srgb, var(--m-success) 30%, #fff) !important;
    color: color-mix(in srgb, var(--m-success) 62%, #000) !important;
    border-radius: var(--m-radius) !important;
    padding: .8rem 1rem .8rem 2.6rem !important;
    position: relative;
    text-align: left;
}
body.am-page-signup .am-info::before {
    content: "\f05a"; /* fa-circle-info */
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    position: absolute;
    left: 1rem;
    top: .85rem;
    color: var(--m-success);
}

/* small gap between the stacked First / Last name fields */
body.am-page-signup input[name=name_f] { margin-bottom: .5rem !important; }

/* =====================================================================
   Legal footer (4 policy links + copyright) — used in the standard footer
   and in the overlay login/signup footer (see Theme::getLegalFooter()).
   ===================================================================== */
/* centred footer: policy links in a row, copyright below (login + standard pages) */
.m-legal { text-align: center; }
.m-legal-links {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: .35rem 1.5rem;
    margin: 0;
    padding: 0;
}
.m-legal-links a {
    color: var(--m-gray-700);
    font-size: .85rem;
    text-decoration: none;
}
.m-legal-links a:hover { color: var(--m-primary); }
.m-legal-copyright {
    color: var(--m-muted);
    font-size: .82rem;
    margin-top: .6rem;
}

/* clean the standard footer chrome so it matches the login footer:
   drop aMember's dark wrapper background + the flex space-between + extras */
.am-credits, .am-footer-actions, .am-footer-sm { display: none !important; }
.am-footer-content-wrapper { background: none !important; }
.am-footer-content { display: block !important; text-align: center; padding: 1rem 0 2rem !important; }
.am-footer-content-content { display: block !important; }
/* aMember colours footer links white (for its dark bar) — restore ours */
.am-footer .m-legal-links a { color: var(--m-gray-700) !important; }
.am-footer .m-legal-links a:hover { color: var(--m-primary) !important; }
.am-footer .m-legal-copyright { color: var(--m-muted) !important; }

/* overlay footer (login / forgot) */
.m-overlay-footer {
    width: 100%;
    max-width: 900px;
    margin: 0 auto;
    padding: 1.75rem 1.25rem 0;
}

/* stack rows: label above a full-width field */
body.am-page-signup .am-row {
    display: block !important;
    margin: 0 0 1rem !important;
    background: transparent !important;
    border: none !important;
}
body.am-page-signup .am-row .am-element-title {
    float: none !important;
    width: 100% !important;
    text-align: left !important;
    margin: 0 0 .35rem !important;
    padding: 0 !important;
}
body.am-page-signup .am-row .am-element {
    float: none !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
}
body.am-page-signup .am-element-title label { font-weight: 600; color: var(--m-gray-800); }

/* full-width soft-filled inputs (incl. the password-strength wrapper) */
body.am-page-signup .am-pass-indicator-wrap { display: block !important; width: 100% !important; }
body.am-page-signup .am-body-content .am-element input:not([type=submit]):not([type=button]),
body.am-page-signup .am-body-content .am-element select,
body.am-page-signup .am-body-content .am-element textarea {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box;
    background: var(--m-gray-200) !important;
    border: 1px solid transparent !important;
    box-shadow: none !important;
    border-radius: var(--m-radius) !important;
    padding: .75em .9em !important;
}
body.am-page-signup .am-body-content .am-element input:focus,
body.am-page-signup .am-body-content .am-element textarea:focus {
    background: var(--m-card-bg) !important;
    border-color: var(--m-primary) !important;
    box-shadow: 0 0 0 3px var(--m-primary-soft) !important;
}

/* icon fields — matched by input name via :has() (FA loaded by core) */
body.am-page-signup .am-row:has(input[name=email]) .am-element,
body.am-page-signup .am-row:has(input[name=_email]) .am-element,
body.am-page-signup .am-row:has(input[name=login]) .am-element,
body.am-page-signup .am-row:has(input[name=pass]) .am-element,
body.am-page-signup .am-row:has(input[name=_pass]) .am-element { position: relative; }
body.am-page-signup .am-row:has(input[name=email]) .am-element::before,
body.am-page-signup .am-row:has(input[name=_email]) .am-element::before,
body.am-page-signup .am-row:has(input[name=login]) .am-element::before,
body.am-page-signup .am-row:has(input[name=pass]) .am-element::before,
body.am-page-signup .am-row:has(input[name=_pass]) .am-element::before {
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    position: absolute;
    left: 1rem;
    top: 0;
    height: 100%;
    display: flex;
    align-items: center;
    color: var(--m-muted);
    font-size: .95rem;
    pointer-events: none;
    z-index: 2;
}
body.am-page-signup .am-row:has(input[name=email]) .am-element::before,
body.am-page-signup .am-row:has(input[name=_email]) .am-element::before { content: "\f0e0"; } /* envelope */
body.am-page-signup .am-row:has(input[name=login]) .am-element::before { content: "\f007"; }    /* user */
body.am-page-signup .am-row:has(input[name=pass]) .am-element::before,
body.am-page-signup .am-row:has(input[name=_pass]) .am-element::before { content: "\f023"; }     /* lock */
body.am-page-signup .am-row:has(input[name=email]) input,
body.am-page-signup .am-row:has(input[name=_email]) input,
body.am-page-signup .am-row:has(input[name=login]) input,
body.am-page-signup .am-row:has(input[name=pass]) input,
body.am-page-signup .am-row:has(input[name=_pass]) input { padding-left: 2.7rem !important; }

/* icon submit ("Next") button */
body.am-page-signup .am-body-content input[type=submit] {
    background-color: var(--m-primary) !important;
    color: #fff !important;
    border: none !important;
    border-radius: var(--m-radius) !important;
    padding: .85em 2.6em .85em 1.5em !important;
    font-weight: 600 !important;
    box-shadow: var(--m-shadow-sm) !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512' fill='%23ffffff'%3E%3Cpath d='M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: right 1.2rem center !important;
    background-size: 1rem !important;
}
body.am-page-signup .am-body-content input[type=submit]:hover { background-color: var(--m-primary-hover) !important; }

/* =====================================================================
   Responsive / mobile
   ===================================================================== */
/* the user chip must never be squeezed/clipped by the scrolling nav */
.m-header-user { flex-shrink: 0; }
/* smooth momentum scroll + a thin scrollbar as a scroll affordance */
.m-header-nav { -webkit-overflow-scrolling: touch; scrollbar-width: thin; }

@media (max-width: 640px) {
    /* data tables scroll horizontally within their card instead of
       stretching the page (Payments History, receipt, generic grids) */
    table.am-grid,
    table.am-receipt-table,
    .am-common table.am-table {
        display: block;
        width: 100%;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
    /* tighter header so logo + nav + chip fit; nav still scrolls */
    body.am-logged-in .am-header-content { gap: .6rem; padding: .5rem 0; }
    .m-header-menu li a { padding: .5rem .65rem; }
    /* roomier tap targets, less wasted padding on the login/signup card */
    .m-overlay { padding: 1.5rem 1rem; }
    .m-overlay-card { padding: 2rem 1.4rem; }
}
