/* =========================================================
   Allpro Consulting Group — public site theme
   Design tokens + components (approved Home design, 2026)
   Admin panel does NOT use this file.
   ========================================================= */

:root {
    --ap-blue: #0350ba;
    --ap-blue-light: #1b72d8;
    --ap-sky: #28abe3;
    --ap-navy: #021a3d;
    --ap-text: #373a47;
    --ap-heading: #000;
    --ap-muted: #5a6a80;
    --ap-tint: #f6f9fd;
    --ap-chip: #eaf2fc;
    --ap-border: #e3ecf8;
    --ap-border-soft: #e6eef8;
    --ap-input-border: #d7e2f1;
    --ap-footer-text: #c9d6ea;

    --ap-font: 'Poppins', sans-serif;
    --ap-font-display: 'Oswald', sans-serif;

    --ap-radius-card: 25px;
    --ap-radius-md: 22px;
    --ap-radius-sm: 16px;
    --ap-radius-input: 12px;
    --ap-radius-pill: 30px;

    --ap-shadow: 0 6px 24px #0350ba1f;
    --ap-shadow-hover: 0 14px 38px #0350ba4d;
    --ap-shadow-lg: 0 14px 44px #0350ba26;

    --ap-container: 1200px;
    --ap-gutter: 24px;
    --ap-header-h: 78px;
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--ap-header-h) + 12px); }
body {
    margin: 0;
    font-family: var(--ap-font);
    font-size: 15px;
    line-height: 1.7;
    color: var(--ap-text);
    background: #fff;
    -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; }
