/*
 * NOUNUniversity Theme 17 — unified public design system.
 * Loaded after the legacy stylesheet so existing content and plugin markup
 * remain compatible while receiving the new visual language.
 */
:root {
    --ns17-green-900: #073e2a;
    --ns17-green-800: #07583a;
    --ns17-green-700: #08734a;
    --ns17-green-600: #0b8a58;
    --ns17-green-100: #dff4e9;
    --ns17-green-50: #f0faf5;
    --ns17-navy-950: #101c27;
    --ns17-navy-800: #213447;
    --ns17-text: #17222c;
    --ns17-muted: #5f6d78;
    --ns17-line: #dce4e7;
    --ns17-soft: #f4f7f7;
    --ns17-canvas: #fbfcfc;
    --ns17-card: #ffffff;
    --ns17-warning: #9a5d00;
    --ns17-radius-sm: 12px;
    --ns17-radius: 18px;
    --ns17-radius-lg: 28px;
    --ns17-shadow-sm: 0 1px 2px rgba(16, 28, 39, .04), 0 8px 24px rgba(16, 28, 39, .05);
    --ns17-shadow: 0 18px 50px rgba(16, 28, 39, .10);
    --ns17-display: Georgia, "Times New Roman", serif;
    --ns17-sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --ns17-max: 1180px;
}

[data-theme="dark"] {
    --ns17-green-900: #d9f7e6;
    --ns17-green-800: #9ce3b9;
    --ns17-green-700: #69cd94;
    --ns17-green-600: #4db77a;
    --ns17-green-100: #18372a;
    --ns17-green-50: #122b21;
    --ns17-navy-950: #eef4f7;
    --ns17-navy-800: #c7d2d8;
    --ns17-text: #edf2f4;
    --ns17-muted: #aeb9c0;
    --ns17-line: #2a3942;
    --ns17-soft: #151f25;
    --ns17-canvas: #0f171c;
    --ns17-card: #162128;
    --ns17-shadow-sm: 0 8px 24px rgba(0, 0, 0, .22);
    --ns17-shadow: 0 18px 50px rgba(0, 0, 0, .34);
}

