/* Independent operating modules. Every rule is scoped to newly inserted modules. */
.kdo-module {
  --kdo-landing-border: #e3ebf4;
  --kdo-category-tint: #f4f7fc;
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  margin: 0;
  padding-block: 80px;
  color: #16233a;
  background: #fff;
  font-family: Inter, system-ui, -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  font-size: 16px;
  line-height: 1.6;
  overflow-wrap: anywhere;
  container-type: inline-size;
}
.kdo-module *, .kdo-module *::before, .kdo-module *::after { box-sizing: border-box; }
/* These four homepage sources have their own font override in the live theme. */
.kdo-module.kdo-module-cases, .kdo-module.kdo-module-credentials,
.kdo-module.kdo-module-reports, .kdo-module.kdo-module-services {
  font-family: "Noto Sans SC", -apple-system, BlinkMacSystemFont, "Microsoft YaHei", sans-serif;
}
.kdo-module :where(.wp-block-group, .wp-block-buttons, .wp-block-image, h2, h3, p) { margin-block: 0; }
.kdo-module :where(.wp-block-group, .wp-block-heading, p, figure) { min-width: 0; }
.kdo-module .kdo-wrap, .kdo-module .kdo-category-shell { width: 100%; max-width: 1200px; margin-inline: auto; padding-inline: 24px; }
.kdo-module h2 { color: #16233a; font-size: 30px; line-height: 1.35; font-weight: 700; margin: 0 0 12px; }
.kdo-module h3 { color: #16233a; font-weight: 700; }
.kdo-module .kdo-section-intro { max-width: 760px; margin: 0 auto 48px; color: #5b6a83; font-size: 15px; line-height: 1.6; text-align: center; }
.kdo-module a { color: #2e6fb8; text-underline-offset: .2em; }
.kdo-module a:focus-visible, .kdo-module summary:focus-visible { outline: 3px solid #006bea; outline-offset: 4px; }
.kdo-module img { max-width: 100%; height: auto; }
.kdo-module .kdo-grid { display: grid; gap: 24px; }
.kdo-module .kdo-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.kdo-module .kdo-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.kdo-module .kdo-card { padding: 28px; background: #fff; border: 1px solid var(--kdo-landing-border); border-radius: 12px; box-shadow: 0 4px 16px #0a1e3c0f; }
.kdo-module .kdo-card h3 { margin: 0 0 12px; font-size: 20px; line-height: 1.4; }
.kdo-module .kdo-card p { margin: 0 0 14px; color: #5b6a83; font-size: 15px; line-height: 1.4; }
.kdo-module .kdo-card p:last-child { margin-bottom: 0; }
.kdo-module .kdo-card a { text-decoration: none; font-weight: 700; }
.kdo-module .kdo-card a:hover { text-decoration: underline; }
.kdo-module .kdo-section-more { margin: 20px 0 0; text-align: right; }
.kdo-module .kdo-section-more a { font-size: 14px; font-weight: 700; text-decoration: none; }

/* Project cases: categories are matched from editable labels, independent of card order. */
.kdo-module.kdo-module-cases { background: #f4f8fc; }
.kdo-module.kdo-module-cases h2, .kdo-module.kdo-module-cases .kdo-section-intro { text-align: left; margin-inline: 0; }
.kdo-module.kdo-module-cases .kdo-section-more { margin-top: -65px; margin-bottom: 38px; }
.kdo-module .kdo-case-tabs { display: flex; gap: 10px; flex-wrap: wrap; margin: 24px 0; }
.kdo-module .kdo-case-filter { margin: 0; }
.kdo-module .kdo-case-filter a { display: inline-flex; align-items: center; min-height: 44px; padding: 8px 20px; border-radius: 30px; border: 1px solid #d4e2f4; background: #fff; text-decoration: none; font-size: 14px; color: #344d6d; }
.kdo-module .kdo-case-filter a.is-active { color: #fff; background: #2364b5; border-color: #2364b5; }
.kdo-module .kdo-case-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.kdo-module .kdo-case-card { position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: 14px; min-height: 228px; padding: 0 0 22px; border: 1px solid #dce7f4; box-shadow: none; border-radius: 12px; overflow: hidden; background: #fff; }
.kdo-module .kdo-case-card[hidden] { display: none !important; }
.kdo-module .kdo-case-card > h3, .kdo-module .kdo-case-card > p { margin-inline: 20px; }
.kdo-module .kdo-case-card h3 { font-size: 18px; margin-block: 12px; }
.kdo-module .kdo-case-card p { margin-block: 0; font-size: 14px; line-height: 22px; }
.kdo-module .kdo-case-card > p:last-child { margin-top: auto; }
.kdo-module .kdo-case-card .kdo-case-tag { margin-top: 18px; padding: 6px 12px; border-radius: 999px; color: #3d82d0; background: #eaf3fb; font-size: 13px; line-height: 1.3; }
.kdo-module .kdo-case-image { position: relative; width: 100%; background: #e7eff9; border-bottom: 1px solid #dce7f4; }
.kdo-module .kdo-case-image .wp-block-image { height: 190px; margin: 0; padding: 16px; }
.kdo-module .kdo-case-image .wp-block-image a { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; }
.kdo-module .kdo-case-image img { width: 100%; height: 100%; object-fit: contain; }
.kdo-module .kdo-case-image .kdo-case-image-label { position: absolute; right: 10px; bottom: 10px; margin: 0; padding: 3px 9px; border-radius: 4px; background: #fff; color: #536c8d; font-size: 11px; pointer-events: none; }
.kdo-module .kdo-case-detail { position: absolute; top: calc(100% + 8px); right: 10px; margin: 0; text-align: right; }
.kdo-module .kdo-case-detail a { display: inline-flex; gap: 6px; align-items: center; padding: 3px 8px; border: 1px solid #c9ddf7; border-radius: 6px; text-decoration: none; white-space: nowrap; }
.kdo-module .kdo-case-detail a:hover, .kdo-module .kdo-case-detail a:focus-visible { color: #fff; background: #075dbb; border-color: #075dbb; }

/* Credentials and reports. */
.kdo-module.kdo-module-credentials h2, .kdo-module.kdo-module-reports h2 { text-align: center; }
.kdo-module.kdo-module-credentials .kdo-section-intro { max-width: 900px; }
.kdo-module .kdo-core-credentials { padding-top: 24px; }
.kdo-module .kdo-credential-card { display: flex; flex-direction: column; align-items: stretch; padding: 24px; gap: 14px; background: #f4f8fc; border-radius: 16px; box-shadow: none; }
.kdo-module .kdo-credential-card h3 { min-height: 54px; margin: 0; line-height: 1.5; font-size: 18px; text-align: center; }
.kdo-module .kdo-credential-card > p { min-height: 66px; margin: 0; font-size: 14px; line-height: 1.6; }
.kdo-module .kdo-credential-card .wp-block-image { display: grid; place-items: center; width: 100%; height: 224px; margin: auto 0 0; padding: 10px; background: #fff; border: 0; border-radius: 8px; overflow: hidden; }
.kdo-module .kdo-credential-card .wp-block-image a { display: flex; width: 100%; height: 100%; align-items: center; justify-content: center; }
.kdo-module .kdo-credential-card img { display: block; width: auto; max-width: 100%; max-height: 204px; object-fit: contain; }
.kdo-module.kdo-module-reports .kdo-grid { gap: 20px; }
.kdo-module .kdo-sample-card { display: flex; flex-direction: column; padding: 16px; gap: 12px; box-shadow: none; }
.kdo-module .kdo-sample-thumb { display: grid; place-items: center; height: 150px; min-height: 150px; margin: 0; border-radius: 9px; background: linear-gradient(135deg, #eaf1fa, #d7e6f7); }
.kdo-module .kdo-sample-thumb .wp-block-image { display: grid; place-items: center; width: 100%; height: 150px; margin: 0; overflow: hidden; }
.kdo-module .kdo-sample-thumb .wp-block-image a { display: flex; width: 100%; height: 100%; align-items: center; justify-content: center; }
.kdo-module .kdo-sample-thumb img { width: auto; max-width: 100%; max-height: 146px; height: auto; object-fit: contain; }
.kdo-module .kdo-sample-card h3 { margin: 0; font-size: 20px; }
.kdo-module .kdo-sample-card p { font-size: 13px; line-height: 1.5; }
.kdo-module .kdo-sample-card .kdo-sample-action { margin-top: auto; color: #3d82d0; font-size: 14px; font-weight: 500; }
.kdo-module .kdo-sample-more { display: flex; flex-direction: column; justify-content: center; min-height: 300px; background: #edf5ff; }
.kdo-module .kdo-sample-more .kdo-sample-action { margin-top: 20px; }

/* Two service panels. */
.kdo-module.kdo-module-services { background: #f4f8fc; }
.kdo-module .kdo-business-layout { display: grid; grid-template-columns: minmax(0, 2.1fr) minmax(0, 1fr); gap: 24px; align-items: stretch; }
.kdo-module .kdo-business-panel { display: flex; flex-direction: column; min-width: 0; padding: 28px; border-radius: 18px; border: 1px solid #dce7f4; background: #fff; }
.kdo-module .kdo-business-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin: 0 0 22px; }
.kdo-module .kdo-business-title { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.kdo-module .kdo-business-heading h2 { margin: 0; font-size: 24px; line-height: 1.4; text-align: left; }
.kdo-module .kdo-business-badge { margin: 0; padding: 3px 13px; border-radius: 24px; background: #215fae; color: #fff; font-size: 13px; line-height: 1.5; white-space: nowrap; }
.kdo-module .kdo-business-more { margin: 0; flex-shrink: 0; font-size: 13px; line-height: 1.6; }
.kdo-module .kdo-business-more a { color: #1559ad; font-weight: 650; text-decoration: none; }
.kdo-module .kdo-business-cards { display: grid; flex: 1; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 1fr; gap: 14px; }
.kdo-module .kdo-business-card { min-width: 0; padding: 18px; border: 1px solid #dce8f7; border-radius: 11px; background: #f4f8fc; }
.kdo-module .kdo-business-card h3 { margin: 0 0 8px; font-size: 17px; line-height: 1.5; color: #162944; }
.kdo-module .kdo-business-card h3 a { color: inherit; text-decoration: none; }
.kdo-module .kdo-business-card h3 a:hover, .kdo-module .kdo-business-card h3 a:focus-visible { text-decoration: underline; }
.kdo-module .kdo-business-card p { margin: 0; color: #566c88; font-size: 14px; line-height: 1.65; }
.kdo-module .kdo-business-card-wide { grid-column: 1 / -1; }
.kdo-module .kdo-business-security { background: linear-gradient(180deg, #0e2458, #215fb4); border-color: transparent; color: #fff; }
.kdo-module .kdo-business-security h2 { color: #fff; }
.kdo-module .kdo-business-security .kdo-business-heading { flex-wrap: wrap; gap: 12px; }
.kdo-module .kdo-business-security .kdo-business-badge { background: #ffffff20; border: 1px solid #ffffff30; color: #bce1ff; }
.kdo-module .kdo-business-security .kdo-business-more a { color: #c5e8ff; }
.kdo-module .kdo-business-security .kdo-business-cards { grid-template-columns: 1fr; gap: 16px; }
.kdo-module .kdo-business-security .kdo-business-card { background: #ffffff14; border-color: #ffffff24; }
.kdo-module .kdo-business-security .kdo-business-card h3 { color: #fff; }
.kdo-module .kdo-business-security .kdo-business-card p { color: #c5dafa; }

/* Service-page modules: native editable group, heading, paragraph and details blocks. */
.kdo-module.kdo-category-section { padding-block: clamp(48px, 5.5vw, 76px); color: #102d53; line-height: 1.75; }
.kdo-module.kdo-category-tint { background: var(--kdo-category-tint); }
.kdo-module.kdo-category-section > .kdo-category-shell > h2 { margin: 0 0 14px; color: #102d53; font-size: clamp(25px, 2.5vw, 32px); line-height: 1.4; font-weight: 750; }
.kdo-module.kdo-category-section > .kdo-category-shell > h2::before { content: ""; display: block; width: 28px; height: 3px; margin-bottom: 18px; background: #328ed1; }
.kdo-module .kdo-category-section-intro { max-width: 58em; color: #66778b; }
.kdo-module .kdo-category-advantages-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 22px; margin-top: 32px; }
.kdo-module .kdo-category-advantage { padding: 26px; border: 1px solid #e8eef5; border-radius: 9px; background: #fff; }
.kdo-module .kdo-category-advantage h3 { margin-bottom: 15px; color: #102d53; font-size: 18px; line-height: 1.55; }
.kdo-module .kdo-category-advantage p { color: #657589; font-size: 14px; line-height: 1.85; }
.kdo-module .kdo-category-process { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(160px, 100%), 1fr)); gap: 18px; margin-top: 32px; }
.kdo-module .kdo-category-step { padding: 22px; border: 1px solid #e8eef5; border-radius: 8px; background: #fff; }
.kdo-module .kdo-category-step-number { display: grid; place-items: center; width: 34px; height: 34px; margin-bottom: 18px; border-radius: 50%; background: #368ccd; color: #fff; font-size: 14px; font-weight: 700; }
.kdo-module .kdo-category-step:nth-child(even) .kdo-category-step-number { background: #133b6c; }
.kdo-module .kdo-category-step h3 { margin-bottom: 10px; color: #102d53; font-size: 17px; line-height: 1.5; }
.kdo-module .kdo-category-step > p:not(.kdo-category-step-number) { color: #657589; font-size: 13px; line-height: 1.85; }
.kdo-module .kdo-category-faq-layout { display: grid; grid-template-columns: minmax(220px, .7fr) minmax(0, 1.3fr); gap: 70px; align-items: start; }
.kdo-module .kdo-category-faq-intro h2 { margin: 0 0 18px; color: #102d53; font-size: clamp(25px, 2.5vw, 32px); line-height: 1.4; }
.kdo-module .kdo-category-faq-intro > p { margin-bottom: 18px; color: #66778b; font-size: 15px; }
.kdo-module .kdo-category-card-link a { display: inline-flex; align-items: center; min-height: 36px; color: #075dbb; font-size: 14px; font-weight: 650; text-decoration: none; }
.kdo-module .kdo-category-card-link a::after { content: "›"; margin-left: 12px; font-size: 20px; }
.kdo-module .kdo-category-faq-list { min-width: 0; }
.kdo-module .kdo-category-faq-item { margin: 0 0 14px; border: 1px solid #dae6f3; border-radius: 9px; background: #fff; }
.kdo-module .kdo-category-faq-item summary { position: relative; padding: 20px 24px; color: #163b68; font-size: 16px; font-weight: 650; cursor: pointer; }
.kdo-module .kdo-category-faq-item summary::marker { color: #328ed1; }
.kdo-module .kdo-category-faq-item summary:hover { color: #006bea; background: #f7faff; border-radius: 9px; }
.kdo-module .kdo-category-faq-item[open] summary { border-bottom: 1px solid #edf2f8; }
.kdo-module .kdo-category-faq-item > p { margin: 0; padding: 20px 24px 0; color: #657589; font-size: 14px; line-height: 1.9; }
.kdo-module .kdo-category-faq-item .kdo-category-faq-source { padding: 12px 24px 20px; font-size: 13px; }
.kdo-module .kdo-category-faq-source a { text-decoration: none; }
.kdo-module .kdo-category-faq-source a:hover { text-decoration: underline; }

@media (max-width: 1080px) {
  .kdo-module .kdo-business-layout { grid-template-columns: 1fr; }
  .kdo-module .kdo-business-security .kdo-business-heading { flex-wrap: nowrap; }
  .kdo-module .kdo-business-security .kdo-business-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 1000px) {
  .kdo-module .kdo-grid-3, .kdo-module .kdo-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kdo-module .kdo-category-advantages-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kdo-module .kdo-category-faq-layout { gap: 36px; }
}
@media (max-width: 800px) {
  .kdo-module .kdo-case-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kdo-module.kdo-module-cases .kdo-section-more { margin: 0 0 24px; text-align: left; }
}
@media (max-width: 700px) {
  .kdo-module .kdo-category-process { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
  .kdo-module .kdo-category-step { padding: 20px; }
  .kdo-module .kdo-category-faq-layout { grid-template-columns: minmax(0, 1fr); gap: 25px; }
  .kdo-module .kdo-category-advantages-grid { gap: 16px; }
  .kdo-module .kdo-category-advantage { padding: 22px; }
}
@media (max-width: 640px) {
  .kdo-module { padding-block: 56px; }
  .kdo-module .kdo-wrap, .kdo-module .kdo-category-shell { padding-inline: max(16px, env(safe-area-inset-left)) max(16px, env(safe-area-inset-right)); }
  .kdo-module h2 { font-size: 24px; }
  .kdo-module .kdo-grid-3, .kdo-module .kdo-grid-4 { grid-template-columns: 1fr; }
  .kdo-module .kdo-business-panel { padding: 22px; }
  .kdo-module .kdo-business-heading, .kdo-module .kdo-business-security .kdo-business-heading { flex-wrap: wrap; }
  .kdo-module .kdo-business-heading h2 { font-size: 22px; }
  .kdo-module .kdo-business-cards, .kdo-module .kdo-business-security .kdo-business-cards { grid-template-columns: 1fr; }
  .kdo-module .kdo-business-card-wide { grid-column: auto; }
}
@media (max-width: 560px) {
  .kdo-module .kdo-case-grid { grid-template-columns: 1fr; }
  .kdo-module .kdo-case-image .wp-block-image { height: 210px; }
  .kdo-module .kdo-case-filter a { padding: 7px 13px; }
}
@media (max-width: 480px) {
  .kdo-module .kdo-category-advantages-grid { grid-template-columns: minmax(0, 1fr); }
  .kdo-module .kdo-category-faq-item summary { padding: 18px 20px; font-size: 15px; }
  .kdo-module .kdo-category-faq-item > p, .kdo-module .kdo-category-faq-item .kdo-category-faq-source { padding-inline: 20px; }
}
/* Modules may be inserted in a narrow parent column on a large screen. */
@container (max-width: 1000px) {
  .kdo-module .kdo-case-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@container (max-width: 800px) {
  .kdo-module .kdo-case-grid, .kdo-module .kdo-grid-3, .kdo-module .kdo-grid-4, .kdo-module .kdo-category-advantages-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .kdo-module .kdo-business-layout, .kdo-module .kdo-category-faq-layout { grid-template-columns: minmax(0, 1fr); }
  .kdo-module.kdo-module-cases .kdo-section-more { margin: 0 0 24px; text-align: left; }
}
@container (max-width: 560px) {
  .kdo-module .kdo-case-grid, .kdo-module .kdo-grid-3, .kdo-module .kdo-grid-4, .kdo-module .kdo-category-advantages-grid, .kdo-module .kdo-business-cards, .kdo-module .kdo-business-security .kdo-business-cards { grid-template-columns: minmax(0, 1fr); }
  .kdo-module .kdo-business-heading, .kdo-module .kdo-business-security .kdo-business-heading { flex-wrap: wrap; }
}
@container (max-width: 480px) {
  .kdo-module .kdo-category-process { grid-template-columns: minmax(0, 1fr); }
}

/* Common editable building blocks; used only by the three new module types. */
.kdo-module .kdo-template-label { margin: 0 0 14px; color: #2e6fb8; font-size: 13px; font-weight: 650; }
.kdo-module .kdo-image-text-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); align-items: center; gap: clamp(28px, 5vw, 64px); }
.kdo-module .kdo-image-text-media { padding: 24px; border: 1px solid #e3ebf4; border-radius: 16px; background: #f4f8fc; }
.kdo-module .kdo-image-text-media .wp-block-image { display: grid; place-items: center; height: clamp(260px, 30vw, 400px); margin: 0; }
.kdo-module .kdo-image-text-media img { display: block; width: auto; max-width: 100%; max-height: 100%; height: auto; object-fit: contain; }
.kdo-module .kdo-image-text-copy h2 { margin-bottom: 22px; }
.kdo-module .kdo-image-text-copy p:not(.kdo-template-label) { margin-bottom: 16px; color: #5b6a83; font-size: 15px; line-height: 1.85; }
.kdo-module .kdo-image-text-link a { display: inline-flex; align-items: center; min-height: 44px; color: #075dbb; font-weight: 650; text-decoration: none; }
.kdo-module .kdo-image-text-link a:hover { text-decoration: underline; }
.kdo-module .kdo-contact-cta-panel { padding: clamp(28px, 5vw, 56px); border: 1px solid #cddff3; border-radius: 18px; background: #edf5ff; text-align: center; }
.kdo-module .kdo-contact-cta-panel h2 { margin-bottom: 18px; color: #102d53; }
.kdo-module .kdo-contact-cta-panel p { max-width: 720px; margin: 0 auto 24px; color: #586b81; font-size: 16px; line-height: 1.8; }
.kdo-module .kdo-contact-cta-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin: 0; }
.kdo-module .kdo-contact-cta-actions .wp-block-button__link { display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: 12px 26px; border: 1px solid #2364b5; border-radius: 8px; background: #2364b5; color: #fff; font-size: 16px; font-weight: 650; line-height: 1.5; text-decoration: none; }
.kdo-module .kdo-contact-cta-actions .wp-block-button__link:hover { background: #174d91; border-color: #174d91; }
.kdo-module.kdo-module-scope { background: #f4f8fc; }
.kdo-module .kdo-scope-intro { max-width: 850px; margin: 0 0 32px; color: #66778b; font-size: 15px; line-height: 1.75; }
.kdo-module .kdo-scope-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 22px; }
.kdo-module .kdo-scope-item { padding: 26px; border: 1px solid #e0e8f1; border-radius: 12px; background: #fff; }
.kdo-module .kdo-scope-item h3 { margin: 0 0 14px; color: #102d53; font-size: 18px; line-height: 1.5; }
.kdo-module .kdo-scope-item p:not(.kdo-template-label) { color: #657589; font-size: 14px; line-height: 1.85; }
@media (max-width: 1000px) {
  .kdo-module .kdo-scope-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
  .kdo-module .kdo-image-text-layout { grid-template-columns: minmax(0, 1fr); gap: 28px; }
}
@media (max-width: 480px) {
  .kdo-module .kdo-scope-grid { grid-template-columns: minmax(0, 1fr); }
}
@container (max-width: 1000px) {
  .kdo-module .kdo-scope-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@container (max-width: 700px) {
  .kdo-module .kdo-image-text-layout { grid-template-columns: minmax(0, 1fr); gap: 28px; }
}
@container (max-width: 480px) {
  .kdo-module .kdo-scope-grid { grid-template-columns: minmax(0, 1fr); }
}
