/* Homepage: editorial layout, scoped to keep service pages independent. */
.home-page { background: #fcfafc; }
.hp-wrap { width: min(1200px, calc(100% - 80px)); margin-inline: auto; }
.hp-section { padding: 100px 0; }
.hp-eyebrow { margin: 0 0 20px; color: #733399; font-size: 11px; font-weight: 800; line-height: 1.4; letter-spacing: .15em; text-transform: uppercase; }
.hp-eyebrow-light { color: #dcb9ed; }
.hp-section h2 { margin: 0; color: #281a32; font-size: clamp(34px, 4vw, 52px); font-weight: 600; line-height: 1.12; letter-spacing: -.045em; }
.hp-section h3 { letter-spacing: -.025em; }
.hp-link { display: inline-flex; align-items: center; gap: 18px; color: #65268c; font-size: 14px; font-weight: 700; line-height: 1.5; }
.hp-link > span { font-size: 21px; transition: transform .2s; }
.hp-link:hover > span { transform: translate(3px, -2px); }
.hp-link-light { color: #f8effe; }
.hp-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 28px; margin-top: 34px; }
.hp-button { display: inline-flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 54px; padding: 16px 22px; border: 1px solid transparent; border-radius: 9px; font-size: 14px; font-weight: 700; line-height: 1.4; transition: background .2s, transform .2s; }
.hp-button svg { width: 20px; height: 20px; flex: 0 0 auto; }
.hp-button-light { color: #3c1753; background: #f8effe; }
.hp-button-light:hover { background: #e7c5fa; transform: translateY(-2px); }
.hp-skip { position: fixed; top: 10px; left: 16px; z-index: 3000; transform: translateY(-200%); padding: 12px 18px; border-radius: 8px; color: #fff; background: #64258f; }
.hp-skip:focus { transform: none; }

/* A continuous photographic hero rather than a separate image tile. */
.hp-hero { position: relative; isolation: isolate; padding: 174px 0 0; overflow: hidden; color: #fff; background: #1c1027; }
.hp-hero-photo { position: absolute; z-index: -2; right: 0; top: 0; width: 68%; height: 100%; object-fit: cover; object-position: 64% center; }
.hp-hero::before { content: ''; position: absolute; z-index: -1; inset: 0; background: linear-gradient(90deg, #1c1027 0%, #1c1027 27%, rgba(28,16,39,.89) 43%, rgba(28,16,39,.22) 75%), linear-gradient(0deg, #1c1027 0%, rgba(28,16,39,0) 48%); }
.hp-hero-inner { position: relative; }
.hp-hero-copy { max-width: 780px; position: relative; z-index: 1; }
.hp-hero .hp-eyebrow { display: flex; align-items: center; gap: 11px; margin-bottom: 27px; }
.hp-hero .hp-eyebrow > span { display: block; width: 6px; height: 6px; border-radius: 50%; background: #dcb9ed; box-shadow: 0 0 0 5px rgba(220,185,237,.1); }
.hp-hero h1 { margin: 0; color: #fff; font-size: clamp(60px, 6.5vw, 90px); font-weight: 600; line-height: 1.035; letter-spacing: -.055em; }
.hp-hero h1 em { color: #d8acee; font-style: normal; }
.hp-hero-description { max-width: 535px; margin-top: 28px; color: #d8ccdf; font-size: 17px; line-height: 1.75; }
.hp-hero-caption { position: absolute; right: 0; top: 282px; width: 232px; color: #e4dce8; font-size: 13px; line-height: 1.65; }
.hp-caption-rule { display: block; width: 44px; height: 2px; margin-bottom: 15px; background: #d6a9ef; }
.hp-hero-caption strong { color: #fff; font-weight: 500; }
.hp-hero-footer { display: grid; grid-template-columns: 1fr 1.1fr 1.1fr auto; align-items: center; gap: 28px; margin-top: 86px; padding: 29px 0 34px; border-top: 1px solid rgba(227,197,245,.22); }
.hp-hero-footer > div { display: flex; align-items: baseline; gap: 17px; }
.hp-hero-footer > div > span { color: #b58aca; font-size: 11px; font-weight: 500; }
.hp-hero-footer p { color: #c5b6d0; font-size: 12px; line-height: 1.7; }
.hp-hero-footer strong { color: #f5edf9; font-weight: 500; }
.hp-hero-footer > a { display: flex; gap: 22px; color: #e5c7f4; font-size: 12px; font-weight: 600; }
.hp-hero-footer > a span { font-size: 20px; }

.hp-section-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 50px; margin-bottom: 42px; }
.hp-heading-aside { max-width: 355px; color: #726777; font-size: 15px; line-height: 1.75; }
.hp-heading-aside .hp-link { margin-top: 20px; }
.hp-service-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.hp-service { display: flex; flex-direction: column; position: relative; min-width: 0; padding: 30px; border: 1px solid #e9e1ed; border-radius: 15px; background: #fff; transition: border-color .2s, box-shadow .2s, transform .2s; }
.hp-service:hover { border-color: #c8a2dc; box-shadow: 0 12px 34px rgba(48,21,64,.07); transform: translateY(-3px); }
.hp-service-top { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 38px; }
.hp-service-top > svg { width: 29px; height: 29px; color: #76379a; }
.hp-card-number { color: #85708f; font-size: 9px; font-weight: 700; letter-spacing: .12em; }
.hp-service h3 { color: #302039; font-size: 22px; font-weight: 600; line-height: 1.25; }
.hp-service p { margin: 14px 0 25px; color: #766b7b; font-size: 14px; line-height: 1.75; }
.hp-card-link { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: auto; font-size: 12px; font-weight: 700; line-height: 1.5; color: #6e318e; }
.hp-card-link > span { font-size: 23px; font-weight: 400; transition: transform .2s; }
a:hover .hp-card-link > span { transform: translate(3px, -3px); }
.hp-service-featured { grid-column: span 2; isolation: isolate; overflow: hidden; min-height: 345px; padding: 37px; border-color: #3a2645; background: #281831; }
.hp-service-featured > img { position: absolute; z-index: -2; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; opacity: .56; }
.hp-service-featured::before { content: ''; position: absolute; z-index: -1; inset: 0; background: linear-gradient(90deg, #281831 0%, rgba(40,24,49,.93) 32%, rgba(40,24,49,.1) 100%); }
.hp-service-content { display: flex; flex-direction: column; align-items: flex-start; width: 66%; height: 100%; }
.hp-card-kicker { display: block; margin-bottom: 20px; font-size: 10px; font-weight: 700; letter-spacing: .14em; line-height: 1.4; text-transform: uppercase; }
.hp-service-featured .hp-card-kicker { color: #d8b8e7; }
.hp-service-featured h3 { color: #fff; font-size: 33px; line-height: 1.14; font-weight: 500; }
.hp-service-featured p { color: #d6cadc; max-width: 365px; }
.hp-service-featured .hp-card-link { color: #f3d9ff; width: 100%; }
.hp-service-security { background: #eee4f5; border-color: #e4d2ed; }
.hp-service-security .hp-service-top { margin-bottom: 25px; }
.hp-service-security p { color: #64506f; }
.hp-service-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 25px; }
.hp-service-tags span { border-bottom: 1px solid #cdb6d9; padding-bottom: 4px; color: #745a83; font-size: 10px; }

.hp-partnership { background: #f1eaf4; }
.hp-partnership-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 75px; align-items: center; }
.hp-partnership-visual { position: relative; min-height: 580px; height: 100%; overflow: hidden; border-radius: 16px; }
.hp-partnership-visual > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 42% center; }
.hp-partnership-visual::after { content: ''; position: absolute; inset: 45% 0 0; background: linear-gradient(0deg, rgba(29,14,38,.95), transparent); }
.hp-image-note { position: absolute; bottom: 32px; left: 32px; right: 24px; z-index: 1; color: #fff; }
.hp-image-note > span { color: #dec5eb; font-size: 9px; font-weight: 700; letter-spacing: .17em; }
.hp-image-note p { margin-top: 12px; font-size: 25px; font-weight: 500; line-height: 1.3; letter-spacing: -.025em; }
.hp-lead { margin-top: 22px; color: #6d5e76; font-size: 15px; line-height: 1.8; }
.hp-partnership-option { display: flex; align-items: baseline; gap: 20px; padding-top: 26px; margin-top: 26px; border-top: 1px solid #dacde2; }
.hp-partnership-option > span { color: #9466ad; font-size: 12px; }
.hp-partnership-option h3 { color: #35203f; font-size: 19px; font-weight: 600; line-height: 1.4; }
.hp-partnership-option p { margin: 10px 0 14px; color: #75657d; font-size: 14px; line-height: 1.7; }
.hp-partnership-option .hp-link { font-size: 12px; }

.hp-spotlights { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.hp-spotlight { display: flex; flex-direction: column; overflow: hidden; border: 1px solid #e7dcec; border-radius: 16px; background: #f0e6f6; transition: box-shadow .2s, transform .2s; }
.hp-spotlight:hover { box-shadow: 0 15px 40px rgba(48,21,64,.09); transform: translateY(-3px); }
.hp-spotlight > img { width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; }
.hp-spotlight-copy { display: flex; flex-direction: column; flex: 1; padding: 32px; }
.hp-spotlight .hp-card-kicker { color: #7a468f; margin-bottom: 14px; }
.hp-spotlight h3 { color: #362040; font-size: 30px; font-weight: 500; line-height: 1.2; }
.hp-spotlight p { max-width: 430px; margin: 17px 0 22px; color: #78647f; font-size: 14px; line-height: 1.7; }
.hp-spotlight-ai { background: #271933; border-color: #392644; }
.hp-spotlight-ai .hp-card-kicker { color: #d8b6eb; }
.hp-spotlight-ai h3 { color: #fff; }
.hp-spotlight-ai p { color: #c8b9d3; }
.hp-spotlight-ai .hp-card-link { color: #e1bdf4; }
.hp-spotlight-sim > img { object-position: center 35%; }
.hp-specialists { display: grid; grid-template-columns: .9fr 1.4fr; gap: 75px; margin-top: 65px; padding-top: 45px; border-top: 1px solid #e5dce9; }
.hp-specialists .hp-eyebrow { margin-bottom: 15px; }
.hp-specialists h3 { color: #3d2848; font-size: 25px; font-weight: 500; line-height: 1.3; }
.hp-service-directory { display: grid; grid-template-columns: 1fr 1fr; gap: 0 30px; }
.hp-service-directory a { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 13px 0; border-bottom: 1px solid #e6dce9; color: #695474; font-size: 13px; line-height: 1.5; transition: color .2s; }
.hp-service-directory a span { color: #9a76ac; font-size: 19px; }
.hp-service-directory a:hover { color: #7c2daf; }

.hp-process { background: #291837; color: #c6b5d0; }
.hp-process h2 { color: #fff; }
.hp-process-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 52px; }
.hp-step { display: flex; align-items: center; gap: 25px; margin: 5px 0 30px; color: #ca9fe1; font-size: 13px; }
.hp-step i { display: block; flex: 1; height: 1px; background: #51375f; }
.hp-process h3 { margin-bottom: 15px; color: #f4eaf9; font-size: 21px; font-weight: 500; }
.hp-process article p { max-width: 335px; color: #beaec8; font-size: 14px; line-height: 1.8; }

.hp-contact .container { width: min(1200px, calc(100% - 80px)); max-width: none; padding: 0; }
.hp-contact .contact-grid { grid-template-columns: .9fr 1.1fr; gap: 75px; align-items: start; }
.hp-contact-copy { position: sticky; top: 135px; padding-top: 20px; }
.hp-contact-copy h2 { font-size: clamp(36px, 3.8vw, 50px); }
.hp-contact-copy h2 em { color: #8c48ad; font-style: normal; }
.hp-contact-copy > p:not(.hp-eyebrow) { max-width: 410px; margin-top: 24px; color: #7a6b83; font-size: 15px; line-height: 1.8; }
.hp-phone { display: block; margin-top: 32px; color: #552573; font-size: clamp(23px, 2.6vw, 32px); font-weight: 500; letter-spacing: -.04em; line-height: 1.5; }
.hp-phone > span { display: block; margin-bottom: 7px; color: #877391; font-size: 11px; font-weight: 500; letter-spacing: 0; }
.hp-phone i { margin-left: 12px; font-size: 25px; font-style: normal; color: #a574be; }
.hp-contact-next { margin-top: 33px; padding-top: 26px; border-top: 1px solid #e4d8eb; }
.hp-contact-next h3 { margin-bottom: 13px; color: #4e385a; font-size: 14px; font-weight: 600; }
.hp-contact-next ul { list-style: none; }
.hp-contact-next li { display: flex; gap: 12px; margin-top: 9px; color: #806c8a; font-size: 13px; line-height: 1.5; }
.hp-contact-next li::before { content: '↗'; color: #a478bc; }
.hp-existing-client { margin-top: 35px; display: flex; flex-direction: column; align-items: flex-start; gap: 5px; font-size: 12px; color: #897493; }
.hp-existing-client a { color: #673885; font-weight: 600; }
.hp-existing-client a span { margin-left: 15px; }
.hp-contact .form-wrap { padding: 36px; border: 1px solid #e4d8ea; border-radius: 18px; background: #fff; box-shadow: 0 20px 60px rgba(45,20,63,.04); }
.hp-contact .form-wrap .hp-eyebrow { margin-bottom: 13px; }
.hp-contact .form-wrap h3 { margin-bottom: 11px; color: #372340; font-size: 25px; font-weight: 600; line-height: 1.25; }
.hp-form-intro { margin-bottom: 27px; color: #75627e; font-size: 13px; line-height: 1.65; }
.hp-contact .form-label { margin-bottom: 8px; color: #67516f; font-size: 12px; font-weight: 600; }
.hp-contact .form-input, .hp-contact .form-select, .hp-contact .form-textarea { padding: 13px 15px; color: #3d2549; border-color: #e4dce8; border-radius: 8px; background: #fcfafc; font-size: 14px; }
.hp-contact .form-group { margin-bottom: 20px; }
.hp-contact .form-hint { color: #85728d; font-size: 11px; }
.hp-contact .form-verification { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; padding: 18px 0 0; border: 0; border-top: 1px solid #e7ddeb; border-radius: 0; background: transparent; gap: 16px; }
.hp-contact .form-verification-copy { flex: 1; min-width: 150px; }
.hp-contact .cf-turnstile { flex: 0 0 300px; }
.hp-contact .form-verification-copy strong { font-size: 12px; }
.hp-contact .form-verification-copy span { font-size: 11px; }
.hp-contact .form-submit { border-radius: 8px; padding: 15px 20px; background: #64258f; font-size: 14px; box-shadow: none; }
.hp-contact .form-submit:hover { background: #4d1c70; }
.home-page footer { border-top: 1px solid #493251; }

@media (min-width: 1500px) {
  .hp-hero { padding-top: 190px; }
  .hp-hero-footer { margin-top: 105px; }
}
@media (max-width: 1050px) {
  .hp-wrap, .hp-contact .container { width: calc(100% - 48px); }
  .hp-hero-caption { display: none; }
  .hp-hero h1 { font-size: clamp(60px, 7.5vw, 78px); }
  .hp-hero-photo { width: 75%; }
  .hp-hero::before { background: linear-gradient(90deg, #1c1027 0%, rgba(28,16,39,.92) 40%, rgba(28,16,39,.28) 100%), linear-gradient(0deg, #1c1027, transparent 65%); }
  .hp-partnership-grid, .hp-contact .contact-grid { gap: 40px; }
  .hp-service { padding: 24px; }
  .hp-service-featured { padding: 30px; }
  .hp-service-content { width: 80%; }
  .hp-service-featured h3 { font-size: 30px; }
  .hp-specialists { gap: 35px; }
  .hp-contact .form-wrap { padding: 26px; }
  .hp-process-grid { gap: 28px; }
}
@media (max-width: 760px) {
  .hp-section { padding: 68px 0; }
  .hp-hero { padding-top: 140px; }
  .hp-hero h1 { font-size: clamp(45px, 8.1vw, 60px); }
  .hp-hero-copy { max-width: 630px; }
  .hp-hero-description { max-width: 440px; font-size: 16px; }
  .hp-hero-photo { width: 100%; object-position: 67% center; opacity: .5; }
  .hp-hero::before { background: linear-gradient(90deg, #1c1027 0%, rgba(28,16,39,.8) 55%, rgba(28,16,39,.5)), linear-gradient(0deg, #1c1027, transparent 75%); }
  .hp-hero-footer { grid-template-columns: repeat(3, 1fr); gap: 18px; margin-top: 56px; padding-block: 24px; }
  .hp-hero-footer > a { display: none; }
  .hp-hero-footer > div { display: block; }
  .hp-hero-footer > div > span { display: block; margin-bottom: 7px; }
  .hp-hero-footer p { font-size: 11px; }
  .hp-section-heading { align-items: flex-start; flex-direction: column; gap: 24px; margin-bottom: 30px; }
  .hp-heading-aside { max-width: 550px; font-size: 14px; }
  .hp-service-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .hp-service-featured { min-height: 330px; }
  .hp-service-content { max-width: 360px; width: 75%; }
  .hp-service-featured h3 { font-size: 34px; }
  .hp-partnership-grid { grid-template-columns: 1fr; gap: 36px; }
  .hp-partnership-visual { min-height: 370px; }
  .hp-partnership-visual > img { object-position: center 48%; }
  .hp-spotlight-copy { padding: 23px; }
  .hp-spotlight h3 { font-size: 25px; }
  .hp-specialists { grid-template-columns: 1fr; gap: 28px; margin-top: 40px; }
  .hp-process-grid { grid-template-columns: 1fr; gap: 32px; }
  .hp-step { margin-bottom: 15px; }
  .hp-process article p { max-width: 550px; }
  .hp-contact .contact-grid { grid-template-columns: 1fr; gap: 34px; }
  .hp-contact-copy { position: static; padding-top: 0; }
  .hp-contact-copy h2 br { display: none; }
  .hp-contact-copy h2 { max-width: 510px; }
  .hp-contact-copy h2 em::before { content: ' '; }
  .hp-contact-copy > p:not(.hp-eyebrow) { max-width: 530px; }
  .hp-contact-next { display: none; }
  .hp-existing-client { margin-top: 24px; }
}
@media (max-width: 480px) {
  .hp-wrap, .hp-contact .container { width: calc(100% - 36px); }
  .hp-hero { padding-top: 125px; }
  .hp-hero .hp-eyebrow { font-size: 9px; letter-spacing: .12em; }
  .hp-hero h1 { font-size: clamp(37px, 9.6vw, 46px); letter-spacing: -.05em; }
  .hp-hero-description { margin-top: 22px; font-size: 15px; line-height: 1.7; }
  .hp-actions { gap: 20px; align-items: flex-start; flex-direction: column; margin-top: 27px; }
  .hp-button { min-height: 52px; font-size: 13px; }
  .hp-hero-footer { margin-top: 42px; gap: 12px; }
  .hp-hero-footer p { font-size: 10px; line-height: 1.6; }
  .hp-hero-footer > div > span { font-size: 10px; }
  .hp-section h2 { font-size: 35px; }
  .hp-service-grid { grid-template-columns: 1fr; gap: 14px; }
  .hp-service-featured { grid-column: auto; min-height: 365px; padding: 26px; }
  .hp-service-content { width: 90%; }
  .hp-service-featured h3 { font-size: 31px; }
  .hp-service-top { margin-bottom: 24px; }
  .hp-service h3 { font-size: 23px; }
  .hp-service-featured h3 { font-size: 31px; }
  .hp-service p { margin-bottom: 18px; }
  .hp-partnership-visual { min-height: 340px; }
  .hp-image-note { left: 24px; bottom: 25px; }
  .hp-image-note p { font-size: 23px; }
  .hp-spotlights { grid-template-columns: 1fr; gap: 20px; }
  .hp-spotlight h3 { font-size: 28px; }
  .hp-service-directory { grid-template-columns: 1fr; }
  .hp-contact .form-wrap { padding: 23px 18px; }
  .hp-contact .form-wrap h3 { font-size: 23px; }
  .hp-contact .form-verification { padding: 18px 0 0; }
  .hp-contact .form-input, .hp-contact .form-select, .hp-contact .form-textarea { font-size: 16px; }
}
@media (max-width: 380px) {
  .hp-contact .form-wrap { margin-inline: -18px; padding-inline: 8px; border-inline: 0; border-radius: 0; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .home-page *, .home-page *::before, .home-page *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}
