/*
Theme Name: Progression Search Child
Theme URI: https://progressionsearch.com
Author: Lost Communications
Author URI: https://lostcom.com
Description: Child theme for Progression Search, based on Hello Elementor. Faithful conversion of the current Joomla (Gantry 5 Hydrogen) template into WordPress. Brand tokens extracted from the live template CSS.
Template: hello-elementor
Version: 0.5.1
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: progression-search-child
*/

/* ============================================================
   Brand tokens — extracted verbatim from the live Gantry 5
   Hydrogen template (custom_16.css). Orange #fc7216 is the
   dominant accent; teal family is the secondary palette.
   ============================================================ */
:root {
    --ps-color-primary: #fc7216;        /* original brand orange (operator-locked) */
    --ps-color-primary-dark: #e35f08;   /* orange hover */
    --ps-color-primary-light: #fc9550;  /* light orange */
    --ps-color-accent-bright: #fc7216;  /* live brand orange — DECORATIVE use only (underlines, borders), never text */
    --ps-color-secondary: #014447;      /* dark teal */
    --ps-color-accent: #439a86;         /* teal-green */
    --ps-color-deep: #084f60;           /* deep teal-blue */
    --ps-color-text: #333333;
    --ps-color-muted: #666666;
    --ps-color-bg: #ffffff;
    --ps-color-bg-alt: #f6f6f6;
    --ps-color-border: #e3e6ea;

    --ps-font-heading: 'Novecentowide DemiBold', 'Calibri', 'Segoe UI', sans-serif;
    --ps-font-body: 'Calibri', 'Segoe UI', system-ui, -apple-system, sans-serif;

    --ps-container: 1180px;
    --ps-radius: 6px;
}

/* ---------------------------------------------------------- base typography */
body {
    font-family: var(--ps-font-body);
    color: var(--ps-color-text);
    background: var(--ps-color-bg);
    line-height: 1.6;
}

h1, h2, h3, h4, h5, h6,
.ps-heading {
    font-family: var(--ps-font-heading);
    color: var(--ps-color-secondary);
    font-weight: 700;
    line-height: 1.2;
}

h1 { font-size: 2.4rem; }
h2 { font-size: 1.9rem; }
h3 { font-size: 1.4rem; }

a {
    color: var(--ps-color-primary);
    text-decoration: none;
    transition: color .15s ease;
}
a:hover { color: var(--ps-color-primary-dark); }

/* Section heading rhythm used across pages (e.g. "MEET THE TEAM") */
.ps-section-title {
    text-transform: uppercase;
    letter-spacing: 1px;
    text-align: center;
    margin: 0 0 .35em;
}
.ps-section-title:after {
    content: "";
    display: block;
    width: 64px;
    height: 3px;
    background: var(--ps-color-accent-bright);
    margin: .6rem auto 0;
}
.ps-section-lead {
    text-align: center;
    color: var(--ps-color-muted);
    max-width: 760px;
    margin: 0 auto 2.5rem;
}

