/* =============================================================================
   Pinuno Academy — site.css
   Combines pinuno.net ocean blues, pinuno.nl modern blues + amber,
   Ghana flag identity accents, and Bootstrap 5 overrides.
   ============================================================================= */

/* =============================================================================
   1. CSS CUSTOM PROPERTIES (Design Tokens)
   ============================================================================= */
:root {
    /* --- pinuno.net ocean blues --- */
    --p-sky:          #4990A7;
    --p-teal:         #3B899A;
    --p-navy:         #28638F;
    --p-azure:        #135686;
    --p-stone-light:  #CFDCE2;

    /* --- pinuno.nl modern blues + amber --- */
    --p-blue-vivid:   #2563eb;
    --p-blue-bright:  #3b82f6;
    --p-amber:        #f59e0b;

    /* --- Ghana flag accents --- */
    --gh-red:         #CE1126;
    --gh-gold:        #FCD116;
    --gh-gold-muted:  #D5A94B;
    --gh-green:       #006B3F;
    --gh-green-mid:   #2C5D39;

    /* --- Neutrals (Tailwind/Bootstrap gray scale) --- */
    --gray-50:        #f9fafb;
    --gray-100:       #f3f4f6;
    --gray-200:       #e5e7eb;
    --gray-300:       #d1d5db;
    --gray-400:       #9ca3af;
    --gray-500:       #6b7280;
    --gray-600:       #4b5563;
    --gray-700:       #374151;
    --gray-800:       #1f2937;
    --gray-900:       #111827;

    /* --- Pinuno Academy brand tokens --- */
    --pa-hero-start:      #0a1e3d;
    --pa-hero-end:        #135686;
    --pa-navbar-bg:       #135686;
    --pa-navbar-accent:   #FCD116;
    --pa-footer-bg:       #0a1e3d;
    --pa-section-alt:     #f0f7ff;
    --pa-border-radius:   0.75rem;

    /* --- Bootstrap 5 variable overrides --- */
    --bs-primary:         #2563eb;
    --bs-primary-rgb:     37, 99, 235;
    --bs-success:         #006B3F;
    --bs-danger:          #CE1126;
    --bs-warning:         #FCD116;
    --bs-dark:            #135686;
    --bs-link-color:      #2563eb;
    --bs-link-hover-color:#135686;

    /* --- Legacy pinuno variables (kept for backward compatibility) --- */
    --pinuno-sky:           #4990A7;
    --pinuno-teal:          #3B899A;
    --pinuno-artic:         #3486A4;
    --pinuno-ocean:         #12758F;
    --pinuno-navy:          #28638F;
    --pinuno-azure:         #135686;
    --pinuno-stone-light:   #CFDCE2;
    --pinuno-yellow-light:  #D6BA4E;
    --pinuno-yellow-middle: #D5A94B;
    --pinuno-yellow-dark:   #D3932D;
    --pinuno-blauw-light:   #D9B27A;
    --pinuno-blauw-middle:  #CAA868;
    --pinuno-blauw-dark:    #A56B2F;
    --pinuno-pink:          #CE4295;
    --pinuno-pink-rose:     #CA2C6C;
    --pinuno-pink-dark:     #A3245A;
    --pinuno-pink-rose-dark:#9F2B63;
    --pinuno-purple-dark:   #62366B;
    --pinuno-purple-light:  #872f91;
    --pinuno-green-btn:     #59A859;
    --pinuno-green-light:   #AFCB82;
    --pinuno-green-middle:  #4D6E42;
    --pinuno-green-dark:    #2C5D39;
    --pinuno-green-yellow-light: #ADC351;
    --pinuno-green-yellow-dark:  #929B39;
    --pinuno-green-yellow:  #A59738;
    --pinuno-whitesmoke:    #F5F5F5;
    --pinuno-gainsboro:     #E8E8E8;
    --pinuno-silver:        #D0D0D0;
}


/* =============================================================================
   2. GLOBAL RESET & BASE
   ============================================================================= */
html {
    height: 100%;
    scroll-padding-top: 110px; /* clears navbar (56px) + sticky courses filter bar (~46px) */
}

body {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    margin: 0;
    padding: 0;
    background-color: var(--gray-50);
    color: var(--gray-900);
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    /* Reserve scrollbar gutter so toggling overflow:hidden never shifts layout */
    scrollbar-gutter: stable;
}
body.overlay-open {
    overflow: hidden;
    /* Release the reserved gutter — the layout shift is invisible under the overlay */
    scrollbar-gutter: auto;
}

h1, h2, h3 {
    margin: 0;
    padding: 0;
}

h1 {
    font-size: clamp(1.75rem, 3vw, 3rem);
}

.lead {
    font-size: clamp(1rem, 2vw, 1.25rem);
}

p, ol, ul {
    margin-top: 0;
}

/* Links */
a {
    color: var(--p-blue-vivid);
    text-decoration: none;
    transition: color 0.2s ease;
}

a:hover {
    color: var(--p-azure);
    text-decoration: underline;
}

/* Selection */
::selection {
    text-shadow: none !important;
    background: var(--gh-gold);
    color: var(--gray-900);
}


/* =============================================================================
   3. LAYOUT — CONTENT WRAPPER
   ============================================================================= */
#content {
    flex: 1;
    overflow-x: hidden;
    position: relative;
    background-color: var(--gray-50);
    padding-bottom: 3rem;
}

#content_columns {
    padding-right: 20px;
}

#abstract_msg {
    text-align: center;
    margin-top: -50px;
    margin-bottom: -80px;
}


/* =============================================================================
   4. NAVBAR  (.navbar-pinuno)
   ============================================================================= */
.navbar-pinuno {
    background-color: var(--pa-navbar-bg);
    border: none;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}

/* Logo — invert dark wordmark to white for the dark navbar */
.navbar-pinuno .navbar-brand img {
    filter: brightness(0) invert(1);
    opacity: 0.95;
    transition: opacity 0.2s ease;
}
.navbar-pinuno .navbar-brand:hover img,
.navbar-pinuno .navbar-brand:focus img {
    opacity: 1;
}

/* Nav links */
.navbar-pinuno .nav-link,
.navbar-pinuno .navbar-nav > li > a {
    color: rgba(255, 255, 255, 0.8) !important;
    font-weight: 400;
    font-size: 0.9rem;
    letter-spacing: 0.02em;
    padding: 0.5rem 0.75rem;
    text-decoration: none !important;
    transition: color 0.2s ease;
}

.navbar-pinuno .nav-link:hover,
.navbar-pinuno .navbar-nav > li > a:hover,
.navbar-pinuno .nav-link:focus,
.navbar-pinuno .navbar-nav > li > a:focus {
    color: #ffffff !important;
    text-decoration: none !important;
    background-color: transparent !important;
}

/* Login — slightly muted to let "Enrol Now" stand out */
.navbar-pinuno .nav-link-auth {
    color: rgba(255, 255, 255, 0.65) !important;
    font-size: 0.875rem;
}
.navbar-pinuno .nav-link-auth:hover {
    color: #ffffff !important;
}

/* Active link */
.navbar-pinuno .nav-link.active,
.navbar-pinuno .navbar-nav > .active > a,
.navbar-pinuno .navbar-nav > .active > a:hover,
.navbar-pinuno .navbar-nav > .active > a:focus {
    color: #ffffff !important;
    border-bottom: 3px solid var(--pa-navbar-accent);
    background-color: transparent !important;
    opacity: 1 !important;
}

/* Dropdown menu */
.navbar-pinuno .dropdown-menu {
    background-color: #ffffff;
    border: none;
    border-top: 3px solid var(--pa-navbar-accent);
    border-radius: 0 0 var(--pa-border-radius) var(--pa-border-radius);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
}

.navbar-pinuno .dropdown-menu .dropdown-item,
.navbar-pinuno .nav-dropdown > li > a {
    color: var(--p-azure);
    font-weight: 500;
    padding: 0.6rem 1.25rem;
    border-bottom: 1px solid var(--gray-100);
    transition: background-color 0.15s ease, color 0.15s ease;
}