html { scroll-padding-top: 92px; }
body.ns17 {
    background: var(--ns17-canvas);
    color: var(--ns17-text);
    font-family: var(--ns17-sans);
    line-height: 1.65;
}
body.ns17 .ns-w { max-width: var(--ns17-max); padding-inline: clamp(18px, 3vw, 32px); }
body.ns17 h1,
body.ns17 h2,
body.ns17 h3,
body.ns17 h4 { color: var(--ns17-text); font-family: var(--ns17-display); letter-spacing: -.025em; }
body.ns17 p { color: var(--ns17-muted); }
body.ns17 a { text-underline-offset: 3px; }
body.ns17 a:focus-visible,
body.ns17 button:focus-visible,
body.ns17 input:focus-visible,
body.ns17 select:focus-visible,
body.ns17 textarea:focus-visible { outline: 3px solid #2e7bc4; outline-offset: 3px; }

/* Header ------------------------------------------------------------- */
body.ns17 .ns-hdr {
    background: rgba(255, 255, 255, .96);
    border-bottom: 1px solid rgba(220, 228, 231, .92);
    box-shadow: none;
    color: var(--ns17-text);
    transition: transform .24s ease, box-shadow .24s ease, background .24s ease;
    backdrop-filter: saturate(150%) blur(14px);
}
[data-theme="dark"] body.ns17 .ns-hdr { background: rgba(15, 23, 28, .95); border-color: var(--ns17-line); }
body.ns17 .ns-hdr.ns17-header-scrolled { box-shadow: 0 8px 30px rgba(16, 28, 39, .08); }
body.ns17 .ns-hdr.ns17-header-hidden { transform: translateY(-100%); }
body.ns17 .ns-hdr-inner { min-height: 74px; gap: 24px; }
body.ns17 .ns-logo { color: var(--ns17-text); text-decoration: none; font-weight: 800; }
body.ns17 .ns-logo:hover { color: var(--ns17-green-700); }
body.ns17 .ns-nav-ul > li > a {
    color: var(--ns17-navy-800);
    font-size: .91rem;
    font-weight: 680;
    text-decoration: none;
    padding: 12px 10px;
    border-radius: 9px;
}
body.ns17 .ns-nav-ul > li > a:hover,
body.ns17 .ns-nav-ul > li.current-menu-item > a,
body.ns17 .ns-nav-ul > li.current-menu-ancestor > a { background: var(--ns17-green-50); color: var(--ns17-green-800); }
body.ns17 .ns-icon-btn,
body.ns17 .ns-nav-toggle,
body.ns17 .ns-user-btn,
body.ns17 .ns-portal-btn {
    min-width: 44px;
    min-height: 44px;
    border: 1px solid var(--ns17-line);
    background: var(--ns17-card);
    color: var(--ns17-text);
    border-radius: 13px;
    box-shadow: none;
}
body.ns17 .ns-icon-btn:hover,
body.ns17 .ns-nav-toggle:hover,
body.ns17 .ns-user-btn:hover { background: var(--ns17-soft); color: var(--ns17-green-700); }
body.ns17 .ns-support-hdr-btn { background: var(--ns17-green-800) !important; border-color: var(--ns17-green-800) !important; color: #fff !important; border-radius: 13px; }
body.ns17 .ns-support-hdr-btn:hover { background: var(--ns17-green-700) !important; color: #fff !important; }
body.ns17 .ns-portal-login { border-color: var(--ns17-line); color: var(--ns17-text); }
body.ns17 .sub-menu { border: 1px solid var(--ns17-line); background: var(--ns17-card); border-radius: 14px; box-shadow: var(--ns17-shadow); padding: 8px; }
body.ns17 .sub-menu a { color: var(--ns17-text); border-radius: 8px; }
body.ns17 .sub-menu a:hover { background: var(--ns17-green-50); color: var(--ns17-green-800); }

/* Announcement */
body.ns17 .ns-announce { min-height: 38px; font-size: .84rem; }
body.ns17 .ns-announce a { font-weight: 760; }

/* Homepage ----------------------------------------------------------- */
.ns17-home-main { overflow: clip; }
.ns17-section { padding: clamp(64px, 8vw, 104px) 0; }
.ns17-section-tint { background: var(--ns17-soft); border-block: 1px solid var(--ns17-line); }
.ns17-kicker {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--ns17-green-700);
    font-size: .76rem;
    font-weight: 820;
    letter-spacing: .12em;
    line-height: 1.3;
    text-transform: uppercase;
}
.ns17-kicker-light { color: #b8f0cf; }
.ns17-icon { flex: none; }
.ns17-hero {
    position: relative;
    padding: clamp(38px, 4.2vw, 58px) 0 clamp(42px, 4.8vw, 64px);
    background:
        radial-gradient(circle at 8% 20%, rgba(11, 138, 88, .12), transparent 30%),
        radial-gradient(circle at 88% 12%, rgba(46, 123, 196, .11), transparent 29%),
        linear-gradient(180deg, #fbfdfc 0%, var(--ns17-canvas) 100%);
}
[data-theme="dark"] .ns17-hero { background: radial-gradient(circle at 8% 20%, rgba(77, 183, 122, .13), transparent 30%), radial-gradient(circle at 88% 12%, rgba(46, 123, 196, .12), transparent 29%), var(--ns17-canvas); }
.ns17-hero::after { content: ""; position: absolute; inset: auto 0 0; height: 1px; background: var(--ns17-line); }
.ns17-hero-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(360px, .85fr); align-items: center; gap: clamp(32px, 4.5vw, 58px); }
.ns17-hero-copy h1 { max-width: 760px; margin: 14px 0 15px; font-size: clamp(2.55rem, 4.25vw, 4.15rem); line-height: 1.01; }
.ns17-hero-copy > p { max-width: 650px; margin: 0; font-size: clamp(1rem, 1.3vw, 1.12rem); line-height: 1.58; }
.ns17-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-top: 22px; }
.ns17-btn {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    gap: 10px;
    min-height: 50px;
    padding: 12px 20px;
    border: 1px solid transparent;
    border-radius: 13px;
    font-size: .94rem;
    font-weight: 780;
    line-height: 1.25;
    text-decoration: none;
    transition: transform .16s ease, box-shadow .16s ease, background .16s ease;
}
.ns17-btn:hover { transform: translateY(-2px); }
.ns17-btn-primary { background: var(--ns17-green-800); color: #fff; box-shadow: 0 11px 25px rgba(7, 88, 58, .19); }
.ns17-btn-primary:hover { background: var(--ns17-green-700); color: #fff; }
.ns17-btn-secondary { background: var(--ns17-card); border-color: var(--ns17-line); color: var(--ns17-text); }
.ns17-btn-secondary:hover { background: var(--ns17-soft); color: var(--ns17-green-700); }
.ns17-btn-dark { background: var(--ns17-navy-950); color: #fff; }
.ns17-btn-dark:hover { background: var(--ns17-green-800); color: #fff; }
.ns17-btn-light { background: #fff; color: #0b4f35; }
.ns17-btn-light:hover { background: #effbf4; color: #073e2a; }
.ns17-hero-proof { display: flex; flex-wrap: wrap; gap: 8px 20px; padding: 0; margin: 18px 0 0; list-style: none; }
.ns17-hero-proof li { display: inline-flex; align-items: center; gap: 7px; color: var(--ns17-muted); font-size: .86rem; font-weight: 610; }
.ns17-hero-proof svg { color: var(--ns17-green-700); }

.ns17-hero-panel { border: 1px solid var(--ns17-line); border-radius: 26px; background: rgba(255, 255, 255, .88); box-shadow: var(--ns17-shadow); overflow: hidden; transform: rotate(1.2deg); }
[data-theme="dark"] .ns17-hero-panel { background: rgba(22, 33, 40, .92); }
.ns17-panel-top { display: flex; justify-content: space-between; align-items: center; min-height: 42px; padding: 0 16px; border-bottom: 1px solid var(--ns17-line); color: var(--ns17-muted); font-size: .75rem; font-weight: 720; }
.ns17-panel-top > div { display: flex; gap: 6px; }
.ns17-dot { width: 8px; height: 8px; border-radius: 50%; background: #ced7da; }
.ns17-dot:first-child { background: #e47878; }.ns17-dot:nth-child(2) { background: #e6bd61; }.ns17-dot:nth-child(3) { background: #75be8c; }
.ns17-panel-body { padding: 16px; background: linear-gradient(145deg, var(--ns17-soft), var(--ns17-card)); }
.ns17-next-card { padding: 16px; border: 1px solid var(--ns17-line); border-radius: 15px; background: var(--ns17-card); box-shadow: var(--ns17-shadow-sm); }
.ns17-mini-label { display: block; margin-bottom: 10px; color: var(--ns17-green-700); font-size: .7rem; font-weight: 820; letter-spacing: .12em; text-transform: uppercase; }
.ns17-next-card strong { display: block; color: var(--ns17-text); font-family: var(--ns17-display); font-size: 1.16rem; }
.ns17-next-card p { margin: 7px 0 0; font-size: .88rem; }
.ns17-panel-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; margin-top: 9px; }
.ns17-panel-grid > div { min-height: 94px; padding: 13px; border: 1px solid var(--ns17-line); border-radius: 13px; background: var(--ns17-card); }
.ns17-panel-icon { display: grid; place-items: center; width: 36px; height: 36px; margin-bottom: 9px; border-radius: 10px; background: var(--ns17-green-100); color: var(--ns17-green-800); }
.ns17-panel-grid strong,.ns17-panel-grid small { display: block; }
.ns17-panel-grid strong { color: var(--ns17-text); font-size: .91rem; }
.ns17-panel-grid small { margin-top: 3px; color: var(--ns17-muted); font-size: .72rem; }

.ns17-section-heading { margin-bottom: 32px; }
.ns17-section-heading h2 { max-width: 780px; margin: 10px 0 9px; font-size: clamp(2rem, 3.5vw, 3.2rem); line-height: 1.12; }
.ns17-section-heading p { max-width: 720px; margin: 0; font-size: 1rem; }
.ns17-section-heading-split { display: flex; justify-content: space-between; align-items: end; gap: 30px; }
.ns17-section-heading-centred { max-width: 780px; margin-inline: auto; text-align: center; }
.ns17-text-link { display: inline-flex; align-items: center; gap: 7px; flex: none; color: var(--ns17-green-700); font-size: .9rem; font-weight: 780; text-decoration: none; }
.ns17-text-link:hover { color: var(--ns17-green-800); }

.ns17-route-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 15px; }
.ns17-route-card { display: grid; grid-template-columns: 52px minmax(0, 1fr) 24px; align-items: center; gap: 16px; padding: 22px; border: 1px solid var(--ns17-line); border-radius: var(--ns17-radius); background: var(--ns17-card); box-shadow: var(--ns17-shadow-sm); color: var(--ns17-text); text-decoration: none; transition: transform .18s ease, border .18s ease, box-shadow .18s ease; }
.ns17-route-card:hover { transform: translateY(-3px); border-color: rgba(8, 115, 74, .42); box-shadow: var(--ns17-shadow); color: var(--ns17-text); }
.ns17-route-icon { display: grid; place-items: center; width: 52px; height: 52px; border-radius: 15px; background: var(--ns17-green-100); color: var(--ns17-green-800); }
.ns17-route-card strong,.ns17-route-card small { display: block; }
.ns17-route-card strong { font-size: 1rem; }
.ns17-route-card small { margin-top: 5px; color: var(--ns17-muted); font-size: .84rem; line-height: 1.5; }
.ns17-route-arrow { color: var(--ns17-muted); transition: transform .18s ease; }
.ns17-route-card:hover .ns17-route-arrow { transform: translateX(4px); color: var(--ns17-green-700); }

.ns17-service-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.ns17-service-card { display: flex; flex-direction: column; min-width: 0; padding: 22px; border: 1px solid var(--ns17-line); border-radius: var(--ns17-radius); background: var(--ns17-card); box-shadow: var(--ns17-shadow-sm); }
.ns17-service-top { display: flex; align-items: center; gap: 10px; }
.ns17-service-icon { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 13px; background: var(--ns17-green-100); color: var(--ns17-green-800); }
.ns17-service-eyebrow { color: var(--ns17-green-700); font-size: .68rem; font-weight: 820; letter-spacing: .08em; text-transform: uppercase; }
.ns17-service-card h3 { margin: 20px 0 9px; font-size: 1.34rem; line-height: 1.22; }
.ns17-service-card h3 a { color: var(--ns17-text); text-decoration: none; }
.ns17-service-card h3 a:hover { color: var(--ns17-green-700); }
.ns17-service-card > p { margin: 0 0 22px; font-size: .88rem; line-height: 1.62; }
.ns17-service-footer { display: flex; justify-content: space-between; align-items: end; gap: 12px; margin-top: auto; padding-top: 17px; border-top: 1px solid var(--ns17-line); }
.ns17-service-footer strong { color: var(--ns17-text); font-size: .84rem; }
.ns17-service-footer a { display: inline-flex; align-items: center; gap: 5px; color: var(--ns17-green-700); font-size: .78rem; font-weight: 780; text-decoration: none; }

.ns17-tools-layout { display: grid; grid-template-columns: minmax(280px, .72fr) minmax(0, 1.28fr); gap: clamp(40px, 7vw, 88px); align-items: center; }
.ns17-tools-copy h2 { margin: 12px 0 15px; font-size: clamp(2rem, 3.7vw, 3.35rem); line-height: 1.1; }
.ns17-tools-copy p { max-width: 470px; font-size: 1.02rem; }
.ns17-tools-copy .ns17-btn { margin-top: 15px; }
.ns17-tools-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.ns17-tool-card { min-height: 174px; padding: 23px; border: 1px solid var(--ns17-line); border-radius: var(--ns17-radius); background: var(--ns17-card); box-shadow: var(--ns17-shadow-sm); color: var(--ns17-text); text-decoration: none; transition: transform .18s ease, border .18s ease; }
.ns17-tool-card:hover { transform: translateY(-3px); border-color: rgba(8, 115, 74, .42); color: var(--ns17-text); }
.ns17-tool-card > span { display: grid; place-items: center; width: 46px; height: 46px; margin-bottom: 20px; border-radius: 13px; background: var(--ns17-soft); color: var(--ns17-green-700); }
.ns17-tool-card strong,.ns17-tool-card small { display: block; }
.ns17-tool-card strong { font-size: 1rem; }
.ns17-tool-card small { margin-top: 7px; color: var(--ns17-muted); font-size: .83rem; line-height: 1.5; }

.ns17-guides-grid { display: grid; grid-template-columns: 1.55fr repeat(2, minmax(0, .75fr)); gap: 16px; }
.ns17-guide-card { min-width: 0; border: 1px solid var(--ns17-line); border-radius: var(--ns17-radius); background: var(--ns17-card); box-shadow: var(--ns17-shadow-sm); overflow: hidden; }
.ns17-guide-card:nth-child(n+4) { grid-column: span 1; }
.ns17-guide-image { display: block; aspect-ratio: 16/8.8; overflow: hidden; background: var(--ns17-soft); }
.ns17-guide-image img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease; }
.ns17-guide-card:hover .ns17-guide-image img { transform: scale(1.025); }
.ns17-guide-body { padding: 21px; }
.ns17-guide-cat { display: inline-block; color: var(--ns17-green-700); font-size: .68rem; font-weight: 820; letter-spacing: .08em; text-decoration: none; text-transform: uppercase; }
.ns17-guide-card h3 { margin: 9px 0 8px; font-size: 1.25rem; line-height: 1.28; }
.ns17-guide-featured h3 { font-size: clamp(1.5rem, 2.3vw, 2.15rem); }
.ns17-guide-card h3 a { color: var(--ns17-text); text-decoration: none; }
.ns17-guide-card h3 a:hover { color: var(--ns17-green-700); }
.ns17-guide-body p { margin: 0 0 13px; font-size: .9rem; }
.ns17-guide-meta { color: var(--ns17-muted); font-size: .74rem; }
.ns17-empty { padding: 40px; border: 1px dashed var(--ns17-line); border-radius: var(--ns17-radius); color: var(--ns17-muted); text-align: center; }

.ns17-process-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; padding: 0; margin: 38px 0 0; list-style: none; counter-reset: none; }
.ns17-process-grid li { position: relative; padding: 26px 22px; border-top: 3px solid var(--ns17-green-700); border-radius: 0 0 var(--ns17-radius) var(--ns17-radius); background: var(--ns17-soft); }
.ns17-process-grid li > span { display: grid; place-items: center; width: 34px; height: 34px; margin-bottom: 19px; border-radius: 50%; background: var(--ns17-green-800); color: #fff; font-size: .78rem; font-weight: 850; }
.ns17-process-grid strong { display: block; color: var(--ns17-text); font-size: .98rem; }
.ns17-process-grid p { margin: 7px 0 0; font-size: .83rem; }

.ns17-support-section { padding: 0 0 clamp(70px, 8vw, 110px); }
.ns17-support-card { display: flex; justify-content: space-between; align-items: center; gap: 40px; padding: clamp(32px, 5vw, 60px); border-radius: var(--ns17-radius-lg); background: linear-gradient(125deg, #063f2b 0%, #08734a 75%, #0b8a58 100%); box-shadow: 0 24px 64px rgba(6, 63, 43, .2); }
.ns17-support-card h2 { max-width: 740px; margin: 12px 0 10px; color: #fff; font-size: clamp(1.8rem, 3.3vw, 3rem); }
.ns17-support-card p { margin: 0; color: rgba(255, 255, 255, .76); }
.ns17-support-actions { display: flex; flex-direction: column; align-items: stretch; gap: 12px; min-width: 250px; }
.ns17-support-link { display: inline-flex; align-items: center; justify-content: center; gap: 7px; color: #d8f6e5; font-size: .84rem; font-weight: 740; text-decoration: none; }
.ns17-support-link:hover { color: #fff; }

/* Public content surfaces ------------------------------------------- */
body.ns17:not(.ns17-home) .ns-main { padding-block: clamp(42px, 6vw, 78px); }
body.ns17 .ns-post-card,
body.ns17 .ns-page-card,
body.ns17 .ns-content > .wp-block-group,
body.ns17 article.page { border-color: var(--ns17-line); background: var(--ns17-card); border-radius: var(--ns17-radius); box-shadow: var(--ns17-shadow-sm); }
body.ns17 .ns-post-grid { gap: 28px; }
body.ns17 .ns-post-card { overflow: visible; }
body.ns17 .ns-entry-hdr { margin-bottom: 24px; }
body.ns17 .ns-entry-title { max-width: 920px; font-size: clamp(2.15rem, 4.4vw, 4rem); line-height: 1.08; }
body.ns17 .ns-entry-meta { color: var(--ns17-muted); }
body.ns17 .ns-content { color: var(--ns17-text); font-size: 1.04rem; line-height: 1.82; }
body.ns17 .ns-content p { color: var(--ns17-text); }
body.ns17 .ns-content h2 { margin-top: 2.25em; font-size: clamp(1.65rem, 3vw, 2.25rem); }
body.ns17 .ns-content h3 { margin-top: 1.8em; font-size: clamp(1.3rem, 2.4vw, 1.7rem); }
body.ns17 .ns-content a { color: var(--ns17-green-700); }
body.ns17 .ns-content table { border-radius: 12px; overflow: hidden; }
body.ns17 .ns-content th { background: var(--ns17-green-50); color: var(--ns17-text); }
body.ns17 .ns-content blockquote { background: var(--ns17-green-50); border-left-color: var(--ns17-green-700); }
body.ns17 .ns-content input,
body.ns17 .ns-content select,
body.ns17 .ns-content textarea,
body.ns17 .comment-form input,
body.ns17 .comment-form textarea { border: 1px solid var(--ns17-line); background: var(--ns17-card); color: var(--ns17-text); border-radius: 11px; }
body.ns17 .ns-sidebar,
body.ns17 .ns-widget { border-color: var(--ns17-line); background: var(--ns17-card); border-radius: var(--ns17-radius); box-shadow: var(--ns17-shadow-sm); }
body.ns17 .ns-card,
body.ns17 .ns-compact-card { border-color: var(--ns17-line); background: var(--ns17-card); border-radius: var(--ns17-radius); box-shadow: var(--ns17-shadow-sm); }
body.ns17 .ns-card:hover { transform: translateY(-3px); box-shadow: var(--ns17-shadow); }
body.ns17 .ns-card-title a { color: var(--ns17-text); }
body.ns17 .ns-card-title a:hover { color: var(--ns17-green-700); }
body.ns17 .ns-ah { margin-bottom: 26px; }
body.ns17 .ns-ah h1 { font-size: clamp(2rem, 4vw, 3.2rem); }

/* Category / archive */
body.ns17 .ns-cat-hero { background: linear-gradient(135deg, #063f2b, #08734a) !important; }
body.ns17 .ns-cat-hero h1 { color: #fff; font-size: clamp(2.25rem, 5vw, 4.2rem); }
body.ns17 .ns-cat-desc { color: rgba(255,255,255,.82); }
body.ns17 .ns-cat-pill,
body.ns17 .ns-cat-tab { border-color: rgba(255,255,255,.22); background: rgba(255,255,255,.09); color: #fff; }

/* Public Student Portal plugin pages */
body.ns17 .nsp-public-shell,
body.ns17 .nsp-public-experience,
body.ns17 .nsp-services-hub,
body.ns17 .nsp-public-page { --nsp-public-green: var(--ns17-green-700); }
body.ns17 .nsp-public-card,
body.ns17 .nsp-public-service-card,
body.ns17 .nsp-hub-card { border-color: var(--ns17-line) !important; border-radius: var(--ns17-radius) !important; box-shadow: var(--ns17-shadow-sm) !important; }

/* Footer ------------------------------------------------------------- */
body.ns17 .ns-ftr { border-top: 1px solid var(--ns17-line); background: #0d1c24; color: #d8e2e7; }
body.ns17 .ns-ftr-top { padding-top: 68px; }
body.ns17 .ns-ftr-grid { gap: 44px; }
body.ns17 .ns-ftr-logo { color: #fff; }
body.ns17 .ns-ftr-brand p,
body.ns17 .ns-ftr-col a,
body.ns17 .ns-ftr-col li { color: #aab9c1; }
body.ns17 .ns-ftr-col a:hover { color: #fff; }
body.ns17 .ns-ftr-col h3 { color: #fff; font-family: var(--ns17-sans); font-size: .85rem; letter-spacing: .08em; text-transform: uppercase; }
body.ns17 .ns-disclaimer { border-color: rgba(255,255,255,.09); background: rgba(0,0,0,.13); }
body.ns17 .ns-disclaimer p { color: #aab9c1; }
body.ns17 .ns-disclaimer-pill { background: #b8f0cf; color: #073e2a; }
body.ns17 .ns-ftr-btm { border-color: rgba(255,255,255,.09); color: #8698a2; }
body.ns17 .ns-btt { background: var(--ns17-green-700); color: #fff; }

/* Keep the complete desktop hero inside a normal viewport. */
@media (min-width: 901px) {
    .ns17-hero { display: flex; align-items: center; min-height: calc(100vh - 104px); min-height: calc(100svh - 104px); }
    body.admin-bar .ns17-hero { min-height: calc(100vh - 136px); min-height: calc(100svh - 136px); }
}

/* Responsive --------------------------------------------------------- */
@media (max-width: 1080px) {
    .ns17-hero-grid { grid-template-columns: minmax(0, 1.12fr) minmax(340px, .88fr); gap: 34px; }
    .ns17-service-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ns17-guides-grid { grid-template-columns: 1.35fr 1fr; }
    .ns17-guide-card:nth-child(n+4) { grid-column: auto; }
    .ns17-process-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 900px) {
    body.ns17 .ns-hdr-inner { min-height: 68px; }
    .ns17-hero { padding-top: 58px; }
    .ns17-hero-grid { grid-template-columns: 1fr; }
    .ns17-hero-panel { max-width: 670px; transform: none; }
    .ns17-route-grid { grid-template-columns: 1fr; }
    .ns17-tools-layout { grid-template-columns: 1fr; }
    .ns17-tools-copy { max-width: 720px; }
    .ns17-guides-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ns17-guide-featured { grid-column: 1 / -1; }
    .ns17-support-card { align-items: flex-start; flex-direction: column; }
    .ns17-support-actions { width: 100%; min-width: 0; }
    .ns17-section-heading-split { align-items: flex-start; flex-direction: column; }
}

@media (max-width: 680px) {
    html { scroll-padding-top: 76px; }
    .ns17-section { padding: 58px 0; }
    .ns17-hero { padding: 48px 0 68px; }
    .ns17-hero-copy h1 { font-size: clamp(2.3rem, 12vw, 3.55rem); }
    .ns17-hero-copy > p { font-size: 1rem; }
    .ns17-actions { align-items: stretch; flex-direction: column; }
    .ns17-btn { width: 100%; }
    .ns17-hero-proof { display: grid; gap: 10px; }
    .ns17-hero-panel { border-radius: 20px; }
    .ns17-panel-body { padding: 14px; }
    .ns17-next-card { padding: 18px; }
    .ns17-panel-grid { gap: 8px; }
    .ns17-panel-grid > div { min-height: 115px; padding: 14px; }
    .ns17-route-card { grid-template-columns: 46px minmax(0, 1fr) 20px; gap: 12px; padding: 18px; }
    .ns17-route-icon { width: 46px; height: 46px; }
    .ns17-service-grid,
    .ns17-tools-grid,
    .ns17-guides-grid,
    .ns17-process-grid { grid-template-columns: 1fr; }
    .ns17-service-card { padding: 20px; }
    .ns17-guide-featured { grid-column: auto; }
    .ns17-section-heading h2 { font-size: clamp(1.85rem, 9vw, 2.55rem); }
    .ns17-support-card { padding: 30px 22px; border-radius: 22px; }
    body.ns17 .ns-entry-title { font-size: clamp(2rem, 10vw, 3rem); }
    body.ns17 .ns-main { padding-top: 34px; }
    body.ns17 .ns-post-card { border-radius: 14px; }
    body.ns17 .ns-content { font-size: 1rem; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

@media (forced-colors: active) {
    .ns17-btn,
    .ns17-route-card,
    .ns17-service-card,
    .ns17-tool-card,
    .ns17-guide-card { border: 1px solid CanvasText; }
}

/* ======================================================================
   Theme 17.0.2 — navigation, mobile density, contrast and article polish
   ====================================================================== */

/* The public header stays available while reading; do not auto-hide it. */
body.ns17 .ns-hdr,
body.ns17 .ns-hdr.ns17-header-hidden {
    position: sticky;
    top: 0;
    transform: none !important;
}
.admin-bar body.ns17 .ns-hdr { top: 32px; }

/* More robust readable tokens for legacy components used inside Theme 17. */
body.ns17 {
    --tx: var(--ns17-text);
    --fg: var(--ns17-text);
    --fg2: var(--ns17-muted);
    --mt: var(--ns17-muted);
    --bg: var(--ns17-canvas);
    --bg2: var(--ns17-soft);
    --cd: var(--ns17-card);
    --bd: var(--ns17-line);
    --bd2: var(--ns17-line);
    --lk: #08734a;
    --lkh: #07583a;
}
[data-theme="dark"] body.ns17 {
    --ns17-green-900: #dff8e9;
    --ns17-green-800: #9ce8bd;
    --ns17-green-700: #7ce3a8;
    --ns17-green-600: #5bc88a;
    --ns17-green-100: #1b3b2d;
    --ns17-green-50: #172a22;
    --ns17-text: #f3f7f8;
    --ns17-muted: #c0cbd1;
    --ns17-line: #40505a;
    --ns17-soft: #1a252c;
    --ns17-canvas: #10181d;
    --ns17-card: #1a252c;
    --tx: #f3f7f8;
    --fg: #f3f7f8;
    --fg2: #c0cbd1;
    --mt: #c0cbd1;
    --lk: #8ce7b4;
    --lkh: #b6f2cf;
    --ac: #7ce3a8;
    --ac2: #9ce8bd;
    --acl: #20392d;
    --bg: #10181d;
    --bg2: #1a252c;
    --cd: #1a252c;
    --bd: #40505a;
    --bd2: #40505a;
}
[data-theme="dark"] body.ns17 p,
[data-theme="dark"] body.ns17 li,
[data-theme="dark"] body.ns17 .ns-card-meta,
[data-theme="dark"] body.ns17 .ns-entry-meta,
[data-theme="dark"] body.ns17 .ns-ed-meta,
[data-theme="dark"] body.ns17 .ns-bc,
[data-theme="dark"] body.ns17 .ns-bc span,
[data-theme="dark"] body.ns17 .ns-ftr-panel a { color: #c0cbd1; }
[data-theme="dark"] body.ns17 h1,
[data-theme="dark"] body.ns17 h2,
[data-theme="dark"] body.ns17 h3,
[data-theme="dark"] body.ns17 h4,
[data-theme="dark"] body.ns17 strong,
[data-theme="dark"] body.ns17 .ns-card-title a { color: #f3f7f8; }
[data-theme="dark"] body.ns17 .ns17-btn-primary,
[data-theme="dark"] body.ns17 .ns-support-hdr-btn {
    background: #148253 !important;
    border-color: #148253 !important;
    color: #fff !important;
}
[data-theme="dark"] body.ns17 .ns17-btn-primary:hover,
[data-theme="dark"] body.ns17 .ns-support-hdr-btn:hover { background: #0f6d45 !important; color: #fff !important; }
[data-theme="dark"] body.ns17 .ns17-btn-secondary,
[data-theme="dark"] body.ns17 .ns-icon-btn,
[data-theme="dark"] body.ns17 .ns-user-btn,
[data-theme="dark"] body.ns17 .ns-portal-btn { background: #1a252c; color: #f3f7f8; border-color: #52616a; }

/* Article breadcrumbs are rendered once in the global bar below the header. */
body.single-post.ns17 .ns-ed-bc,
body.single-post.ns17 .ns-entry-hdr > .ns-bc { display: none !important; }

/* One TOC system: desktop editorial sidebar only; never duplicate inside body. */
body.ns17 .ns-ed-content > .ns-toc { display: none !important; }
@media (max-width: 1024px) {
    body.ns17 .ns-ed-toc { display: none !important; }
    body.ns17 .ns-ed-body-grid { grid-template-columns: minmax(0, 1fr) !important; }
}

/* Tables stay inside the article and can be scrolled without widening the page. */
body.ns17 .ns-content,
body.ns17 .ns-ed-content,
body.ns17 .entry-content { min-width: 0; max-width: 100%; }
body.ns17 .ns-table-wrap {
    display: block;
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-inline: contain;
    -webkit-overflow-scrolling: touch;
    margin: 1.25rem 0;
    border: 1px solid var(--ns17-line);
    border-radius: 12px;
    background: var(--ns17-card);
}
body.ns17 .ns-table-wrap:focus-visible { outline: 3px solid #2e7bc4; outline-offset: 2px; }
body.ns17 .ns-table-wrap table {
    width: max-content;
    min-width: 100%;
    max-width: none;
    margin: 0 !important;
    border: 0;
}
body.ns17 .ns-table-wrap th,
body.ns17 .ns-table-wrap td { min-width: 120px; white-space: normal; overflow-wrap: anywhere; }
@media (max-width: 640px) {
    body.ns17 .ns-table-wrap::before,
    body.ns17 .ns-table-wrap::after {
        content: "Swipe sideways to view the full table";
        display: block;
        position: sticky;
        left: 0;
        width: fit-content;
        max-width: calc(100vw - 52px);
        padding: 8px 12px;
        color: var(--ns17-muted);
        background: var(--ns17-soft);
        font-size: .76rem;
        font-weight: 700;
        line-height: 1.3;
    }
    body.ns17 .ns-table-wrap::before { border-bottom: 1px solid var(--ns17-line); border-radius: 11px 0 0 0; }
    body.ns17 .ns-table-wrap::after { border-top: 1px solid var(--ns17-line); border-radius: 0 0 0 11px; }
    body.ns17 .ns-table-wrap table { min-width: 620px; }
}

/* Refined plugin-controlled post-service teaser. */
body.ns17 .nsp-hub-inline {
    margin: 30px 0;
    border: 1px solid var(--ns17-line) !important;
    border-radius: 20px !important;
    background: linear-gradient(135deg, var(--ns17-card), var(--ns17-green-50)) !important;
    box-shadow: var(--ns17-shadow-sm) !important;
    overflow: hidden;
}
body.ns17 .nsp-hub-inline-w { padding: 22px 24px !important; gap: 18px !important; }
body.ns17 .nsp-hub-inline-icons { display: grid !important; grid-template-columns: repeat(2, 38px); gap: 7px !important; flex: none; }
body.ns17 .nsp-hub-inline-icons span {
    width: 38px !important;
    height: 38px !important;
    border: 1px solid var(--ns17-line) !important;
    background: var(--ns17-card) !important;
    color: var(--ns17-green-700) !important;
}
body.ns17 .nsp-hub-inline-icons span:nth-child(n+5) { display: none !important; }
body.ns17 .nsp-hub-inline-strong { color: var(--ns17-text) !important; font-family: var(--ns17-display); font-size: 1.18rem !important; }
body.ns17 .nsp-hub-inline-p { color: var(--ns17-muted) !important; max-width: 620px; }
body.ns17 .nsp-hub-inline-cta {
    min-height: 46px;
    padding: 11px 17px !important;
    border-radius: 12px !important;
    background: var(--ns17-green-800) !important;
    color: #fff !important;
    box-shadow: none !important;
}
body.ns17 .nsp-hub-inline-cta:hover { background: var(--ns17-green-700) !important; color: #fff !important; }
@media (max-width: 640px) {
    body.ns17 .nsp-hub-inline-w { padding: 18px !important; align-items: flex-start !important; }
    body.ns17 .nsp-hub-inline-icons { display: none !important; }
    body.ns17 .nsp-hub-inline-cta { width: 100% !important; }
}

/* Compact, stronger footer accordions on mobile. */
@media (max-width: 768px) {
    body.ns17 .ns-ftr-grid { gap: 0 !important; }
    body.ns17 .ns-ftr-col.ns-ftr-accordion { margin: 0 !important; border-top: 1px solid rgba(255,255,255,.18); }
    body.ns17 .ns-ftr-toggle {
        min-height: 54px;
        margin: 0 !important;
        padding: 13px 2px !important;
        display: flex;
        align-items: center;
        justify-content: space-between;
        font-size: 1rem !important;
        font-weight: 800 !important;
        letter-spacing: 0 !important;
        cursor: pointer;
    }
    body.ns17 .ns-ftr-plus {
        display: inline-flex !important;
        align-items: center;
        justify-content: center;
        width: 36px;
        height: 36px;
        margin-left: auto;
        color: #fff !important;
        font-size: 1.8rem !important;
        font-weight: 700 !important;
        line-height: 1;
    }
    body.ns17 .ns-ftr-panel { padding: 0 2px; }
    body.ns17 .ns-ftr-col.ns-ftr-open .ns-ftr-panel { padding-bottom: 12px; }
    body.ns17 .ns-ftr-panel li { margin: 0 !important; }
    body.ns17 .ns-ftr-panel a { display: block; padding: 8px 0; font-size: .92rem; }
}

/* Mobile public header: one calm row — menu, centred identity and search. */
@media (max-width: 768px) {
    .admin-bar body.ns17 .ns-hdr { top: 46px; }
    body.ns17 .ns-hdr-in {
        position: relative;
        min-height: 64px;
        padding-block: 8px;
    }
    body.ns17 .ns-logo {
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
        max-width: 46%;
        justify-content: center;
        z-index: 2;
    }
    body.ns17 .ns-logo img { max-height: 34px !important; }
    body.ns17 .ns-logo span { max-width: 125px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .93rem; }
    body.ns17 .ns-hdr-act { width: 100%; display: flex; align-items: center; gap: 7px; }
    body.ns17 .ns-nav-toggle { display: inline-flex !important; order: -20; margin-right: auto; }
    body.ns17 #ns-search-btn { order: 20; margin-left: auto; }
    body.ns17 #ns-dm-btn,
    body.ns17 .ns-support-hdr-btn,
    body.ns17 .ns-portal-login,
    body.ns17 .ns-user-dd,
    body.ns17 .ns-drawer-btn,
    body.ns17 .nspwa-install-header { display: none !important; }
    body.ns17 .ns-icon-btn,
    body.ns17 .ns-nav-toggle { min-width: 44px; width: 44px; height: 44px; padding: 0; justify-content: center; }
}

/* Mobile homepage: remove decorative copy and preview that consume the first screen. */
@media (max-width: 768px) {
    body.ns17 .ns17-hero { padding: 28px 0 34px; }
    body.ns17 .ns17-hero-grid { display: block; }
    body.ns17 .ns17-hero-copy h1 { margin: 0 0 13px; font-size: clamp(2rem, 10vw, 3rem); line-height: 1.02; }
    body.ns17 .ns17-hero-copy > p { font-size: .98rem; line-height: 1.55; }
    body.ns17 .ns17-actions { margin-top: 18px; display: grid; grid-template-columns: 1fr; gap: 9px; }
    body.ns17 .ns17-btn { width: 100%; min-height: 47px; }
    body.ns17 .ns17-hero-panel,
    body.ns17 .ns17-hero-proof { display: none !important; }
    body.ns17 .ns17-section { padding: 54px 0; }
}

/* Comment invitation must read as a clear action before related content. */
body.ns17 .ns-cmt-open {
    margin: 28px 0;
    min-height: 54px;
    border: 1px solid var(--ns17-line);
    border-radius: 14px;
    background: var(--ns17-card);
    color: var(--ns17-text);
    font-weight: 780;
    box-shadow: var(--ns17-shadow-sm);
}
body.ns17 .ns-cmt-open:hover { border-color: var(--ns17-green-700); background: var(--ns17-green-50); color: var(--ns17-green-800); }

/* ======================================================================
   Theme 17.0.3 — mobile containment and calm mobile navigation
   ====================================================================== */

/* Keep every public surface inside the physical viewport. */
html,
body.ns17 {
    width: 100%;
    max-width: 100%;
}
body.ns17 { overflow-x: clip; }
body.ns17 .ns-hdr,
body.ns17 .ns-main,
body.ns17 .ns-footer,
body.ns17 .ns-w,
body.ns17 article,
body.ns17 .entry-content,
body.ns17 .ns-content,
body.ns17 .ns-ed-content,
body.ns17 .wp-site-blocks,
body.ns17 .wp-block-group__inner-container {
    min-width: 0;
    max-width: 100%;
}
body.ns17 img,
body.ns17 svg,
body.ns17 video,
body.ns17 canvas,
body.ns17 iframe,
body.ns17 embed,
body.ns17 object {
    max-width: 100%;
}
body.ns17 iframe,
body.ns17 video,
body.ns17 embed,
body.ns17 object { width: 100%; }
body.ns17 pre,
body.ns17 .wp-block-code {
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
body.ns17 input,
body.ns17 select,
body.ns17 textarea,
body.ns17 button { max-width: 100%; }
body.ns17 .wp-block-columns,
body.ns17 .wp-block-column,
body.ns17 .wp-block-media-text,
body.ns17 .wp-block-media-text__content,
body.ns17 .wp-block-media-text__media,
body.ns17 .ns-grid,
body.ns17 .ns-post-grid,
body.ns17 .ns-ed-body-grid { min-width: 0; }
body.ns17 .entry-content a,
body.ns17 .ns-content a,
body.ns17 .ns-ed-content a,
body.ns17 .entry-content p,
body.ns17 .ns-content p,
body.ns17 .ns-ed-content p,
body.ns17 .entry-content li,
body.ns17 .ns-content li,
body.ns17 .ns-ed-content li {
    overflow-wrap: anywhere;
    word-break: normal;
}

/* Theme 17 header never auto-hides. */
body.ns17 .ns-hdr,
body.ns17 .ns-hdr.ns17-header-hidden {
    position: sticky;
    top: 0;
    transform: none !important;
}

@media (max-width: 768px) {
    html,
    body.ns17 { overflow-x: clip !important; }

    body.ns17 .ns-w {
        width: 100%;
        max-width: 100%;
        padding-inline: 16px;
    }
    body.ns17 .ns-main,
    body.ns17 .ns-main > .ns-w,
    body.ns17 main,
    body.ns17 article,
    body.ns17 section,
    body.ns17 .entry-content,
    body.ns17 .ns-content,
    body.ns17 .ns-ed-content,
    body.ns17 .ns-post-grid,
    body.ns17 .ns-ed-body-grid {
        width: 100%;
        min-width: 0;
        max-width: 100%;
    }
    body.ns17 .entry-content > *,
    body.ns17 .ns-content > *,
    body.ns17 .ns-ed-content > * {
        max-width: 100%;
    }
    body.ns17 .alignwide,
    body.ns17 .alignfull,
    body.ns17 .wp-block-group.alignwide,
    body.ns17 .wp-block-group.alignfull {
        width: 100% !important;
        max-width: 100% !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
    }
    body.ns17 figure,
    body.ns17 .wp-caption,
    body.ns17 .wp-block-image,
    body.ns17 .wp-block-embed,
    body.ns17 .wp-block-video,
    body.ns17 .wp-block-table {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
    }
    body.ns17 .wp-block-columns { gap: 20px; }
    body.ns17 .wp-block-column { flex-basis: 100% !important; }
    body.ns17 .wp-block-media-text {
        display: block;
    }
    body.ns17 .wp-block-media-text__content { padding: 20px 0 0; }
    body.ns17 .ns-tscroll,
    body.ns17 .ns-table-wrap {
        width: 100%;
        max-width: 100%;
        min-width: 0;
    }

    /* Mobile header: identity and one menu trigger only. */
    .admin-bar body.ns17 .ns-hdr { top: 46px; }
    body.ns17 .ns-hdr .ns-w { padding-inline: 16px; }
    body.ns17 .ns-hdr-in {
        display: grid;
        grid-template-columns: minmax(0, 1fr) 46px;
        align-items: center;
        min-height: 64px;
        gap: 12px;
        padding-block: 8px;
    }
    body.ns17 .ns-logo {
        position: static;
        left: auto;
        top: auto;
        transform: none;
        max-width: 100%;
        min-width: 0;
        justify-content: flex-start;
        overflow: hidden;
        z-index: auto;
    }
    body.ns17 .ns-logo img { max-height: 36px !important; flex: none; }
    body.ns17 .ns-logo span {
        max-width: 100%;
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        font-size: 1rem;
    }
    body.ns17 .ns-tagline { display: none !important; }
    body.ns17 .ns-hdr-act {
        width: 46px;
        min-width: 46px;
        margin: 0;
        display: block;
    }
    body.ns17 .ns-hdr-act > :not(.ns-nav-toggle) { display: none !important; }
    body.ns17 .ns-nav-toggle {
        display: inline-flex !important;
        align-items: center;
        justify-content: center;
        width: 46px;
        min-width: 46px;
        height: 46px;
        min-height: 46px;
        margin: 0;
        padding: 0;
        color: var(--ns17-text);
        background: var(--ns17-card);
        border: 1px solid var(--ns17-line);
        border-radius: 14px;
    }
    body.ns17 .ns-nav-toggle svg { width: 23px; height: 23px; }
}

/* New mobile menu shell. */
.tng-nav__mobile[data-style="platform"] {
    position: fixed;
    inset: 0;
    z-index: 10050;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity .22s ease, visibility .22s ease;
}
.tng-nav__mobile[data-style="platform"]::before {
    content: "";
    position: absolute;
    inset: 0;
    background: rgba(10, 20, 28, .58);
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
}
.tng-nav__mobile[data-style="platform"].is-open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}
.tng-nav__mobile[data-style="platform"] .tng-nav__mobile-panel {
    position: absolute;
    inset: 0 0 0 auto;
    display: flex;
    flex-direction: column;
    width: min(92vw, 410px);
    max-width: 100%;
    height: 100vh;
    height: 100dvh;
    padding: 0;
    overflow: hidden;
    background: #fff;
    color: #14212b;
    box-shadow: -18px 0 60px rgba(8, 18, 25, .2);
    transform: translateX(102%);
    transition: transform .3s cubic-bezier(.22, 1, .36, 1);
}
.tng-nav__mobile[data-style="platform"].is-open .tng-nav__mobile-panel { transform: translateX(0); }
.tng-nav__mobile[data-style="platform"] .tng-nav__mobile-header {
    flex: none;
    min-height: 70px;
    margin: 0;
    padding: max(14px, env(safe-area-inset-top)) 18px 14px;
    border-bottom: 1px solid #e5eaed;
    background: #fff;
}
.tng-nav__mobile[data-style="platform"] .tng-nav__mobile-brand {
    min-width: 0;
    color: #14212b;
    font-size: 1.05rem;
}
.tng-nav__mobile[data-style="platform"] .tng-nav__logo-text {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.tng-nav__mobile[data-style="platform"] .tng-nav__mobile-close {
    width: 44px;
    min-width: 44px;
    height: 44px;
    border: 1px solid #dce3e7;
    background: #f7f9f9;
    color: #14212b;
    border-radius: 14px;
    transform: none;
}
.tng-nav__mobile[data-style="platform"] .tng-nav__mobile-close:hover,
.tng-nav__mobile[data-style="platform"] .tng-nav__mobile-close:focus-visible {
    background: #eef5f1;
    border-color: #9bc8ae;
    color: #07583a;
    transform: none;
}
.tng-nav__mobile[data-style="platform"] .tng-nav__mobile-scroll {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 16px 18px calc(28px + env(safe-area-inset-bottom));
    scrollbar-gutter: stable;
}

.tng-mobile-search { margin-bottom: 14px; }
.tng-mobile-search form {
    display: grid;
    grid-template-columns: 22px minmax(0, 1fr) 42px;
    align-items: center;
    min-height: 52px;
    padding-left: 15px;
    border: 1px solid #dce3e7;
    border-radius: 15px;
    background: #f7f9f9;
    color: #60707c;
}
.tng-mobile-search input {
    width: 100%;
    min-width: 0;
    height: 50px;
    padding: 0 10px;
    border: 0;
    outline: 0;
    background: transparent;
    color: #14212b;
    font: inherit;
    font-size: .92rem;
}
.tng-mobile-search input::placeholder { color: #778691; opacity: 1; }
.tng-mobile-search button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    margin-right: 4px;
    border: 0;
    border-radius: 12px;
    background: #07583a;
    color: #fff;
    cursor: pointer;
}

.tng-mobile-account {
    margin-bottom: 13px;
    border: 1px solid #cfe0d6;
    border-radius: 17px;
    background: linear-gradient(135deg, #f2faf6, #fff);
    overflow: hidden;
}
.tng-mobile-account-out,
.tng-mobile-account-in {
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr) auto;
    align-items: center;
    gap: 11px;
    padding: 14px;
}
.tng-mobile-account-in[hidden],
.tng-mobile-account-out[hidden] { display: none !important; }
.tng-mobile-account-icon,
.tng-mobile-account-avatar {
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    border-radius: 13px;
    background: #dff4e9;
    color: #07583a;
    font-weight: 850;
}
.tng-mobile-account-icon svg { width: 22px; height: 22px; }
.tng-mobile-account-copy { min-width: 0; }
.tng-mobile-account-copy strong,
.tng-mobile-account-copy small { display: block; }
.tng-mobile-account-copy strong {
    overflow: hidden;
    color: #14212b;
    font-size: .9rem;
    line-height: 1.25;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.tng-mobile-account-copy small {
    margin-top: 3px;
    color: #65747f;
    font-size: .7rem;
    line-height: 1.35;
}
.tng-mobile-account-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 40px;
    padding: 0 13px;
    border-radius: 11px;
    background: #07583a;
    color: #fff !important;
    font-size: .78rem;
    font-weight: 800;
    text-decoration: none;
}

.tng-mobile-quick {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 9px;
    margin-bottom: 20px;
}
.tng-mobile-quick a {
    display: grid;
    grid-template-columns: 36px minmax(0, 1fr);
    column-gap: 9px;
    align-items: center;
    min-width: 0;
    padding: 12px;
    border: 1px solid #e0e6e9;
    border-radius: 14px;
    background: #fff;
    color: #14212b;
    text-decoration: none;
}
.tng-mobile-quick a > span {
    grid-row: 1 / span 2;
    display: grid;
    place-items: center;
    width: 36px;
    height: 36px;
    border-radius: 11px;
    background: #eef6f1;
    color: #07583a;
}
.tng-mobile-quick svg { width: 19px; height: 19px; }
.tng-mobile-quick strong,
.tng-mobile-quick small {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.tng-mobile-quick strong { align-self: end; font-size: .76rem; line-height: 1.25; }
.tng-mobile-quick small { align-self: start; color: #73818b; font-size: .63rem; line-height: 1.25; }

.tng-mobile-section-title {
    margin: 16px 3px 8px;
    color: #71808a;
    font-size: .68rem;
    font-weight: 850;
    letter-spacing: .11em;
    text-transform: uppercase;
}
.tng-nav__mobile[data-style="platform"] .tng-nav__mobile-group {
    gap: 3px;
    margin: 0;
}
.tng-nav__mobile[data-style="platform"] .tng-mob-link,
.tng-nav__mobile[data-style="platform"] .tng-mob-accordion__trigger {
    min-height: 52px;
    gap: 12px;
    padding: 8px 10px;
    border: 0;
    border-radius: 12px;
    background: transparent;
}
.tng-nav__mobile[data-style="platform"] .tng-mob-link:hover,
.tng-nav__mobile[data-style="platform"] .tng-mob-link:active,
.tng-nav__mobile[data-style="platform"] .tng-mob-accordion__trigger:hover,
.tng-nav__mobile[data-style="platform"] .tng-mob-accordion.is-open .tng-mob-accordion__trigger {
    background: #eef6f1;
}
.tng-nav__mobile[data-style="platform"] .tng-mob-link__icon {
    width: 38px;
    height: 38px;
    border-radius: 11px;
    background: #f1f4f5 !important;
    color: #42535f !important;
}
.tng-nav__mobile[data-style="platform"] .tng-mob-link__label,
.tng-nav__mobile[data-style="platform"] .tng-mob-accordion__label {
    color: #1b2933;
    font-size: .9rem;
    font-weight: 750;
}
.tng-nav__mobile[data-style="platform"] .tng-mob-link__desc { display: none; }
.tng-nav__mobile[data-style="platform"] .tng-mob-link__arrow,
.tng-nav__mobile[data-style="platform"] .tng-mob-accordion__chev { color: #8c99a2; }
.tng-nav__mobile[data-style="platform"] .tng-mob-accordion__count { display: none; }
.tng-nav__mobile[data-style="platform"] .tng-mob-accordion__body { padding-inline: 10px; }
.tng-nav__mobile[data-style="platform"] .tng-mob-accordion.is-open .tng-mob-accordion__body { padding: 5px 10px 8px 50px; }
.tng-nav__mobile[data-style="platform"] .tng-mob-sub {
    min-height: 42px;
    padding: 9px 11px;
    border: 0;
    border-left: 2px solid #d5e3db;
    border-radius: 0 9px 9px 0;
    background: #f7f9f9;
    color: #40515d;
    font-size: .8rem;
}
.tng-mobile-theme-row { width: 100%; }
.tng-mobile-theme-state {
    position: relative;
    width: 44px;
    height: 24px;
    flex: none;
    border-radius: 999px;
    background: #cbd5da;
    transition: background .2s ease;
}
.tng-mobile-theme-state::after {
    content: "";
    position: absolute;
    left: 3px;
    top: 3px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 1px 4px rgba(0,0,0,.2);
    transition: transform .2s ease;
}
html[data-theme="dark"] .tng-mobile-theme-state { background: #178253; }
html[data-theme="dark"] .tng-mobile-theme-state::after { transform: translateX(20px); }

.tng-nav__mobile[data-style="platform"] .tng-nav__mobile-footer {
    flex: none;
    margin: 0;
    padding: 12px 18px calc(12px + env(safe-area-inset-bottom));
    border-top: 1px solid #e5eaed;
    background: #fff;
}
.tng-nav__mobile[data-style="platform"] .tng-nav__mobile-cta {
    min-height: 48px;
    padding: 12px 16px;
    border-radius: 13px;
    background: #07583a;
    box-shadow: none;
}

/* Dark mode for the new mobile menu: neutral surfaces, high contrast. */
[data-theme="dark"] .tng-nav__mobile[data-style="platform"] .tng-nav__mobile-panel,
[data-theme="dark"] .tng-nav__mobile[data-style="platform"] .tng-nav__mobile-header,
[data-theme="dark"] .tng-nav__mobile[data-style="platform"] .tng-nav__mobile-footer {
    background: #111a20;
    color: #edf3f5;
    border-color: #2a3942;
}
[data-theme="dark"] .tng-nav__mobile[data-style="platform"] .tng-nav__mobile-brand,
[data-theme="dark"] .tng-nav__mobile[data-style="platform"] .tng-mob-link__label,
[data-theme="dark"] .tng-nav__mobile[data-style="platform"] .tng-mob-accordion__label,
[data-theme="dark"] .tng-mobile-account-copy strong,
[data-theme="dark"] .tng-mobile-quick a { color: #edf3f5; }
[data-theme="dark"] .tng-nav__mobile[data-style="platform"] .tng-nav__mobile-close,
[data-theme="dark"] .tng-mobile-search form,
[data-theme="dark"] .tng-mobile-quick a {
    background: #17242b;
    border-color: #34464f;
}
[data-theme="dark"] .tng-mobile-search input { color: #edf3f5; }
[data-theme="dark"] .tng-mobile-search input::placeholder,
[data-theme="dark"] .tng-mobile-account-copy small,
[data-theme="dark"] .tng-mobile-quick small,
[data-theme="dark"] .tng-mobile-section-title { color: #aab7be; }
[data-theme="dark"] .tng-mobile-account {
    border-color: #315043;
    background: linear-gradient(135deg, #162a22, #131f25);
}
[data-theme="dark"] .tng-nav__mobile[data-style="platform"] .tng-mob-link:hover,
[data-theme="dark"] .tng-nav__mobile[data-style="platform"] .tng-mob-link:active,
[data-theme="dark"] .tng-nav__mobile[data-style="platform"] .tng-mob-accordion__trigger:hover,
[data-theme="dark"] .tng-nav__mobile[data-style="platform"] .tng-mob-accordion.is-open .tng-mob-accordion__trigger {
    background: #1b3028;
}
[data-theme="dark"] .tng-nav__mobile[data-style="platform"] .tng-mob-link__icon { background: #213039 !important; color: #dce6ea !important; }
[data-theme="dark"] .tng-nav__mobile[data-style="platform"] .tng-mob-sub { background: #17242b; border-left-color: #3d594c; color: #c8d3d8; }

@media (max-width: 380px) {
    .tng-mobile-quick { grid-template-columns: 1fr; }
    .tng-mobile-account-out,
    .tng-mobile-account-in { grid-template-columns: 42px minmax(0, 1fr); }
    .tng-mobile-account-cta { grid-column: 1 / -1; width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
    .tng-nav__mobile[data-style="platform"],
    .tng-nav__mobile[data-style="platform"] .tng-nav__mobile-panel,
    .tng-mobile-theme-state,
    .tng-mobile-theme-state::after { transition: none !important; }
}

@media (max-width: 768px) {
    body.ns17 .ns17-mobile-contained {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
        transform: none !important;
    }
    body.admin-bar.ns17 .ns-hdr { top: 46px; }
}
@media (min-width: 769px) {
    body.admin-bar.ns17 .ns-hdr { top: 32px; }
}


/* ======================================================================
   Theme 17.0.4 — LiteSpeed-safe mobile search, TOC, hero and contrast fixes
   Tested against the site's LiteSpeed profile: CSS/JS minification on,
   JS defer on, combining/UCSS/async CSS off, separate mobile cache on.
   ====================================================================== */

/* Thin, consistent link underline. Component links that intentionally remove
   decoration retain their more specific rules. */
body.ns17 a {
    text-decoration-thickness: 1px;
    text-decoration-skip-ink: auto;
    text-underline-offset: 3px;
}

/* Logged-in account identity must remain visible on the white public header. */
body.ns17 .ns-user-btn .ns-user-name,
body.ns17 .ns-user-btn .ns-user-chev { color: var(--ns17-text) !important; }
body.ns17 .ns-user-btn .ns-user-chev { opacity: .72; }
body.ns17 .ns-user-btn .ns-user-av {
    background: var(--ns17-green-100);
    color: var(--ns17-green-800);
}
[data-theme="dark"] body.ns17 .ns-user-btn .ns-user-name,
[data-theme="dark"] body.ns17 .ns-user-btn .ns-user-chev { color: #f5f8f9 !important; }
[data-theme="dark"] body.ns17 .ns-user-btn .ns-user-av {
    background: #244237;
    color: #b6f2cf;
}

/* High-contrast dark system. Keep bright green for text/icons and a darker,
   contrast-safe green for filled controls. */
[data-theme="dark"] body.ns17 {
    --ns17-text: #f4f7f8;
    --ns17-muted: #c4ced3;
    --ns17-line: #4a5a64;
    --ns17-card: #18242b;
    --ns17-soft: #202d34;
    --ns17-canvas: #0f171c;
    --lk: #9ce3b9;
    --lkh: #c2f4d6;
    --ac: #9ce3b9;
    --ac2: #c2f4d6;
}
[data-theme="dark"] body.ns17 a:not(.ns17-btn):not(.ns-support-hdr-btn):not(.ns-portal-btn):not(.tng-mobile-account-cta):not(.tng-nav__mobile-cta) {
    color: #9ce3b9;
}
[data-theme="dark"] body.ns17 a:not(.ns17-btn):not(.ns-support-hdr-btn):not(.ns-portal-btn):hover,
[data-theme="dark"] body.ns17 a:not(.ns17-btn):not(.ns-support-hdr-btn):not(.ns-portal-btn):focus-visible {
    color: #c2f4d6;
}
[data-theme="dark"] body.ns17 .ns17-btn-primary,
[data-theme="dark"] body.ns17 .ns-support-hdr-btn,
[data-theme="dark"] body.ns17 button.ns-svc-cta,
[data-theme="dark"] body.ns17 a.ns-svc-cta {
    background: #0b6b45 !important;
    border-color: #0b6b45 !important;
    color: #fff !important;
}
[data-theme="dark"] body.ns17 .ns17-btn-primary:hover,
[data-theme="dark"] body.ns17 .ns-support-hdr-btn:hover,
[data-theme="dark"] body.ns17 button.ns-svc-cta:hover,
[data-theme="dark"] body.ns17 a.ns-svc-cta:hover {
    background: #07583a !important;
    border-color: #07583a !important;
    color: #fff !important;
}
[data-theme="dark"] body.ns17 .ns-tag,
[data-theme="dark"] body.ns17 .ns-card-cat,
[data-theme="dark"] body.ns17 [class*="badge"],
[data-theme="dark"] body.ns17 [class*="pill"] {
    border-color: #50616a;
}
[data-theme="dark"] body.ns17 input,
[data-theme="dark"] body.ns17 select,
[data-theme="dark"] body.ns17 textarea {
    background: #131e24;
    border-color: #52636d;
    color: #f4f7f8;
}
[data-theme="dark"] body.ns17 input::placeholder,
[data-theme="dark"] body.ns17 textarea::placeholder { color: #aebbc1; opacity: 1; }

/* Academic Calendar: the plugin keeps its own operational markup, while the
   theme guarantees readable public surfaces in both colour modes. */
body.ns17 .nsp-acal-wrap { color: #17222c !important; }
body.ns17 .nsp-acal-h1 { color: #10271c !important; }
body.ns17 .nsp-acal-intro,
body.ns17 .nsp-acal-foot,
body.ns17 .nsp-acal-foot p,
body.ns17 .nsp-acal-ical p { color: #46554d !important; }
body.ns17 .nsp-acal-updated,
body.ns17 .nsp-acal-month,
body.ns17 .nsp-acal-ical h2 { color: #07583a !important; }
body.ns17 .nsp-acal-table-wrap,
body.ns17 .nsp-acal-table tbody td { background: #fff !important; }
body.ns17 .nsp-acal-table tbody td { color: #1d2c24 !important; border-top-color: #dce4df !important; }
body.ns17 .nsp-acal-table tbody tr:nth-child(even),
body.ns17 .nsp-acal-table tbody tr:nth-child(even) td { background: #f4f8f5 !important; }
body.ns17 .nsp-acal-table thead th { background: #07583a !important; color: #fff !important; }
body.ns17 .nsp-acal-btn { background: #07583a !important; color: #fff !important; }
body.ns17 .nsp-acal-btn-ghost { background: #fff !important; color: #07583a !important; border-color: #9dc8b1 !important; }
body.ns17 .nsp-acal-ical { background: #eef8f2 !important; border-color: #c8ded1 !important; }
[data-theme="dark"] body.ns17 .nsp-acal-wrap { color: #f1f6f3 !important; }
[data-theme="dark"] body.ns17 .nsp-acal-h1,
[data-theme="dark"] body.ns17 .nsp-acal-ical h2 { color: #f3f8f5 !important; }
[data-theme="dark"] body.ns17 .nsp-acal-intro,
[data-theme="dark"] body.ns17 .nsp-acal-foot,
[data-theme="dark"] body.ns17 .nsp-acal-foot p,
[data-theme="dark"] body.ns17 .nsp-acal-ical p { color: #c5d0ca !important; }
[data-theme="dark"] body.ns17 .nsp-acal-updated,
[data-theme="dark"] body.ns17 .nsp-acal-month { color: #9ce3b9 !important; }
[data-theme="dark"] body.ns17 .nsp-acal-table-wrap,
[data-theme="dark"] body.ns17 .nsp-acal-table tbody td { background: #141f1a !important; border-color: #405049 !important; }
[data-theme="dark"] body.ns17 .nsp-acal-table tbody td { color: #edf3ef !important; }
[data-theme="dark"] body.ns17 .nsp-acal-table tbody tr:nth-child(even),
[data-theme="dark"] body.ns17 .nsp-acal-table tbody tr:nth-child(even) td { background: #1b2922 !important; }
[data-theme="dark"] body.ns17 .nsp-acal-table thead th { background: #0a5c3b !important; color: #fff !important; }
[data-theme="dark"] body.ns17 .nsp-acal-btn { background: #0b6b45 !important; color: #fff !important; }
[data-theme="dark"] body.ns17 .nsp-acal-btn-ghost { background: #18251f !important; color: #b6f2cf !important; border-color: #527060 !important; }
[data-theme="dark"] body.ns17 .nsp-acal-ical { background: #182820 !important; border-color: #456052 !important; }

/* Desktop/tablet keep the editorial "In this article" navigation. The
   generated collapsible Table of Contents is restored only on phones. */
body.ns17 .ns-ed-content > .ns-toc { display: none !important; }
@media (min-width: 769px) and (max-width: 1024px) {
    body.ns17 .ns-ed-toc {
        display: block !important;
        position: static;
        order: -1;
        max-height: none;
    }
}

/* The platform mobile menu keeps account, dark mode and navigation. Search is
   intentionally absent there because it is restored to the header. */
.tng-nav__mobile[data-style="platform"] .tng-mobile-search { display: none !important; }
[data-theme="dark"] .tng-nav__mobile[data-style="platform"] .tng-nav__mobile-close {
    background: #1d2a31 !important;
    border-color: #52636d !important;
    color: #f7fafb !important;
}
[data-theme="dark"] .tng-nav__mobile[data-style="platform"] .tng-nav__mobile-close svg {
    stroke: currentColor !important;
}

@media (max-width: 768px) {
    /* Mobile header: identity + search + menu. Login/account and dark mode stay
       in the drawer, as requested. */
    body.ns17 .ns-hdr-in {
        grid-template-columns: minmax(0, 1fr) 46px 46px;
        gap: 8px;
    }
    body.ns17 .ns-hdr-act {
        display: flex;
        align-items: center;
        justify-content: flex-end;
        gap: 8px;
        width: auto;
        min-width: 100px;
    }
    body.ns17 .ns-hdr-act > * { display: none !important; }
    body.ns17 .ns-hdr-act > #ns-search-btn,
    body.ns17 .ns-hdr-act > .ns-nav-toggle {
        display: inline-flex !important;
        align-items: center;
        justify-content: center;
        width: 46px;
        min-width: 46px;
        height: 46px;
        min-height: 46px;
        margin: 0;
        padding: 0;
        border-radius: 14px;
    }
    body.ns17 #ns-search-btn svg { width: 22px; height: 22px; }

    /* Mobile editorial TOC lives inside the article and is collapsed by
       default. The desktop "In this article" sidebar is not duplicated. */
    body.ns17 .ns-ed-toc { display: none !important; }
    body.ns17 .ns-ed-content > .ns-toc {
        display: block !important;
        margin: 0 0 22px;
        padding: 14px 16px;
        border: 1px solid var(--ns17-line);
        border-radius: 14px;
        background: var(--ns17-card);
        box-shadow: var(--ns17-shadow-sm);
    }
    body.ns17 .ns-toc-hd {
        min-height: 44px;
        color: var(--ns17-text);
        font-size: .95rem;
    }
    body.ns17 .ns-toc-list { padding-left: 1.25rem; font-size: .9rem; }
    body.ns17 .ns-toc-list a { color: var(--ns17-navy-800); }
    [data-theme="dark"] body.ns17 .ns-toc-list a { color: #dce5e9; }

    /* First mobile viewport: content remains comfortable, and both CTAs rest
       at the bottom edge before the visitor starts scrolling. The CSS custom
       property is updated from actual announcement/header heights by JS. */
    body.ns17 .ns17-hero {
        display: flex;
        min-height: calc(100svh - var(--ns17-mobile-chrome, 104px));
        padding: 24px 0 18px;
    }
    body.ns17 .ns17-hero > .ns-w { display: flex; width: 100%; }
    body.ns17 .ns17-hero-grid { display: flex; flex: 1; min-height: 0; }
    body.ns17 .ns17-hero-copy {
        display: flex;
        flex: 1;
        flex-direction: column;
        min-width: 0;
        min-height: calc(100svh - var(--ns17-mobile-chrome, 104px) - 42px);
    }
    body.ns17 .ns17-hero-copy h1 {
        margin: 4px 0 14px;
        font-size: clamp(2.15rem, 10.5vw, 3rem);
        line-height: 1.025;
    }
    body.ns17 .ns17-hero-copy > p {
        max-width: 34rem;
        font-size: .98rem;
        line-height: 1.55;
    }
    body.ns17 .ns17-actions {
        margin-top: auto;
        padding-top: 22px;
        gap: 10px;
    }
    body.ns17 .ns17-actions .ns17-btn { min-height: 50px; }
    body.ns17 .ns17-hero-panel,
    body.ns17 .ns17-hero-proof { display: none !important; }

    /* Calendar remains within the phone viewport while its table scrolls. */
    body.ns17 .nsp-acal-wrap { width: 100%; max-width: 100%; padding-inline: 0; }
    body.ns17 .nsp-acal-scroll,
    body.ns17 .nsp-acal-table-wrap { width: 100%; max-width: 100%; min-width: 0; }
    body.ns17 .nsp-acal-actions,
    body.ns17 .nsp-acal-ical-btns { align-items: stretch; }
    body.ns17 .nsp-acal-btn { justify-content: center; min-height: 44px; }
}

@media (max-width: 370px) {
    body.ns17 .ns-logo span { font-size: .9rem; }
    body.ns17 .ns-hdr-in { grid-template-columns: minmax(0, 1fr) 44px 44px; gap: 6px; }
    body.ns17 .ns-hdr-act { min-width: 94px; gap: 6px; }
    body.ns17 .ns-hdr-act > #ns-search-btn,
    body.ns17 .ns-hdr-act > .ns-nav-toggle { width: 44px; min-width: 44px; height: 44px; min-height: 44px; }
    body.ns17 .ns17-hero-copy h1 { font-size: clamp(2rem, 10vw, 2.55rem); }
}

@media (max-width: 768px) {
    body.ns17 .ns-hdr-act { grid-column: 2 / 4; }
}

/* ======================================================================
   Theme 17.0.5 — full contrast system and balanced mobile hero
   This layer intentionally comes last so LiteSpeed minification preserves
   the audited palette over legacy component rules.
   ====================================================================== */

/* Audited light palette. All normal text/accent combinations used below
   meet or exceed WCAG 2.2 AA (4.5:1); large-text combinations exceed 3:1. */
body.ns17 {
    --ns17-green-900: #063d2a;
    --ns17-green-800: #07583a;
    --ns17-green-700: #08734a;
    --ns17-green-600: #0a7650;
    --ns17-green-100: #dff4e9;
    --ns17-green-50: #eff8f3;
    --ns17-navy-950: #111c25;
    --ns17-navy-800: #263847;
    --ns17-text: #17222c;
    --ns17-muted: #4d5b65;
    --ns17-line: #c9d3d8;
    --ns17-soft: #f2f5f6;
    --ns17-canvas: #fafcfc;
    --ns17-card: #ffffff;

    /* Bring legacy theme components into the same audited system. */
    --bg: #ffffff;
    --bg2: #f2f5f6;
    --fg: #17222c;
    --fg2: #3f4e59;
    --mt: #4d5b65;
    --ac: #07583a;
    --ac2: #063d2a;
    --acl: #dff4e9;
    --lk: #07583a;
    --lkh: #063d2a;
    --bd: #b9c6cc;
    --bd2: #d4dde1;
    --cd: #ffffff;
    --hd: #063d2a;
    --hf: #ffffff;
    --co: #f2f5f6;
}

/* The requested sub-pixel underline remains deliberately subtle. Focus
   indication stays a full 3px outline and is never dependent on underline. */
body.ns17 a {
    text-decoration-thickness: .3px !important;
    text-decoration-skip-ink: auto;
    text-underline-offset: 3px;
}

/* Global readable hierarchy. These rules cover legacy templates and plugin
   blocks that previously inherited low-contrast greens or muted greys. */
body.ns17,
body.ns17 .ns-main,
body.ns17 .entry-content,
body.ns17 .ns-content,
body.ns17 .ns-ed-content,
body.ns17 .ns-page-card,
body.ns17 .ns-post-card,
body.ns17 .ns-widget,
body.ns17 .ns-sidebar {
    color: var(--ns17-text);
}
body.ns17 h1,
body.ns17 h2,
body.ns17 h3,
body.ns17 h4,
body.ns17 h5,
body.ns17 h6,
body.ns17 .ns-entry-title,
body.ns17 .ns-card-title,
body.ns17 .ns-widget-title,
body.ns17 .wp-block-heading {
    color: var(--ns17-text);
}
body.ns17 p,
body.ns17 .ns17-section-heading p,
body.ns17 .ns17-service-card > p,
body.ns17 .ns17-tools-copy p,
body.ns17 .ns17-guide-body p,
body.ns17 .ns-card-excerpt,
body.ns17 .ns-entry-meta,
body.ns17 .ns-card-meta,
body.ns17 .ns-ed-meta,
body.ns17 .ns-bc,
body.ns17 small {
    color: var(--ns17-muted);
}

/* Accent text is always the dark brand green on light surfaces. */
body.ns17 .ns17-kicker,
body.ns17 .ns17-mini-label,
body.ns17 .ns17-service-eyebrow,
body.ns17 .ns17-guide-cat,
body.ns17 .ns17-text-link,
body.ns17 .ns17-service-footer a,
body.ns17 .ns-content a,
body.ns17 .entry-content a,
body.ns17 .ns-card-title a:hover,
body.ns17 .ns17-guide-card h3 a:hover,
body.ns17 .ns17-service-card h3 a:hover {
    color: var(--ns17-green-800);
}
body.ns17 .ns17-text-link:hover,
body.ns17 .ns17-service-footer a:hover,
body.ns17 .ns-content a:hover,
body.ns17 .entry-content a:hover {
    color: var(--ns17-green-900);
}

/* Cards, soft surfaces and borders. */
body.ns17 .ns17-route-card,
body.ns17 .ns17-service-card,
body.ns17 .ns17-tool-card,
body.ns17 .ns17-guide-card,
body.ns17 .ns17-next-card,
body.ns17 .ns17-panel-grid > div,
body.ns17 .ns-post-card,
body.ns17 .ns-page-card,
body.ns17 .ns-card,
body.ns17 .ns-compact-card,
body.ns17 .ns-widget,
body.ns17 .ns-sidebar,
body.ns17 .wp-block-group,
body.ns17 .wp-block-table,
body.ns17 .wp-block-quote,
body.ns17 .comment-body {
    border-color: var(--ns17-line);
}
body.ns17 .ns17-route-icon,
body.ns17 .ns17-service-icon,
body.ns17 .ns17-panel-icon,
body.ns17 .ns17-process-grid li > span,
body.ns17 .ns-tag,
body.ns17 .ns-card-cat,
body.ns17 [class*="badge"],
body.ns17 [class*="pill"] {
    color: var(--ns17-green-800);
}
body.ns17 .ns17-route-icon,
body.ns17 .ns17-service-icon,
body.ns17 .ns17-panel-icon,
body.ns17 .ns-tag,
body.ns17 .ns-card-cat,
body.ns17 [class*="badge"],
body.ns17 [class*="pill"] {
    background-color: var(--ns17-green-100);
}

/* Filled controls use a darker green, because the previous brighter green
   failed normal-text contrast against white in several states. */
body.ns17 .ns17-btn-primary,
body.ns17 .ns-support-hdr-btn,
body.ns17 .nsp-hub-inline-cta,
body.ns17 .ns-svc-cta,
body.ns17 .ns-load-more-btn,
body.ns17 .wp-element-button,
body.ns17 input[type="submit"],
body.ns17 button[type="submit"] {
    background: var(--ns17-green-800) !important;
    border-color: var(--ns17-green-800) !important;
    color: #ffffff !important;
}
body.ns17 .ns17-btn-primary:hover,
body.ns17 .ns-support-hdr-btn:hover,
body.ns17 .nsp-hub-inline-cta:hover,
body.ns17 .ns-svc-cta:hover,
body.ns17 .ns-load-more-btn:hover,
body.ns17 .wp-element-button:hover,
body.ns17 input[type="submit"]:hover,
body.ns17 button[type="submit"]:hover {
    background: var(--ns17-green-900) !important;
    border-color: var(--ns17-green-900) !important;
    color: #ffffff !important;
}
body.ns17 .ns17-btn-secondary,
body.ns17 .ns-icon-btn,
body.ns17 .ns-nav-toggle,
body.ns17 .ns-user-btn,
body.ns17 .ns-portal-btn,
body.ns17 .ns-cmt-open {
    background: var(--ns17-card);
    border-color: #9aaab2;
    color: var(--ns17-text);
}
body.ns17 .ns17-btn-secondary:hover,
body.ns17 .ns-icon-btn:hover,
body.ns17 .ns-nav-toggle:hover,
body.ns17 .ns-user-btn:hover,
body.ns17 .ns-portal-btn:hover,
body.ns17 .ns-cmt-open:hover {
    background: var(--ns17-green-50);
    border-color: var(--ns17-green-700);
    color: var(--ns17-green-900);
}

/* Header and navigation contrast. */
body.ns17 .ns-nav-ul > li > a,
body.ns17 .sub-menu a,
body.ns17 .ns-logo,
body.ns17 .ns-user-btn .ns-user-name,
body.ns17 .ns-user-btn .ns-user-chev {
    color: var(--ns17-text) !important;
}
body.ns17 .ns-nav-ul > li > a:hover,
body.ns17 .ns-nav-ul > li.current-menu-item > a,
body.ns17 .ns-nav-ul > li.current-menu-ancestor > a,
body.ns17 .sub-menu a:hover {
    background: var(--ns17-green-50);
    color: var(--ns17-green-900) !important;
}

/* Homepage-specific contrast. */
body.ns17 .ns17-hero-copy h1,
body.ns17 .ns17-section-heading h2,
body.ns17 .ns17-tools-copy h2,
body.ns17 .ns17-service-card h3,
body.ns17 .ns17-guide-card h3,
body.ns17 .ns17-route-card strong,
body.ns17 .ns17-tool-card strong,
body.ns17 .ns17-service-footer strong {
    color: var(--ns17-text);
}
body.ns17 .ns17-route-card small,
body.ns17 .ns17-tool-card small,
body.ns17 .ns17-panel-grid small,
body.ns17 .ns17-guide-meta,
body.ns17 .ns17-hero-copy > p {
    color: var(--ns17-muted);
}
body.ns17 .ns17-process-grid li { background: #eef3f4; }
body.ns17 .ns17-process-grid li > span {
    background: var(--ns17-green-800);
    color: #ffffff;
}
body.ns17 .ns17-support-card {
    background: linear-gradient(125deg, #063d2a 0%, #07583a 68%, #0b6b45 100%);
}
body.ns17 .ns17-support-card h2,
body.ns17 .ns17-support-card .ns17-kicker-light { color: #ffffff; }
body.ns17 .ns17-support-card p { color: #edf8f2; }
body.ns17 .ns17-support-link { color: #e5f8ed; }
body.ns17 .ns17-support-link:hover { color: #ffffff; }

/* Archive/category hero uses a fully contrast-safe range. */
body.ns17 .ns-cat-hero {
    background: linear-gradient(135deg, #063d2a, #07583a) !important;
}
body.ns17 .ns-cat-hero h1,
body.ns17 .ns-cat-pill,
body.ns17 .ns-cat-tab { color: #ffffff !important; }
body.ns17 .ns-cat-desc { color: #edf8f2 !important; }
body.ns17 .ns-cat-pill,
body.ns17 .ns-cat-tab {
    border-color: rgba(255,255,255,.54);
    background: rgba(0,0,0,.16);
}

/* Form and table readability. */
body.ns17 input,
body.ns17 select,
body.ns17 textarea {
    background: #ffffff;
    border-color: #9aaab2;
    color: var(--ns17-text);
}
body.ns17 input::placeholder,
body.ns17 textarea::placeholder { color: #5d6b75; opacity: 1; }
body.ns17 table th {
    background: #e6f2eb;
    color: #12271d;
}
body.ns17 table td { color: var(--ns17-text); }
body.ns17 blockquote,
body.ns17 .wp-block-quote {
    background: var(--ns17-green-50);
    color: var(--ns17-text);
    border-color: var(--ns17-green-700);
}
body.ns17 blockquote p,
body.ns17 .wp-block-quote p { color: var(--ns17-text); }

/* Public plugin surfaces inherit readable text instead of their older pale
   green values. Operational forms and checkout remain owned by the plugin. */
body.ns17 .nsp-public-shell,
body.ns17 .nsp-public-experience,
body.ns17 .nsp-services-hub,
body.ns17 .nsp-public-page,
body.ns17 .nsp-public-card,
body.ns17 .nsp-public-service-card,
body.ns17 .nsp-hub-card {
    color: var(--ns17-text);
}
body.ns17 .nsp-public-shell h1,
body.ns17 .nsp-public-shell h2,
body.ns17 .nsp-public-shell h3,
body.ns17 .nsp-public-experience h1,
body.ns17 .nsp-public-experience h2,
body.ns17 .nsp-public-experience h3,
body.ns17 .nsp-services-hub h1,
body.ns17 .nsp-services-hub h2,
body.ns17 .nsp-services-hub h3,
body.ns17 .nsp-public-page h1,
body.ns17 .nsp-public-page h2,
body.ns17 .nsp-public-page h3 {
    color: var(--ns17-text) !important;
}
body.ns17 .nsp-public-shell p,
body.ns17 .nsp-public-shell li,
body.ns17 .nsp-public-experience p,
body.ns17 .nsp-public-experience li,
body.ns17 .nsp-services-hub p,
body.ns17 .nsp-services-hub li,
body.ns17 .nsp-public-page p,
body.ns17 .nsp-public-page li {
    color: var(--ns17-muted) !important;
}

/* Dark palette. Green is used as bright text on dark surfaces and a separate
   darker green is used for filled controls. */
[data-theme="dark"] body.ns17 {
    --ns17-green-900: #d6f8e5;
    --ns17-green-800: #b6f2cf;
    --ns17-green-700: #9ce3b9;
    --ns17-green-600: #86d9aa;
    --ns17-green-100: #213b30;
    --ns17-green-50: #1b3128;
    --ns17-navy-950: #f5f8f9;
    --ns17-navy-800: #d7e0e4;
    --ns17-text: #f5f8f9;
    --ns17-muted: #c3cdd2;
    --ns17-line: #52636d;
    --ns17-soft: #202d34;
    --ns17-canvas: #0d151a;
    --ns17-card: #172229;

    --bg: #0d151a;
    --bg2: #202d34;
    --fg: #f5f8f9;
    --fg2: #d7e0e4;
    --mt: #c3cdd2;
    --ac: #9ce3b9;
    --ac2: #b6f2cf;
    --acl: #213b30;
    --lk: #9ce3b9;
    --lkh: #d6f8e5;
    --bd: #52636d;
    --bd2: #3f505a;
    --cd: #172229;
    --hd: #0d151a;
    --hf: #f5f8f9;
    --co: #202d34;
}
[data-theme="dark"] body.ns17 .ns-hdr,
[data-theme="dark"] body.ns17 .sub-menu {
    background: rgba(13, 21, 26, .97);
    border-color: var(--ns17-line);
}
[data-theme="dark"] body.ns17 .ns17-route-card,
[data-theme="dark"] body.ns17 .ns17-service-card,
[data-theme="dark"] body.ns17 .ns17-tool-card,
[data-theme="dark"] body.ns17 .ns17-guide-card,
[data-theme="dark"] body.ns17 .ns17-next-card,
[data-theme="dark"] body.ns17 .ns17-panel-grid > div,
[data-theme="dark"] body.ns17 .ns-post-card,
[data-theme="dark"] body.ns17 .ns-page-card,
[data-theme="dark"] body.ns17 .ns-card,
[data-theme="dark"] body.ns17 .ns-compact-card,
[data-theme="dark"] body.ns17 .ns-widget,
[data-theme="dark"] body.ns17 .ns-sidebar,
[data-theme="dark"] body.ns17 .wp-block-group,
[data-theme="dark"] body.ns17 .comment-body {
    background: var(--ns17-card);
    color: var(--ns17-text);
    border-color: var(--ns17-line);
}
[data-theme="dark"] body.ns17 p,
[data-theme="dark"] body.ns17 li,
[data-theme="dark"] body.ns17 small,
[data-theme="dark"] body.ns17 .ns-entry-meta,
[data-theme="dark"] body.ns17 .ns-card-meta,
[data-theme="dark"] body.ns17 .ns-ed-meta,
[data-theme="dark"] body.ns17 .ns-bc,
[data-theme="dark"] body.ns17 .ns17-route-card small,
[data-theme="dark"] body.ns17 .ns17-tool-card small,
[data-theme="dark"] body.ns17 .ns17-panel-grid small,
[data-theme="dark"] body.ns17 .ns17-guide-meta {
    color: var(--ns17-muted);
}
[data-theme="dark"] body.ns17 h1,
[data-theme="dark"] body.ns17 h2,
[data-theme="dark"] body.ns17 h3,
[data-theme="dark"] body.ns17 h4,
[data-theme="dark"] body.ns17 h5,
[data-theme="dark"] body.ns17 h6,
[data-theme="dark"] body.ns17 strong,
[data-theme="dark"] body.ns17 .ns-entry-title,
[data-theme="dark"] body.ns17 .ns-card-title,
[data-theme="dark"] body.ns17 .wp-block-heading {
    color: var(--ns17-text);
}
[data-theme="dark"] body.ns17 a:not(.ns17-btn):not(.ns-support-hdr-btn):not(.ns-portal-btn):not(.nsp-hub-inline-cta):not(.ns-svc-cta):not(.wp-element-button) {
    color: var(--ns17-green-700);
}
[data-theme="dark"] body.ns17 a:not(.ns17-btn):not(.ns-support-hdr-btn):not(.ns-portal-btn):not(.nsp-hub-inline-cta):not(.ns-svc-cta):not(.wp-element-button):hover,
[data-theme="dark"] body.ns17 a:not(.ns17-btn):not(.ns-support-hdr-btn):not(.ns-portal-btn):not(.nsp-hub-inline-cta):not(.ns-svc-cta):not(.wp-element-button):focus-visible {
    color: var(--ns17-green-900);
}
[data-theme="dark"] body.ns17 .ns17-btn-primary,
[data-theme="dark"] body.ns17 .ns-support-hdr-btn,
[data-theme="dark"] body.ns17 .nsp-hub-inline-cta,
[data-theme="dark"] body.ns17 .ns-svc-cta,
[data-theme="dark"] body.ns17 .ns-load-more-btn,
[data-theme="dark"] body.ns17 .wp-element-button,
[data-theme="dark"] body.ns17 input[type="submit"],
[data-theme="dark"] body.ns17 button[type="submit"] {
    background: #0b6b45 !important;
    border-color: #0b6b45 !important;
    color: #ffffff !important;
}
[data-theme="dark"] body.ns17 .ns17-btn-primary:hover,
[data-theme="dark"] body.ns17 .ns-support-hdr-btn:hover,
[data-theme="dark"] body.ns17 .nsp-hub-inline-cta:hover,
[data-theme="dark"] body.ns17 .ns-svc-cta:hover,
[data-theme="dark"] body.ns17 .ns-load-more-btn:hover,
[data-theme="dark"] body.ns17 .wp-element-button:hover,
[data-theme="dark"] body.ns17 input[type="submit"]:hover,
[data-theme="dark"] body.ns17 button[type="submit"]:hover {
    background: #07583a !important;
    border-color: #07583a !important;
    color: #ffffff !important;
}
[data-theme="dark"] body.ns17 .ns17-btn-secondary,
[data-theme="dark"] body.ns17 .ns-icon-btn,
[data-theme="dark"] body.ns17 .ns-nav-toggle,
[data-theme="dark"] body.ns17 .ns-user-btn,
[data-theme="dark"] body.ns17 .ns-portal-btn,
[data-theme="dark"] body.ns17 .ns-cmt-open {
    background: #1b272e;
    border-color: #657680;
    color: var(--ns17-text);
}
[data-theme="dark"] body.ns17 .ns17-btn-secondary:hover,
[data-theme="dark"] body.ns17 .ns-icon-btn:hover,
[data-theme="dark"] body.ns17 .ns-nav-toggle:hover,
[data-theme="dark"] body.ns17 .ns-user-btn:hover,
[data-theme="dark"] body.ns17 .ns-portal-btn:hover,
[data-theme="dark"] body.ns17 .ns-cmt-open:hover {
    background: var(--ns17-green-50);
    border-color: var(--ns17-green-700);
    color: var(--ns17-green-900);
}
[data-theme="dark"] body.ns17 .ns17-route-icon,
[data-theme="dark"] body.ns17 .ns17-service-icon,
[data-theme="dark"] body.ns17 .ns17-panel-icon,
[data-theme="dark"] body.ns17 .ns-tag,
[data-theme="dark"] body.ns17 .ns-card-cat,
[data-theme="dark"] body.ns17 [class*="badge"],
[data-theme="dark"] body.ns17 [class*="pill"] {
    background-color: var(--ns17-green-100);
    color: var(--ns17-green-800);
    border-color: #557065;
}
[data-theme="dark"] body.ns17 .ns17-process-grid li,
[data-theme="dark"] body.ns17 blockquote,
[data-theme="dark"] body.ns17 .wp-block-quote {
    background: #1b292f;
    color: var(--ns17-text);
}
[data-theme="dark"] body.ns17 input,
[data-theme="dark"] body.ns17 select,
[data-theme="dark"] body.ns17 textarea {
    background: #111c22;
    border-color: #657680;
    color: var(--ns17-text);
}
[data-theme="dark"] body.ns17 input::placeholder,
[data-theme="dark"] body.ns17 textarea::placeholder { color: #b9c5ca; opacity: 1; }
[data-theme="dark"] body.ns17 table th {
    background: #213b30;
    color: #f0faf4;
}
[data-theme="dark"] body.ns17 table td {
    background: #172229;
    color: var(--ns17-text);
    border-color: var(--ns17-line);
}
[data-theme="dark"] body.ns17 .ns17-support-card {
    background: linear-gradient(125deg, #063d2a 0%, #07583a 70%, #0b6b45 100%);
}
[data-theme="dark"] body.ns17 .ns17-support-card p { color: #edf8f2; }
[data-theme="dark"] body.ns17 .nsp-public-shell h1,
[data-theme="dark"] body.ns17 .nsp-public-shell h2,
[data-theme="dark"] body.ns17 .nsp-public-shell h3,
[data-theme="dark"] body.ns17 .nsp-public-experience h1,
[data-theme="dark"] body.ns17 .nsp-public-experience h2,
[data-theme="dark"] body.ns17 .nsp-public-experience h3,
[data-theme="dark"] body.ns17 .nsp-services-hub h1,
[data-theme="dark"] body.ns17 .nsp-services-hub h2,
[data-theme="dark"] body.ns17 .nsp-services-hub h3,
[data-theme="dark"] body.ns17 .nsp-public-page h1,
[data-theme="dark"] body.ns17 .nsp-public-page h2,
[data-theme="dark"] body.ns17 .nsp-public-page h3 { color: var(--ns17-text) !important; }
[data-theme="dark"] body.ns17 .nsp-public-shell p,
[data-theme="dark"] body.ns17 .nsp-public-shell li,
[data-theme="dark"] body.ns17 .nsp-public-experience p,
[data-theme="dark"] body.ns17 .nsp-public-experience li,
[data-theme="dark"] body.ns17 .nsp-services-hub p,
[data-theme="dark"] body.ns17 .nsp-services-hub li,
[data-theme="dark"] body.ns17 .nsp-public-page p,
[data-theme="dark"] body.ns17 .nsp-public-page li { color: var(--ns17-muted) !important; }

/* Footer remains deliberately dark in both colour schemes. */
body.ns17 .ns-ftr { background: #0d1c24; color: #dce5e9; }
body.ns17 .ns-ftr-brand p,
body.ns17 .ns-ftr-col a,
body.ns17 .ns-ftr-col li,
body.ns17 .ns-disclaimer p { color: #b9c4ca; }
body.ns17 .ns-ftr-btm { color: #9cabb3; }
body.ns17 .ns-ftr-col a:hover,
body.ns17 .ns-ftr-col a:focus-visible { color: #ffffff; }

/* Balance the first mobile viewport. Instead of leaving one large empty band
   before the CTAs, remaining vertical space is distributed between the title,
   description and actions. The actions still sit at the bottom edge. */
@media (max-width: 768px) {
    body.ns17 .ns17-hero-copy {
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        gap: clamp(16px, 2.4svh, 25px);
    }
    body.ns17 .ns17-hero-copy h1 {
        margin: 0;
        font-size: clamp(2.25rem, 10.8vw, 3.15rem);
        line-height: 1.055;
        text-wrap: balance;
    }
    body.ns17 .ns17-hero-copy > p {
        margin: 0;
        max-width: 35rem;
        font-size: clamp(1rem, 2.15svh, 1.08rem);
        line-height: 1.62;
        color: var(--ns17-muted);
    }
    body.ns17 .ns17-actions {
        margin-top: 0;
        padding-top: 0;
        gap: 10px;
    }
}

@media (max-height: 690px) and (max-width: 768px) {
    body.ns17 .ns17-hero { padding-top: 16px; padding-bottom: 14px; }
    body.ns17 .ns17-hero-copy { gap: 12px; }
    body.ns17 .ns17-hero-copy h1 { font-size: clamp(2rem, 9.8vw, 2.55rem); }
    body.ns17 .ns17-hero-copy > p { font-size: .95rem; line-height: 1.48; }
    body.ns17 .ns17-actions .ns17-btn { min-height: 46px; }
}

/* Remaining filled controls audited separately from text-accent variables. */
body.ns17 .ns17-btn-dark,
body.ns17 .ns-btt,
body.ns17 .nspwa-install-pill {
    background: var(--ns17-green-800) !important;
    color: #ffffff !important;
}
body.ns17 .ns17-btn-dark:hover,
body.ns17 .ns-btt:hover,
body.ns17 .nspwa-install-pill:hover {
    background: var(--ns17-green-900) !important;
    color: #ffffff !important;
}
[data-theme="dark"] body.ns17 .ns17-btn-dark,
[data-theme="dark"] body.ns17 .ns-btt,
[data-theme="dark"] body.ns17 .nspwa-install-pill,
[data-theme="dark"] body.ns17 .ns17-process-grid li > span {
    background: #0b6b45 !important;
    color: #ffffff !important;
}
[data-theme="dark"] body.ns17 .ns17-btn-dark:hover,
[data-theme="dark"] body.ns17 .ns-btt:hover,
[data-theme="dark"] body.ns17 .nspwa-install-pill:hover {
    background: #07583a !important;
    color: #ffffff !important;
}

/* Search, pagination and small navigation controls. */
body.ns17 .page-numbers,
body.ns17 .nav-links a,
body.ns17 .post-page-numbers,
body.ns17 .ns-search-submit {
    color: var(--ns17-text);
    border-color: #9aaab2;
    background: var(--ns17-card);
}
body.ns17 .page-numbers.current,
body.ns17 .page-numbers:hover,
body.ns17 .nav-links a:hover,
body.ns17 .post-page-numbers.current,
body.ns17 .post-page-numbers:hover,
body.ns17 .ns-search-submit:hover {
    color: #ffffff;
    border-color: var(--ns17-green-800);
    background: var(--ns17-green-800);
}
[data-theme="dark"] body.ns17 .page-numbers,
[data-theme="dark"] body.ns17 .nav-links a,
[data-theme="dark"] body.ns17 .post-page-numbers,
[data-theme="dark"] body.ns17 .ns-search-submit {
    color: var(--ns17-text);
    border-color: #657680;
    background: #1b272e;
}
[data-theme="dark"] body.ns17 .page-numbers.current,
[data-theme="dark"] body.ns17 .page-numbers:hover,
[data-theme="dark"] body.ns17 .nav-links a:hover,
[data-theme="dark"] body.ns17 .post-page-numbers.current,
[data-theme="dark"] body.ns17 .post-page-numbers:hover,
[data-theme="dark"] body.ns17 .ns-search-submit:hover {
    color: #ffffff;
    border-color: #0b6b45;
    background: #0b6b45;
}


/* ======================================================================
   Theme 17.0.6 — SEO-focused mobile hero and header-control order
   ====================================================================== */
@media (max-width: 768px) {
    /* Requested order: menu occupies the former search position; search
       occupies the former menu position. DOM order stays stable for caching
       and accessibility, while visual order changes only on mobile. */
    body.ns17 .ns-hdr-act > .ns-nav-toggle { order: 1; }
    body.ns17 .ns-hdr-act > #ns-search-btn { order: 2; }

    /* The hero remains a first-viewport experience, but a larger, descriptive
       search-focused heading uses the available space naturally instead of
       leaving a decorative void before the actions. */
    body.ns17 .ns17-hero-copy {
        display: grid;
        grid-template-rows: auto auto minmax(8px, 1fr) auto;
        align-content: stretch;
        gap: clamp(12px, 1.9svh, 20px);
        justify-content: initial;
    }
    body.ns17 .ns17-hero-copy h1 {
        margin: 0;
        max-width: 100%;
        font-size: clamp(2.55rem, 12.2vw, 3.6rem);
        line-height: .99;
        letter-spacing: -.035em;
        text-wrap: balance;
    }
    body.ns17 .ns17-hero-copy > p {
        margin: 0;
        max-width: 36rem;
        font-size: clamp(1rem, 2.12svh, 1.09rem);
        line-height: 1.55;
        text-wrap: pretty;
    }
    body.ns17 .ns17-actions {
        grid-row: 4;
        align-self: end;
        margin: 0;
        padding: 0;
    }
}

@media (max-width: 390px) {
    body.ns17 .ns17-hero-copy h1 {
        font-size: clamp(2.38rem, 12.1vw, 3.12rem);
        line-height: 1;
    }
    body.ns17 .ns17-hero-copy > p {
        font-size: .98rem;
        line-height: 1.5;
    }
}

@media (max-height: 720px) and (max-width: 768px) {
    body.ns17 .ns17-hero-copy {
        gap: 10px;
        grid-template-rows: auto auto minmax(4px, 1fr) auto;
    }
    body.ns17 .ns17-hero-copy h1 {
        font-size: clamp(2.1rem, 10.4vw, 2.8rem);
        line-height: 1.01;
    }
    body.ns17 .ns17-hero-copy > p {
        font-size: .93rem;
        line-height: 1.42;
    }
    body.ns17 .ns17-actions { gap: 8px; }
    body.ns17 .ns17-actions .ns17-btn { min-height: 45px; padding-block: 10px; }
}


/* ======================================================================
   Theme 17.0.7 — mobile CTA breathing room and search/menu order
   ====================================================================== */
@media (max-width: 768px) {
    /* Search appears first and Menu second in both visual and DOM order. */
    body.ns17 .ns-hdr-act > #ns-search-btn { order: 1; }
    body.ns17 .ns-hdr-act > .ns-nav-toggle { order: 2; }

    /* Keep the CTA group inside the first viewport while providing a clear
       visual gap below the second button and the bottom edge of the screen. */
    body.ns17 .ns17-actions {
        padding-bottom: max(18px, env(safe-area-inset-bottom));
    }
}

@media (max-height: 720px) and (max-width: 768px) {
    body.ns17 .ns17-actions {
        padding-bottom: max(12px, env(safe-area-inset-bottom));
    }
}

/* ======================================================================
   Theme 17.0.8 — authoritative mobile header order and CTA safe space
   This final layer intentionally overrides earlier mobile experiments.
   ====================================================================== */
@media (max-width: 768px) {
    /* One predictable row: site identity on the left, then Search and Menu
       grouped at the right. The explicit grid avoids old flex/order rules
       re-positioning either control after LiteSpeed minification. */
    body.ns17 .ns-hdr-in {
        display: grid !important;
        grid-template-columns: minmax(0, 1fr) auto !important;
        align-items: center !important;
        gap: 10px !important;
    }
    body.ns17 .ns-hdr-in > .ns-logo {
        grid-column: 1 !important;
        grid-row: 1 !important;
        position: static !important;
        left: auto !important;
        top: auto !important;
        transform: none !important;
        justify-self: start !important;
        min-width: 0 !important;
        max-width: 100% !important;
    }
    body.ns17 .ns-hdr-in > .ns-hdr-act {
        grid-column: 2 !important;
        grid-row: 1 !important;
        display: flex !important;
        flex-direction: row !important;
        align-items: center !important;
        justify-content: flex-end !important;
        width: auto !important;
        min-width: 100px !important;
        margin: 0 !important;
        gap: 8px !important;
    }
    body.ns17 .ns-hdr-act > #ns-search-btn {
        display: inline-flex !important;
        order: 1 !important;
        margin: 0 !important;
    }
    body.ns17 .ns-hdr-act > .ns-nav-toggle {
        display: inline-flex !important;
        order: 2 !important;
        margin: 0 !important;
    }

    /* More deliberate breathing room after the second CTA while keeping the
       group anchored to the lower part of the first mobile viewport. */
    body.ns17 .ns17-hero {
        padding-bottom: 12px !important;
    }
    body.ns17 .ns17-actions {
        padding-bottom: max(42px, calc(env(safe-area-inset-bottom) + 30px)) !important;
    }
}

@media (max-height: 720px) and (max-width: 768px) {
    body.ns17 .ns17-hero { padding-bottom: 8px !important; }
    body.ns17 .ns17-actions {
        padding-bottom: max(28px, calc(env(safe-area-inset-bottom) + 18px)) !important;
    }
}
