:root {
  --cp-navy: #092f59;
  --cp-navy-deep: #07284a;
  --cp-blue: #0f4c84;
  --cp-gold: #ce9c2d;
  --cp-ink: #172b40;
  --cp-muted: #697481;
  --cp-line: #e2e7eb;
  --cp-soft: #f3f5f7;
  --cp-shell: min(1200px, calc(100% - 64px));
  --cp-display: "Montserrat", sans-serif;
  --cp-body: "Be Vietnam Pro", sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; overflow-x: hidden; color: var(--cp-ink); background: #fff; font-family: var(--cp-body); }
body.menu-open { overflow: hidden; }
img { display: block; width: 100%; }
a { color: inherit; text-decoration: none; }
button { font: inherit; }
.cap-shell { width: var(--cp-shell); margin-inline: auto; }
section[id] { scroll-margin-top: 78px; }

.site-header { position: fixed; inset: 0 0 auto; z-index: 60; height: 82px; color: #fff; background: rgba(6, 40, 75, .96); border-bottom: 1px solid rgba(255, 255, 255, .12); transition: transform .3s ease, box-shadow .2s ease; }
.site-header.is-scrolled { box-shadow: 0 10px 26px rgba(5, 27, 52, .2); }
.site-header.is-hidden { transform: translateY(-110%); }
.header-inner { display: flex; align-items: center; height: 100%; gap: 34px; }
.cap-brand { flex: 0 0 auto; }
.cap-brand strong { display: block; font-family: var(--cp-display); font-size: 1.48rem; line-height: 1; letter-spacing: .025em; }
.cap-brand small { display: block; margin-top: 5px; font-size: .75rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.site-nav { display: flex; align-self: stretch; align-items: center; gap: clamp(17px, 2vw, 31px); margin-left: auto; }
.site-nav a { position: relative; display: flex; align-items: center; height: 100%; font-size: .75rem; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; white-space: nowrap; }
.site-nav a::after { position: absolute; right: 0; bottom: 20px; left: 0; height: 2px; content: ""; background: var(--cp-gold); transform: scaleX(0); transform-origin: left; transition: transform .2s ease; }
.site-nav a:hover::after, .site-nav a.active::after { transform: scaleX(1); }
.header-cta { display: inline-flex; align-items: center; justify-content: center; min-width: 114px; min-height: 38px; padding: 0 16px; border: 1px solid rgba(255, 255, 255, .55); font-size: .75rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.menu-toggle { display: none; width: 44px; height: 44px; margin-left: auto; padding: 0; color: #fff; background: transparent; border: 0; }
.menu-toggle span, .menu-toggle::before, .menu-toggle::after { display: block; width: 25px; height: 2px; margin: 5px auto; content: ""; background: currentColor; transition: .2s; }

.cap-project-hero { position: relative; display: grid; min-height: 565px; place-items: center; overflow: hidden; color: #fff; background: var(--cp-navy); isolation: isolate; }
.cap-project-hero > img { position: absolute; inset: 0; z-index: -2; height: 100%; object-fit: cover; object-position: center 54%; }
.cap-project-hero__shade { position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(5, 34, 65, .94), rgba(5, 39, 73, .69) 49%, rgba(5, 39, 73, .42)), linear-gradient(180deg, rgba(4, 29, 55, .16), rgba(4, 29, 55, .53)); }
.cap-project-hero__content { padding-top: 78px; text-align: center; }
.cap-project-hero h1 { margin: 0; font-family: var(--cp-display); font-size: clamp(2.45rem, 4.8vw, 3.75rem); font-weight: 800; line-height: 1.02; letter-spacing: -.035em; text-transform: uppercase; }
.cap-project-hero p { margin: 27px 0 0; color: #dfe8f1; font-size: .8rem; line-height: 1.8; }
.hero-actions { display: flex; justify-content: center; gap: 17px; margin-top: 31px; }
.cap-button { display: inline-flex; align-items: center; justify-content: center; min-width: 215px; min-height: 46px; padding: 0 23px; font-size: .75rem; font-weight: 800; letter-spacing: .045em; text-transform: uppercase; }
.cap-button--gold { background: var(--cp-gold); border: 1px solid var(--cp-gold); }
.cap-button--outline { border: 1px solid rgba(255, 255, 255, .72); }

.cap-section { padding: 83px 0 91px; }
.section-heading { max-width: 970px; margin-bottom: 42px; }
.section-heading > span { display: block; margin-bottom: 15px; color: var(--cp-gold); font-size: .75rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.section-heading h2 { position: relative; margin: 0; padding-bottom: 16px; color: var(--cp-navy); font-family: var(--cp-display); font-size: clamp(1.72rem, 3vw, 2.65rem); font-weight: 800; line-height: 1.17; letter-spacing: -.03em; text-transform: uppercase; }
.section-heading h2::after { position: absolute; bottom: 0; left: 0; width: 62px; height: 4px; content: ""; background: var(--cp-gold); }
.section-heading p { max-width: 920px; margin: 18px 0 0; color: var(--cp-muted); font-size: .77rem; line-height: 1.83; }

.people-map { background: var(--cp-soft); }
.people-dashboard { display: grid; grid-template-columns: .82fr 1.18fr; grid-template-rows: auto auto; gap: 22px; }
.headcount-card, .engineer-card, .worker-card { background: #fff; border: 1px solid var(--cp-line); }
.headcount-card { grid-row: 1 / 3; padding: 38px 34px; }
.headcount-card > span { color: var(--cp-gold); font-size: .75rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.headcount { display: flex; align-items: end; gap: 12px; margin: 23px 0 24px; }
.headcount strong { color: var(--cp-navy); font-family: var(--cp-display); font-size: 3.75rem; line-height: .82; }
.headcount b { color: var(--cp-muted); font-size: .75rem; text-transform: uppercase; }
.headcount-card hr { height: 1px; margin: 0 0 25px; background: var(--cp-line); border: 0; }
.headcount-card h3 { margin: 0 0 18px; color: var(--cp-navy); font-size: .75rem; text-transform: uppercase; }
.headcount-card dl { margin: 0; }
.headcount-card dl div { display: grid; grid-template-columns: 56px 1fr; align-items: center; gap: 13px; padding: 13px 0; border-bottom: 1px solid var(--cp-line); }
.headcount-card dl div:last-child { border-bottom: 0; }
.headcount-card dt { color: var(--cp-gold); font-family: var(--cp-display); font-size: 1.25rem; font-weight: 800; }
.headcount-card dd { margin: 0; color: #526071; font-size: .75rem; font-weight: 700; }
.engineer-card { padding: 31px 32px 27px; }
.engineer-card h3, .worker-card h3 { margin: 0 0 24px; color: var(--cp-navy); font-size: .75rem; text-transform: uppercase; }
.engineer-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0 27px; }
.engineer-grid div { display: grid; grid-template-columns: 37px 1fr; align-items: center; gap: 9px; padding: 10px 0; border-bottom: 1px solid var(--cp-line); }
.engineer-grid strong { color: var(--cp-gold); font-family: var(--cp-display); font-size: .92rem; }
.engineer-grid span { color: #586576; font-size: .75rem; font-weight: 600; }
.worker-card { padding: 29px 32px; color: #fff; background: var(--cp-navy); border-color: var(--cp-navy); }
.worker-card h3 { color: #fff; }
.worker-card dl { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px 28px; margin: 0; }
.worker-card dl div { display: grid; grid-template-columns: 36px 1fr; align-items: center; gap: 8px; }
.worker-card dt { color: var(--cp-gold); font-family: var(--cp-display); font-size: .9rem; font-weight: 800; }
.worker-card dd { margin: 0; color: #d0dce7; font-size: .75rem; }
.worker-card p { margin: 20px 0 0; padding-top: 15px; color: #9fb1c3; border-top: 1px solid rgba(255, 255, 255, .15); font-size: .75rem; line-height: 1.6; }

.equipment-command { background: #fff; }
.equipment-board { display: grid; grid-template-columns: repeat(2, 1fr); gap: 23px; }
.equipment-card { overflow: hidden; background: var(--cp-soft); border: 1px solid var(--cp-line); }
.equipment-card img { height: 235px; object-fit: cover; }
.equipment-card:first-child img { object-position: center 48%; }
.equipment-card:nth-child(2) img { object-position: center 32%; }
.equipment-card:nth-child(3) img { object-position: center 58%; }
.equipment-card:nth-child(4) img { object-position: center 57%; }
.equipment-card div { min-height: 137px; padding: 24px 26px; }
.equipment-card h3 { margin: 0 0 10px; color: var(--cp-navy); font-size: .75rem; text-transform: uppercase; }
.equipment-card p { margin: 0; color: var(--cp-muted); font-size: .75rem; line-height: 1.72; }

.portfolio-section { background: var(--cp-soft); }
/* Bốn nhóm dự án xếp liền mạch, đánh số 01-04 thay cho thanh tab điều hướng cũ. */
.project-group { scroll-margin-top: 90px; }
.project-group:first-of-type { margin-top: 34px; }
.project-group + .project-group { margin-top: 52px; }
.project-group__title { display: flex; align-items: center; gap: 14px; margin: 0 0 22px; padding-bottom: 13px; color: var(--cp-navy); font-family: var(--cp-display); font-size: .84rem; font-weight: 800; letter-spacing: .045em; text-transform: uppercase; border-bottom: 1px solid var(--cp-line); }
.project-group__index { display: grid; flex: 0 0 auto; place-items: center; width: 34px; height: 34px; color: var(--cp-gold); border: 1px solid var(--cp-gold); font-size: .78rem; font-weight: 800; letter-spacing: .02em; }
.project-table { display: grid; gap: 20px; }
.project-table--two { grid-template-columns: repeat(2, 1fr); }
.portfolio-card { position: relative; min-height: 210px; padding: 25px 27px 23px; background: #fff; border: 1px solid var(--cp-line); }
.portfolio-card__top { display: flex; align-items: start; justify-content: space-between; gap: 22px; }
.portfolio-card h4, .metro-project h4 { margin: 0; color: var(--cp-navy); font-size: .75rem; line-height: 1.5; text-transform: uppercase; }
.portfolio-card__top > span { flex: 0 0 auto; color: #75808d; font-size: .75rem; font-weight: 700; text-transform: uppercase; }
.portfolio-card > strong, .metro-project > div > strong { display: block; margin-top: 10px; color: var(--cp-gold); font-family: var(--cp-display); font-size: 1.15rem; text-transform: uppercase; }
.portfolio-card > p, .metro-project > div > p { margin: 15px 0 30px; color: var(--cp-muted); font-size: .75rem; line-height: 1.72; }
.portfolio-card footer, .metro-project footer { position: absolute; right: 27px; bottom: 20px; left: 27px; padding-top: 11px; color: #536174; border-top: 1px solid var(--cp-line); font-size: .75rem; font-weight: 800; text-transform: uppercase; }
.portfolio-card--accent { color: #fff; background: var(--cp-navy); border-color: var(--cp-navy); }
.portfolio-card--accent h4 { color: #fff; }
.portfolio-card--accent > p { color: #c7d4e0; }
.portfolio-card--accent footer { color: #d4dee8; border-top-color: rgba(255, 255, 255, .16); }

.metro-project { position: relative; display: grid; grid-template-columns: .43fr .57fr; min-height: 310px; background: #fff; border: 1px solid var(--cp-line); }
.metro-project > img { height: 100%; min-height: 310px; object-fit: cover; object-position: center 49%; }
.metro-project > div { position: relative; padding: 30px 32px; }
.metro-project footer { right: 32px; left: 32px; }

.certification-section { background: var(--cp-soft); }
.certificate-board { display: grid; grid-template-columns: repeat(2, 1fr); gap: 23px; }
.certificate-card { position: relative; min-height: 350px; overflow: hidden; background: #fff; border: 1px solid var(--cp-line); box-shadow: 0 8px 23px rgba(18, 46, 73, .045); }
.certificate-card > header { min-height: 51px; padding: 18px 24px; color: #fff; background: var(--cp-navy); font-size: .75rem; font-weight: 800; text-transform: uppercase; }
.certificate-card > div { position: relative; min-height: 298px; padding: 31px 27px; }
.certificate-card h3 { margin: 0 0 8px; color: var(--cp-gold); font-size: .75rem; text-transform: uppercase; }
.certificate-card p { max-width: 80%; margin: 0 0 31px; color: var(--cp-muted); font-size: .75rem; line-height: 1.75; }
.approval-seal { position: absolute; right: 24px; bottom: 23px; display: grid; width: 58px; height: 58px; place-items: center; color: #b9444c; border: 2px solid currentColor; border-radius: 50%; font-family: var(--cp-display); font-size: .75rem; font-weight: 800; text-transform: uppercase; transform: rotate(-8deg); }
.quality-quote { margin: 37px 0 0; padding: 35px 40px 35px 76px; color: #fff; background: var(--cp-navy); border: 0; font-family: var(--cp-display); font-size: .94rem; font-weight: 700; line-height: 1.65; }
.quality-quote::before { content: "“"; float: left; margin: -7px 22px 0 -39px; color: var(--cp-gold); font-family: Georgia, serif; font-size: 2.6rem; line-height: 1; }

.guarantee-section { background: #fff; }
.partner-caption { margin-bottom: 15px; color: var(--cp-gold); font-size: .75rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.partner-row { display: grid; grid-template-columns: repeat(6, 1fr); gap: 13px; margin-bottom: 31px; }
.partner-row span { display: grid; min-height: 68px; place-items: center; color: #526174; background: var(--cp-soft); border: 1px solid var(--cp-line); font-family: var(--cp-display); font-size: .75rem; font-weight: 800; text-align: center; }
.finance-board { display: grid; grid-template-columns: .72fr 1.28fr; gap: 24px; }
.capital-block { min-height: 335px; padding: 35px 32px; color: #fff; background: var(--cp-navy); }
.capital-block > span { color: var(--cp-gold); font-size: .75rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; }
.capital-block > div { display: flex; align-items: end; gap: 12px; margin: 24px 0; }
.capital-block strong { font-family: var(--cp-display); font-size: 3.75rem; line-height: .85; }
.capital-block b { font-size: .75rem; text-transform: uppercase; }
.capital-block hr { height: 1px; margin: 0 0 24px; background: rgba(255, 255, 255, .18); border: 0; }
.capital-block p { margin: 0; color: #c8d5e1; font-size: .75rem; line-height: 1.8; }
.capital-block p b { display: inline-block; margin-bottom: 4px; color: var(--cp-gold); font-size: .75rem; }
.bank-list { display: grid; gap: 13px; }
.bank-list article { display: grid; grid-template-columns: 1fr .76fr; align-items: center; min-height: 103px; padding: 22px 28px; background: var(--cp-soft); border: 1px solid var(--cp-line); }
.bank-list span { display: block; margin-bottom: 9px; color: var(--cp-navy); font-size: .75rem; font-weight: 800; text-transform: uppercase; }
.bank-list strong { color: var(--cp-gold); font-family: var(--cp-display); font-size: 1.03rem; text-transform: uppercase; }
.bank-list p { margin: 0; color: var(--cp-muted); font-size: .75rem; line-height: 1.65; }
.guarantee-cta { display: flex; align-items: center; justify-content: space-between; min-height: 62px; margin-top: 29px; padding: 0 25px; color: #fff; background: var(--cp-gold); }
.guarantee-cta a { font-size: .75rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }

.cap-footer { color: #fff; background: var(--cp-navy); }
.cap-footer__inner { display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: 50px; min-height: 119px; }
.cap-footer__inner > div { display: flex; align-items: center; gap: 18px; }
.cap-footer strong { font-family: var(--cp-display); font-size: 1.34rem; }
.cap-footer span { font-size: .75rem; font-weight: 700; text-transform: uppercase; }
.cap-footer p { margin: 0; color: #afbdcc; font-size: .75rem; }
.cap-footer small { color: #99aabd; font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; }

.reveal, .reveal-item { opacity: 0; transform: translateY(22px); transition: opacity .65s cubic-bezier(.22, 1, .36, 1), transform .65s cubic-bezier(.22, 1, .36, 1); transition-delay: var(--reveal-delay, 0s); }
.reveal.is-visible, .reveal-group.is-visible > .reveal-item { opacity: 1; transform: none; }

@media (max-width: 980px) {
  :root { --cp-shell: min(100% - 42px, 760px); }
  .site-header { height: 72px; }
  .site-nav { position: fixed; inset: 72px 0 auto; display: grid; align-content: start; height: calc(100vh - 72px); padding: 28px 24px; color: var(--cp-ink); background: #fff; transform: translateX(100%); transition: transform .24s ease; }
  .site-nav.is-open { transform: none; }
  .site-nav a { display: block; height: auto; padding: 14px 0; color: var(--cp-ink); border-bottom: 1px solid var(--cp-line); font-size: .78rem; }
  .site-nav a::after { display: none; }
  .header-cta { display: none; }
  .menu-toggle { display: block; }
  .menu-toggle.is-open span { opacity: 0; }
  .menu-toggle.is-open::before { transform: translateY(7px) rotate(45deg); }
  .menu-toggle.is-open::after { transform: translateY(-7px) rotate(-45deg); }
  .people-dashboard { grid-template-columns: 1fr; grid-template-rows: auto; }
  .headcount-card { grid-row: auto; }
  .equipment-card img { height: 210px; }
  .partner-row { grid-template-columns: repeat(3, 1fr); }
  .finance-board { grid-template-columns: .85fr 1.15fr; }
  .cap-footer__inner { grid-template-columns: 1fr auto; }
  .cap-footer p { display: none; }
}

@media (max-width: 680px) {
  :root { --cp-shell: calc(100% - 30px); }
  .cap-brand strong { font-size: 1.23rem; }
  .cap-brand small { font-size: .75rem; }
  .cap-project-hero { min-height: 535px; }
  .cap-project-hero > img { object-position: 54% center; }
  .cap-project-hero h1 { font-size: 2.2rem; line-height: 1.08; }
  .cap-project-hero p { font-size: .75rem; }
  .cap-project-hero p br { display: none; }
  .hero-actions { align-items: stretch; flex-direction: column; gap: 10px; width: min(100%, 285px); margin: 27px auto 0; }
  .cap-section { padding: 62px 0 68px; }
  .section-heading { margin-bottom: 31px; }
  .section-heading h2 { font-size: 1.62rem; }
  .section-heading p { font-size: .75rem; }
  .engineer-grid, .worker-card dl, .equipment-board, .project-table--two, .certificate-board, .finance-board { grid-template-columns: 1fr; }
  .headcount-card, .engineer-card, .worker-card { padding: 28px 23px; }
  .headcount strong { font-size: 3.25rem; }
  .equipment-card img { height: 220px; }
  .project-group + .project-group { margin-top: 40px; }
  .project-group__title { gap: 11px; font-size: .78rem; }
  .project-group__index { width: 30px; height: 30px; font-size: .72rem; }
  .portfolio-card { min-height: 225px; padding: 23px 21px; }
  .portfolio-card footer { right: 21px; left: 21px; }
  .metro-project { grid-template-columns: 1fr; }
  .metro-project > img { min-height: 230px; height: 230px; }
  .metro-project > div { min-height: 290px; padding: 26px 22px; }
  .metro-project footer { right: 22px; left: 22px; }
  .certificate-card { min-height: 330px; }
  .quality-quote { padding: 30px 25px 30px 58px; font-size: .79rem; }
  .partner-row { grid-template-columns: repeat(2, 1fr); }
  .capital-block { min-height: 300px; padding: 31px 26px; }
  .capital-block strong { font-size: 3.5rem; }
  .bank-list article { grid-template-columns: 1fr; gap: 13px; }
  .guarantee-cta { align-items: flex-start; flex-direction: column; justify-content: center; gap: 9px; padding-block: 16px; }
  .cap-footer__inner { gap: 20px; min-height: 100px; }
  .cap-footer__inner > div { display: block; }
  .cap-footer span { display: block; margin-top: 5px; }
}

@media (prefers-reduced-motion: reduce) and (not all) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition-duration: .01ms !important; }
  .reveal, .reveal-item { opacity: 1; transform: none; }
}