.navbar-pinuno .dropdown-menu .dropdown-item:hover,
.navbar-pinuno .dropdown-menu .dropdown-item:focus,
.navbar-pinuno .nav-dropdown > li > a:hover,
.navbar-pinuno .nav-dropdown > li > a:focus {
    background-color: var(--pa-section-alt);
    color: var(--p-azure);
    outline: none;
}

.navbar-pinuno .dropdown-menu .dropdown-item.active,
.navbar-pinuno .nav-dropdown > .active > a {
    background-color: var(--p-azure);
    color: #ffffff;
}

/* Toggler icon for mobile */
.navbar-pinuno .navbar-toggler {
    border-color: rgba(255, 255, 255, 0.4);
}

.navbar-pinuno .navbar-toggler-icon {
    filter: invert(1);
}

/* Legacy Bootstrap 3 nav overrides */
.navbar {
    margin-bottom: 0 !important;
}

.nav > li > a {
    font-size: 1.05em;
    font-weight: 500;
    color: rgba(255, 255, 255, 0.85);
    border-bottom: 2px solid transparent;
}

.nav > li > a:hover,
.nav > li > a:focus {
    border-bottom: 2px solid white;
    color: #ffffff;
}

.nav > li > a:focus {
    outline: none;
}

.navbar-header > a:focus {
    outline: none;
    border-bottom: 2px solid white;
}

.navbar-nav > .open > a:hover,
.navbar-nav > .open > a:focus {
    border: none;
    background-color: rgba(0, 0, 0, 0.1) !important;
}

.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
    border: none;
    background-color: rgba(0, 0, 0, 0.1);
}

.nav-dropdown {
    background-color: #fff;
}

.nav-dropdown > li > a {
    color: var(--p-azure);
    padding: 12px 16px;
    border-top: 1px solid var(--gray-100);
}

.nav-dropdown > li > a:hover,
.nav-dropdown > li > a:focus {
    outline: none;
    background-color: var(--pa-section-alt);
}

.nav-dropdown > .active > a {
    background-color: var(--p-azure);
    color: #ffffff !important;
    font-weight: 700;
}

.nav-dropdown > .active > a:hover,
.nav-dropdown > .active > a:focus {
    text-decoration: none;
    background-color: var(--p-navy);
    color: #ffffff !important;
}

.navbar-right > li > a:hover > .glyphicon,
.navbar-right > li > a:focus > .glyphicon {
    color: #fff;
}

.navbar-right > .active > a > .glyphicon {
    color: #fff;
}

.nav > li > a > img {
    max-width: 30%;
}


/* =============================================================================
   5. GHANA TRICOLOR BARS
   ============================================================================= */

/* Slim bar below navbar */
.ghana-bar {
    height: 6px;
    background: linear-gradient(
        to right,
        var(--gh-red)  33.3%,
        var(--gh-gold) 33.3% 66.6%,
        var(--gh-green) 66.6%
    );
    width: 100%;
    display: block;
}

/* Section separator — sits flush between sections */
.section-ghana-divider {
    height: 4px;
    background: linear-gradient(
        to right,
        var(--gh-red)  33.3%,
        var(--gh-gold) 33.3% 66.6%,
        var(--gh-green) 66.6%
    );
    width: 100%;
    margin: 0;
    display: block;
    border: none;
}


/* =============================================================================
   6. HERO SECTION  (.academy-hero)
   ============================================================================= */
.academy-hero {
    background: linear-gradient(135deg, var(--pa-hero-start) 0%, var(--pa-hero-end) 100%);
    color: #ffffff;
    position: relative;
    overflow: hidden;
}

.academy-hero h1,
.academy-hero h2,
.academy-hero p,
.academy-hero .lead {
    color: #ffffff;
}

/* Frosted glass stat cards */
.hero-stat-card {
    background: rgba(255, 255, 255, 0.09);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, 0.15);
    border-radius: var(--pa-border-radius);
    color: #ffffff;
    padding: 1.25rem 1rem;
    text-align: center;
}

.hero-stat-card .hero-icon,
.hero-stat-card i,
.hero-stat-card svg {
    color: #7dd3fc;
}

.hero-stat-card .stat-number {
    font-size: 2rem;
    font-weight: 700;
    color: var(--gh-gold);
    line-height: 1;
}

.hero-stat-card .stat-label {
    font-size: 0.85rem;
    color: rgba(255, 255, 255, 0.8);
}


/* =============================================================================
   7. BUTTONS
   ============================================================================= */

/* Primary — vivid blue */
.btn-primary {
    background-color: var(--p-blue-vivid);
    border-color: var(--p-blue-vivid);
    color: #ffffff;
    font-weight: 600;
    border-radius: 0.5rem;
    transition: background-color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}

.btn-primary:hover,
.btn-primary:focus {
    background-color: #1e40af;
    border-color: #1e40af;
    color: #ffffff;
    box-shadow: 0 4px 12px rgba(37, 99, 235, 0.35);
}

/* Enrol CTA — Ghana red */
.btn-enrol {
    background-color: var(--gh-red);
    border-color: var(--gh-red);
    color: #ffffff;
    font-weight: 700;
    border-radius: 0.5rem;
    letter-spacing: 0.03em;
    transition: background-color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}

.btn-enrol:hover,
.btn-enrol:focus {
    background-color: #a50e1e;
    border-color: #a50e1e;
    color: #ffffff;
    box-shadow: 0 4px 12px rgba(206, 17, 38, 0.35);
}

/* Success — Ghana green */
.btn-success {
    background-color: var(--gh-green);
    border-color: var(--gh-green);
    color: #ffffff;
    font-weight: 600;
    border-radius: 0.5rem;
    transition: background-color 0.2s ease, border-color 0.2s ease;
}

.btn-success:hover,
.btn-success:focus {
    background-color: var(--gh-green-mid);
    border-color: var(--gh-green-mid);
    color: #ffffff;
}

/* Outline primary */
.btn-outline-primary {
    border-color: var(--p-blue-vivid);
    color: var(--p-blue-vivid);
    font-weight: 600;
    border-radius: 0.5rem;
    background-color: transparent;
    transition: background-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
}

.btn-outline-primary:hover,
.btn-outline-primary:focus {
    background-color: var(--p-blue-vivid);
    border-color: var(--p-blue-vivid);
    color: #ffffff;
    box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3);
}

/* Amber / accent button */
.btn-amber {
    background-color: var(--p-amber);
    border-color: var(--p-amber);
    color: var(--gray-900);
    font-weight: 700;
    border-radius: 0.5rem;
    transition: background-color 0.2s ease, border-color 0.2s ease;
}

.btn-amber:hover,
.btn-amber:focus {
    background-color: #d97706;
    border-color: #d97706;
    color: var(--gray-900);
}


/* =============================================================================
   8. COURSE CARDS  (.course-card)
   ============================================================================= */
.course-card {
    background-color: #ffffff;
    border-radius: var(--pa-border-radius);
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--gray-200);
    overflow: hidden;
    transition: transform 0.25s ease, box-shadow 0.25s ease;
    height: 100%;
    display: flex;
    flex-direction: column;
}

.course-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.14);
}

/* Color header band — color set via inline style per card */
.course-card-header {
    padding: 1.25rem 1.25rem 1rem;
    color: #ffffff;
    position: relative;
}

.course-card-header h3,
.course-card-header h4,
.course-card-header .card-title {
    color: #ffffff;
    font-weight: 700;
    margin-bottom: 0.25rem;
}

.course-card-body {
    padding: 1.25rem;
    flex: 1;
    display: flex;
    flex-direction: column;
}

.course-card-footer {
    padding: 0.75rem 1.25rem;
    background-color: var(--gray-50);
    border-top: 1px solid var(--gray-200);
}

/* Price */
.course-price,
.price-text {
    color: var(--p-azure);
    font-weight: 700;
    font-size: 1.2rem;
}

.course-price-original {
    color: var(--gray-400);
    text-decoration: line-through;
    font-size: 0.9rem;
}


/* =============================================================================
   9. TRUST BAR  (.trust-bar)
   ============================================================================= */
