/* =====================================================================
   HostGuru - client portal header / footer
   ---------------------------------------------------------------------
   Loaded AFTER hostguru.css (see includes/head.tpl). Everything here uses
   the hg-pt- prefix so it never fights the older marketing header rules,
   which means rollback is: delete the <link> in head.tpl and remove this
   file. See HEADER-ROLLBACK.md.

   The aim is a quiet, task-first shell. The client area already has a
   left sidebar, so the top bar's job is orientation and fast access -
   not selling. Dropdowns are lists, not advert columns: no marketing
   blurbs, no icons-per-row, no gradients.
   ===================================================================== */

/* ---------- design tokens ---------- */

.hg-pt {
    --pt-bar-h: 64px;
    --pt-strip-h: 36px;
    --pt-ink: #111827;
    --pt-ink-2: #4b5563;
    --pt-ink-3: #6b7280;
    --pt-line: #e5e7eb;
    --pt-line-2: #f3f4f6;
    --pt-bg: #ffffff;
    --pt-accent: #f57200;
    --pt-accent-ink: #c85f00;
    --pt-ok: #12805c;
    --pt-warn-bg: #fff7ed;
    --pt-warn-line: #fed7aa;
    --pt-r: 8px;
    --pt-shadow: 0 12px 32px rgba(16, 24, 40, .10), 0 2px 6px rgba(16, 24, 40, .04);
}

/* =====================================================================
   1. SHELL
   ===================================================================== */

/* The attention bar and the status strip sit above the header (see header.tpl),
   so this box is only the main bar - which means it can stay put for the whole
   page. A sticky element is confined to its containing block, so nesting the
   other two rows inside here would leave it nowhere to travel. */
.hg-header {
    position: sticky;
    top: 0;
    z-index: 1030;
    background: var(--pt-bg);
    border-bottom: 1px solid var(--pt-line);
}

.hg-pt-bar {
    position: relative;
    background: var(--pt-bg);
}

.hg-pt-bar-in {
    max-width: 1320px;
    margin: 0 auto;
    padding: 0 24px;
    height: var(--pt-bar-h);
    display: flex;
    align-items: center;
    gap: 8px;
}

.hg-pt-logo {
    display: flex;
    align-items: center;
    flex-shrink: 0;
    margin-right: 10px;
}
.hg-pt-logo img {
    width: 158px;
    height: auto;
    display: block;
}

/* =====================================================================
   2. TOP STRIP - promo for visitors, real alerts for clients
   ===================================================================== */

.hg-pt-strip {
    background: #f9fafb;
    border-bottom: 1px solid var(--pt-line-2);
    font-size: 13px;
    color: var(--pt-ink-2);
}
.hg-pt-strip-in {
    max-width: 1320px;
    margin: 0 auto;
    padding: 0 24px;
    min-height: var(--pt-strip-h);
    display: flex;
    align-items: center;
    gap: 18px;
}
.hg-pt-strip-lead {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}
.hg-pt-strip-tail {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 18px;
}
.hg-pt-strip a {
    color: var(--pt-ink-2);
    text-decoration: none;
}
.hg-pt-strip a:hover { color: var(--pt-accent); }

/* status pill - the one bit of colour in the strip */
.hg-pt-status {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    color: var(--pt-ok);
    font-weight: 600;
    white-space: nowrap;
}
.hg-pt-status:hover { color: var(--pt-ok); }
.hg-pt-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #10b981;
    box-shadow: 0 0 0 3px rgba(16, 185, 129, .16);
    flex-shrink: 0;
}
.hg-pt-strip-sep {
    width: 1px;
    height: 14px;
    background: var(--pt-line);
}

