/* HackTricks Tools — shared chrome (navbar + upgrade banner + footer).
   All classes are namespaced `htc-` to avoid collisions with per-tool page CSS.
   Injected by tools-chrome.js on every tool page. */
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&family=Chakra+Petch:wght@600;700&family=JetBrains+Mono:wght@400;500;700&display=swap');

.htc-nav-wrap {
    position: sticky;
    top: 0;
    z-index: 2000;
    background: rgba(11, 15, 20, 0.82);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border-bottom: 1px solid #1a232f;
    font-family: 'IBM Plex Sans', system-ui, sans-serif;
}
.htc-nav-wrap--integrated {
    background: rgba(28, 35, 45, 0.16);
    border-bottom-color: rgba(255, 255, 255, 0.18);
    backdrop-filter: blur(14px) saturate(1.12);
    -webkit-backdrop-filter: blur(14px) saturate(1.12);
    box-shadow: 0 10px 34px rgba(20, 20, 35, 0.08);
}
.htc-nav-wrap--integrated .htc-link,
.htc-nav-wrap--integrated .htc-login { color: rgba(255, 255, 255, 0.88); text-shadow: 0 1px 8px rgba(20, 20, 35, 0.28); }
.htc-nav-wrap--integrated .htc-link:hover,
.htc-nav-wrap--integrated .htc-login:hover { color: #fff; background: rgba(255, 255, 255, 0.12); }
.htc-nav-wrap--integrated .htc-login { border-color: rgba(255, 255, 255, 0.28); }
.htc-nav-wrap--integrated .htc-register { color: #fff; background: linear-gradient(135deg, #ff8a4d, #f0653f); box-shadow: 0 8px 20px -10px rgba(80, 30, 20, .65); }
.htc-nav-wrap--integrated .htc-register:hover { color: #fff; background: linear-gradient(135deg, #ff9b66, #ed5c37); }
.htc-nav-wrap--integrated .htc-sep { background: rgba(255, 255, 255, .22); }
.htc-nav-wrap--integrated .htc-banner { border-color: rgba(255,255,255,.13); background: rgba(28,35,45,.14); }
.htc-nav-wrap--integrated .htc-banner-inner { color: rgba(255,255,255,.76); }
.htc-nav-wrap--integrated .htc-banner-inner strong { color: #fff; }
.htc-nav-wrap--integrated .htc-banner-inner a { color: #ffe1d4; }
.htc-nav {
    max-width: 1160px;
    margin: 0 auto;
    padding: 0 28px;
    height: 60px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
}
.htc-nav-left { display: flex; align-items: center; gap: 14px; min-width: 0; }
.htc-nav-left a { display: flex; align-items: center; gap: 10px; text-decoration: none; }
.htc-nav-left img { height: 27px; display: block; }
.htc-custom-brand { display: flex; align-items: center; gap: 9px; min-width: 0; }
.htc-custom-brand a { color: #fff; text-decoration: none; text-shadow: 0 1px 12px rgba(20,20,35,.35); }
.htc-custom-brand-logo { flex: 0 0 auto; }
.htc-custom-brand-logo img { width: 38px; height: 38px; object-fit: cover; border-radius: 11px; background: #fff; box-shadow: 0 6px 18px rgba(20,20,35,.24); }
.htc-custom-brand-name { font-family: Iowan Old Style, Baskerville, Georgia, serif; font-size: 24px; font-weight: 700; letter-spacing: -.02em; }
.htc-custom-brand-byline { font-size: 12px; font-weight: 500; opacity: .76; }
.htc-sep { width: 1px; height: 22px; background: #242f3d; flex-shrink: 0; }
.htc-tag { font-size: 13.5px; color: #93a1b3; font-weight: 500; white-space: nowrap; }
.htc-nav-right { display: flex; align-items: center; gap: 6px; }
.htc-link { font-size: 13.5px; color: #93a1b3; padding: 8px 12px; border-radius: 8px; font-weight: 500; text-decoration: none; white-space: nowrap; }
.htc-link:hover { color: #c7d2de; }
.htc-login { font-size: 13.5px; color: #c7d2de; padding: 8px 14px; border-radius: 8px; font-weight: 500; border: 1px solid #242f3d; text-decoration: none; white-space: nowrap; }
.htc-login:hover { color: #e6edf3; }
.htc-register { font-size: 13.5px; color: #06121a; padding: 8px 15px; border-radius: 8px; font-weight: 600; background: #45c1e0; text-decoration: none; white-space: nowrap; }
.htc-register:hover { color: #06121a; background: #7ad4ec; }

.htc-banner { border-top: 1px solid #141c26; background: rgba(69, 193, 224, 0.045); display: none; }
.htc-banner.htc-show { display: block; }
/* When the navbar is suppressed (nav:false) the banner is the top element. */
.htc-nav-wrap--bare .htc-banner { border-top: none; }
.htc-banner-inner {
    max-width: 1160px;
    margin: 0 auto;
    padding: 8px 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    font-size: 12.5px;
    color: #a9c9d6;
    flex-wrap: wrap;
    text-align: center;
}
.htc-banner-inner strong { color: #d7eef6; font-weight: 600; }
.htc-banner-inner a { color: #45c1e0; font-weight: 600; text-decoration: none; }
.htc-banner-inner a:hover { color: #7ad4ec; }

/* Sticky footer: when a page's content is shorter than the viewport, push the
   footer to the bottom instead of leaving it floating mid-screen. Scoped to the
   class tools-chrome.js adds so only chrome'd pages are affected. */
body.htc-sticky-footer { display: flex; flex-direction: column; min-height: 100vh; }
body.htc-sticky-footer > .htc-footer { margin-top: auto; }

.htc-footer {
    border-top: 1px solid #141c26;
    margin-top: 40px;
    font-family: 'IBM Plex Sans', system-ui, sans-serif;
    background: #0b0f14;
}
.htc-footer-top {
    max-width: 1160px;
    margin: 0 auto;
    padding: 26px 28px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    flex-wrap: wrap;
}
.htc-footer-note { font-size: 12.5px; color: #6b7889; line-height: 1.7; }
.htc-footer-note a { color: #45c1e0; text-decoration: none; }
.htc-footer-note a:hover { color: #7ad4ec; }
.htc-footer-note .htc-dot { color: #34404f; margin: 0 6px; }
.htc-socials { display: flex; align-items: center; gap: 4px; }
.htc-socials a { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 9px; color: #8496a8; text-decoration: none; }
.htc-socials a:hover { color: #e6edf3; background: #151d28; }
.htc-socials svg { width: 17px; height: 17px; fill: currentColor; display: block; }
.htc-footer-bottom { border-top: 1px solid #10161f; }
.htc-footer-bottom-inner {
    max-width: 1160px;
    margin: 0 auto;
    padding: 14px 28px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}
.htc-footer-bottom-inner span, .htc-footer-bottom-inner a { font-family: 'IBM Plex Mono', ui-monospace, monospace; font-size: 11px; color: #3f4d5e; text-decoration: none; }
.htc-footer-bottom-inner a:hover { color: #6b7889; }
.htc-footer-bottom-links { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }

@media (max-width: 720px) {
    .htc-tag, .htc-link { display: none; }
    .htc-nav, .htc-banner-inner, .htc-footer-top, .htc-footer-bottom-inner { padding-left: 18px; padding-right: 18px; }
}

/* Hide legacy per-page chrome that the shared chrome replaces. The old navbar
   markup is kept in the DOM (page scripts still reference #navAuth) but hidden;
   the old inline upgrade banner and footers are removed by tools-chrome.js. */
nav.navbar { display: none !important; }
footer { display: none !important; }

/* Shared cyberpunk chrome. Integrated custom brands retain their own skin. */
.htc-nav-wrap:not(.htc-nav-wrap--integrated) {background:rgba(7,7,11,.88);border-color:#24222e;}
.htc-nav-wrap:not(.htc-nav-wrap--integrated) .htc-nav {max-width:1600px;padding:0 48px;gap:16px;}
.htc-brand-name {font:700 16px 'Chakra Petch',sans-serif;letter-spacing:.14em;color:#ecebf2;}
.htc-nav-wrap:not(.htc-nav-wrap--integrated) .htc-tag {font:700 11px 'JetBrains Mono',monospace;color:#f61900;letter-spacing:.1em;}
.htc-nav-wrap:not(.htc-nav-wrap--integrated) :is(.htc-link,.htc-login,.htc-register) {font:700 11px 'JetBrains Mono',monospace;letter-spacing:.05em;text-transform:uppercase;border-radius:0;}
.htc-nav-wrap:not(.htc-nav-wrap--integrated) .htc-link {color:#8b8a99;padding:8px 10px;}
.htc-nav-wrap:not(.htc-nav-wrap--integrated) .htc-login {color:#ecebf2;border-color:#3a3645;}
.htc-nav-wrap:not(.htc-nav-wrap--integrated) .htc-register {background:#f61900;color:white;clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,10px 100%,0 calc(100% - 10px));}
.htc-nav-wrap:not(.htc-nav-wrap--integrated) .htc-register:hover {background:#ff3d2e;}
.htc-nav-wrap:not(.htc-nav-wrap--integrated) .htc-sep {background:#24222e;}
.htc-email {color:#ecebf2;border:1px solid #f61900;padding:9px 14px;font:700 11px 'JetBrains Mono',monospace;text-decoration:none;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.htc-email::before {content:'■';color:#f61900;margin-right:8px;}
.htc-current {border-color:#f61900!important;}
.htc-nav-wrap:not(.htc-nav-wrap--integrated) .htc-banner {background:rgba(246,25,0,.06);border-color:#24222e;}
.htc-nav-wrap:not(.htc-nav-wrap--integrated) .htc-banner-inner {max-width:1600px;min-height:34px;padding:0 48px;justify-content:flex-start;font:11px 'JetBrains Mono',monospace;color:#a3a2b1;}
.htc-hazard {height:34px;width:44px;flex-shrink:0;background:repeating-linear-gradient(45deg,#f61900 0 7px,transparent 7px 14px);}
.htc-nav-wrap:not(.htc-nav-wrap--integrated) .htc-banner-inner strong {color:#c9c7d4;}
.htc-nav-wrap:not(.htc-nav-wrap--integrated) .htc-banner-inner a {color:#f61900;text-transform:uppercase;font-weight:700;}
.htc-footer {border-color:#24222e;background:#07070b;}
.htc-footer :is(.htc-footer-top,.htc-footer-bottom-inner) {max-width:1600px;padding:20px 48px;}
.htc-footer :is(.htc-footer-note,.htc-footer-bottom-inner span,.htc-footer-bottom-inner a) {font:10px/1.7 'JetBrains Mono',monospace;text-transform:uppercase;color:#6d6b7b;}
.htc-footer-note a {color:#f61900;}
.htc-footer .htc-socials {display:none;}
@media (max-width:900px) {.htc-nav-wrap:not(.htc-nav-wrap--integrated) .htc-nav {padding:0 24px;}.htc-nav-right {gap:6px;}.htc-nav-wrap:not(.htc-nav-wrap--integrated) .htc-link {display:none;}.htc-email {max-width:190px;}}
@media (max-width:600px) {.htc-nav-wrap:not(.htc-nav-wrap--integrated) .htc-nav {padding:0 18px;}.htc-brand-name {font-size:12px;}.htc-nav-left {gap:8px;}.htc-nav-left a {gap:8px;}.htc-nav-right>.htc-sep {display:none;}.htc-email {max-width:155px;font-size:9px;padding:8px;}.htc-nav-wrap:not(.htc-nav-wrap--integrated) :is(.htc-login,.htc-register) {font-size:9px;padding:8px;}.htc-nav-wrap:not(.htc-nav-wrap--integrated) .htc-banner-inner {padding:0 18px;font-size:9px;gap:8px;}.htc-hazard {display:none;}.htc-footer :is(.htc-footer-top,.htc-footer-bottom-inner) {padding:18px;}}
@media (max-width:360px) {.htc-email {max-width:120px;}.htc-brand-name {font-size:11px;}}
.htc-footer .htc-footer-top {padding:20px 48px;min-height:60px;}
.htc-footer :is(.htc-footer-note,.htc-footer-bottom-links span,.htc-footer-bottom-links a) {font:11px/1.6 'JetBrains Mono',monospace;color:#55536a;text-transform:uppercase;text-decoration:none;}
.htc-footer .htc-footer-note a {color:#f61900;}
.htc-nav-wrap:not(.htc-nav-wrap--integrated) .htc-link {font-size:12px;}
@media (max-width:600px) {.htc-footer .htc-footer-top {padding:18px;gap:12px;}.htc-footer :is(.htc-footer-note,.htc-footer-bottom-links span,.htc-footer-bottom-links a) {font-size:9px;}}

/* Exact shared reference type and spacing. */
.htc-nav-wrap:not(.htc-nav-wrap--integrated) :is(.htc-link,.htc-login,.htc-register) {font-weight:500;font-size:12px;letter-spacing:.06em;}
.htc-nav-wrap:not(.htc-nav-wrap--integrated) .htc-link {padding:8px 12px;}
.htc-nav-wrap:not(.htc-nav-wrap--integrated) .htc-banner-inner {font-size:12px;gap:14px;}
.htc-email {font-weight:500;font-size:12px;color:#ecebf2!important;}
.htc-footer-bottom-links {gap:10px;}
.htc-footer-bottom-links a::before {content:'·';margin-right:10px;color:#55536a;}
@media(max-width:600px) {.htc-nav-wrap:not(.htc-nav-wrap--integrated) :is(.htc-login,.htc-register),.htc-nav-wrap:not(.htc-nav-wrap--integrated) .htc-banner-inner {font-size:9px;}.htc-email {font-size:9px;}}

.htc-footer-note .htc-dot {color:#55536a;}