.trust-bar {
    background-color: #ffffff;
    border-bottom: 1px solid var(--gray-200);
    padding: 0.75rem 0;
}

.trust-bar .trust-item {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.9rem;
    color: var(--gray-600);
    font-weight: 500;
}

.trust-bar .trust-icon {
    color: var(--p-azure);
    font-size: 1.1rem;
}

.trust-bar .trust-icon.icon-gold {
    color: var(--gh-gold-muted);
}

.trust-bar .trust-icon.icon-green {
    color: var(--gh-green);
}


/* =============================================================================
   10. BADGES
   ============================================================================= */
.badge-ghana-gold {
    background-color: var(--gh-gold);
    color: #1a1a1a;
    font-weight: 600;
    border-radius: 0.375rem;
    padding: 0.3em 0.65em;
    font-size: 0.8em;
}

.badge-academy {
    background-color: var(--p-azure);
    color: #ffffff;
    font-weight: 600;
    border-radius: 0.375rem;
    padding: 0.3em 0.65em;
    font-size: 0.8em;
}

.badge-info {
    margin-top: 10px;
    background-color: white;
    border: 1px solid var(--gray-400);
    color: var(--gray-500);
    font-weight: 500;
}


/* =============================================================================
   11. HOW IT WORKS / STEP CARDS  (.step-card)
   ============================================================================= */
.step-card {
    background-color: #ffffff;
    border-radius: var(--pa-border-radius);
    border: 1px solid var(--gray-200);
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);
    padding: 2rem 1.5rem;
    text-align: center;
    position: relative;
}

/* Numbered step circle */
.step-number {
    width: 3rem;
    height: 3rem;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--p-azure), var(--p-blue-vivid));
    color: #ffffff;
    font-weight: 700;
    font-size: 1.25rem;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 1rem;
    box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3);
}

/* Step icon */
.step-icon {
    font-size: 2rem;
    color: var(--p-azure);
    margin-bottom: 0.75rem;
    display: block;
}


/* =============================================================================
   12. SECTIONS
   ============================================================================= */
.section-alt {
    background-color: var(--pa-section-alt);
}

.section-white {
    background-color: #ffffff;
}

.section-dark {
    background-color: var(--pa-hero-start);
    color: #ffffff;
}

.section-dark h1,
.section-dark h2,
.section-dark h3,
.section-dark p {
    color: #ffffff;
}


/* =============================================================================
   13. FOOTER  (.footer-pinuno)
   ============================================================================= */
.footer-pinuno,
.footer {
    background-color: var(--pa-footer-bg);
    color: rgba(255, 255, 255, 0.85);
    border-top: 4px solid transparent;
    border-image: linear-gradient(
        to right,
        var(--gh-red)  33.3%,
        var(--gh-gold) 33.3% 66.6%,
        var(--gh-green) 66.6%
    ) 1;
    padding-top: 3rem;
    padding-bottom: 1.5rem;
    width: 100%;
}

.footer-pinuno a,
.footer a {
    color: rgba(255, 255, 255, 0.7);
    text-decoration: none;
    transition: color 0.2s ease;
}

.footer-pinuno a:hover,
.footer a:hover {
    color: #ffffff;
    text-decoration: none;
}

.footer-brand {
    display: block;
    margin-bottom: 0.25rem;
}

/* Invert dark wordmark to white/gold tint on dark footer */
.footer-brand img {
    filter: brightness(0) invert(1);
    opacity: 0.9;
}

.footer-pinuno h4,
.footer-pinuno h5,
.footer-pinuno .footer-heading {
    color: #ffffff;
    font-weight: 600;
    margin-bottom: 1rem;
    font-size: 0.95rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.footer-pinuno .footer-copyright {
    color: rgba(255, 255, 255, 0.45);
    font-size: 0.85rem;
}

.footer-pinuno .footer-tagline {
    color: rgba(255, 255, 255, 0.65);
    max-width: 280px;
}

.footer-pinuno .footer-contact {
    color: rgba(255, 255, 255, 0.5);
}

.footer-pinuno .footer-col-heading {
    letter-spacing: 0.06em;
}

.footer-pinuno .footer-bottom {
    border-color: rgba(255, 255, 255, 0.12) !important;
}

.footer-pinuno ul {
    list-style: none;
    padding-left: 0;
}

.footer-pinuno ul li {
    margin-bottom: 0.45rem;
}

.footer-social-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    border: 1px solid rgba(255, 255, 255, 0.2);
    color: rgba(255, 255, 255, 0.65);
    font-size: 1rem;
    transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
    text-decoration: none;
}

.footer-social-btn:hover {
    background: rgba(255, 255, 255, 0.12);
    color: #ffffff;
    border-color: rgba(255, 255, 255, 0.45);
    text-decoration: none;
}

/* Social share widget — override stacked list to horizontal */
.footer-pinuno .list-inline li {
    display: inline-block;
    margin-bottom: 0;
    margin-right: 0.5rem;
}


/* =============================================================================
   14. TESTIMONIALS  (.testimonial-card)
   ============================================================================= */
.testimonial-card {
    background-color: #ffffff;
    border-radius: var(--pa-border-radius);
    border: 1px solid var(--gray-200);
    border-left: 4px solid var(--gh-gold-muted);
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);
    padding: 1.5rem;
    transition: box-shadow 0.25s ease;
}

.testimonial-card:hover {
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1);
}

.testimonial-card .testimonial-text {
    font-style: italic;
    color: var(--gray-700);
    line-height: 1.7;
    margin-bottom: 1rem;
}

.testimonial-card .testimonial-author {
    font-weight: 700;
    color: var(--p-azure);
}

.testimonial-card .testimonial-role {
    font-size: 0.85rem;
    color: var(--gray-500);
}

.testimonial-stars {
    color: var(--gh-gold);
    font-size: 1rem;
    letter-spacing: 0.05em;
}


/* =============================================================================
   15. CONTACT PAGE
   ============================================================================= */
.contact-earphone-icon {
    font-size: 100px;
}

.contact-text-color {
    font-weight: bold;
}

.contact-icon-color {
    color: var(--p-sky);
}

.contact-color-lg {
    color: var(--p-navy);
}

.contact-pinuno-title {
    text-align: center;
    padding-top: 30px;
}

.contact-pinuno-p {
    text-align: center;
}

.contact-hr {
    height: 1px;
    background-image: linear-gradient(
        to right,
        rgba(0, 0, 0, 0),
        rgba(0, 0, 0, 0.75),
        rgba(0, 0, 0, 0)
    );
    margin: 10% 10%;
}


/* =============================================================================
   16. PANELS (Bootstrap 3 legacy — light theme)
   ============================================================================= */
.panel {
    margin-left: 20px;
    padding-right: 10px;
    padding-left: 10px;
    margin-bottom: 20px;
    background-color: #ffffff;
    border: 1px solid var(--gray-200);
    border-radius: 6px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}

.panel-heading {
    border: none;
}

.panel-heading a.list-group-item {
    background-color: #ffffff;
    color: var(--gray-900);
    border: none;
}

.panel-body p {
    color: var(--gray-700);
}

.panel-body .list-group-item {
    background-color: #ffffff;
    color: var(--gray-900);
    border: none;
}

.panel-footer {
    background-color: var(--gray-50) !important;
    border-top: 1px solid var(--gray-200);
}


/* =============================================================================
   17. TABLES
   ============================================================================= */
.table thead th {
    padding-top: 25px !important;
    padding-bottom: 25px !important;
    height: 60px;
}

.table-4-border {
    border: 2px solid var(--p-navy);
}

.table-math {
    border: 2px solid var(--p-navy);
}

.table-math thead th {
    background-color: var(--p-navy);
    color: white;
}

.table-economics {
    border: 2px solid var(--pinuno-blauw-dark);
}

.table-economics thead th {
    background-color: var(--pinuno-blauw-dark);
    color: white;
}

.table-science {
    border: 2px solid var(--pinuno-green-dark);
}

.table-science thead th {
    background-color: var(--pinuno-green-dark);
    color: white;
}