/* client alert strip */
.hg-pt-attn {
    background: var(--pt-warn-bg);
    border-bottom: 1px solid var(--pt-warn-line);
    color: #7c3d00;
    font-size: 13px;
}
.hg-pt-attn-in {
    max-width: 1320px;
    margin: 0 auto;
    padding: 7px 24px;
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}
.hg-pt-attn-label {
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    font-size: 11px;
    color: var(--pt-accent-ink);
    white-space: nowrap;
}
.hg-pt-attn-list {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
    min-width: 0;
}
.hg-pt-attn-list a {
    color: #7c3d00;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.hg-pt-attn-list a:hover { text-decoration: underline; }
.hg-pt-attn-list svg { flex-shrink: 0; opacity: .75; }
.hg-pt-attn-rest {
    color: #a35a12;
    font-weight: 600;
    white-space: nowrap;
}

/* =====================================================================
   3. PRIMARY NAV
   Label size is left at the WHMCS default (1rem / 16px) on purpose.
   ===================================================================== */

.hg-pt-nav {
    display: flex;
    align-items: center;
    list-style: none;
    margin: 0;
    padding: 0;
    height: var(--pt-bar-h);
    min-width: 0;
}
.hg-pt-nav > li {
    position: relative;       /* anchors the narrow dropdowns */
    display: flex;
    align-items: center;
    height: 100%;
}
.hg-pt-nav > li.hg-mega {
    position: static;         /* the wide panel spans the whole bar */
}
.hg-pt-nav .nav-link {
    display: flex;
    align-items: center;
    gap: 5px;
    height: 100%;
    padding: 0 11px;
    color: var(--pt-ink);
    text-decoration: none;
    border-bottom: 2px solid transparent;
    transition: color .14s ease, border-color .14s ease;
    cursor: pointer;
}
.hg-pt-nav .nav-link:hover,
.hg-pt-nav > li.show > .nav-link,
.hg-pt-nav > li:focus-within > .nav-link {
    color: var(--pt-accent);
    border-bottom-color: var(--pt-accent);
}
.hg-pt-nav .nav-link:focus-visible {
    outline: 2px solid rgba(245, 114, 0, .45);
    outline-offset: -2px;
    border-radius: 2px;
}
.hg-pt-nav .nav-link .badge {
    background: var(--pt-accent);
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    padding: 2px 6px;
    border-radius: 999px;
    line-height: 1.2;
}

/* Chevron drawn from two borders, so it inherits currentColor and stays crisp.
   The border resets are not optional: Bootstrap's .dropdown-toggle::after builds
   its caret from border-top + transparent side borders, so without zeroing the
   top and left we end up with three borders on the box and the rotation renders
   a half cube instead of a chevron. */
.hg-pt .navbar-nav .dropdown-toggle::after,
.hg-pt-nav .dropdown-toggle::after,
.hg-pt-nav .hg-mega > .nav-link::after {
    content: '';
    box-sizing: border-box;
    display: inline-block;
    width: 10px;
    height: 10px;
    margin-left: 6px;
    flex-shrink: 0;
    vertical-align: middle;
    border: 0;
    border-right: 1.6px solid currentColor;
    border-bottom: 1.6px solid currentColor;
    transform: rotate(45deg) translateY(-2px);
    opacity: .5;
    transition: transform .16s ease;
}
/* hostguru.css draws a chevron on any .nav-item that has an .hg-dd, using a
   background image on a more specific selector than ours. Neutralise the whole
   legacy rule - image, box and all - so wide-panel links get exactly one
   chevron, drawn at our own size. */
.hg-pt .navbar-nav > li > .nav-link::after,
.hg-pt .navbar-nav > li > a.dropdown-toggle::after {
    background-image: none !important;
    width: 10px !important;
    height: 10px !important;
    border-top: 0 !important;
    border-left: 0 !important;
}
.hg-pt-nav > li:hover > .nav-link::after,
.hg-pt-nav > li.show > .nav-link::after {
    transform: rotate(225deg) translateY(-2px);
    opacity: .9;
}

/* =====================================================================
   4. RIGHT-HAND CLUSTER
   ===================================================================== */

.hg-pt-right {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 4px;
    list-style: none;
    padding: 0;
    height: 100%;
    flex-shrink: 0;
}

.hg-pt-iconbtn {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border: 0;
    border-radius: var(--pt-r);
    background: none;
    color: var(--pt-ink-2);
    cursor: pointer;
    text-decoration: none;
    transition: background .14s ease, color .14s ease;
}
.hg-pt-iconbtn:hover {
    background: var(--pt-line-2);
    color: var(--pt-ink);
}
.hg-pt-iconbtn:focus-visible {
    outline: 2px solid rgba(245, 114, 0, .45);
    outline-offset: 1px;
}
.hg-pt-count {
    position: absolute;
    top: 3px;
    right: 3px;
    min-width: 17px;
    height: 17px;
    padding: 0 4px;
    border-radius: 999px;
    background: #e11d48;
    color: #fff;
    font-size: 10.5px;
    font-weight: 700;
    line-height: 17px;
    text-align: center;
    border: 2px solid var(--pt-bg);
    box-sizing: content-box;
}
.hg-pt-count:empty { display: none; }
.hg-pt-count[data-zero="1"] { display: none; }

/* quick jump - opens the command palette (see js/hostguru.js) */
.hg-pt-jump {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 40px;
    min-width: 190px;
    padding: 0 10px 0 11px;
    margin-right: 6px;
    border: 1px solid var(--pt-line);
    border-radius: var(--pt-r);
    background: #fafafa;
    color: var(--pt-ink-3);
    font-size: 14.5px;
    cursor: pointer;
    transition: border-color .14s ease, background .14s ease;
}
.hg-pt-jump:hover {
    border-color: #d1d5db;
    background: #fff;
}
.hg-pt-jump-label {
    flex: 1;
    text-align: left;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.hg-pt-kbd {
    flex-shrink: 0;
    padding: 1px 5px;
    border: 1px solid var(--pt-line);
    border-bottom-width: 2px;
    border-radius: 4px;
    background: #fff;
    color: var(--pt-ink-3);
    font-family: inherit;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.5;
}

/* account cluster - the client's own name, like every real portal */
.hg-pt-account {
    display: flex;
    align-items: center;
    gap: 9px;
    height: 44px;
    padding: 0 10px 0 6px;
    margin-left: 2px;
    border-radius: 10px;
    cursor: pointer;
    color: var(--pt-ink);
    text-decoration: none;
    border: 1px solid transparent;
}
.hg-pt-account:hover {
    background: var(--pt-line-2);
    border-color: var(--pt-line);
}
.hg-pt-avatar {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--pt-accent);
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 12.5px;
    font-weight: 700;
    letter-spacing: .02em;
    flex-shrink: 0;
    text-transform: uppercase;
}
.hg-pt-who { line-height: 1.25; }
.hg-pt-who small {
    display: block;
    font-size: 11.5px;
    color: var(--pt-ink-3);
}
.hg-pt-who b {
    display: block;
    font-size: 14.5px;
    font-weight: 600;
    max-width: 150px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* buttons */
.hg-pt-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    height: 40px;
    padding: 0 16px;
    border-radius: var(--pt-r);
    border: 1px solid transparent;
    font-size: 15px;
    font-weight: 600;
    line-height: 1;
    text-decoration: none;
    cursor: pointer;
    white-space: nowrap;
    transition: background .14s ease, border-color .14s ease, color .14s ease;
}
.hg-pt-btn:focus-visible {
    outline: 2px solid rgba(245, 114, 0, .45);
    outline-offset: 2px;
}
.hg-pt-btn-primary {
    background: var(--pt-accent);
    color: #fff;
}
.hg-pt-btn-primary:hover {
    background: var(--pt-accent-ink);
    color: #fff;
}
.hg-pt-btn-ghost {
    background: #fff;
    border-color: var(--pt-line);
    color: var(--pt-ink);
}
.hg-pt-btn-ghost:hover {
    border-color: #d1d5db;
    background: #fafafa;
    color: var(--pt-ink);
}
.hg-pt-btn-sm { height: 34px; padding: 0 12px; font-size: 14px; }

/* hamburger */
.hg-pt-burger {
    display: none;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border: 1px solid var(--pt-line);
    border-radius: var(--pt-r);
    background: #fff;
    color: var(--pt-ink);
    cursor: pointer;
}

/* ---- items WHMCS hands us through $secondaryNavbar ---- */

.hg-pt-right > li {
    position: relative;
    display: flex;
    align-items: center;
    height: 100%;
    padding: 0;
    margin: 0;
    list-style: none;
}

/* the palette takes the page hostage until it is dismissed */
body.hg-cp-open { overflow: hidden; }

/* the bar keeps a hairline shadow once the page has moved */
.hg-pt.hg-header.scrolled .hg-pt-bar {
    box-shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 8px 20px rgba(16, 24, 40, .05);
}
.hg-pt-right .dropdown-menu {
    position: absolute;
    top: calc(100% - 6px);
    right: 0;
    left: auto;
    margin: 0;
    border: 1px solid var(--pt-line);
    border-radius: 10px;
    background: #fff;
    box-shadow: var(--pt-shadow);
    animation: hg-pt-pop .14s ease;
}
/* As with the primary menus, the rows keep WHMCS's own .dropdown-item
   typography, spacing and hover - we only line the icons up. */
.hg-pt-right .dropdown-menu .dropdown-item > a i {
    width: 16px;
    flex: 0 0 16px;
    text-align: center;
}
.hg-pt-right .dropdown-menu .dropdown-divider {
    margin: 6px 4px;
    border-top: 1px solid var(--pt-line-2);
}

/* navbar.tpl puts .d-block on every nav <li>, and Bootstrap defines that as
   `display: block !important`. It silently beat our `display: flex`, so the
   40px controls were never centred in the 64px row - they sat flush to the
   top, 12px high. Both are !important here, so ours wins on specificity.
   :not(.d-none) keeps Bootstrap's hidden "More" li hidden. */
.hg-pt .navbar-nav > li:not(.d-none) {
    display: flex !important;
    align-items: center;
}
.hg-pt .navbar-nav > li:not(.d-none) > .dropdown-menu {
    position: absolute !important;
    top: calc(100% - 10px);
    right: 0;
    left: auto;
    bottom: auto;
    float: none;
    clear: both;
    z-index: 1060;
    transform: none;
}

/* Sign in - quiet. Only one solid button allowed on the bar. */
.hg-pt-right > li[menuItemName="Login"] > a {
    display: inline-flex;
    align-items: center;
    height: 40px;
    padding: 0 16px;
    margin-right: 2px;
    border: 1px solid var(--pt-line);
    border-radius: var(--pt-r);
    color: var(--pt-ink);
    font-weight: 600;
    text-decoration: none;
}
.hg-pt-right > li[menuItemName="Login"] > a:hover {
    background: #fafafa;
    border-color: #d1d5db;
    color: var(--pt-ink);
}
/* Register - the one solid button when logged out, mirroring the signed-in
   Order button. Same 40px as every other control in the cluster. */
.hg-pt-right > li[menuItemName="Register"] > a {
    display: inline-flex;
    align-items: center;
    height: 40px;
    padding: 0 16px;
    margin-left: 2px;
    border-radius: var(--pt-r);
    background: var(--pt-accent);
    color: #fff;
    font-weight: 600;
    text-decoration: none;
}
.hg-pt-right > li[menuItemName="Register"] > a:hover {
    background: var(--pt-accent-ink);
    color: #fff;
}

/* Account - avatar + real greeting, so clients can see who is signed in.
   Height matches every other control in the cluster (40px) and the avatar is
   sized to sit inside it comfortably rather than tower over the cart and bell. */
.hg-pt-right > li[menuItemName="Account"] > a {
    display: flex;
    align-items: center;
    gap: 9px;
    height: 40px;
    padding: 0 10px;
    border: 1px solid transparent;
    border-radius: 10px;
    color: var(--pt-ink);
    text-decoration: none;
}
/* The avatar already reads as "this opens a menu", and a rotated-border
   chevron sitting next to it is both redundant and optically misaligned inside
   a flex row - so no chevron on this one control. */
.hg-pt-right > li[menuItemName="Account"] > a.dropdown-toggle::after {
    display: none;
}
.hg-pt-right > li[menuItemName="Account"] > a:hover {
    background: var(--pt-line-2);
    border-color: var(--pt-line);
}
.hg-pt-right > li[menuItemName="Account"] > a::before {
    content: '';
    display: block;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--pt-accent) url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E") center/14px no-repeat;
    flex-shrink: 0;
}