/* ---------------------------------------------------------- layout helpers */
.ps-container { max-width: var(--ps-container); margin: 0 auto; padding: 0 20px; }
.ps-section { padding: 4rem 0; }
.ps-section--alt { background: var(--ps-color-bg-alt); }
.ps-section--brand { background: var(--ps-color-secondary); color: #fff; }
.ps-section--brand h1, .ps-section--brand h2, .ps-section--brand h3 { color: #fff; }
.ps-grid { display: grid; gap: 1.75rem; }
@media (min-width: 600px) { .ps-grid--2 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 900px) { .ps-grid--3 { grid-template-columns: repeat(3, 1fr); } .ps-grid--4 { grid-template-columns: repeat(4, 1fr); } }

/* ---------------------------------------------------------- buttons */
.ps-btn,
.wp-block-button__link,
button.ps-btn {
    display: inline-block;
    background: var(--ps-color-primary);
    color: #fff;
    font-family: var(--ps-font-heading);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .5px;
    padding: .8rem 1.8rem;
    border-radius: var(--ps-radius);
    border: 0;
    cursor: pointer;
    transition: background .15s ease;
}
.ps-btn:hover, .wp-block-button__link:hover { background: var(--ps-color-primary-dark); color: #fff; }
.ps-btn--ghost {
    background: transparent;
    border: 2px solid #fff;
    color: #fff;
}
.ps-btn--secondary { background: var(--ps-color-secondary); }

/* ---------------------------------------------------------- hero */
.ps-hero {
    position: relative;
    color: #fff;
    background: var(--ps-color-secondary);
    background-size: cover;
    background-position: center;
    text-align: center;
    padding: 6rem 20px;
}
.ps-hero:before {
    content: "";
    position: absolute; inset: 0;
    background: linear-gradient(rgba(1,68,71,.62), rgba(8,79,96,.72));
}
.ps-hero > * { position: relative; z-index: 1; }
.ps-hero h1 { color: #fff; font-size: 2.8rem; margin-bottom: .5rem; }
.ps-hero p { font-size: 1.25rem; max-width: 720px; margin: 0 auto 1.8rem; }

.ps-hero--page { padding: 3.4rem 20px; }
.ps-hero--page h1 { font-size: 2.2rem; }

/* interior page content typography */
.ps-page-content { font-size: 1.05rem; }
.ps-page-content h2 { margin-top: 2rem; }
.ps-page-content h3 { margin-top: 1.5rem; color: var(--ps-color-primary); }
.ps-page-content ul { padding-left: 1.25rem; }
.ps-page-content img { max-width: 100%; height: auto; border-radius: var(--ps-radius); }

/* article / insights cards */
.ps-article-grid { list-style: none; margin: 0; padding: 0; }
.ps-article-card { background:#fff; border:1px solid var(--ps-color-border); border-radius:var(--ps-radius); overflow:hidden; }
.ps-article-card img { width:100%; height:180px; object-fit:cover; display:block; }
.ps-article-card .ps-article-body { padding:1.1rem 1.25rem; }
.ps-article-card h3 { margin:0 0 .4rem; font-size:1.15rem; }
/* branded placeholder when a post has no usable featured image */
.ps-article-noimg { display:flex; align-items:center; justify-content:center; height:180px;
    background:linear-gradient(135deg, var(--ps-color-secondary), var(--ps-color-deep)); }
.ps-article-noimg span { font-family:var(--ps-font-heading); font-weight:700; letter-spacing:2px;
    text-transform:uppercase; color:rgba(255,255,255,.9); font-size:1.15rem; }
.ps-article-noimg:hover span { color:#fff; }

/* ---------------------------------------------------------- staff grid */
.ps-staff-grid { list-style: none; margin: 0; padding: 0; }
.ps-staff-card {
    background: #fff;
    border: 1px solid var(--ps-color-border);
    border-radius: var(--ps-radius);
    overflow: hidden;
    text-align: center;
    transition: box-shadow .15s ease, transform .15s ease;
}
.ps-staff-card:hover { box-shadow: 0 8px 24px rgba(0,0,0,.10); transform: translateY(-3px); }
.ps-staff-card a { color: inherit; display: block; }
.ps-staff-card img { width: 100%; height: auto; display: block; aspect-ratio: 1/1; object-fit: cover; }
.ps-staff-card .ps-staff-name { font-family: var(--ps-font-heading); color: var(--ps-color-secondary); margin: 1rem 0 .15rem; font-size: 1.15rem; }
.ps-staff-card .ps-staff-role { color: var(--ps-color-primary); font-weight: 600; font-size: .9rem; text-transform: uppercase; letter-spacing: .5px; margin-bottom: 1rem; }

/* single staff */
.ps-staff-single { max-width: 920px; margin: 0 auto; padding: 3rem 20px; }
.ps-staff-single .ps-staff-head { display: grid; gap: 2rem; align-items: start; }
@media (min-width: 700px){ .ps-staff-single .ps-staff-head { grid-template-columns: 280px 1fr; } }
.ps-staff-single img.ps-staff-photo { width: 100%; border-radius: var(--ps-radius); }
.ps-staff-single .ps-staff-role { color: var(--ps-color-primary); text-transform: uppercase; font-weight: 600; letter-spacing: .5px; }
.ps-staff-single blockquote.ps-staff-quote {
    border-left: 4px solid var(--ps-color-primary);
    margin: 1.25rem 0;
    padding: .25rem 0 .25rem 1.25rem;
    font-style: italic;
    color: var(--ps-color-secondary);
}
.ps-staff-bio h4 { color: var(--ps-color-primary); margin: 1.4rem 0 .3rem; }

/* ---------------------------------------------------------- testimonials */
.ps-testimonials { list-style: none; margin: 0; padding: 0; }
.ps-testimonial {
    background: #fff;
    border: 1px solid var(--ps-color-border);
    border-top: 3px solid var(--ps-color-accent-bright);
    border-radius: var(--ps-radius);
    padding: 1.6rem;
    display: flex;
    flex-direction: column;
}
.ps-testimonial .ps-quote { font-style: italic; color: var(--ps-color-text); margin: 0 0 1rem; }
.ps-testimonial .ps-quote:before { content: "\201C"; color: var(--ps-color-accent-bright); font-size: 2rem; line-height: 0; vertical-align: -0.4em; margin-right: .15em; }
.ps-testimonial .ps-attr { margin-top: auto; }
.ps-testimonial .ps-attr-name { font-family: var(--ps-font-heading); font-weight: 600; color: var(--ps-color-secondary); }
.ps-testimonial .ps-attr-meta { color: var(--ps-color-muted); font-size: .88rem; }

/* ---------------------------------------------------------- tiles (services / articles) */
.ps-tile {
    background: #fff;
    border: 1px solid var(--ps-color-border);
    border-radius: var(--ps-radius);
    overflow: hidden;
}
.ps-tile img { width: 100%; height: 190px; object-fit: cover; display: block; }
.ps-tile .ps-tile-body { padding: 1.25rem; }
.ps-tile h3 { margin-top: 0; }

/* ---------------------------------------------------------- application/contact forms (theme the companion plugin form too) */
.lostcom-bullhorn-apply-form { border-color: var(--ps-color-border); }
.fluentform .ff-btn-submit,
.wpcf7-submit { background: var(--ps-color-primary) !important; color: #fff !important; border: 0 !important; }

/* ---------------------------------------------------------- footer tweaks */
.ps-footer-cta { background: var(--ps-color-primary); color: #fff; text-align: center; padding: 2.5rem 20px; }
.ps-footer-cta h2 { color: #fff; }

/* ---------------------------------------------------------- a11y */
:focus-visible { outline: 2px solid var(--ps-color-primary); outline-offset: 2px; }
.screen-reader-text { position: absolute !important; clip: rect(1px,1px,1px,1px); width: 1px; height: 1px; overflow: hidden; }
.screen-reader-text:focus { position: static !important; width: auto; height: auto; clip: auto; background: #fff; padding: .5rem 1rem; z-index: 100; }

/* ==========================================================================
   SITE HEADER (dark top nav bar) — faithful to the live Gantry template
   ========================================================================== */
.ps-site-header { width: 100%; }
.ps-topbar { background: #1a1a1a; color: #fff; }
.ps-topbar-inner { display: flex; align-items: center; gap: 1rem; min-height: 46px; }
.ps-brand-mini {
    font-family: var(--ps-font-heading); font-weight: 700; letter-spacing: 1px;
    color: #fff; font-size: .95rem; text-transform: uppercase; white-space: nowrap;
}
.ps-brand-mini span { color: var(--ps-color-accent-bright); margin-left: 3px; }
.ps-brand-mini:hover { color: #fff; }

.ps-primary-nav { display: flex; align-items: center; gap: .75rem; margin-left: auto; }
.ps-menu { display: flex; list-style: none; margin: 0; padding: 0; gap: 0; flex-wrap: nowrap; }
.ps-menu a {
    display: block; color: #fff; font-family: var(--ps-font-heading); font-weight: 600;
    font-size: .72rem; text-transform: uppercase; letter-spacing: .3px; padding: .5rem .5rem; white-space: nowrap;
}
@media (min-width: 1200px){ .ps-menu a { padding: .5rem .62rem; letter-spacing: .5px; } }
.ps-menu a:hover, .ps-menu .current-menu-item > a { color: var(--ps-color-accent-bright); }
.ps-menu .sub-menu { display: none; }

.ps-topbar-actions { display: flex; align-items: center; gap: .8rem; }
.ps-subscribe-btn {
    background: var(--ps-color-primary); color: #fff; font-family: var(--ps-font-heading);
    font-weight: 700; font-size: .72rem; text-transform: uppercase; letter-spacing: .5px;
    padding: .5rem .95rem; border-radius: 3px;
}
.ps-subscribe-btn:hover { background: var(--ps-color-primary); color: #fff; }
.ps-social { display: inline-flex; gap: .5rem; align-items: center; }
.ps-social a { color: #cfd4d8; display: inline-flex; padding: 5px; }
.ps-social a:hover { color: var(--ps-color-accent-bright); }

.ps-nav-toggle { display: none; flex-direction: column; gap: 5px; background: none; border: 0; cursor: pointer; margin-left: auto; padding: 6px; }
.ps-nav-toggle span { width: 26px; height: 2px; background: #fff; transition: transform .2s, opacity .2s; }
.ps-nav-toggle.is-open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.ps-nav-toggle.is-open span:nth-child(2) { opacity: 0; }
.ps-nav-toggle.is-open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ==========================================================================
   HERO SLIDER
   ========================================================================== */
.ps-hero-slider { position: relative; background: #fff; overflow: hidden; }
.ps-slides { position: relative; }
.ps-slide { position: absolute; inset: 0; opacity: 0; transition: opacity .8s ease; display: flex; align-items: center; justify-content: center; }
.ps-slide.is-active { position: relative; opacity: 1; }
.ps-slide img { max-width: 1100px; width: 100%; height: auto; display: block; margin: 0 auto; padding: 2.5rem 20px; }
.ps-slide-dots { position: absolute; bottom: 14px; left: 0; right: 0; display: flex; justify-content: center; gap: 8px; }
.ps-slide-dots button { width: 24px; height: 24px; border: 0; background: transparent; cursor: pointer; padding: 0; position: relative; }
.ps-slide-dots button:after { content: ""; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); width: 11px; height: 11px; border-radius: 50%; border: 2px solid var(--ps-color-primary); box-sizing: border-box; }
.ps-slide-dots button.is-active:after { background: var(--ps-color-primary); }

/* ==========================================================================
   INFO BAR (recent jobs + facts)
   ========================================================================== */
.ps-infobar { background: #8a99a1; color: #fff; }
.ps-infobar-grid { display: grid; gap: 0; grid-template-columns: 1fr; padding: 2.5rem 20px; }
@media (min-width: 800px) { .ps-infobar-grid { grid-template-columns: repeat(3, 1fr); } .ps-infocol + .ps-infocol { border-left: 1px solid rgba(255,255,255,.25); padding-left: 2rem; } }
.ps-infocol { padding: 1rem 0; }
@media (min-width: 800px){ .ps-infocol { padding: 0 0 0 0; margin-right: 2rem; } }
.ps-infocol h2 { color: #fff; text-transform: uppercase; letter-spacing: 1px; font-size: 1rem; border-bottom: 2px solid var(--ps-color-accent-bright); display: inline-block; padding-bottom: 4px; margin: 0 0 1rem; }
.ps-infojob { margin: 0 0 .6rem; font-weight: 600; }
.ps-infojob a { color: #fff; }
.ps-infojob a:hover { color: var(--ps-color-accent-bright); }
.ps-fact { margin: 0 0 1rem; }
.ps-fact strong { color: var(--ps-color-accent-bright); }
.ps-btn--sm { padding: .5rem 1.1rem; font-size: .78rem; }

/* ==========================================================================
   FULL-WIDTH FEATURE BANDS (baked-in text images)
   ========================================================================== */
.ps-feature-band { width: 100%; aspect-ratio: 1366 / 620; overflow: hidden; }
.ps-feature-band img { width: 100%; height: 100%; object-fit: cover; display: block; }
@media (max-width: 700px){ .ps-feature-band { aspect-ratio: 16 / 10; } }

/* ==========================================================================
   ORANGE TESTIMONIAL BAND
   ========================================================================== */
.ps-testimonial-band { background: var(--ps-color-primary); color: #fff; text-align: center; padding: 3.5rem 20px; }
.ps-band-title { color: #fff; text-transform: uppercase; letter-spacing: 1px; margin: 0 0 1.5rem; }
.ps-band-quotes { position: relative; max-width: 820px; margin: 0 auto; min-height: 140px; }
.ps-band-quote { position: absolute; inset: 0; opacity: 0; transition: opacity .6s ease; }
.ps-band-quote.is-active { position: relative; opacity: 1; }
.ps-band-quote blockquote { font-size: 1.25rem; font-style: italic; line-height: 1.6; margin: 0 0 1rem; color: #fff; }
.ps-band-quote figcaption { color: #fff; font-family: var(--ps-font-heading); font-weight: 600; font-size: .95rem; }
.ps-testimonial-band .ps-btn--ghost { border-color: #fff; }

/* ==========================================================================
   JOBS LISTING (Matador placeholder cards / corner tags)
   ========================================================================== */
.ps-recent-jobs-grid { list-style: none; margin: 0; padding: 0; }

/* ==========================================================================
   SITE FOOTER
   ========================================================================== */
.ps-site-footer { background: var(--ps-color-secondary); color: #cdd6d8; margin-top: 0; }
.ps-footer-grid { display: grid; gap: 2rem; grid-template-columns: 1fr; padding: 3rem 20px 2rem; }
@media (min-width: 800px){ .ps-footer-grid { grid-template-columns: 2fr 1fr 1.2fr; } }
.ps-footer-col h3 { color: #fff; text-transform: uppercase; letter-spacing: 1px; font-size: .95rem; margin: 0 0 1rem; }
.ps-footer-logo { font-family: var(--ps-font-heading); font-weight: 700; letter-spacing: 1px; color: #fff; font-size: 1.3rem; text-transform: uppercase; display: inline-block; margin-bottom: .75rem; }
.ps-footer-logo span { color: var(--ps-color-accent-bright); margin-left: 4px; }
.ps-footer-about p { max-width: 420px; }
.ps-footer-menu { list-style: none; margin: 0; padding: 0; }
.ps-footer-menu a { color: #cdd6d8; display: block; padding: .3rem 0; }
.ps-footer-menu a:hover { color: var(--ps-color-accent-bright); }
.ps-footer-contact a { color: #ffc08a; }
.ps-social--footer { margin-top: 1rem; display: flex; gap: .75rem; }
.ps-social--footer a { color: #cdd6d8; display: inline-flex; padding: 4px; }
.ps-social--footer a:hover { color: var(--ps-color-accent-bright); }
.ps-footer-bottom { background: rgba(0,0,0,.25); }
.ps-footer-bottom-inner { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: .5rem; padding: 1rem 20px; font-size: .85rem; }
.ps-footer-bottom-inner a { color: #cdd6d8; }
.ps-footer-bottom-inner a:hover { color: var(--ps-color-accent-bright); }

/* ==========================================================================
   RESPONSIVE — mobile nav drawer + stacking
   ========================================================================== */
@media (max-width: 980px) {
    .ps-nav-toggle { display: flex; }
    .ps-primary-nav {
        position: absolute; top: 46px; left: 0; right: 0; z-index: 60;
        flex-direction: column; align-items: stretch; gap: 0;
        background: #1a1a1a; margin: 0; padding: .5rem 0;
        max-height: 0; overflow: hidden; transition: max-height .3s ease; box-shadow: 0 8px 20px rgba(0,0,0,.3);
    }
    .ps-primary-nav.is-open { max-height: 90vh; overflow: auto; }
    .ps-site-header { position: relative; }
    .ps-menu { flex-direction: column; gap: 0; }
    .ps-menu a { padding: .8rem 20px; border-bottom: 1px solid rgba(255,255,255,.08); font-size: .85rem; }
    .ps-topbar-actions { padding: .8rem 20px; justify-content: space-between; }
    .ps-topbar-inner { position: relative; }
}
@media (max-width: 600px) {
    .ps-hero h1 { font-size: 2rem; }
    h1 { font-size: 1.9rem; } h2 { font-size: 1.5rem; }
    .ps-section { padding: 2.5rem 0; }
    .ps-band-quote blockquote { font-size: 1.05rem; }
    .ps-slide img { padding: 1.5rem 20px; }
}

/* ---------------------------------------------------------- actual brand logo
   The live "PROGRESSION" wordmark is a dark PNG on transparent; invert it to
   white so it reads on the dark nav bar + dark teal footer. */
.ps-brand-logo { display: inline-flex; align-items: center; }
.ps-brand-logo .ps-logo-img { height: 34px; width: auto; display: block; filter: brightness(0) invert(1); }
.ps-footer-logo { display: inline-flex; }
.ps-footer-logo .ps-logo-img { height: 26px; width: auto; display: block; margin-bottom: .9rem; }
@media (max-width: 980px){ .ps-brand-logo .ps-logo-img { height: 28px; } }

/* ==========================================================================
   INTERIOR PAGE LAYOUT — photo banner + two-column [content | sidebar]
   (faithful to the live Gantry interior template)
   ========================================================================== */
.ps-page-banner { width: 100%; overflow: hidden; background: var(--ps-color-secondary); }
.ps-page-banner-img { width: 100%; height: auto; display: block; max-height: 560px; object-fit: cover; }

.ps-interior-grid { display: grid; grid-template-columns: 290px 1fr; gap: 2.5rem; align-items: start; }
.ps-interior-grid .ps-main { grid-column: 2; grid-row: 1; min-width: 0; }
.ps-interior-grid .ps-sidebar { grid-column: 1; grid-row: 1; }
.ps-page-title { color: var(--ps-color-secondary); font-size: 2rem; margin: 0 0 1.1rem; }
.ps-post-meta { color: var(--ps-color-muted); font-size: .9rem; margin: -0.4rem 0 1.4rem; }

/* Sidebar */
.ps-sidebar-cta {
    display: block; background: #333; color: #fff; text-align: center;
    font-family: var(--ps-font-heading); font-weight: 600; text-transform: uppercase; letter-spacing: .5px;
    padding: 1rem; border-radius: var(--ps-radius); margin-bottom: 1.25rem;
}
.ps-sidebar-cta:hover { background: var(--ps-color-primary); color: #fff; }
.ps-sidebar-box { background: var(--ps-color-bg-alt); border: 1px solid var(--ps-color-border); border-radius: var(--ps-radius); margin-bottom: 1.25rem; overflow: hidden; }
.ps-sidebar-title { background: #333; color: #fff; margin: 0; padding: .8rem 1rem; font-size: 1rem; text-transform: uppercase; letter-spacing: .5px; text-align: center; }
.ps-sidebar-note { padding: 1rem; margin: 0; color: var(--ps-color-muted); font-size: .88rem; }
.ps-sidebar-more { display: block; text-align: right; padding: .7rem 1rem; font-weight: 600; font-size: .85rem; text-transform: uppercase; letter-spacing: .5px; }

@media (max-width: 900px) {
    .ps-interior-grid { grid-template-columns: 1fr; gap: 2rem; }
    .ps-interior-grid .ps-main, .ps-interior-grid .ps-sidebar { grid-column: 1; grid-row: auto; }
    .ps-page-banner-img { max-height: 320px; }
}

/* ---------------------------------------------------------- staff carousel (front page) */
.ps-carousel { position: relative; padding: 0 46px; }
.ps-carousel-track {
    list-style: none; margin: 0; padding: .5rem 0; display: flex; gap: 1.5rem;
    overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch; scrollbar-width: none;
}
.ps-carousel-track::-webkit-scrollbar { display: none; }
.ps-carousel-item { flex: 0 0 calc((100% - 4.5rem) / 4); scroll-snap-align: start; }
@media (max-width: 900px) { .ps-carousel-item { flex-basis: calc((100% - 1.5rem) / 2); } }
@media (max-width: 560px) { .ps-carousel-item { flex-basis: 82%; } .ps-carousel { padding: 0 34px; } }
.ps-carousel-arrow {
    position: absolute; top: 42%; transform: translateY(-50%); z-index: 2;
    width: 40px; height: 40px; border-radius: 50%; border: 0;
    background: var(--ps-color-primary); color: #fff; font-size: 1.7rem; line-height: 1;
    cursor: pointer; display: flex; align-items: center; justify-content: center;
    transition: background .15s ease, opacity .15s ease;
}
.ps-carousel-arrow:hover { background: var(--ps-color-primary-dark); }
.ps-carousel-prev { left: 0; }
.ps-carousel-next { right: 0; }
.ps-carousel-arrow[disabled] { opacity: .3; cursor: default; }

/* ---------------------------------------------------------- self-hosted fonts (exact match to the live Gantry template) */
@font-face { font-family: "Calibri"; font-style: normal; font-weight: 400; font-display: swap;
    src: url("assets/fonts/Calibri.woff2") format("woff2"), url("assets/fonts/Calibri.woff") format("woff"), url("assets/fonts/Calibri.ttf") format("truetype"); }
@font-face { font-family: "Calibri"; font-style: normal; font-weight: 700; font-display: swap;
    src: url("assets/fonts/Calibri.woff2") format("woff2"), url("assets/fonts/Calibri.woff") format("woff"), url("assets/fonts/Calibri.ttf") format("truetype"); }
@font-face { font-family: "Novecentowide DemiBold"; font-style: normal; font-weight: 400 700; font-display: swap;
    src: url("assets/fonts/Novecentowide-DemiBold.woff") format("woff"), url("assets/fonts/Novecentowide-DemiBold.ttf") format("truetype"); }
@font-face { font-family: "Novecentowide Book"; font-style: normal; font-weight: 400; font-display: swap;
    src: url("assets/fonts/Novecentowide-Book.woff") format("woff"), url("assets/fonts/Novecentowide-Book.ttf") format("truetype"); }

/* ---------------------------------------------------------- clone tweaks: flatter cards + wider container + staff quote */
:root { --ps-container: 1200px; }
/* staff cards: flat like the live site (no boxed border/radius) + personal quote */
.ps-staff-card { border: 0; border-radius: 0; background: transparent; }
.ps-staff-card:hover { box-shadow: none; transform: translateY(-2px); }
.ps-staff-card img { border-radius: 0; }
.ps-staff-quote-sm { font-style: italic; color: var(--ps-color-muted); font-size: .82rem; line-height: 1.5; margin: .5rem .4rem 1rem; }
/* article + testimonial cards: lighter, less "boxy" */
.ps-article-card { border: 0; box-shadow: 0 2px 10px rgba(0,0,0,.06); }
.ps-testimonial { border: 0; border-top: 3px solid var(--ps-color-accent-bright); box-shadow: 0 2px 10px rgba(0,0,0,.05); }
.ps-tile { border: 0; box-shadow: 0 2px 10px rgba(0,0,0,.06); }

/* staff card social row (homepage carousel — matches live "STAFF PROFILE" cards) */
.ps-staff-cardlink { color: inherit; display: block; }
.ps-staff-social { display: flex; justify-content: center; gap: .6rem; margin: .2rem 0 .5rem; }
.ps-staff-social a { color: var(--ps-color-primary); display: inline-flex; padding: 4px; }
.ps-staff-social a:hover { color: var(--ps-color-primary-dark); }

/* ---------------------------------------------------------- clone round 2: full-bleed hero + subscribe band */
/* Hero slider: full width edge-to-edge, tall (was constrained to 1100px) */
.ps-hero-slider { background: #fff; }
.ps-slide img { max-width: none !important; width: 100%; height: auto; margin: 0; padding: 0; display: block; }
.ps-slide-dots { bottom: 18px; }

/* Pre-footer subscribe band (matches the live "STAY UPDATED, SUBSCRIBE!") */
.ps-subscribe-band { background: var(--ps-color-secondary); color: #fff; text-align: center; padding: 3rem 20px 3.4rem; }
.ps-subscribe-band h2 { color: #fff; text-transform: uppercase; letter-spacing: 1px; margin: 0 0 .5rem; }
.ps-subscribe-band p { max-width: 940px; margin: 0 auto 1.5rem; color: rgba(255,255,255,.85); }
@media (min-width: 920px) { .ps-subscribe-band p { max-width: none; white-space: nowrap; } }
.ps-subscribe-band form.wpcf7-form { display: flex; gap: .5rem; max-width: 540px; margin: 0 auto; justify-content: center; flex-wrap: wrap; align-items: center; }
.ps-subscribe-band .wpcf7-form-control-wrap { flex: 1 1 260px; }
.ps-subscribe-band input[type="email"] { width: 100%; padding: .75rem 1rem; border: 0; border-radius: 4px; font-size: 1rem; }
.ps-subscribe-band .wpcf7-submit { background: var(--ps-color-primary); color: #fff; border: 0; padding: .75rem 1.7rem; border-radius: 4px; text-transform: uppercase; font-weight: 600; letter-spacing: .5px; cursor: pointer; font-family: var(--ps-font-heading); }
.ps-subscribe-band .wpcf7-submit:hover { background: var(--ps-color-primary-dark); }
.ps-subscribe-band .wpcf7-response-output { flex-basis: 100%; color: #fff; margin: .75rem 0 0; }

/* ==========================================================================
   CLONE ROUND 3 — precise live match (hero, info bar, bands, staff, testimonials, jobs, footer)
   ========================================================================== */
/* 1. Hero: full-width + tall, fixed aspect (cover) so both slides fill */
.ps-hero-slider { position: relative; width: 100%; aspect-ratio: 1229 / 654; overflow: hidden; background: #fff; }
.ps-hero-slider .ps-slides { position: absolute; inset: 0; height: 100%; }
.ps-hero-slider .ps-slide { position: absolute; inset: 0; opacity: 0; }
.ps-hero-slider .ps-slide.is-active { position: absolute; opacity: 1; }
.ps-hero-slider .ps-slide img { width: 100%; height: 100%; object-fit: cover; object-position: center; max-width: none; padding: 0; margin: 0; }
@media (max-width: 700px) { .ps-hero-slider { aspect-ratio: 3 / 4; } }

/* 2. Info bar: live grey #6d7c82, equal-height columns, buttons standardized (orange) + centred at bottom */
.ps-infobar { background: #6d7c82; }
.ps-infobar-grid { align-items: stretch; }
.ps-infocol { display: flex; flex-direction: column; }
.ps-infocol .ps-btn { margin-top: auto; align-self: center; background: var(--ps-color-primary) !important; }
.ps-infocol .ps-btn:hover { background: var(--ps-color-primary-dark) !important; }

/* 3 + 6. Feature bands: correct aspect (1366x668), full width */
.ps-feature-band { aspect-ratio: 1366 / 668; }
@media (max-width: 700px) { .ps-feature-band { aspect-ratio: 4 / 3; } }

/* 4. Staff carousel: social icons at the bottom, dark-green (same as name) */
.ps-carousel-item.ps-staff-card { display: flex; flex-direction: column; }
.ps-staff-cardlink { flex: 1 1 auto; }
.ps-staff-social { margin-top: auto; }
.ps-staff-social a { color: var(--ps-color-secondary); }
.ps-staff-social a:hover { color: var(--ps-color-primary); }

/* 5. Testimonials band: consistent height + full text + smaller/lower Read-more */
.ps-band-quotes { min-height: 240px; }
.ps-band-quote blockquote { font-size: 1.05rem; }
.ps-band-readmore { margin-top: 2.25rem; }
.ps-band-readmore .ps-btn { padding: .5rem 1.25rem; font-size: .75rem; }

/* 9. Footer address on its own dark bar (matches live) */
.ps-footer-address { background: #333; color: #cfcfcf; text-align: center; padding: .95rem 20px; font-size: .9rem; }
.ps-footer-address a { color: #cfcfcf; }
.ps-footer-address a:hover { color: var(--ps-color-accent-bright); }

/* subscribe: Sign Up button inline, right of the email field */
.ps-subscribe-band form.wpcf7-form > p { display: flex; gap: .5rem; max-width: 560px; margin: 0 auto; justify-content: center; align-items: center; }
.ps-subscribe-band .wpcf7-form-control-wrap { flex: 1 1 auto; }
.ps-subscribe-band input[type="email"] { margin: 0; }
.ps-subscribe-band .wpcf7-submit { flex: 0 0 auto; white-space: nowrap; margin: 0; }

/* ==========================================================================
   FOOTER + UI TWEAKS (operator feedback round 2)
   ========================================================================== */
/* Footer body (incl. "Get in touch" row) matches the dark address bar (#333) */
.ps-site-footer { background: #333; }
.ps-footer-address { background: #333; }
/* Top menu duplicated in the footer — flow the 9 links into two tidy columns */
.ps-footer-nav .ps-footer-menu { column-count: 2; column-gap: 1.75rem; }
.ps-footer-nav .ps-footer-menu li { break-inside: avoid; }

/* Back-to-top button (bottom-right, appears after scrolling) */
.ps-to-top {
    position: fixed; right: 22px; bottom: 22px; z-index: 90;
    width: 46px; height: 46px; border-radius: 50%; border: 0; padding: 0;
    background: var(--ps-color-primary); color: #fff; cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    box-shadow: 0 4px 14px rgba(0,0,0,.28);
    opacity: 0; visibility: hidden; transform: translateY(12px);
    transition: opacity .2s ease, transform .2s ease, background .15s ease, visibility .2s ease;
}
.ps-to-top.is-visible { opacity: 1; visibility: visible; transform: translateY(0); }
.ps-to-top:hover { background: var(--ps-color-primary-dark); color: #fff; }
@media (max-width: 600px) { .ps-to-top { right: 16px; bottom: 16px; width: 42px; height: 42px; } }
@media (max-width: 480px) { .ps-subscribe-band form.wpcf7-form > p { flex-wrap: wrap; } .ps-subscribe-band .wpcf7-form-control-wrap { flex-basis: 100%; } }

/* ==========================================================================
   INTERIOR PAGES (operator feedback round 6)
   ========================================================================== */
/* Full-bleed banner/hero on all sub-pages — release Hello Elementor's .site-main cap.
   Body content stays centered because it lives inside .ps-container. */
.site-main { max-width: 100% !important; }
.ps-page-banner { width: 100%; }
.ps-page-banner-img { width: 100%; height: auto; max-height: none; display: block; }
@media (max-width: 900px) { .ps-page-banner-img { max-height: none; } }

/* Team page: two-column interior layout (staff grid in the content column) */
.ps-team-lead { color: var(--ps-color-muted); margin: 0 0 1.75rem; }
body.post-type-archive-staff_profile .ps-staff-grid { gap: 1.5rem; }
@media (min-width: 900px) { body.post-type-archive-staff_profile .ps-staff-grid.ps-grid--3 { grid-template-columns: repeat(3, 1fr); } }

/* Saner heading sizes inside migrated page-content (were oversized) */
.ps-page-content h1 { font-size: 1.7rem; }
.ps-page-content h2 { font-size: 1.5rem; line-height: 1.35; margin-top: 1.6rem; }
.ps-page-content h3 { font-size: 1.2rem; }

/* ==========================================================================
   REVIEWS — masonry grid + read-more (operator feedback)
   ========================================================================== */
.ps-reviews-masonry { column-gap: 1.5rem; }
.ps-reviews-cols-2 { column-count: 2; }
.ps-reviews-cols-3 { column-count: 3; }
@media (max-width: 900px) { .ps-reviews-masonry { column-count: 1; } }
.ps-review-card {
    break-inside: avoid; display: inline-block; width: 100%; margin: 0 0 1.5rem;
    background: #fff; border-top: 3px solid var(--ps-color-accent-bright);
    border-radius: var(--ps-radius); box-shadow: 0 2px 10px rgba(0,0,0,.05); padding: 1.5rem 1.6rem;
}
.ps-review-quote { font-style: italic; color: var(--ps-color-text); margin: 0 0 .9rem; line-height: 1.6; position: relative; }
.ps-review-quote::before { content: "\201C"; color: var(--ps-color-accent-bright); font-size: 1.6rem; line-height: 0; vertical-align: -0.35em; margin-right: .1em; }
.ps-review-quote.is-collapsed { max-height: 13.5em; overflow: hidden; }
.ps-review-quote.is-collapsed::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3.2em; background: linear-gradient(rgba(255,255,255,0), #fff); }
.ps-review-more { background: none; border: 0; padding: 0 0 .6rem; cursor: pointer; color: var(--ps-color-primary);
    font-family: var(--ps-font-heading); font-weight: 600; font-size: .78rem; text-transform: uppercase; letter-spacing: .5px; }
.ps-review-more:hover { color: var(--ps-color-primary-dark); }
.ps-review-name { display: block; font-family: var(--ps-font-heading); font-weight: 600; color: var(--ps-color-secondary); }
.ps-review-meta { display: block; color: var(--ps-color-muted); font-size: .88rem; }

/* ==========================================================================
   CAREER + interior job/article grids (operator feedback)
   ========================================================================== */
/* Jobs + article tiles: 2 columns inside the narrower interior content column */
@media (min-width: 900px) {
    .ps-interior-grid .ps-article-grid.ps-grid--3 { grid-template-columns: repeat(2, 1fr); }
}
/* "For Job Seekers" / "For Employers" tile section spacing */
.ps-page-content .ps-article-grid { list-style: none; margin: 1.25rem 0 0; padding: 0; }

/* ==========================================================================
   SERVICE PAGES (Job Seekers / Employers) — live-faithful styling
   ========================================================================== */
/* "The Progression Promise" grey box */
.ps-page-content .progression-div { background: #d7dee1; padding: 1.9rem 2.1rem; margin: 1.75rem 0; border-radius: var(--ps-radius); }
.ps-page-content .progression-div h3 { color: var(--ps-color-primary); margin: 0 0 .3rem; }
.ps-page-content .progression-div h2 { color: var(--ps-color-text); font-family: var(--ps-font-body); font-weight: 400; font-size: 1.5rem; line-height: 1.35; margin: .4rem 0 1rem; }
.ps-page-content .progression-div p { margin: 0 0 .8rem; }
.ps-page-content .progression-div p:last-child { margin-bottom: 0; }
.ps-page-content .progression-div em { color: var(--ps-color-muted); }

/* Article tiles as list rows (image left, teal title) like the live "For Job Seekers" section */
.ps-interior-grid .ps-article-grid { grid-template-columns: 1fr !important; gap: 1.6rem; margin-top: 1.25rem; }
.ps-interior-grid .ps-article-card { display: grid; grid-template-columns: 190px 1fr; gap: 1.4rem; align-items: start;
    background: none; border: 0; border-bottom: 1px solid var(--ps-color-border); box-shadow: none; border-radius: 0; padding: 0 0 1.5rem; }
.ps-interior-grid .ps-article-card > a:first-child { display: block; }
.ps-interior-grid .ps-article-card img,
.ps-interior-grid .ps-article-card .ps-article-noimg { height: 130px; border-radius: var(--ps-radius); }
.ps-interior-grid .ps-article-body { padding: 0; }
.ps-interior-grid .ps-article-card h3 { font-size: 1.1rem; margin: 0 0 .4rem; }
.ps-interior-grid .ps-article-card h3 a { color: var(--ps-color-accent); }
.ps-interior-grid .ps-article-card h3 a:hover { color: var(--ps-color-primary); }
@media (max-width: 600px) { .ps-interior-grid .ps-article-card { grid-template-columns: 1fr; } }

/* ============================================================
   About Us page (#96) — 3 promise boxes + 2-col values
   ============================================================ */
body.page-id-96 .ps-page-title { color: #fc7216; }
.ps-about-jump { float: right; margin: 6px 0 0; font-size: .82rem; text-transform: uppercase; letter-spacing: .04em; color: #9aa0a2; }
.ps-about-jump a { color: #9aa0a2; text-decoration: none; }
.ps-about-jump a:hover { color: #fc7216; }
.ps-about-jump span { margin: 0 .35rem; color: #c7cccd; }
.ps-about-lead { color: #014447; font-size: 1.05rem; letter-spacing: .02em; padding-top: 12px; clear: both; }

.ps-about-boxes { display: flex; gap: 0; margin: 2.4rem 0 1rem; flex-wrap: wrap; }
.ps-about-box { flex: 1 1 0; min-width: 220px; padding: 2rem 1.6rem 2.2rem; color: #fff; }
.ps-about-box .ps-about-ico { display: block; width: 58px; height: auto; margin: .2rem 0 1.4rem; filter: brightness(0) invert(1); }
.ps-about-box h4 { color: #fff; font-size: 1.35rem; margin: 0 0 .7rem; font-weight: 400; }
.ps-about-box p { color: #fff; font-size: .95rem; line-height: 1.6; margin: 0; }
.ps-about-box.box1 { background: #5bc2c7; }
.ps-about-box.box2 { background: #1ba3a9; }
.ps-about-box.box3 { background: #0b8b86; }

.ps-about-values-title { color: #fc7216; margin: 2.6rem 0 1.4rem; }
.ps-about-values { column-count: 2; column-gap: 3rem; }
.ps-value { break-inside: avoid; -webkit-column-break-inside: avoid; margin: 0 0 1.8rem; }
.ps-value h4 { color: #014447; font-size: 1.15rem; margin: 0 0 .5rem; font-weight: 400; letter-spacing: .02em; }
.ps-value p { font-size: .95rem; line-height: 1.65; margin: 0; }
.ps-about-meet { margin-top: 1.6rem; }
.ps-about-meet a { color: #fc7216; font-weight: 600; text-decoration: none; }
.ps-about-meet a:hover { text-decoration: underline; }

@media (max-width: 782px) {
  .ps-about-boxes { flex-direction: column; }
  .ps-about-values { column-count: 1; }
  .ps-about-jump { float: none; display: block; margin-bottom: 1rem; }
}

/* ---- ps_articles numbered pagination (job-seekers / employers) ---- */
.ps-articles-pagination { margin: 2rem 0 1rem; }
.ps-articles-pagination ul { display: flex; flex-wrap: wrap; gap: .4rem; justify-content: center; list-style: none; margin: 0; padding: 0; }
.ps-articles-pagination a.page-numbers,
.ps-articles-pagination span.page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 34px; height: 34px; padding: 0 .5rem; border: 1px solid #d7dee1; border-radius: 3px; color: #014447; font-size: .9rem; text-decoration: none; transition: background .15s, color .15s; }
.ps-articles-pagination a.page-numbers:hover { background: #014447; color: #fff; border-color: #014447; }
.ps-articles-pagination span.page-numbers.current { background: #fc7216; color: #fff; border-color: #fc7216; font-weight: 600; }

/* ---- migrated article images: captions + full-article image ---- */
.ps-page-content figure.ps-figcap { margin: 1.2rem 0; }
.ps-page-content figure.ps-figcap img { max-width: 100%; height: auto; }
.ps-page-content figure.ps-figcap figcaption,
.ps-page-content figure.ps-fullimg figcaption { font-size: .85rem; color: #6b7477; font-style: italic; margin-top: .4rem; line-height: 1.5; }
.ps-page-content figure.ps-fullimg { margin: 0 0 1.4rem; }
.ps-page-content figure.ps-fullimg img { max-width: 100%; height: auto; }

/* ---- Newsletter page (#103): email field + Sign Up button inline ---- */
body.page-id-103 .ps-page-content .wpcf7-form > p {
  display: flex;
  gap: .6rem;
  align-items: stretch;
  flex-wrap: wrap;
  max-width: 580px;
  margin: 0;
}
body.page-id-103 .ps-page-content .wpcf7-form-control-wrap { flex: 1 1 240px; display: block; }
body.page-id-103 .ps-page-content .wpcf7-form input.wpcf7-email { width: 100%; box-sizing: border-box; margin: 0; }
body.page-id-103 .ps-page-content .wpcf7-form input.wpcf7-submit { flex: 0 0 auto; margin: 0; white-space: nowrap; }

/* ============================================================
   Operator feedback — 2026-07-14 (fidelity: sizes, colours, spacing)
   ============================================================ */
/* Brand rule: page/blog subheadings are teal (green), never orange text */
.ps-page-content h3 { color: var(--ps-color-secondary); }

/* About Us -------------------------------------------------- */
.ps-page-content h3.ps-about-lead,
.ps-about-lead { color: var(--ps-color-secondary); font-size: 1.4rem; font-weight: 700; }
.ps-about-jump { font-size: 1rem; font-weight: 700; letter-spacing: .03em; color: var(--ps-color-secondary); }
.ps-about-jump a { color: var(--ps-color-secondary); }
.ps-about-jump a:hover { color: var(--ps-color-primary); }
.ps-about-jump span { color: var(--ps-color-secondary); }
.ps-about-meet { text-align: right; }
.ps-about-meet a { font-size: 1.25rem; font-weight: 700; }

/* Home staff intro lead ------------------------------------- */
.ps-section-lead { font-size: 1.2rem; line-height: 1.6; }

/* Job Seekers / Employers page titles (teal, larger) -------- */
body.page-id-99 .ps-page-title,
body.page-id-100 .ps-page-title { color: var(--ps-color-secondary); font-size: 2.4rem; }

/* Article single — bold title, readable rhythm, back button -- */
.ps-article-single .ps-page-title { font-weight: 700; }
.ps-page-content p { line-height: 1.78; margin: 0 0 1.15rem; }
.ps-article-single h2, .ps-article-single h3 { margin-top: 1.9rem; margin-bottom: .55rem; }
.ps-article-back { margin-top: 2.4rem; }

/* Staff single — bigger quote, social icons, un-caps Q&A ----- */
.ps-staff-single blockquote.ps-staff-quote { font-size: 1.4rem; line-height: 1.5; }
.ps-staff-single .ps-staff-social { display: inline-flex; gap: .55rem; margin-top: .55rem; }
.ps-staff-single .ps-staff-social a { color: var(--ps-color-secondary); }
.ps-staff-single .ps-staff-social a:hover { color: var(--ps-color-primary); }
.ps-staff-bio h3, .ps-staff-bio h4 { text-transform: none; font-family: var(--ps-font-body); color: var(--ps-color-secondary); font-size: 1.15rem; font-weight: 700; margin: 1.5rem 0 .25rem; }

/* Blog/interior article-list titles use teal, not orange link text (brand rule) */
.ps-interior-grid .ps-article-card h2 a,
.ps-interior-grid .ps-article-card h3 a,
.ps-article-grid .ps-article-card h2 a,
.ps-article-grid .ps-article-card h3 a { color: var(--ps-color-secondary); }
.ps-interior-grid .ps-article-card h2 a:hover,
.ps-article-grid .ps-article-card h2 a:hover { color: var(--ps-color-primary); }

/* Migrated article bodies — cap floated inline images (e.g. book covers) to a tidy,
   consistent size so text wraps cleanly (Joomla source floated them at native size). */
.ps-page-content img[style*="float: left"],
.ps-page-content img[style*="float:left"]  { max-width: 160px !important; height: auto !important; margin: 4px 24px 14px 0 !important; clear: left; }
.ps-page-content img[style*="float: right"],
.ps-page-content img[style*="float:right"] { max-width: 160px !important; height: auto !important; margin: 4px 0 14px 24px !important; }
@media (max-width: 600px) {
    .ps-page-content img[style*="float"] { float: none !important; display: block; margin: 14px auto !important; max-width: 200px !important; }
}

/* Reviews Read More/Less toggle: keep template default color on hover; remove reset.css red button background */
.ps-review-more:hover,
.ps-review-more:focus,
.ps-review-more:active {
  background: none;
  color: var(--ps-color-primary);
}