.table-social_studies {
    border: 2px solid var(--pinuno-purple-dark);
}

.table-social_studies thead th {
    background-color: var(--pinuno-purple-dark);
    color: white;
}

.table-gov {
    border: 2px solid var(--pinuno-pink-dark);
}

.table-gov thead th {
    background-color: var(--pinuno-pink-dark);
    color: white;
}

.table-web-dev {
    border: 2px solid #4990A7;
}

.table-web-dev thead th {
    background-color: #7bc1d8;
    color: white;
}

.table-web-adv {
    border-top: 5px solid #7bc1d8;
}

.table-php-dev {
    border: 2px solid #9282A0;
}

.table-php-dev thead th {
    background-color: #9282A0;
    color: white;
}

.table-php-adv {
    border: 2px solid #617CBE;
}

.table-php-adv thead th {
    background-color: #617CBE;
    color: white;
}


/* =============================================================================
   18. SUBJECT / ACADEMY HEADINGS & BUTTONS (course subject colors)
   ============================================================================= */
.h2-academy {
    padding-top: 10px;
}

.h2-math {
    color: var(--p-navy);
}

.h2-economics {
    color: var(--pinuno-blauw-dark);
}

.h2-science {
    color: var(--pinuno-green-dark);
}

.h2-social_studies {
    color: var(--pinuno-purple-dark);
}

.h2-gov {
    color: var(--pinuno-pink-dark);
}

#btn-math {
    background-color: var(--p-navy);
    color: white;
}

#btn-math:hover {
    background-color: white;
    color: var(--p-navy);
    border: 2px solid var(--p-navy);
}

#btn-economics {
    background-color: var(--pinuno-blauw-dark);
    color: white;
}

#btn-economics:hover {
    background-color: white;
    color: var(--pinuno-blauw-dark);
    border: 2px solid var(--pinuno-blauw-dark);
}

#btn-science {
    background-color: var(--pinuno-green-dark);
    color: white;
}

#btn-science:hover {
    background-color: white;
    color: var(--pinuno-green-dark);
    border: 2px solid var(--pinuno-green-dark);
}

#btn-social_studies {
    background-color: var(--pinuno-purple-dark);
    color: white;
}

#btn-social_studies:hover {
    background-color: white;
    color: var(--pinuno-purple-dark);
    border: 2px solid var(--pinuno-purple-dark);
}

#btn-gov {
    background-color: var(--pinuno-pink-dark);
    color: white;
}

#btn-gov:hover {
    background-color: white;
    color: var(--pinuno-pink-dark);
    border: 2px solid var(--pinuno-pink-dark);
}


/* =============================================================================
   19. RESOURCE CONTENT ICON
   ============================================================================= */
.resource--content-icon {
    width: 50px;
    height: 50px;
    background-position: center;
    background-size: 100% 100%;
    position: absolute;
    right: 0;
    display: block;
    margin-top: 20px;
}


/* =============================================================================
   20. UTILITY CLASSES
   ============================================================================= */

/* Text colors */
.text-ghana-gold  { color: var(--gh-gold) !important; }
.text-ghana-red   { color: var(--gh-red) !important; }
.text-ghana-green { color: var(--gh-green) !important; }
.text-p-azure     { color: var(--p-azure) !important; }
.text-p-sky       { color: var(--p-sky) !important; }
.text-p-navy      { color: var(--p-navy) !important; }
.text-blue-vivid  { color: var(--p-blue-vivid) !important; }

/* Background colors */
.bg-p-azure        { background-color: var(--p-azure) !important; }
.bg-p-navy         { background-color: var(--p-navy) !important; }
.bg-ghana-gold     { background-color: var(--gh-gold) !important; }
.bg-ghana-red      { background-color: var(--gh-red) !important; }
.bg-ghana-green    { background-color: var(--gh-green) !important; }
.bg-section-alt    { background-color: var(--pa-section-alt) !important; }
.bg-hero {
    background: linear-gradient(135deg, var(--pa-hero-start) 0%, var(--pa-hero-end) 100%) !important;
}

/* Border colors */
.border-ghana-gold  { border-color: var(--gh-gold) !important; }
.border-ghana-red   { border-color: var(--gh-red) !important; }
.border-ghana-green { border-color: var(--gh-green) !important; }
.border-p-azure     { border-color: var(--p-azure) !important; }

/* Border radius */
.rounded-pa { border-radius: var(--pa-border-radius) !important; }


/* =============================================================================
   21. FORMS
   ============================================================================= */
.form-control:focus,
.form-select:focus {
    border-color: var(--p-blue-vivid);
    box-shadow: 0 0 0 0.2rem rgba(37, 99, 235, 0.2);
}

.form-label {
    font-weight: 500;
    color: var(--gray-700);
}

.invalid-feedback {
    color: var(--gh-red);
}

.is-invalid {
    border-color: var(--gh-red) !important;
}

.is-valid {
    border-color: var(--gh-green) !important;
}


/* =============================================================================
   22. ALERTS
   ============================================================================= */
.alert-success {
    background-color: #d1fae5;
    border-color: var(--gh-green);
    color: var(--gh-green-mid);
}

.alert-danger {
    background-color: #fee2e2;
    border-color: var(--gh-red);
    color: #7f1d1d;
}

.alert-warning {
    background-color: #fef3c7;
    border-color: var(--p-amber);
    color: #78350f;
}

.alert-info {
    background-color: var(--pa-section-alt);
    border-color: var(--p-sky);
    color: var(--p-navy);
}


/* =============================================================================
   23. SVG ANIMATIONS (preserved from original)
   ============================================================================= */
svg {
    width: 100%;
    height: vh;
}

#Ellipse_1 {
    animation-name: imovedown;
    animation-duration: 1s;
    position: relative;
    transform-origin: top;
}

@keyframes imovedown {
    from { transform: translateY(0px); }
    to   {
        transform: translateY(30px);
        -ms-transform: translateY(30px);
    }
}

#ver-rectangle {
    animation: shrink 1s ease-out;
    position: relative;
}

@keyframes shrink {
    from { top: 0; }
    to   { top: 50px; }
}

#hor-rectangle {
    animation: grow 1s linear;
    transform-origin: center;
    transform-box: fill-box;
    position: relative;
}

@keyframes grow {
    from { transform: scalex(1); }
    to   { transform: scalex(2.1); }
}

#dns_c1,
#dns_c2 {
    animation: dns_fill_color 0.8s ease infinite;
    animation-delay: 1s;
}

@keyframes dns_fill_color {
    from { fill: #ffffff; }
    to   { fill: #449d44; }
}

#gear_l, #gear_m, #gear_s, #settings-24px_1,
#support-24px_1 {
    animation: gears 2s linear infinite;
    animation-delay: 1s;
    transform-origin: center;
    transform-box: fill-box;
    position: relative;
}

@keyframes gears {
    from { transform: rotateZ(0deg); }
    to   { transform: rotateZ(360deg); }
}

#question_answer-24px_1 {
    animation: msg_fill_color 2.5s ease infinite;
}