/* =====================================================================
   5. DROPDOWNS
   Narrow list for normal items. No icons, no blurbs - just rows.
   ===================================================================== */

.hg-pt-nav .dropdown-menu {
    position: absolute;
    top: calc(100% - 8px);
    left: 0;
    margin: 0;
    border: 1px solid var(--pt-line);
    border-radius: 10px;
    background: #fff;
    box-shadow: var(--pt-shadow);
    animation: hg-pt-pop .14s ease;
}
.hg-pt-nav .dropdown-menu.dropdown-menu-right {
    left: auto;
    right: 0;
}
/* Open on hover, exactly like the wide panels do, so every item behaves the
   same. Click still works - Bootstrap's JS just adds .show on top. Pointer
   (coarse) devices keep click-to-open, which is why this is inside a
   min-width media query. */
@media (min-width: 992px) {
    .hg-pt-nav > li.dropdown:hover > .dropdown-menu,
    .hg-pt-nav > li.dropdown:focus-within > .dropdown-menu {
        display: block;
    }
}
@keyframes hg-pt-pop {
    from { opacity: 0; transform: translateY(-5px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Row styling is deliberately NOT redefined here.
   WHMCS renders <li class="dropdown-item"><a class="dropdown-item px-2 py-0">,
   and its own stylesheet already supplies the font size, weight, colour,
   padding and hover for those rows. Anything we add on top (.875rem vs 1rem,
   our own padding, our own hover tint) is a deviation from the default look, so
   we leave it alone and only style the panel around the rows. */
.hg-pt-nav .dropdown-menu .dropdown-divider {
    margin: 6px 4px;
    border-top: 1px solid var(--pt-line-2);
}

/* =====================================================================
   6. MEGA PANEL - only used where a section genuinely has many products
   ===================================================================== */

.hg-pt-nav .hg-dd,
.hg-dd {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    width: 100%;
    background: #fff;
    border: 1px solid var(--pt-line);
    border-top: 0;
    box-shadow: var(--pt-shadow);
    padding: 22px 0;
    z-index: 1029;
    animation: hg-pt-pop .14s ease;
}
.hg-pt-nav > li:hover > .hg-dd,
.hg-pt-nav > li.hg-dd-open > .hg-dd,
.hg-pt-nav > li:focus-within > .hg-dd { display: block; }

.hg-dd-inner {
    display: flex;
    align-items: flex-start;
    justify-content: flex-start;
    flex-wrap: nowrap;
    gap: 0;
    max-width: 1272px;
    margin: 0 auto;
    padding: 0 24px;
}
.hg-dd-col {
    flex: 1 1 0;
    min-width: 0;
    max-width: 330px;
    padding: 0 22px;
    border-right: 1px solid var(--pt-line-2);
}
.hg-dd-col:first-child { padding-left: 0; }
.hg-dd-col:last-child {
    border-right: 0;
    padding-right: 0;
    flex-grow: 1.4;
}
.hg-dd-head {
    font-size: 11.5px;
    font-weight: 700;
    letter-spacing: .07em;
    text-transform: uppercase;
    color: var(--pt-ink-3);
    margin: 0 0 10px;
}
.hg-dd a {
    display: block;
    padding: 7px 0;
    color: var(--pt-ink);
    text-decoration: none;
    line-height: 1.35;
}
.hg-dd a:hover,
.hg-dd a:focus {
    color: var(--pt-accent);
    outline: none;
}
/* the per-link marketing blurb stays supported, but is off by default -
   see the note in the hook. */
.hg-dd a .m {
    display: block;
    font-size: 12.5px;
    color: var(--pt-ink-3);
    margin-top: 2px;
}
.hg-dd a:hover .m { color: #b98a5e; }

/* =====================================================================
   7. COMMAND PALETTE  (Ctrl/cmd + K)
   A real jump list built from the menu that is already on the page.
   ===================================================================== */

.hg-cp-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(17, 24, 39, .38);
    z-index: 2000;
    display: none;
    padding: 10vh 20px 20px;
}
.hg-cp-backdrop.hg-cp-open { display: block; }

.hg-cp {
    max-width: 560px;
    margin: 0 auto;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 24px 60px rgba(16, 24, 40, .28);
    overflow: hidden;
}
.hg-cp-field {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 0 16px;
    height: 52px;
    border-bottom: 1px solid var(--pt-line);
    color: var(--pt-ink-3);
}
.hg-cp-field input {
    flex: 1;
    border: 0;
    outline: 0;
    font-size: 16px;
    color: var(--pt-ink);
    background: none;
    height: 100%;
}
.hg-cp-field input::placeholder { color: #9ca3af; }

.hg-cp-list {
    max-height: 52vh;
    overflow-y: auto;
    padding: 6px;
    margin: 0;
    list-style: none;
}
.hg-cp-group {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .07em;
    text-transform: uppercase;
    color: #9ca3af;
    padding: 10px 10px 5px;
}
.hg-cp-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 10px;
    border-radius: 7px;
    color: var(--pt-ink);
    text-decoration: none;
    cursor: pointer;
    line-height: 1.3;
}
.hg-cp-item:hover { background: #f9fafb; }
.hg-cp-item.hg-cp-cur {
    background: #fff7ed;
    color: var(--pt-accent-ink);
}
.hg-cp-item svg { flex-shrink: 0; opacity: .6; }
.hg-cp-item .hg-cp-tag {
    margin-left: auto;
    font-size: 11.5px;
    color: #9ca3af;
    white-space: nowrap;
}
.hg-cp-empty {
    padding: 26px 16px;
    text-align: center;
    color: var(--pt-ink-3);
}
.hg-cp-foot {
    display: flex;
    gap: 16px;
    padding: 9px 16px;
    border-top: 1px solid var(--pt-line);
    background: #fafafa;
    font-size: 12px;
    color: var(--pt-ink-3);
}
.hg-cp-foot span { display: inline-flex; align-items: center; gap: 5px; }

/* =====================================================================
   8. PAGE HERO - flat on portal pages, deep but undecorated on marketing
   The old hero was a gradient with a glow and a dot grid behind every page,
   client area included. That read like a brochure. Portal pages now get a
   plain white band and a hairline; only the public pages keep the dark one.
   ===================================================================== */

.hg-hero {
    position: relative;
    background: #fff;
    color: var(--pt-ink);
    padding: 0;
    border-bottom: 1px solid var(--pt-line);
}
.hg-hero::before,
.hg-hero::after {
    display: none;
}
.hg-hero:not(.hg-hero-compact) {
    background: #0d1f3c;
    color: #fff;
    border-bottom-color: #0d1f3c;
}
.hg-hero-inner {
    max-width: 1320px;
    margin: 0 auto;
    padding: 0 24px;
    display: flex;
    align-items: center;
    gap: 24px;
}
.hg-hero-compact .hg-hero-inner { padding-top: 14px; padding-bottom: 14px; }
.hg-hero:not(.hg-hero-compact) .hg-hero-inner { padding-top: 30px; padding-bottom: 30px; }
.hg-hero-crumb { margin-bottom: 4px; }
.hg-hero-crumb .breadcrumb-item { color: #9ca3af; }
.hg-hero-crumb .breadcrumb-item.active { color: var(--pt-ink); }
.hg-hero-crumb .breadcrumb a { color: var(--pt-accent-ink); }
.hg-hero:not(.hg-hero-compact) .hg-hero-crumb .breadcrumb-item { color: #9fb0c9; }
.hg-hero:not(.hg-hero-compact) .hg-hero-crumb .breadcrumb-item.active { color: #fff; }
.hg-hero:not(.hg-hero-compact) .hg-hero-crumb .breadcrumb a { color: #ffb066; }

.hg-hero-title {
    font-size: 26px;
    font-weight: 700;
    letter-spacing: -.015em;
    color: var(--pt-ink);
    margin: 0;
    line-height: 1.2;
}
.hg-hero-compact .hg-hero-title { font-size: 21px; }
.hg-hero-compact .hg-hero-title::before { display: none; }
.hg-hero:not(.hg-hero-compact) .hg-hero-title { color: #fff; }
.hg-hero-sub {
    color: var(--pt-ink-2);
    font-size: 16px;
    margin: 8px 0 0;
    max-width: 62ch;
}
.hg-hero:not(.hg-hero-compact) .hg-hero-sub { color: #c3d0e2; }
.hg-hero-side { margin-left: auto; display: flex; gap: 10px; }

/* =====================================================================
   9. PORTAL FOOTER  (logged-in only; visitors keep the SEO footer)
   ===================================================================== */

.hg-pf {
    background: #fff;
    border-top: 1px solid var(--pt-line);
    font-size: 14.5px;
    color: var(--pt-ink-2);
}
.hg-pf-in {
    max-width: 1320px;
    margin: 0 auto;
    padding: 30px 24px 22px;
}
.hg-pf-cols {
    display: grid;
    grid-template-columns: 1.4fr repeat(3, 1fr);
    gap: 28px;
}
.hg-pf-brand img {
    width: 140px;
    height: auto;
    display: block;
    margin-bottom: 10px;
}
.hg-pf-brand p {
    margin: 0 0 12px;
    max-width: 34ch;
    color: var(--pt-ink-3);
    font-size: 14px;
}
.hg-pf-head {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--pt-ink);
    margin: 0 0 10px;
}
.hg-pf ul {
    list-style: none;
    margin: 0;
    padding: 0;
}
.hg-pf li { margin-bottom: 7px; }
.hg-pf a {
    color: var(--pt-ink-2);
    text-decoration: none;
}
.hg-pf a:hover { color: var(--pt-accent); }
.hg-pf-bottom {
    margin-top: 26px;
    padding-top: 16px;
    border-top: 1px solid var(--pt-line-2);
    display: flex;
    align-items: center;
    gap: 18px;
    flex-wrap: wrap;
    font-size: 13.5px;
    color: var(--pt-ink-3);
}
.hg-pf-bottom .hgf-container { margin: 0; padding: 0; }
.hg-pf-lang {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 0;
    border: 0;
    background: none;
    color: inherit;
    font: inherit;
    cursor: pointer;
}
.hg-pf-lang:hover { color: var(--pt-accent); }

/* =====================================================================
   10. RESPONSIVE
   ===================================================================== */

@media (max-width: 1199px) {
    .hg-pt-logo img { width: 138px; }
    .hg-pt-nav .nav-link { padding: 0 8px; }
    .hg-pt-jump { min-width: 42px; width: 42px; padding: 0; justify-content: center; }
    .hg-pt-jump-label, .hg-pt-kbd { display: none; }
    .hg-pt-who b { max-width: 110px; }
}

@media (max-width: 991px) {
    .hg-pt-nav { display: none; }
    .hg-pt-burger { display: inline-flex; }
    .hg-pt-jump { display: none; }
    .hg-pt-strip-in { gap: 12px; }
    .hg-pt-strip-tail { gap: 12px; }
    .hg-pt-who { display: none; }
    .hg-dd-inner {
        flex-wrap: wrap;
        gap: 18px 0;
        max-height: 66vh;
        overflow-y: auto;
    }
    .hg-dd-col {
        flex: 0 0 50%;
        max-width: 50%;
        border-right: 0;
        padding: 0 16px;
    }
    .hg-pf-cols { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 575px) {
    .hg-pt-bar-in { padding: 0 14px; gap: 4px; }
    .hg-pt-strip-in, .hg-pt-attn-in, .hg-pt-hero-inner, .hg-pf-in { padding-left: 14px; padding-right: 14px; }
    .hg-pt-strip-lead .hg-pt-strip-extra { display: none; }
    .hg-pt-btn { padding: 0 12px; }
    .hg-pf-cols { grid-template-columns: 1fr; gap: 20px; }
    .hg-dd-col { flex: 0 0 100%; max-width: 100%; }
}

/* people who ask their OS for less motion get less motion */
@media (prefers-reduced-motion: reduce) {
    .hg-cp-backdrop, .hg-pt-nav .dropdown-menu, .hg-pt-nav .hg-dd, .hg-dd { animation: none; }
    .hg-pt-nav .nav-link, .hg-pt-iconbtn, .hg-pt-btn, .hg-pt-jump, .hg-pt-account { transition: none; }
}

@media print {
    .hg-pt-strip, .hg-pt-attn, .hg-pt-nav, .hg-pt-right, .hg-cp-backdrop { display: none !important; }
    .hg-pt-bar { position: static; }
}