a { color: var(--ap-blue); text-decoration: none; transition: color 200ms; }
a:hover, a:focus { color: var(--ap-sky); }
h1, h2, h3, h4, h5 { margin: 0; color: var(--ap-heading); line-height: 1.25; font-weight: 600; }
p { margin: 0; }
button, input, select, textarea { font-family: var(--ap-font); }
:focus-visible { outline: 3px solid #28abe380; outline-offset: 2px; }

.ap-container { max-width: var(--ap-container); margin: 0 auto; padding: 0 var(--ap-gutter); }
.ap-section { padding: 90px 0; }
.ap-section--tint { background: var(--ap-tint); }
.ap-section--tight { padding: 60px 0; }
.ap-skip { position: absolute; left: 12px; top: -60px; z-index: 100; background: var(--ap-blue); color: #fff; padding: 10px 18px; border-radius: 0 0 12px 12px; font-size: 14px; }
.ap-skip:focus { top: 0; color: #fff; }
.ap-visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------- Buttons ---------- */
.ap-btn {
    display: inline-flex; align-items: center; gap: 10px;
    padding: 14px 32px; border-radius: var(--ap-radius-pill); border: none;
    font: 600 14px var(--ap-font); text-transform: uppercase; letter-spacing: .06em;
    cursor: pointer; transition: background 200ms, color 200ms, box-shadow 200ms;
    background: var(--ap-blue); color: #fff; box-shadow: 0 8px 20px #0350ba4d;
}
.ap-btn:hover, .ap-btn:focus { background: var(--ap-sky); color: #fff; }
.ap-btn--white { background: #fff; color: var(--ap-blue); box-shadow: none; }
.ap-btn--white:hover, .ap-btn--white:focus { background: var(--ap-sky); color: #fff; }
.ap-btn--sm { padding: 10px 22px; font-size: 13px; }

/* ---------- Section title ---------- */
.ap-section-title { text-align: center; margin-bottom: 46px; display: flex; flex-direction: column; gap: 10px; align-items: center; }
.ap-section-title h2, .ap-section-title h3 { font-size: 28px; font-weight: 600; color: var(--ap-heading); }
.ap-section-title .ap-bar, .ap-bar { width: 60px; height: 3px; background: var(--ap-sky); }
.ap-section-title p { margin-top: 6px; max-width: 620px; font-size: 15px; line-height: 1.7; }
.ap-section-title--left { text-align: left; align-items: flex-start; }
.ap-eyebrow {
    font-size: 13px; font-weight: 600; letter-spacing: .18em; color: var(--ap-sky);
    text-transform: uppercase; display: flex; gap: 10px; align-items: center;
}
.ap-eyebrow::before { content: ""; width: 28px; height: 2px; background: var(--ap-sky); }

/* ---------- Header ---------- */
.ap-header { position: sticky; top: 0; z-index: 50; background: #fff; box-shadow: 0 2px 18px #0350ba1f; }
.ap-header__inner {
    max-width: var(--ap-container); margin: 0 auto; padding: 12px var(--ap-gutter);
    display: flex; align-items: center; justify-content: space-between; gap: 24px;
}
.ap-header__logo img { height: 54px; display: block; }
.ap-nav { display: flex; gap: 28px; align-items: center; font-size: 14px; font-weight: 500; text-transform: uppercase; letter-spacing: .06em; }
.ap-nav__link { color: var(--ap-text); padding: 4px 0; border-bottom: 2px solid transparent; display: inline-flex; gap: 6px; align-items: center; background: none; border-top: 0; border-left: 0; border-right: 0; font: inherit; letter-spacing: inherit; text-transform: inherit; cursor: pointer; }
.ap-nav__link:hover, .ap-nav__link:focus { color: var(--ap-blue); }
.ap-nav__link.is-active { color: var(--ap-blue); border-bottom-color: var(--ap-sky); }
.ap-nav__cta { background: var(--ap-blue); color: #fff; padding: 10px 20px; border-radius: 25px; }
.ap-nav__cta:hover, .ap-nav__cta:focus { background: var(--ap-sky); color: #fff; }

.ap-dropdown { position: relative; padding: 8px 0; }
.ap-dropdown__menu {
    position: absolute; top: 100%; left: -20px; min-width: 300px; background: #fff;
    border-radius: var(--ap-radius-sm); box-shadow: 0 14px 40px #0350ba33; padding: 10px;
    display: none; flex-direction: column; text-transform: none; letter-spacing: 0;
}
.ap-dropdown.is-open .ap-dropdown__menu { display: flex; }
.ap-dropdown__menu a { display: flex; gap: 12px; align-items: center; padding: 11px 14px; border-radius: 10px; color: var(--ap-text); font-size: 14px; }
.ap-dropdown__menu a:hover, .ap-dropdown__menu a:focus { background: var(--ap-chip); color: var(--ap-blue); }
.ap-dropdown__menu i { color: var(--ap-blue); width: 18px; text-align: center; }

.ap-burger { display: none; width: 44px; height: 44px; border-radius: 12px; border: 1px solid var(--ap-border); background: #fff; color: var(--ap-blue); font-size: 20px; cursor: pointer; }

@media (max-width: 900px) {
    .ap-burger { display: inline-flex; align-items: center; justify-content: center; }
    .ap-nav {
        position: absolute; top: 100%; left: 0; right: 0; background: #fff;
        flex-direction: column; align-items: stretch; gap: 0; padding: 8px var(--ap-gutter) 20px;
        box-shadow: 0 14px 30px #0350ba26; display: none;
    }
    .ap-header.is-menu-open .ap-nav { display: flex; }
    .ap-nav__link { padding: 14px 0; border-bottom: 1px solid var(--ap-border-soft); width: 100%; justify-content: space-between; }
    .ap-nav__link.is-active { border-bottom-color: var(--ap-border-soft); }
    .ap-dropdown { padding: 0; }
    .ap-dropdown__menu, .ap-dropdown.is-open .ap-dropdown__menu { display: flex; position: static; box-shadow: none; min-width: 0; padding: 4px 0 8px 8px; }
    .ap-dropdown__toggle .fa-angle-down { display: none; }
    .ap-nav__cta { margin-top: 16px; text-align: center; justify-content: center; }
}

/* ---------- Hero slider ---------- */
.ap-hero { position: relative; height: clamp(460px, 72vh, 720px); overflow: hidden; background: #0b1f3f; }
.ap-hero__slide { position: absolute; inset: 0; opacity: 0; transition: opacity 900ms ease; pointer-events: none; }
.ap-hero__slide.is-active { opacity: 1; pointer-events: auto; }
.ap-hero__slide img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* 16:9 slide in a wider hero: stretch horizontally ~15% (48.8vw = 100vw / (1.78 * 1.15)) instead of
   cropping it all; whatever still overflows is trimmed mostly from the bottom (grass), keeping the tower/drone. */
@media (min-width: 601px) {
    .ap-hero__slide--fit img { position: absolute; left: 0; top: 35%; transform: translateY(-35%); height: max(100%, 48.8vw); object-fit: fill; }
}
.ap-hero__slide::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, #021a3dcc 0%, #021a3d80 45%, #021a3d10 80%); }
.ap-hero__content { position: absolute; inset: 0; z-index: 1; display: flex; align-items: center; }
/* side padding clears the 46px arrow buttons (arrows are hidden below 600px) */
.ap-hero__text { max-width: var(--ap-container); width: 100%; margin: 0 auto; padding: 0 clamp(84px, 7vw, 90px); }
@media (max-width: 600px) { .ap-hero__text { padding: 0 var(--ap-gutter); } }
.ap-hero__text > div { max-width: 640px; display: flex; flex-direction: column; gap: 18px; }
.ap-hero h1, .ap-hero h2 { font-family: var(--ap-font-display); font-weight: 400; font-size: clamp(40px, 6vw, 72px); line-height: 1.05; color: #fff; text-transform: uppercase; }
.ap-hero h1 strong, .ap-hero h2 strong { font-weight: 600; color: var(--ap-sky); }
.ap-hero p { font-size: clamp(15px, 1.6vw, 19px); line-height: 1.6; color: #fff; font-weight: 300; }
.ap-hero__arrow {
    position: absolute; top: 50%; transform: translateY(-50%); z-index: 2;
    width: 46px; height: 46px; border-radius: 50%; border: 1px solid #ffffff80; background: #00000030;
    color: #fff; cursor: pointer; font-size: 20px; transition: background 200ms;
}
.ap-hero__arrow:hover, .ap-hero__arrow:focus { background: var(--ap-blue); }
.ap-hero__arrow--prev { left: 16px; }
.ap-hero__arrow--next { right: 16px; }
.ap-hero__dots { position: absolute; bottom: 28px; left: 0; right: 0; z-index: 2; display: flex; justify-content: center; gap: 10px; }
.ap-hero__dot { width: 10px; height: 10px; border-radius: 5px; border: none; cursor: pointer; background: #ffffff99; transition: all 300ms; padding: 0; }
.ap-hero__dot.is-active { width: 32px; background: var(--ap-sky); }
@media (max-width: 600px) { .ap-hero__arrow { display: none; } }

/* ---------- Inner page banner ---------- */
.ap-page-banner { position: relative; overflow: hidden; background: var(--ap-navy); padding: 110px 0 80px; }
.ap-page-banner > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ap-page-banner::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, #021a3de0 0%, #021a3d99 50%, #021a3d40 100%); }
.ap-page-banner .ap-container { position: relative; z-index: 1; display: flex; flex-direction: column; gap: 14px; }
.ap-page-banner h1 { font-family: var(--ap-font-display); font-weight: 400; font-size: clamp(36px, 5vw, 58px); line-height: 1.05; color: #fff; text-transform: uppercase; }
.ap-page-banner h1 strong { color: var(--ap-sky); font-weight: 600; }
.ap-page-banner p { max-width: 620px; color: #e3eefc; font-weight: 300; font-size: clamp(15px, 1.5vw, 18px); }
.ap-breadcrumb { display: flex; gap: 8px; align-items: center; list-style: none; margin: 0; padding: 0; font-size: 13px; color: #cfe3fa; text-transform: uppercase; letter-spacing: .08em; }
.ap-breadcrumb a { color: #fff; }
.ap-breadcrumb a:hover { color: var(--ap-sky); }
.ap-breadcrumb li + li::before { content: "/"; margin-right: 8px; color: var(--ap-sky); }

/* ---------- Cards ---------- */
.ap-grid { display: grid; gap: 24px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr)); }
.ap-grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
.ap-grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 460px), 1fr)); gap: 56px; align-items: center; }

.ap-card {
    position: relative; display: flex; flex-direction: column; gap: 12px;
    padding: 30px 26px; border-radius: var(--ap-radius-card); background: #fff;
    border: 1px solid var(--ap-border); color: var(--ap-text);
    transition: box-shadow 250ms, border-color 250ms, transform 250ms;
}
a.ap-card:hover, a.ap-card:focus, .ap-card--hover:hover { box-shadow: 0 10px 34px #0350ba40; border-color: #fff; color: var(--ap-text); }
.ap-card > i.fa { font-size: 30px; color: var(--ap-blue); }
.ap-card h4 { font-size: 17px; font-weight: 600; color: var(--ap-heading); }
.ap-card p { font-size: 13.5px; line-height: 1.7; }
.ap-card__more { font-size: 13px; font-weight: 600; color: var(--ap-blue); margin-top: auto; }

/* compact service item card */
.ap-item {
    display: flex; gap: 16px; align-items: flex-start; padding: 22px 22px;
    border-radius: var(--ap-radius-md); background: #fff; border: 1px solid var(--ap-border);
    transition: box-shadow 250ms, border-color 250ms, transform 250ms;
}
.ap-item:hover { box-shadow: var(--ap-shadow-hover); border-color: #fff; transform: translateY(-2px); }
.ap-item > i.fa {
    flex: none; width: 46px; height: 46px; border-radius: 14px; background: var(--ap-chip); color: var(--ap-blue);
    font-size: 19px; display: flex; align-items: center; justify-content: center;
}
/* min-width:0 lets the text column shrink inside the flex row; long words wrap instead of overflowing */
.ap-item > div { min-width: 0; }
.ap-item h4 { font-size: 15.5px; font-weight: 600; color: var(--ap-heading); line-height: 1.4; overflow-wrap: break-word; }
.ap-item p { margin-top: 4px; font-size: 13px; line-height: 1.65; color: var(--ap-muted); }

/* feature card with gradient icon tile */
.ap-feature-card {
    display: flex; gap: 20px; align-items: flex-start; background: #fff;
    border-radius: var(--ap-radius-md); padding: 26px; box-shadow: var(--ap-shadow);
    transition: box-shadow 250ms, transform 250ms;
}
.ap-feature-card:hover { box-shadow: var(--ap-shadow-hover); transform: translateY(-2px); }
.ap-feature-card--stack { flex-direction: column; }
.ap-icon-tile {
    flex: none; width: 54px; height: 54px; border-radius: var(--ap-radius-sm);
    background: linear-gradient(135deg, var(--ap-blue), var(--ap-sky)); color: #fff; font-size: 23px;
    display: flex; align-items: center; justify-content: center; box-shadow: 0 6px 16px #0350ba5e;
}
.ap-feature-card__body { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.ap-feature-card h4 { font-size: 17px; font-weight: 600; color: var(--ap-blue); }
.ap-feature-card p, .ap-feature-card li, .ap-feature-card__body > div { font-size: 14px; line-height: 1.7; }
.ap-feature-card ul { margin: 0; padding-left: 18px; }

.ap-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.ap-chip { font-size: 12px; font-weight: 500; color: var(--ap-blue); background: var(--ap-chip); padding: 4px 11px; border-radius: 20px; display: inline-flex; gap: 6px; align-items: center; line-height: 1.6; }
.ap-chip i { color: var(--ap-sky); }

/* ---------- Home: Our Vision ---------- */
.ap-vision { position: relative; padding: 100px 0 90px; background: var(--ap-tint); overflow: hidden; }
.ap-vision::before { content: ""; position: absolute; right: -160px; top: -160px; width: 480px; height: 480px; border-radius: 50%; border: 70px solid #0350ba0d; }
.ap-vision .ap-container { position: relative; }
.ap-vision__intro { display: flex; flex-direction: column; gap: 22px; }
.ap-vision__intro h2 { font-size: clamp(30px, 3.4vw, 40px); font-weight: 600; line-height: 1.2; }
.ap-quote { font-family: var(--ap-font-display); font-weight: 400; font-size: clamp(20px, 2vw, 25px); line-height: 1.5; color: var(--ap-blue); border-left: 3px solid var(--ap-sky); padding-left: 22px; }
.ap-quote p { margin: 0; }
.ap-media { position: relative; margin-top: 10px; border-radius: var(--ap-radius-card); overflow: hidden; box-shadow: 0 14px 40px #0350ba40; aspect-ratio: 16 / 9; }
.ap-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ap-media__badge { position: absolute; left: 18px; bottom: 18px; background: #fff; border-radius: var(--ap-radius-sm); padding: 14px 18px; display: flex; gap: 14px; align-items: center; box-shadow: 0 8px 24px #0000002e; }
.ap-media__badge i { font-size: 26px; color: var(--ap-blue); }
.ap-media__badge strong { display: block; font-size: 15px; font-weight: 700; color: var(--ap-blue); line-height: 1.2; }
.ap-media__badge span { font-size: 12px; }
.ap-stack { display: flex; flex-direction: column; gap: 20px; }

/* ---------- Stats bar ---------- */
.ap-stats-wrap { position: relative; background: #fff; }
.ap-stats-wrap .ap-container { position: relative; top: -10px; }
.ap-stats { display: grid; grid-template-columns: repeat(4, 1fr); background: #fff; border-radius: var(--ap-radius-card); box-shadow: 0 10px 40px #0350ba33; overflow: hidden; }
.ap-stat { padding: 30px 26px; display: flex; gap: 16px; align-items: center; border-right: 1px solid var(--ap-border-soft); }
.ap-stat:last-child { border-right: none; }
.ap-stat i { font-size: 34px; color: var(--ap-sky); width: 40px; text-align: center; }
.ap-stat strong { display: block; font-size: 22px; font-weight: 700; color: var(--ap-blue); line-height: 1.2; }
.ap-stat span { font-size: 13px; }
/* 4 across → 2×2 → 1 column */
@media (max-width: 1100px) {
    .ap-stats { grid-template-columns: repeat(2, 1fr); }
    .ap-stat:nth-child(2n) { border-right: none; }
    .ap-stat:nth-child(-n+2) { border-bottom: 1px solid var(--ap-border-soft); }
}
@media (max-width: 560px) {
    .ap-stats { grid-template-columns: 1fr; }
    .ap-stat { border-right: none; border-bottom: 1px solid var(--ap-border-soft); }
    .ap-stat:last-child { border-bottom: none; }
}

/* ---------- Statement band ---------- */
.ap-statement { position: relative; padding: 120px var(--ap-gutter); overflow: hidden; background: var(--ap-navy); }
.ap-statement > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ap-statement::after { content: ""; position: absolute; inset: 0; background: radial-gradient(ellipse 70% 75% at 50% 50%, #021a3dc7 0%, #021a3d8c 55%, #0350ba40 100%), linear-gradient(180deg, #0350ba33, #021a3d66); }
.ap-statement__inner { position: relative; z-index: 1; max-width: 980px; margin: 0 auto; text-align: center; display: flex; flex-direction: column; gap: 30px; align-items: center; }
.ap-statement--plain { padding: 72px var(--ap-gutter); background: linear-gradient(160deg, var(--ap-blue-light) 0%, var(--ap-blue) 55%, var(--ap-navy) 100%); }
.ap-statement--plain::after { background: none; border-radius: 50%; border: 70px solid #ffffff0d; width: 480px; height: 480px; inset: auto -160px -200px auto; }
/* wider + slightly smaller so the tagline sits on two lines on desktop */
.ap-statement--plain .ap-statement__inner { max-width: 1180px; }
.ap-statement--plain h2 { font-size: clamp(22px, 2.5vw, 34px); }

/* ---------- Pillar cards (Corporate highlights) ---------- */
.ap-pillar {
    position: relative; display: flex; flex-direction: column; align-items: center; gap: 16px; text-align: center;
    background: #fff; border-radius: var(--ap-radius-card); padding: 44px 32px 36px; overflow: hidden;
    box-shadow: var(--ap-shadow); transition: box-shadow 250ms, transform 250ms;
}
.ap-pillar::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 5px; background: linear-gradient(90deg, var(--ap-blue), var(--ap-sky)); }
.ap-pillar:hover { box-shadow: var(--ap-shadow-hover); transform: translateY(-4px); }
.ap-pillar__icon {
    width: 96px; height: 96px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, var(--ap-blue), var(--ap-sky)); color: #fff; font-size: 38px;
    box-shadow: 0 0 0 10px var(--ap-chip), 0 14px 28px #0350ba40; margin: 10px 0 14px;
}
.ap-pillar h3 { font-size: 19px; font-weight: 600; color: var(--ap-blue); }
.ap-pillar p { font-size: 14.5px; line-height: 1.75; }
.ap-pillar .ap-list { text-align: left; align-self: stretch; }
.ap-statement h2 { font-family: var(--ap-font-display); font-weight: 400; font-size: clamp(26px, 3.4vw, 40px); line-height: 1.35; color: #fff; text-wrap: balance; text-shadow: 0 2px 20px #021a3d99; }

/* ---------- Clients ---------- */
.ap-clients { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 20px; }
.ap-client {
    position: relative; height: 132px; border-radius: 20px; background: #fff; border: 1px solid var(--ap-border-soft);
    box-shadow: 0 4px 16px #0350ba12; display: flex; align-items: center; justify-content: center;
    padding: 26px 24px; overflow: hidden; transition: transform 250ms, box-shadow 250ms, border-color 250ms;
}
.ap-client:hover { transform: translateY(-4px); box-shadow: 0 16px 36px #0350ba33; border-color: #cfe0f5; }
.ap-client img { max-width: 100%; max-height: 58px; object-fit: contain; display: block; }
.ap-client::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: linear-gradient(90deg, var(--ap-blue), var(--ap-sky)); }

/* ---------- Contact ---------- */
.ap-contact { display: flex; flex-wrap: wrap; background: #fff; border-radius: var(--ap-radius-card); box-shadow: var(--ap-shadow-lg); overflow: hidden; }
.ap-contact__info {
    position: relative; flex: 1 1 340px; background: linear-gradient(160deg, var(--ap-blue-light) 0%, var(--ap-blue) 100%);
    color: #fff; padding: 44px 38px; display: flex; flex-direction: column; gap: 26px; overflow: hidden;
}
.ap-contact__info::after { content: ""; position: absolute; right: -90px; bottom: -90px; width: 260px; height: 260px; border-radius: 50%; border: 50px solid #ffffff0d; }
.ap-contact__info > * { position: relative; z-index: 1; }
.ap-contact__info h3 { font-size: 22px; font-weight: 600; color: #fff; }
.ap-contact__info p { font-size: 14px; line-height: 1.7; color: #e3eefc; }
.ap-contact__row { display: flex; gap: 14px; align-items: center; }
.ap-contact__row > i { flex: none; width: 44px; height: 44px; border-radius: 12px; background: #ffffff1f; color: #fff; font-size: 18px; display: flex; align-items: center; justify-content: center; }
.ap-contact__row small { display: block; font-size: 12px; color: #cfe3fa; text-transform: uppercase; letter-spacing: .1em; }
.ap-contact__row a { color: #fff; font-size: 15px; font-weight: 500; }
.ap-contact__row a:hover { color: #9fd8f3; }
.ap-contact__row span { font-size: 14px; line-height: 1.5; }
.ap-contact__cities { margin-top: auto; display: flex; flex-wrap: wrap; gap: 8px; }
.ap-contact__cities span { font-size: 12px; padding: 5px 12px; border-radius: 20px; background: #ffffff1f; }
.ap-form { flex: 2 1 460px; padding: 44px 40px; display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 18px; align-content: start; }
.ap-form--single { flex: none; padding: 0; grid-template-columns: 1fr; }
.ap-field { display: flex; flex-direction: column; gap: 7px; font-size: 13px; font-weight: 500; color: var(--ap-heading); }
.ap-field--full { grid-column: 1 / -1; }
.ap-input, .ap-field input, .ap-field select, .ap-field textarea {
    width: 100%; padding: 13px 16px; border: 1px solid var(--ap-input-border); border-radius: var(--ap-radius-input);
    font-size: 14px; outline: none; background: #fbfdff; color: var(--ap-text); font-weight: 400;
    transition: border-color 200ms, box-shadow 200ms;
}
.ap-field textarea { resize: vertical; min-height: 130px; }
.ap-field select { cursor: pointer; }
.ap-input:focus, .ap-field input:focus, .ap-field select:focus, .ap-field textarea:focus { border-color: var(--ap-blue); box-shadow: 0 0 0 4px #0350ba1a; background: #fff; }
.ap-field input[type=file] { padding: 10px 12px; cursor: pointer; }
.ap-field input[type=file]::file-selector-button { margin-right: 14px; border: none; border-radius: 20px; padding: 8px 16px; background: var(--ap-chip); color: var(--ap-blue); font: 600 12px var(--ap-font); cursor: pointer; }
.ap-form__footer { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 16px; align-items: center; justify-content: space-between; }
.ap-form__note { font-size: 12.5px; color: var(--ap-muted); }
.ap-form__error { grid-column: 1 / -1; color: #c0392b; font-size: 13px; }
.ap-form__error:empty { display: none; }

/* DNTCaptcha tag helper output */
.ap-captcha { grid-column: 1 / -1; display: flex; flex-direction: column; gap: 7px; font-size: 13px; font-weight: 500; color: var(--ap-heading); }
.ap-captcha img { border-radius: 10px; vertical-align: middle; height: 46px; }
.ap-captcha a, .ap-captcha .btn-sm { display: inline-flex; margin-left: 10px; color: var(--ap-blue); font-size: 16px; vertical-align: middle; }
.ap-captcha input[type=text] { margin-top: 8px; width: 100%; max-width: 260px; padding: 13px 16px; border: 1px solid var(--ap-input-border); border-radius: var(--ap-radius-input); font-size: 14px; background: #fbfdff; }
.ap-captcha input[type=text]:focus { border-color: var(--ap-blue); box-shadow: 0 0 0 4px #0350ba1a; outline: none; }
.ap-captcha .text-danger { color: #c0392b; font-size: 12.5px; font-weight: 400; }

/* ---------- Footer ---------- */
.ap-footer { background: var(--ap-navy); color: var(--ap-footer-text); padding: 64px 0 0; }
/* Centered corporate office, other cities on one line below */
.ap-footer__main { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 14px; padding-bottom: 48px; font-size: 14px; line-height: 1.7; }
.ap-footer__main h4 { font-size: 17px; font-weight: 600; color: #fff; border-bottom: 2px solid var(--ap-sky); padding-bottom: 8px; }
.ap-footer__contacts { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px 28px; }
.ap-footer__contacts span, .ap-footer__cities span { display: inline-flex; gap: 8px; align-items: center; }
.ap-footer__contacts i, .ap-footer__cities i { color: var(--ap-sky); }
.ap-footer__cities { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 26px; margin-top: 10px; padding-top: 18px; border-top: 1px solid #ffffff1f; color: #fff; font-weight: 500; }
.ap-footer a { color: var(--ap-footer-text); }
.ap-footer a:hover { color: var(--ap-sky); }
.ap-footer__bottom { border-top: 1px solid #ffffff1f; }
.ap-footer__bottom .ap-container { padding-top: 22px; padding-bottom: 22px; display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; font-size: 13px; }
.ap-social { display: flex; gap: 14px; }
.ap-social a { width: 34px; height: 34px; border-radius: 50%; background: #ffffff14; color: #fff; display: flex; align-items: center; justify-content: center; }
.ap-social a:hover { background: var(--ap-blue); color: #fff; }

/* ---------- Services page ---------- */
.ap-subnav { position: sticky; top: var(--ap-header-h); z-index: 20; background: #ffffffeb; backdrop-filter: blur(8px); border-bottom: 1px solid var(--ap-border-soft); }
.ap-subnav .ap-container { display: flex; gap: 10px; padding-top: 14px; padding-bottom: 14px; overflow-x: auto; }
.ap-subnav a { flex: none; display: inline-flex; gap: 8px; align-items: center; padding: 9px 18px; border-radius: 25px; background: var(--ap-chip); color: var(--ap-blue); font-size: 13.5px; font-weight: 500; }
.ap-subnav a:hover, .ap-subnav a:focus { background: var(--ap-blue); color: #fff; }
.ap-service-block + .ap-service-block { margin-top: 56px; }
.ap-service-block__head { display: flex; flex-direction: column; gap: 6px; margin-bottom: 24px; }
.ap-service-block__head h3 { font-size: 20px; font-weight: 600; color: var(--ap-blue); }
.ap-service-block__head p { font-size: 14px; color: var(--ap-muted); }
.ap-area-head { display: flex; gap: 20px; align-items: center; margin-bottom: 40px; }
.ap-area-head h2 { font-size: clamp(26px, 3vw, 34px); font-weight: 600; }
.ap-area-head p { margin-top: 6px; max-width: 720px; font-size: 15px; }

/* ---------- Corporate / content ---------- */
.ap-profile { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); gap: 56px; align-items: center; }
.ap-profile + .ap-profile { margin-top: 56px; }
.ap-profile__text { display: flex; flex-direction: column; gap: 18px; }
.ap-profile__text h2 { font-size: clamp(26px, 3vw, 34px); }
.ap-rich { font-size: 15px; line-height: 1.8; }
.ap-rich p { margin: 0 0 1em; }
.ap-rich ul, .ap-rich ol { padding-left: 22px; margin: 0 0 1em; }
.ap-rich h1, .ap-rich h2, .ap-rich h3, .ap-rich h4 { margin: 1.4em 0 .6em; color: var(--ap-heading); }
.ap-rich a { text-decoration: underline; }
.ap-prose { max-width: 820px; margin: 0 auto; }

.ap-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.ap-list li { position: relative; padding-left: 30px; font-size: 14.5px; line-height: 1.7; }
.ap-list li::before { content: "\f00c"; font-family: FontAwesome; position: absolute; left: 0; top: 2px; width: 20px; height: 20px; border-radius: 50%; background: var(--ap-chip); color: var(--ap-blue); font-size: 10px; display: flex; align-items: center; justify-content: center; }

/* ---------- Careers ---------- */
.ap-jobs { display: flex; flex-direction: column; gap: 16px; }
.ap-job { display: flex; gap: 20px; align-items: center; justify-content: space-between; flex-wrap: wrap; padding: 24px 28px; border-radius: var(--ap-radius-md); background: #fff; border: 1px solid var(--ap-border); transition: box-shadow 250ms, border-color 250ms; }
.ap-job:hover { box-shadow: var(--ap-shadow-hover); border-color: #fff; }
.ap-job__main { display: flex; gap: 18px; align-items: center; min-width: 0; }
.ap-job h3 { font-size: 17px; color: var(--ap-heading); }
.ap-job p { font-size: 13.5px; color: var(--ap-muted); }
.ap-alert { display: flex; gap: 12px; align-items: center; padding: 16px 20px; border-radius: var(--ap-radius-sm); background: #e8f7ee; color: #1e6b3c; font-size: 14px; margin-bottom: 30px; }
.ap-panel { background: #fff; border-radius: var(--ap-radius-card); box-shadow: var(--ap-shadow-lg); padding: 40px; }
.ap-panel h3 { font-size: 18px; color: var(--ap-blue); margin-bottom: 16px; }
.ap-panel + .ap-panel { margin-top: 28px; }
.ap-job-layout { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 32px; align-items: start; }
.ap-job-layout__aside { position: sticky; top: calc(var(--ap-header-h) + 20px); }
@media (max-width: 960px) { .ap-job-layout { grid-template-columns: 1fr; } .ap-job-layout__aside { position: static; } .ap-panel { padding: 28px 22px; } }

/* ---------- Projects ---------- */
.ap-project { position: relative; display: block; border-radius: var(--ap-radius-md); overflow: hidden; aspect-ratio: 4 / 3; background: var(--ap-tint); border: none; padding: 0; cursor: pointer; width: 100%; }
.ap-project img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 400ms; }
.ap-project:hover img { transform: scale(1.05); }
.ap-project__caption { position: absolute; left: 0; right: 0; bottom: 0; padding: 40px 20px 18px; background: linear-gradient(0deg, #021a3dd9, transparent); color: #fff; display: flex; justify-content: space-between; align-items: center; gap: 12px; text-align: left; }
.ap-project__caption strong { color: #fff; font-size: 16px; font-weight: 600; }
.ap-project__caption i { width: 36px; height: 36px; flex: none; border-radius: 50%; background: var(--ap-sky); display: flex; align-items: center; justify-content: center; }

.ap-modal { border: none; padding: 0; border-radius: var(--ap-radius-card); max-width: min(960px, 92vw); width: 100%; box-shadow: 0 30px 80px #021a3d80; }
.ap-modal::backdrop { background: #021a3dcc; }
.ap-modal__head { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 18px 24px; border-bottom: 1px solid var(--ap-border-soft); }
.ap-modal__head h3 { font-size: 18px; }
.ap-modal__close { width: 40px; height: 40px; border-radius: 50%; border: none; background: var(--ap-chip); color: var(--ap-blue); font-size: 18px; cursor: pointer; }
.ap-modal__close:hover { background: var(--ap-blue); color: #fff; }
.ap-modal img { display: block; width: 100%; max-height: 75vh; object-fit: contain; background: var(--ap-tint); }

/* ---------- Empty / error ---------- */
.ap-empty { text-align: center; padding: 40px 20px; color: var(--ap-muted); border: 1px dashed var(--ap-border); border-radius: var(--ap-radius-md); }
.ap-error { text-align: center; display: flex; flex-direction: column; gap: 18px; align-items: center; padding: 60px 0; }
.ap-error__code { font-family: var(--ap-font-display); font-size: 96px; line-height: 1; color: var(--ap-blue); }

@media (max-width: 600px) {
    .ap-section { padding: 64px 0; }
    .ap-vision { padding: 70px 0 60px; }
    .ap-statement { padding: 80px var(--ap-gutter); }
    .ap-form { padding: 30px 22px; }
    .ap-contact__info { padding: 34px 26px; }
    .ap-page-banner { padding: 80px 0 56px; }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { transition: none !important; }
}

/* Containers with decorative overflow: `clip` (unlike `hidden`) cannot be scrolled by scripts/find-in-page */
@supports (overflow: clip) {
    .ap-statement, .ap-vision, .ap-contact__info, .ap-hero, .ap-page-banner, .ap-pillar { overflow: clip; }
}

/* Service item hover: icon fills with the brand gradient */
.ap-item > i.fa { transition: background 250ms, color 250ms, box-shadow 250ms; }
.ap-item:hover > i.fa { background: linear-gradient(135deg, var(--ap-blue), var(--ap-sky)); color: #fff; box-shadow: 0 6px 16px #0350ba5e; }

/* Tile variant: icon on top, centered title — for title-only service lists */
.ap-item--tile { flex-direction: column; align-items: center; text-align: center; gap: 14px; padding: 28px 20px 24px; }
.ap-item--tile > i.fa { width: 58px; height: 58px; border-radius: 18px; font-size: 23px; }
.ap-item--tile > div { width: 100%; }
/* phones: compact rows (icon left, title vertically centered) instead of tall stacked tiles */
@media (max-width: 600px) {
    .ap-item--tile { flex-direction: row; justify-content: flex-start; text-align: left; gap: 16px; padding: 16px 18px; }
    .ap-item--tile > i.fa { width: 46px; height: 46px; border-radius: 14px; font-size: 19px; }
}