@keyframes msg_fill_color {
    0%   { fill: #ffffff; }
    50%  { fill: #c8f7c8; }
    100% { fill: #449d44; }
}

#done_check {
    animation: done_check 3s ease infinite;
    animation-delay: 1.5s;
}

@keyframes done_check {
    0%   { fill: #ffffff; }
    20%  { fill: #ffffff; }
    70%  { fill: #449d44; }
    100% { fill: #ffffff; }
}

#list_alt {
    animation: turn_page 3s ease infinite;
    animation-delay: 1s;
    transform-origin: center;
    transform-box: fill-box;
    position: relative;
}

@keyframes turn_page {
    from { transform: rotateY(0deg); }
    to   { transform: rotateY(180deg); }
}

#backup_arrow {
    animation: arrow_rotate 3s ease infinite;
    animation-delay: 1s;
    transform-origin: center;
    transform-box: fill-box;
}

@keyframes arrow_rotate {
    from { transform: rotateY(0deg); }
    to   {
        fill: #449d44;
        transform: rotateY(360deg);
    }
}

#euro_symbol {
    animation: euro_fall 3s ease-in infinite;
    position: relative;
    transform-origin: top;
}

@keyframes euro_fall {
    0%   { transform: translateY(0px); }
    15%  {
        transform: translateY(12px);
        -ms-transform: translateY(12px);
    }
    50%  {
        transform: translateY(10px);
        -ms-transform: translateY(10px);
        fill: #ffffff;
    }
    100% { fill: #ffffff; }
}

#wifi_protected_setup-24px_1 {
    animation: wifi_rotate 10s ease infinite;
    transform-origin: center;
    transform-box: fill-box;
    position: relative;
}

@keyframes wifi_rotate {
    0%   { transform: rotateZ(0deg); }
    25%  { transform: rotateZ(180deg); }
    50%  { transform: rotateZ(180deg); }
    75%  { transform: rotateZ(0deg); }
    100% { transform: rotateZ(180deg); }
}


/* =============================================================================
   24. RESPONSIVE OVERRIDES
   ============================================================================= */

/* Extra small devices (≤ 320px) */
@media only screen and (max-width: 320px) {
    #abstract_msg {
        margin-top: -150px;
        margin-bottom: -150px;
    }
    .academy-hero {
        padding: 2rem 0;
    }
}

/* Small devices (320px and up) */
@media only screen and (min-width: 320px) {
    #abstract_msg {
        margin-top: -160px;
        margin-bottom: -150px;
    }
}

/* Medium devices (768px and up) */
@media only screen and (min-width: 768px) {
    #abstract_msg {
        margin-top: -80px;
        margin-bottom: -300px;
    }
}

/* Large devices (992px and up) */
@media only screen and (min-width: 992px) {
    #abstract_msg {
        margin-top: -50px;
        margin-bottom: -180px;
    }
}

/* Mobile navbar adjustments */
@media (max-width: 991.98px) {
    .navbar-pinuno .dropdown-menu {
        border-top: none;
        border-left: 3px solid var(--pa-navbar-accent);
        border-radius: 0;
        background-color: rgba(255, 255, 255, 0.05);
        box-shadow: none;
    }

    .navbar-pinuno .dropdown-menu .dropdown-item {
        color: rgba(255, 255, 255, 0.85);
        border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    }

    .navbar-pinuno .dropdown-menu .dropdown-item:hover {
        background-color: rgba(255, 255, 255, 0.1);
        color: #ffffff;
    }
}

/* ================================================
   Blog / Article
   ================================================ */
.blog-card {
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.blog-card:hover {
    transform: translateY(-8px);
    box-shadow: 0 12px 24px rgba(0, 0, 0, 0.15) !important;
}
.article-content {
    line-height: 1.8;
    font-size: 1.1rem;
    color: #333;
}
.article-content img {
    max-width: 100%;
    height: auto;
    margin: 1.5rem 0;
    border-radius: 0.5rem;
}
.article-content p  { margin-bottom: 1.2rem; }
.article-content h2 { margin-top: 2rem;   margin-bottom: 1rem;   font-weight: 600; }
.article-content h3 { margin-top: 1.5rem; margin-bottom: 0.75rem; font-weight: 600; }
.article-meta       { font-size: 0.95rem; }
@media (max-width: 768px) {
    .article-content { font-size: 1rem; }
}

/* ================================================
   Landing pages — shared card / badge utilities
   ================================================ */
.hover-shadow:hover {
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
    transform: translateY(-2px);
    transition: all 0.3s ease;
}
.badge {
    padding: 0.5rem 0.75rem;
    font-size: 0.85rem;
    margin-right: 0.5rem;
    margin-bottom: 0.5rem;
}
.border-start {
    border-left-width: 4px !important;
}

/* ================================================
   Courses page
   ================================================ */
.courses-subnav .nav-link {
    color: var(--p-azure);
    font-size: 0.875rem;
    font-weight: 500;
    white-space: nowrap;
    border-radius: 2rem;
    padding: 0.35rem 1rem;
}
.courses-subnav .nav-link:hover {
    background: var(--pa-section-alt);
    color: var(--p-azure);
    text-decoration: none !important;
}

.course-cat-logo {
    object-fit: contain;
    flex-shrink: 0;
}

.course-card {
    color: var(--gray-900);
    border-radius: 0.75rem !important;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.course-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12) !important;
    color: var(--gray-900);
}

/* =============================================================================
   FORMS — inline radio & checkbox alignment fix
   Bootstrap 3 assets suppressed in config; this CSS ensures Bootstrap 5
   form-check-inline renders correctly regardless.
   ============================================================================= */

/* Keep inline items horizontal */
.form-check.form-check-inline {
    display: inline-flex !important;
    align-items: center;
    margin-bottom: 0;
}

/* Prevent "Mrs / Miss" label from wrapping mid-word */
.form-check.form-check-inline .form-check-label {
    white-space: nowrap;
}

/* Wrap the radio/checkbox container in flex so the error
   always drops to its own full-width row below the options */
[class*="field-"] > div {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.15rem 0.75rem;
}
[class*="field-"] > div > .invalid-feedback {
    flex-basis: 100%;
    margin-top: 0.15rem;
}

/* Salutation breathing room already handled by gap above */

/* =============================================================================
   FORMS — checkbox & radio visibility
   Bootstrap 5's default checkbox is 1em with a faint #dee2e6 border.
   Increase size and darken the border so boxes are clearly visible.
   ============================================================================= */

.form-check-input[type="checkbox"],
.form-check-input[type="radio"] {
    width: 1.15em;
    height: 1.15em;
    border: 2px solid #6c757d;
    cursor: pointer;
}

.form-check-input[type="checkbox"]:not(:checked),
.form-check-input[type="radio"]:not(:checked) {
    background-color: #fff;
}

.form-check-input:focus {
    border-color: var(--p-azure);
    box-shadow: 0 0 0 0.2rem rgba(30, 90, 190, 0.2);
}

.form-check-input:checked {
    background-color: var(--p-azure);
    border-color: var(--p-azure);
}

.form-check-label {
    cursor: pointer;
}

/* =============================================================================
   WIZARD WIDGET — Bootstrap 5 overrides & Pinuno brand colours
   ============================================================================= */

/* Step indicator circles — override original BS3 wizard CSS */
.wizard li span.round-tab {
    border-color: #dee2e6;
}
/* All icons: visible mid-gray by default */
.wizard li span.round-tab i {
    color: #6c757d !important;
}
/* Disabled steps: lighter border, lighter icon */
.wizard li.disabled span.round-tab {
    border-color: #dee2e6 !important;
}
.wizard li.disabled span.round-tab i {
    color: #ced4da !important;
}
/* Active step: brand colour */
.wizard li.active span.round-tab {
    background: #fff;
    border-color: var(--p-azure) !important;
}
.wizard li.active span.round-tab i {
    color: var(--p-azure) !important;
}
.wizard li.active:after {
    border-bottom-color: var(--p-azure);
}

/* Connecting line */
.wizard .connecting-line {
    background: #dee2e6;
}

/* Tab pane spacing */
.wizard .tab-pane {
    padding-top: 2rem;
    max-width: 640px;
    margin: 0 auto;
}

/* Hide Bootstrap 3 tab borders on wizard nav */
.wizard .nav-tabs {
    border-bottom: none;
}
.wizard .nav-tabs > li > a {
    border: none !important;
    background: transparent !important;
}

/* =============================================================================
   COURSE PAGES — Mobile responsive overrides
   ============================================================================= */

/* Hero headings: scale down on small screens */
@media (max-width: 767.98px) {
    .display-5 { font-size: 1.75rem !important; }
    .display-6 { font-size: 1.5rem !important; }
}

/* Assessment tables: compact text on small screens */
@media (max-width: 575.98px) {
    .table th,
    .table td {
        font-size: 0.8rem;
        padding: 0.35rem 0.5rem;
    }
}

/* Sidebar stacks below main on mobile — ensure no negative gap */
@media (max-width: 991.98px) {
    .col-lg-4 .card { margin-bottom: 1rem; }
}

/* =============================================================================
   MOBILE — global responsive fixes
   ============================================================================= */

/* Hero: no min-height on phones so content breathes naturally */
@media (max-width: 575.98px) {
    [data-hero] {
        min-height: unset !important;
    }
}

/* Newsletter + verify-cert: stack input + button vertically on small phones.
   Bootstrap sets width:1% on .input-group > .form-control; override to 100%
   when the group is in column layout or the input is the full row. */
@media (max-width: 480px) {
    .newsletter-group {
        flex-direction: column;
    }
    .newsletter-group .form-control {
        width: 100% !important;
        border-radius: 2rem !important;
        margin-bottom: 0.5rem;
    }
    .newsletter-group .btn {
        border-radius: 2rem !important;
        width: 100%;
    }

    .verify-cert-group {
        flex-direction: column;
    }
    .verify-cert-group .form-control {
        width: 100% !important;
        border-radius: 0.5rem !important;
        margin-bottom: 0.5rem;
    }
    .verify-cert-group .btn {
        width: 100%;
        border-radius: 0.5rem !important;
    }
}

/* Step indicator: shrink circles + connectors so 4 steps fit on any phone */
.step-indicator-item {
    min-width: 70px;
}
@media (max-width: 400px) {
    .step-indicator-item {
        min-width: 52px;
    }
    .step-indicator-item small {
        font-size: 0.6rem !important;
    }
    .step-indicator .flex-grow-1 {
        max-width: 20px !important;
    }
}

/* Form field rows inside registration forms: stack on phones */
@media (max-width: 575.98px) {
    .registration-form .row > [class*="col-md-"],
    .registration-form .row > [class*="col-sm-"] {
        flex: 0 0 100%;
        max-width: 100%;
    }
}

/* Touch targets: ensure all nav links and buttons hit 44px */
@media (max-width: 991.98px) {
    .navbar-nav .nav-link,
    .navbar-nav .dropdown-item {
        min-height: 44px;
        display: flex;
        align-items: center;
    }
}

/* Category cards: 2-col works on mobile, but tighten padding */
@media (max-width: 575.98px) {
    .category-card {
        padding: 0.75rem !important;
    }
    .category-card .bi.fs-2 {
        font-size: 1.5rem !important;
    }
}

/* Tables: allow horizontal scroll rather than breaking layout */
@media (max-width: 575.98px) {
    .table-responsive-always {
        display: block;
        width: 100%;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
}

/* Utility: prevent long words/emails from causing horizontal overflow */
body {
    overflow-x: hidden;
    word-break: break-word;
}

/* =============================================================================
   HERO GRADIENTS — Academy tracks
   ============================================================================= */
.hero-track-php {
    background: linear-gradient(135deg, #052d6b 0%, #0a57cc 60%, #0d6efd 100%);
}
.hero-track-wso2 {
    background: linear-gradient(135deg, #2d0a6b 0%, #520fba 60%, #6610f2 100%);
}
.hero-track-zoho {
    background: linear-gradient(135deg, #7a2e0b 0%, #b45309 60%, #d97706 100%);
}
.hero-track-ict {
    background: linear-gradient(135deg, #0a3320 0%, #1A7A4A 60%, #2a9c5e 100%);
}

/* =============================================================================
   HERO GRADIENTS — Service / consultancy / development pages
   ============================================================================= */
.hero-svc-consultancy {
    background: linear-gradient(135deg, #0a1628 0%, #1A2D4E 60%, #1a4080 100%);
}
.hero-svc-development {
    background: linear-gradient(135deg, #1e2838 0%, #2a3d58 60%, #3a5578 100%);
}
.hero-svc-offshore {
    background: linear-gradient(135deg, #062028 0%, #0a3a48 60%, #0d6070 100%);
}
.hero-svc-onsite {
    background: linear-gradient(135deg, #1e2838 0%, #2a3d58 60%, #3a5578 100%);
}
.hero-svc-pm {
    background: linear-gradient(135deg, #1a0d2a 0%, #3a1a5e 60%, #6a3aaa 100%);
}
.hero-svc-poc {
    background: linear-gradient(135deg, #1a1c24 0%, #252838 60%, #363a54 100%);
}
.hero-svc-server {
    background: linear-gradient(135deg, #1a1a2a 0%, #2a2a4e 60%, #3a3a8a 100%);
}
.hero-svc-admin {
    background: linear-gradient(135deg, #0d2a1a 0%, #1a5c38 60%, #228c55 100%);
}

/* =============================================================================
   HERO LAYOUT UTILITIES
   ============================================================================= */
/* Sub-label above h1 */
.text-eyebrow {
    letter-spacing: .12em;
}

/* Right-hand feature list column, hidden on mobile */
.hero-feature-col {
    max-width: 280px;
    margin-left: auto;
}

/* Opacity helper used in hero text */
.opacity-85 {
    opacity: .85;
}

/* =============================================================================
   SERVICE ICON AVATAR (consultancy / development service cards)
   ============================================================================= */
.svc-icon-avatar {
    width: 48px;
    height: 48px;
    border-radius: .75rem;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.35rem;
    flex-shrink: 0;
}

/* =============================================================================
   ICON CIRCLE AVATARS (generic rounded icon containers)
   Usage: <div class="icon-circle icon-circle-48 bg-primary bg-opacity-10">
   ============================================================================= */
.icon-circle {
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.icon-circle-40 { width: 40px; height: 40px; }
.icon-circle-44 { width: 44px; height: 44px; }
.icon-circle-48 { width: 48px; height: 48px; }
.icon-circle-56 { width: 56px; height: 56px; }
.icon-circle-60 { width: 60px; height: 60px; }
.icon-circle-72 { width: 72px; height: 72px; }

/* =============================================================================
   TRACK CARDS (index "What We Teach" section)
   CSS-only hover replaces inline onmouseover/onmouseout handlers
   ============================================================================= */
.track-card {
    transition: transform .18s, box-shadow .18s;
    position: relative;
    cursor: pointer;
}
.track-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 32px rgba(0, 0, 0, .13) !important;
}

/* =============================================================================
   COURSES SUBNAV — sticky offset
   ============================================================================= */
.subnav-sticky {
    top: 56px;
    z-index: 900;
}

/* =============================================================================
   SIDEBAR CTA GRADIENTS (match hero, used in inline style blocks)
   These are declared here for reference but applied via class where possible.
   ============================================================================= */
.sidebar-cta-php {
    background: linear-gradient(135deg, #052d6b 0%, #0d6efd 100%);
}
.sidebar-cta-wso2 {
    background: linear-gradient(135deg, #2d0a6b 0%, #6610f2 100%);
}
.sidebar-cta-zoho {
    background: linear-gradient(135deg, #0a4228 0%, #198754 100%);
}
.sidebar-cta-ict {
    background: linear-gradient(135deg, #3d1a00 0%, #c96208 100%);
}
.sidebar-cta-offshore {
    background: linear-gradient(135deg, #062028 0%, #0d6070 100%);
}
.sidebar-cta-onsite {
    background: linear-gradient(135deg, #1e2838 0%, #3a5578 100%);
}
.sidebar-cta-pm {
    background: linear-gradient(135deg, #1a0d2a 0%, #6a3aaa 100%);
}
.sidebar-cta-poc {
    background: linear-gradient(135deg, #1a1c24 0%, #363a54 100%);
}
.sidebar-cta-server {
    background: linear-gradient(135deg, #1a1a2a 0%, #3a3a8a 100%);
}
.sidebar-cta-admin {
    background: linear-gradient(135deg, #0d2a1a 0%, #228c55 100%);
}
.sidebar-cta-consultancy {
    background: linear-gradient(135deg, #0a1628 0%, #1a4080 100%);
}
.sidebar-cta-development {
    background: linear-gradient(135deg, #1e2838 0%, #3a5578 100%);
}

/* =============================================================================
   ICON BOXES — sized squares/circles for feature icons
   Usage: <div class="icon-box icon-box--green rounded-circle"> <i class="bi ..."></i> </div>
   ============================================================================= */
.icon-box {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
/* Sizes */
.icon-box-xs  { width: 40px;  height: 40px;  min-width: 40px;  }
.icon-box-sm  { width: 48px;  height: 48px;  }
.icon-box-md  { width: 52px;  height: 52px;  }
.icon-box-lg  { width: 56px;  height: 56px;  }
.icon-box-xl  { width: 64px;  height: 64px;  }
.icon-box-2xl { width: 72px;  height: 72px;  }
/* Colour fills */
.icon-box--green      { background: #E8F5E9; }
.icon-box--blue       { background: #EBF2FF; }
.icon-box--blue-dark  { background: #1A56A020; color: #1A56A0; }
.icon-box--orange     { background: #FFF3E0; }
.icon-box--amber      { background: #FFF8E1; }
.icon-box--pink       { background: #FCE4EC; }
.icon-box--purple     { background: #F3E5F5; }
.icon-box--teal       { background: #E0F7FA; }
.icon-box--white      { background: #fff; }
.icon-box--ghost      { background: rgba(255,255,255,.15); }
.icon-box--primary-grad { background: linear-gradient(135deg, var(--p-azure) 0%, var(--p-navy) 100%); }
.icon-box--blue-grad  { background: linear-gradient(135deg, #0d6efd, #0a1628); }
.icon-box--green-grad { background: linear-gradient(135deg, #1A7A4A 0%, #0D5C38 100%); }
/* Dark mode: make light fills slightly translucent so they read on dark bg */
[data-bs-theme="dark"] .icon-box--green      { background: rgba(34,197,94,.15);  }
[data-bs-theme="dark"] .icon-box--blue       { background: rgba(59,130,246,.15); }
[data-bs-theme="dark"] .icon-box--blue-dark  { background: rgba(26,86,160,.25);  }
[data-bs-theme="dark"] .icon-box--orange     { background: rgba(251,146,60,.15); }
[data-bs-theme="dark"] .icon-box--amber      { background: rgba(251,191,36,.15); }
[data-bs-theme="dark"] .icon-box--pink       { background: rgba(244,114,182,.15);}
[data-bs-theme="dark"] .icon-box--purple     { background: rgba(167,139,250,.15);}
[data-bs-theme="dark"] .icon-box--white      { background: rgba(255,255,255,.08);}

/* =============================================================================
   COOKIE BANNER
   ============================================================================= */
#cookie-banner {
    position: fixed;
    bottom: 0; left: 0; right: 0;
    z-index: 9999;
    background: #212529;
    color: #fff;
    padding: .75rem 1rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: .75rem;
    box-shadow: 0 -2px 8px rgba(0,0,0,.3);
}
#cookie-banner p { flex: 1; }
#cookie-accept-btn { min-height: 44px; min-width: 80px; }

/* =============================================================================
   ADMIN — layout & component utilities
   ============================================================================= */
/* Sidebar version label */
.admin-panel-label {
    font-size: .7rem;
    color: rgba(255,255,255,.4);
    letter-spacing: .05em;
}
/* Dashboard stat value */
.admin-stat-num {
    font-size: 1.75rem;
    font-weight: 700;
    line-height: 1;
    color: #0d1b2a;
}
[data-bs-theme="dark"] .admin-stat-num { color: var(--gray-900); }
/* Narrow form cards (newsletter compose, enrol-user etc.) */
.admin-form-card { max-width: 760px; }
.admin-form-card-md { max-width: 640px; }
/* Scrollable checklist inside a card body */
.scrollable-list {
    max-height: 320px;
    overflow-y: auto;
}
/* Truncated cell text */
.cell-truncate {
    max-width: 220px;
    display: inline-block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
/* Fixed-width inline selects in admin table rows */
.select-w-130 { width: 130px; }
.select-w-140 { width: 140px; }
.select-w-145 { width: 145px; }
.select-w-160 { width: 160px; }
.search-input-sm { width: 220px; }

/* Promoter / person avatar circle */
.promoter-avatar {
    width: 56px; height: 56px;
    background: linear-gradient(135deg, #0d6efd, #0a1628);
}

/* Modal warning icon */
.modal-warn-icon {
    font-size: 2rem;
    display: block;
}

/* Theme toggle icon size */
.theme-icon { font-size: .9rem; }

/* =============================================================================
   Required field indicators — Yii2 ActiveForm adds .required to field wrappers
   ============================================================================= */
.field-wrapper.required > label:first-of-type::after,
div[class*="field-"].required > label:first-of-type::after {
    content: ' *';
    color: var(--bs-danger, #CE1126);
    font-weight: 600;
}

/* =============================================================================
   Dark mode — Bootstrap 5.3 data-bs-theme="dark" overrides
   ============================================================================= */

/* ── 1. Flip all gray-scale CSS variables so every rule using them adapts ── */
[data-bs-theme="dark"] {
    --bs-body-bg:    #0f1117;
    --bs-body-color: #e2e8f0;

    /* Gray scale — inverted for dark backgrounds */
    --gray-50:  #1a1f2e;
    --gray-100: #242938;
    --gray-200: #2e3547;
    --gray-300: #3d4660;
    --gray-400: #6b7280;
    --gray-500: #9ca3af;
    --gray-600: #cbd5e1;
    --gray-700: #e2e8f0;
    --gray-800: #f1f5f9;
    --gray-900: #f8fafc;

    /* Section backgrounds */
    --pa-section-alt: #141923;

    /* Bootstrap card / border token */
    --bs-card-bg:           #1a1f2e;
    --bs-card-border-color: rgba(255,255,255,.08);
    --bs-border-color:      rgba(255,255,255,.10);

    /* Bootstrap light/secondary bg utilities */
    --bs-light-bg-subtle:      #1e2333;
    --bs-secondary-bg:         #1a1f2e;
    --bs-tertiary-bg:          #141923;
}

/* ── 2. Hardcoded white / light backgrounds that CSS vars can't reach ─────── */
[data-bs-theme="dark"] .step-card,
[data-bs-theme="dark"] .course-card,
[data-bs-theme="dark"] .blog-card,
[data-bs-theme="dark"] .admin-card,
[data-bs-theme="dark"] .track-card,
[data-bs-theme="dark"] .testimonial-card {
    background-color: #1a1f2e !important;
    border-color: rgba(255,255,255,.08) !important;
}

/* Sections that use hardcoded bg-white or bg:#fff inline */
[data-bs-theme="dark"] section.bg-white,
[data-bs-theme="dark"] .bg-white {
    background-color: #1a1f2e !important;
}
[data-bs-theme="dark"] .bg-light {
    background-color: #1e2333 !important;
}

/* Table striped / thead */
[data-bs-theme="dark"] .table-light {
    --bs-table-bg: #1e2333;
    --bs-table-color: #e2e8f0;
    --bs-table-border-color: rgba(255,255,255,.08);
}

/* Inline-styled white card surfaces (service cards, landing pages) */
[data-bs-theme="dark"] [style*="background:#fff"],
[data-bs-theme="dark"] [style*="background: #fff"],
[data-bs-theme="dark"] [style*="background-color:#fff"],
[data-bs-theme="dark"] [style*="background-color: #fff"],
[data-bs-theme="dark"] [style*="background:white"],
[data-bs-theme="dark"] [style*="background: white"],
[data-bs-theme="dark"] [style*="background-color:white"],
[data-bs-theme="dark"] [style*="background-color: white"] {
    background-color: #1a1f2e !important;
    background: #1a1f2e !important;
}

/* Article body prose */
[data-bs-theme="dark"] .article-content {
    color: #cbd5e1;
}
[data-bs-theme="dark"] .article-content h1,
[data-bs-theme="dark"] .article-content h2,
[data-bs-theme="dark"] .article-content h3,
[data-bs-theme="dark"] .article-content h4 {
    color: #f1f5f9;
}

/* Frosted stat cards on hero — already semi-transparent; just darken slightly */
[data-bs-theme="dark"] .hero-stat-card {
    background: rgba(255,255,255,.06);
    border-color: rgba(255,255,255,.12);
}

/* Footer */
[data-bs-theme="dark"] .pinuno-footer {
    background-color: #0a0d14;
    border-top-color: rgba(255,255,255,.08);
}

/* Form controls */
[data-bs-theme="dark"] .form-control,
[data-bs-theme="dark"] .form-select {
    background-color: #1e2333;
    border-color: rgba(255,255,255,.15);
    color: #e2e8f0;
}
[data-bs-theme="dark"] .form-control::placeholder {
    color: #6b7280;
}
[data-bs-theme="dark"] .form-control:focus,
[data-bs-theme="dark"] .form-select:focus {
    background-color: #242938;
    border-color: var(--p-green-primary);
    color: #f1f5f9;
    box-shadow: 0 0 0 .2rem rgba(26,122,74,.25);
}

/* Input groups */
[data-bs-theme="dark"] .input-group-text {
    background-color: #1e2333;
    border-color: rgba(255,255,255,.15);
    color: #9ca3af;
}

/* Alerts — lighten background in dark mode */
[data-bs-theme="dark"] .alert-warning {
    background-color: rgba(251,191,36,.12);
    border-color: rgba(251,191,36,.3);
    color: #fde68a;
}
[data-bs-theme="dark"] .alert-info {
    background-color: rgba(59,130,246,.12);
    border-color: rgba(59,130,246,.3);
    color: #bfdbfe;
}
[data-bs-theme="dark"] .alert-success {
    background-color: rgba(34,197,94,.12);
    border-color: rgba(34,197,94,.3);
    color: #bbf7d0;
}
[data-bs-theme="dark"] .alert-danger {
    background-color: rgba(239,68,68,.12);
    border-color: rgba(239,68,68,.3);
    color: #fecaca;
}

/* Badges — subtle variants */
[data-bs-theme="dark"] .bg-light-subtle,
[data-bs-theme="dark"] .bg-success-subtle { background-color: rgba(34,197,94,.15) !important; }
[data-bs-theme="dark"] .bg-info-subtle    { background-color: rgba(59,130,246,.15) !important; }
[data-bs-theme="dark"] .bg-warning-subtle { background-color: rgba(251,191,36,.15) !important; }
[data-bs-theme="dark"] .bg-danger-subtle  { background-color: rgba(239,68,68,.15)  !important; }
[data-bs-theme="dark"] .text-success { color: #4ade80 !important; }
[data-bs-theme="dark"] .text-info    { color: #60a5fa !important; }
[data-bs-theme="dark"] .text-warning { color: #fbbf24 !important; }
[data-bs-theme="dark"] .text-danger  { color: #f87171 !important; }
[data-bs-theme="dark"] .text-muted   { color: #9ca3af !important; }

/* Dropdown menus */
[data-bs-theme="dark"] .dropdown-menu {
    background-color: #1e2333;
    border-color: rgba(255,255,255,.1);
}
[data-bs-theme="dark"] .dropdown-item {
    color: #e2e8f0;
}
[data-bs-theme="dark"] .dropdown-item:hover,
[data-bs-theme="dark"] .dropdown-item:focus {
    background-color: #2e3547;
    color: #f1f5f9;
}

/* ── 3. Hero / section backgrounds that use inline styles or fixed values ─── */
[data-bs-theme="dark"] .academy-hero {
    background: linear-gradient(135deg, #0a1e3d 0%, #0d3b6e 100%);
}

/* ── 4. Navbar stays dark-branded in both modes ─────────────────────────── */
[data-bs-theme="dark"] .navbar-pinuno {
    background-color: var(--pa-navbar-bg);
}

/* Dark mode toggle button */
#theme-toggle {
    background: none;
    border: 1px solid rgba(255,255,255,.3);
    border-radius: 50%;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: rgba(255,255,255,.85);
    cursor: pointer;
    transition: border-color .2s, background .2s;
    padding: 0;
    flex-shrink: 0;
}
#theme-toggle:hover {
    background: rgba(255,255,255,.1);
    border-color: rgba(255,255,255,.6);
}


/* ── Free Development Environment Setup Cards ─────────────────────────── */

.env-setup-card {
  background: #ffffff;
  border-radius: 12px;
  border: 1px solid #e5e7eb;
  box-shadow: 0 1px 3px rgba(0,0,0,.06), 0 4px 16px rgba(0,0,0,.04);
  overflow: hidden;
}

/* Header strip with icon + title */
.env-setup-header {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 20px 24px 16px;
  border-bottom: 1px solid #f3f4f6;
}

.env-setup-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 10px;
  background: #eff6ff;
  color: #3b82f6;
  font-size: 1.2rem;
  flex-shrink: 0;
}

/* Track colour variants */
.env-setup-card--wso2 .env-setup-icon  { background: #fff7ed; color: #f97316; }
.env-setup-card--linux .env-setup-icon { background: #f0fdf4; color: #10b981; }
.env-setup-card--zoho .env-setup-icon  { background: #fff1f2; color: #e11d48; }
.env-setup-card--basics .env-setup-icon{ background: #f5f3ff; color: #8b5cf6; }

.env-setup-icon--sm {
  width: 34px;
  height: 34px;
  font-size: 1rem;
  border-radius: 8px;
}

.env-setup-label {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #9ca3af;
  margin-bottom: 2px;
}

.env-setup-title {
  font-size: 1.05rem;
  font-weight: 700;
  color: #061f3a;
  line-height: 1.3;
}

.env-setup-intro {
  padding: 16px 24px 0;
  color: #6b7280;
  font-size: 0.9rem;
  margin: 0;
}

/* Option cards */
.env-options {
  padding: 16px 24px 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.env-options--grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

@media (max-width: 640px) {
  .env-options--grid { grid-template-columns: 1fr; }
}

.env-option {
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  padding: 14px 16px;
  background: #fafafa;
  transition: border-color .15s, box-shadow .15s;
}

.env-option:hover {
  border-color: #d1d5db;
  box-shadow: 0 2px 8px rgba(0,0,0,.06);
}

.env-option--recommended {
  border-color: #bbf7d0;
  background: #f0fdf4;
}

.env-option-header {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 10px;
}

.env-option-num {
  font-size: 0.65rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  color: #9ca3af;
  background: #e5e7eb;
  padding: 3px 7px;
  border-radius: 4px;
  flex-shrink: 0;
  margin-top: 2px;
}

.env-option--recommended .env-option-num {
  background: #dcfce7;
  color: #15803d;
}

.env-option-name {
  font-size: 0.9rem;
  font-weight: 700;
  color: #111827;
  line-height: 1.4;
}

.env-option-desc {
  font-size: 0.8rem;
  color: #6b7280;
  margin-top: 1px;
}

/* Steps list */
.env-steps {
  margin: 0 0 10px 0;
  padding-left: 18px;
  font-size: 0.82rem;
  color: #374151;
  line-height: 1.6;
}

.env-steps li { margin-bottom: 4px; }
.env-steps a  { color: #2563eb; text-decoration: none; font-weight: 500; }
.env-steps a:hover { text-decoration: underline; }

/* Stat pills */
.env-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 10px;
}

.env-pill {
  display: inline-flex;
  align-items: center;
  font-size: 0.73rem;
  font-weight: 600;
  padding: 3px 10px;
  border-radius: 999px;
  line-height: 1.4;
}

.env-pill--free {
  background: #dcfce7;
  color: #15803d;
}

.env-pill--req {
  background: #f3f4f6;
  color: #6b7280;
}

/* Warning block (WSO2) */
.env-warning {
  margin: 0 24px 20px;
  padding: 12px 16px;
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: 8px;
  font-size: 0.83rem;
  color: #92400e;
}

/* Help note (basics) */
.env-help-note {
  margin: 0 24px 20px;
  padding: 12px 16px;
  background: #eff6ff;
  border-radius: 8px;
  font-size: 0.83rem;
  color: #1e40af;
}

.env-help-note a {
  color: #1d4ed8;
  font-weight: 600;
  text-decoration: none;
}

.env-help-note a:hover { text-decoration: underline; }

/* =============================================================================
   Article body typography
   ============================================================================= */
.article-body h2 { margin-top: 2rem; margin-bottom: 0.5rem; }
.article-body h3 { margin-top: 1.5rem; margin-bottom: 0.4rem; }
