/* KHDN page V2 (template CORPORATE_CUSTOMER_HOME_V2). Design: Figma "doanhnghiep v1.3.3 final" 1660:2 / 1666:2 / 1683:2,
   notes in docs/templates/corporate-v2.md. Linked by layouts/corporate_v2.blade.php right after chrome-v2.css (tokens,
   .wrap, .btn, header, footer). Scoped under .kd and the roots body.kd-body / html:has(body.kd-body). Mobile-first,
   min-width 601 / 1024 / 1220px. One "===== kd:NAME =====" block per section, in page order. No Vietnamese text here. */

/* ===== kd:base ===== */
body.kd-body { margin: 0; background: #fff; }
/* ja: no line may start with a small kana or a prolonged sound mark (katakana names). */
.kd:lang(ja) { line-break: strict; }
@media (prefers-reduced-motion: no-preference) {
    html:has(body.kd-body) { scroll-behavior: smooth; }
}
.kd {
    --kd-muted: #6c707a; /* text-neutral-tertiary, 5.0:1 on white */
    --kd-card-line: #f4f4f6;
    --kd-shadow-card: 0 10px 28px -12px rgba(21, 23, 28, .18);
    --kd-shadow-sm: 0 2px 8px rgba(21, 23, 28, .12);
    width: 100%;
    font-family: 'Inter', 'Inter Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
    color: var(--lp2-ink);
    background: var(--lp2-white);
    -webkit-text-size-adjust: 100%;
}
/* Until load and first paint (html.lp2-wait): the metric-matched fallback font only; each section also hides its lazy
   images there (their boxes keep their size). */
html.lp2-wait .kd { font-family: 'Inter Fallback', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif; }
.kd *, .kd *::before, .kd *::after { box-sizing: border-box; }
.kd h1, .kd h2, .kd h3, .kd h4, .kd p, .kd ul, .kd ol, .kd li, .kd figure, .kd dl, .kd dd, .kd blockquote, .kd form, .kd fieldset { margin: 0; }
.kd ul, .kd ol { padding: 0; list-style: none; }
.kd fieldset { padding: 0; border: 0; min-width: 0; }
.kd a { color: inherit; text-decoration: none; }
.kd button, .kd input, .kd select, .kd textarea { font: inherit; color: inherit; }
.kd img { display: block; max-width: 100%; height: auto; }

/* ===== kd:shared ===== */
/* Deviation: leads stay 16/24 (18/28 from 1024px), not the Final UI 14px (read as a type-token slip; see the docs). */
.kd .kd-title { color: var(--lp2-ink); font-size: 28px; font-weight: 700; line-height: 36px; text-wrap: balance; }
.kd .kd-title__accent {
    background-image: var(--lp2-text-grad);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    -webkit-text-fill-color: transparent;
}
.kd .kd-lead { color: var(--kd-muted); font-size: 16px; font-weight: 500; line-height: 24px; }
@media (min-width: 601px) {
    .kd .kd-title { font-size: 32px; line-height: 40px; letter-spacing: -.02em; }
}
@media (min-width: 1024px) {
    .kd .kd-title { font-size: 36px; line-height: 44px; letter-spacing: 0; }
    .kd .kd-lead { font-size: 18px; line-height: 28px; }
}
/* Print: clipped-background text prints blank without background graphics. */
@media print {
    .kd .kd-title__accent { background: none; color: #a3282b; -webkit-text-fill-color: #a3282b; }
}
/* Marquee pause button (WCAG 2.2.2): printed hidden, shown by the shared motion layer while motion is allowed. */
.kd .kd-pause {
    position: absolute;
    z-index: 2;
    display: grid;
    place-items: center;
    width: 32px;
    height: 32px;
    padding: 0;
    border: 1px solid var(--lp2-line);
    border-radius: 50%;
    background: var(--lp2-white);
    color: var(--lp2-ink);
    cursor: pointer;
    transition: background-color .2s;
}
/* Needed: display: grid above outranks [hidden], also when the motion layer is missing. */
.kd .kd-pause[hidden] { display: none; }
.kd .kd-pause__icon { display: block; }
.kd .kd-pause[aria-pressed="true"] .kd-pause__icon--pause, .kd .kd-pause:not([aria-pressed="true"]) .kd-pause__icon--play { display: none; }
.kd .kd-pause:active { background: var(--lp2-grey-150); }
@media (hover: hover) and (pointer: fine) {
    .kd .kd-pause:hover { background: var(--lp2-grey-150); }
}
@media (prefers-reduced-motion: reduce) {
    .kd .kd-pause { display: none; transition: none; }
}
@media print {
    .kd .kd-pause { display: none; }
}

/* ===== kd:hero ===== */
/* ---------- Hero #top (Figma 1660:5 / 1666:5 / 1683:5) ---------- */
.kd .kd-hero {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    min-height: 568px;
    padding: 116px 0 72px;
    background: #f6efe4;
}
/* The art is the LCP: never lazy, so no html.lp2-wait rule in this block. */
.kd .kd-hero__media { position: absolute; top: 125px; right: 0; bottom: 0; left: 0; }
.kd .kd-hero__img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: cover;
    object-position: 50% 50%;
}
.kd .kd-hero__inner { position: relative; z-index: 1; text-align: center; }
.kd .kd-hero__title {
    color: var(--lp2-ink);
    font-size: 32px;
    font-weight: 700;
    line-height: 40px;
    letter-spacing: -.02em;
    text-wrap: balance;
    overflow-wrap: break-word;
}
.kd .kd-hero__title-main { display: block; }
.kd .kd-hero__title-accent { display: inline-block; color: #a3282b; }
@supports ((-webkit-background-clip: text) or (background-clip: text)) {
    .kd .kd-hero__title-accent {
        background-image: var(--lp2-text-grad);
        -webkit-background-clip: text;
        background-clip: text;
        color: transparent;
        -webkit-text-fill-color: transparent;
    }
}
.kd .kd-hero__actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 12px; padding-top: 24px; }
.kd .kd-hero__cta {
    max-width: 100%;
    padding: 8px 24px;
    font-size: 16px;
    white-space: normal;
    text-align: center;
    overflow-wrap: anywhere;
}

/* Deviation (WCAG non-text contrast): white chevrons on the cream art measure 1.1:1, so they sit on a dark disc. */
.kd .kd-hero__scroll {
    position: absolute;
    bottom: 8px;
    left: 50%;
    z-index: 2;
    width: 48px;
    height: 48px;
    margin-left: -24px;
    border-radius: var(--lp2-radius-2xl);
    background: rgba(21, 23, 28, .6);
    color: #fff;
    transition: background-color .2s;
}
.kd .kd-hero__chevron { position: absolute; top: 5.5px; left: 10px; display: block; }
.kd .kd-hero__chevron--2 { top: 19.5px; }

@media (min-width: 601px) {
    .kd .kd-hero { min-height: 569px; padding: 129px 0 80px; }
    .kd .kd-hero__media { top: 0; }
    /* Phone-only art (no desktop image): none from 601px. */
    .kd .kd-hero__media--m { display: none; }
    .kd .kd-hero__title { font-size: 40px; line-height: 48px; letter-spacing: 0; }
    .kd .kd-hero__actions { gap: 24px; padding-top: 32px; }
    .kd .kd-hero__cta { padding: 8px 28px; }
    .kd .kd-hero__scroll { bottom: 16px; }
}
@media (min-width: 1024px) {
    .kd .kd-hero { min-height: 849px; padding-top: 153px; }
    .kd .kd-hero__title { font-size: 56px; line-height: 64px; }
}
@media (hover: hover) and (pointer: fine) {
    .kd .kd-hero__scroll:hover { background: rgba(21, 23, 28, .75); }
}
@media (prefers-reduced-motion: reduce) {
    .kd .kd-hero__scroll, .kd .kd-hero__cta { transition: none; }
}
/* Print: no scroll link; the gradient title and the red fill would print blank without background graphics. */
@media print {
    .kd .kd-hero__scroll { display: none; }
    .kd .kd-hero__title-accent { background: none; color: #a3282b; -webkit-text-fill-color: #a3282b; }
    .kd .kd-hero__actions .btn--primary { border: 1px solid #a3282b; background: none; color: #a3282b; }
}

/* ===== kd:deals ===== */
/* ---------- Featured deals #deals (Figma 1660:28 / 1666:27 / 1683:26) ---------- */
.kd .kd-deals {
    padding: 56px 0;
    background:
        radial-gradient(60% 45% at 50% 0, rgba(227, 21, 38, .08) 0%, rgba(227, 21, 38, 0) 70%),
        linear-gradient(180deg, #fff7f4 0%, #fffaf8 60%, #fff 100%);
}
.kd .kd-deals__intro { max-width: 760px; margin: 0 auto; text-align: center; }
.kd .kd-deals__title + .kd-deals__lead { margin-top: 16px; }
/* Deviation (contrast): the file's #6c707a is 4.40:1 on the tinted top. */
.kd .kd-deals__lead { color: #63666f; }
.kd .kd-deals__intro + .kd-deals__stats { margin-top: 32px; }

.kd .kd-deals__stats {
    display: grid;
    grid-auto-columns: minmax(0, 1fr);
    grid-auto-flow: column;
    overflow: hidden;
    border-radius: var(--lp2-radius-md-strong);
    background: var(--lp2-white);
    box-shadow: inset 0 0 0 1px var(--lp2-grey-150), 0 18px 24px rgba(60, 40, 10, .18);
}
.kd .kd-deals__stat { display: flex; flex-direction: column; align-items: center; gap: 4px; min-width: 0; padding: 16px 8px; text-align: center; overflow-wrap: break-word; }
.kd .kd-deals__stat + .kd-deals__stat { box-shadow: inset 1px 0 0 var(--lp2-grey-150); }
.kd .kd-deals__stat-value { display: flex; flex-direction: column; align-items: center; max-width: 100%; color: var(--lp2-ink); }
.kd .kd-deals__stat-num { max-width: 100%; font-size: 24px; font-weight: 700; line-height: 32px; font-variant-numeric: tabular-nums; }
.kd .kd-deals__stat-unit { max-width: 100%; color: var(--lp2-red); font-size: 12px; font-weight: 600; line-height: 16px; }
.kd .kd-deals__stat-label { max-width: 100%; color: var(--kd-muted); font-size: 14px; font-weight: 500; line-height: 22px; }

.kd .kd-deals__head + .kd-deals__strip { margin-top: 40px; }
/* No "view all" button: the row's 40px shadow room overlaps the section padding. */
.kd .kd-deals__strip:last-child { margin-bottom: -40px; }
/* Pause button in the shadow room, on the .wrap content edge (gutters 16 / 24 / 20px, 1340px content max). */
.kd .kd-deals__strip { position: relative; }
.kd .kd-deals__pause { right: max(16px, calc((100% - 1340px) / 2 + 16px)); bottom: 4px; }
.kd .kd-deals--static .kd-deals__pause { display: none; }
.kd .kd-deals__viewport:focus-visible { outline: 2px solid var(--lp2-red-hover); outline-offset: -4px; }
.kd .kd-deals__window {
    overflow: hidden;
    padding: 8px 0 40px;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
    mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
/* About 60 px/s: --kd-deals-n (card count, set by the view) x 3.2 / 3.8 / 5s. */
.kd .kd-deals__track { display: flex; width: max-content; animation: kd-deals-marquee calc(var(--kd-deals-n, 12) * 3.2s) linear infinite; }
.kd .kd-deals__viewport:focus-within .kd-deals__track, .kd .kd-deals--idle .kd-deals__track { animation-play-state: paused; }
@keyframes kd-deals-marquee {
    from { transform: translateX(0); }
    to { transform: translateX(-50%); }
}
/* Half a gap on each side of a list: two lists side by side meet exactly one gap apart. */
.kd .kd-deals__list { display: flex; flex: none; gap: 12px; padding: 0 6px; }
.kd .kd-deals__card {
    position: relative;
    display: flex;
    flex: none;
    flex-direction: column;
    width: 176px;
    min-height: 212px;
    padding: 15px;
    overflow: hidden;
    border: 1px solid var(--kd-card-line);
    border-radius: var(--lp2-radius-md-strong);
    background: var(--lp2-white);
    box-shadow: 0 16px 40px -28px rgba(21, 23, 28, .28);
    overflow-wrap: break-word;
}
/* From the border edge, clipped by the card: 3px show under the 1px border. */
.kd .kd-deals__card::before {
    content: "";
    position: absolute;
    top: -1px;
    right: -1px;
    left: -1px;
    height: 4px;
    background: linear-gradient(180deg, #e31526, #a3282b);
}
.kd .kd-deals__card--debt::before { background: linear-gradient(180deg, #f2775c, #d3493a); }
.kd .kd-deals__card--mna::before { background: linear-gradient(180deg, #f9caa9, #ef9d78); }
.kd .kd-deals__card::after {
    content: "";
    position: absolute;
    top: -1px;
    bottom: -1px;
    left: -1px;
    width: calc(100% + 2px);
    background: linear-gradient(111.5deg, rgba(255, 255, 255, 0) 33.394%, rgba(255, 255, 255, .75) 45.849%, rgba(255, 255, 255, 0) 58.303%);
    transform: translateX(-100%);
    pointer-events: none;
}
.kd .kd-deals__logo {
    display: flex;
    flex: none;
    align-items: center;
    height: 40px;
    margin-bottom: 12px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--lp2-grey-150);
}
.kd .kd-deals__logo-img { width: auto; max-width: 130px; height: auto; max-height: 28px; }
/* -.6px keeps the longest design amount on one line on phones. */
.kd .kd-deals__amount { color: var(--lp2-ink); font-size: 20px; font-weight: 700; line-height: 28px; letter-spacing: -.6px; }
.kd .kd-deals__type { padding-top: 4px; color: var(--lp2-ink-2); font-size: 14px; font-weight: 600; line-height: 16px; }
.kd .kd-deals__role { padding-top: 4px; color: var(--kd-muted); font-size: 12px; font-weight: 500; line-height: 20px; }
.kd .kd-deals__meta { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-top: auto; padding-top: 4px; font-size: 12px; line-height: 16px; }
.kd .kd-deals__client { min-width: 0; color: var(--lp2-ink-2); font-weight: 600; }
.kd .kd-deals__year { flex: none; margin-left: auto; color: var(--kd-muted); font-size: 14px; font-weight: 400; }
/* zh / ja break between any two characters: balanced, no one-character last line. */
.kd .kd-deals__stat-label:lang(zh), .kd .kd-deals__stat-label:lang(ja),
.kd .kd-deals__type:lang(zh), .kd .kd-deals__type:lang(ja),
.kd .kd-deals__role:lang(zh), .kd .kd-deals__role:lang(ja) { text-wrap: balance; }

/* Static row: centred while it fits, else a native scroller (the auto margins drop to 0). */
.kd .kd-deals--static .kd-deals__viewport { overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x proximity; scroll-padding: 0 6px; }
.kd .kd-deals--static .kd-deals__window { overflow: visible; -webkit-mask-image: none; mask-image: none; }
.kd .kd-deals--static .kd-deals__track { margin: 0 auto; animation: none; }
.kd .kd-deals--static .kd-deals__list--clone { display: none; }
.kd .kd-deals--static .kd-deals__card { scroll-snap-align: start; }

.kd .kd-deals__head + .kd-deals__more { margin-top: 40px; }
.kd .kd-deals__more { display: flex; justify-content: center; }
.kd .kd-deals__more-link { max-width: 100%; min-height: 48px; padding: 0 24px; font-size: 16px; }

@media (min-width: 601px) {
    .kd .kd-deals { padding: 80px 0; }
    .kd .kd-deals__stat { padding: 24px 28px; }
    .kd .kd-deals__stat-value { flex-flow: row wrap; align-items: baseline; justify-content: center; column-gap: 10px; }
    .kd .kd-deals__stat-num { font-size: 32px; line-height: 40px; letter-spacing: -.02em; }
    .kd .kd-deals__stat-unit { font-size: 18px; line-height: 26px; }
    .kd .kd-deals__track { animation-duration: calc(var(--kd-deals-n, 12) * 3.8s); }
    .kd .kd-deals__list { gap: 16px; padding: 0 8px; }
    .kd .kd-deals__card { width: 208px; min-height: 248px; padding: 19px; }
    .kd .kd-deals__logo { height: 44px; margin-bottom: 16px; padding-bottom: 12px; }
    .kd .kd-deals__logo-img { max-width: 150px; max-height: 32px; }
    .kd .kd-deals__amount { font-size: 22px; line-height: 28px; letter-spacing: 0; }
    .kd .kd-deals__type { font-size: 16px; line-height: 24px; }
    .kd .kd-deals__role { font-size: 14px; line-height: 16px; }
    .kd .kd-deals__meta { font-size: 14px; line-height: 16px; }
    .kd .kd-deals__year { font-size: 12px; }
    .kd .kd-deals--static .kd-deals__viewport { scroll-padding: 0 8px; }
    .kd .kd-deals__pause { right: max(24px, calc((100% - 1340px) / 2 + 24px)); }
}
@media (min-width: 1024px) {
    .kd .kd-deals { padding: 96px 0; }
    .kd .kd-deals__title + .kd-deals__lead { margin-top: 18px; }
    .kd .kd-deals__intro + .kd-deals__stats { margin-top: 30px; }
    .kd .kd-deals__stats { max-width: 880px; margin-right: auto; margin-left: auto; }
    .kd .kd-deals__stat-num { font-size: 40px; line-height: 48px; letter-spacing: 0; }
    .kd .kd-deals__track { animation-duration: calc(var(--kd-deals-n, 12) * 5s); }
    .kd .kd-deals__list { gap: 24px; padding: 0 12px; }
    .kd .kd-deals__card { width: 272px; min-height: 320px; padding: 23px; }
    .kd .kd-deals__logo { height: 56px; margin-bottom: 20px; padding-bottom: 16px; }
    .kd .kd-deals__logo-img { max-width: 180px; max-height: 40px; }
    .kd .kd-deals__amount { font-size: 28px; line-height: 36px; }
    .kd .kd-deals__type { padding-top: 6px; }
    .kd .kd-deals__role { padding-top: 6px; line-height: 22px; }
    .kd .kd-deals__meta { padding-top: 6px; }
    .kd .kd-deals__year { font-size: 14px; line-height: 20px; }
    .kd .kd-deals--static .kd-deals__viewport { scroll-padding: 0 12px; }
    .kd .kd-deals__pause { right: max(20px, calc((100% - 1340px) / 2 + 20px)); }
}
@media (hover: hover) and (pointer: fine) {
    .kd .kd-deals__viewport:hover .kd-deals__track { animation-play-state: paused; }
    /* Transition on the way in only: the sheen jumps back unseen on the way out. */
    .kd .kd-deals__card:hover::after { transform: translateX(100%); transition: transform 900ms var(--v2-m-out, cubic-bezier(.16, 1, .3, 1)); }
}
@media (prefers-reduced-motion: reduce) {
    .kd .kd-deals__viewport { overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x proximity; scroll-padding: 0 6px; }
    .kd .kd-deals__window { overflow: visible; -webkit-mask-image: none; mask-image: none; }
    .kd .kd-deals__track { margin: 0 auto; animation: none; }
    .kd .kd-deals__list--clone { display: none; }
    .kd .kd-deals__card { scroll-snap-align: start; }
    .kd .kd-deals__card::after { display: none; }
    .kd .kd-deals__more-link { transition: none; }
    @media (min-width: 601px) {
        .kd .kd-deals__viewport { scroll-padding: 0 8px; }
    }
    @media (min-width: 1024px) {
        .kd .kd-deals__viewport { scroll-padding: 0 12px; }
    }
}
@media print {
    .kd .kd-deals__viewport, .kd .kd-deals--static .kd-deals__viewport { overflow: visible; }
    .kd .kd-deals__window { overflow: visible; padding-bottom: 0; -webkit-mask-image: none; mask-image: none; }
    .kd .kd-deals__track { width: auto; animation: none; }
    .kd .kd-deals__list--clone { display: none; }
    .kd .kd-deals__list { flex: 1 1 auto; flex-wrap: wrap; justify-content: center; }
    .kd .kd-deals__card { break-inside: avoid; box-shadow: none; }
    .kd .kd-deals__card::before { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
    .kd .kd-deals__card::after { display: none; }
    .kd .kd-deals__strip:last-child { margin-bottom: 0; }
    .kd .kd-deals__more { display: none; }
}

/* ===== kd:services ===== */
/* ---------- Services #services (Figma 1660:561 / 1666:558 / 1683:559) ---------- */
.kd .kd-services { padding: 0 0 56px; background: var(--lp2-white); }
.kd .kd-services__head { text-align: center; }
.kd .kd-services__intro { margin-top: 16px; }
.kd .kd-services__body { display: grid; grid-template-columns: minmax(0, 1fr); row-gap: 24px; margin-top: 32px; }
.kd .kd-services__list { border-top: 1px solid var(--lp2-line); }
.kd .kd-services__item { border-bottom: 1px solid var(--lp2-line); }
.kd .kd-services__item-head { font-size: 18px; font-weight: 600; line-height: 26px; }
/* letter-spacing: inherit, the UA sheet resets it on buttons. */
.kd .kd-services__toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    width: 100%;
    padding: 18px 0;
    border: 0;
    background: none;
    color: inherit;
    letter-spacing: inherit;
    text-align: left;
    cursor: default;
    -webkit-tap-highlight-color: transparent;
}
.kd .kd-services__item-title { flex: 1 1 auto; min-width: 0; color: var(--lp2-ink); overflow-wrap: anywhere; transition: color .3s ease; }
/* Bars drawn as borders (they stay in forced-colors mode), the vertical one upright (a turned thin border nearly
   vanishes at 1x). Hidden without the script, box kept. */
.kd .kd-services__icon {
    position: relative;
    flex: none;
    width: 28px;
    height: 28px;
    border: 1.5px solid var(--lp2-line);
    border-radius: 50%;
    visibility: hidden;
    transition: border-color .3s ease;
}
.kd .kd-services__icon::before, .kd .kd-services__icon::after {
    content: "";
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    margin: auto;
    border: 0 solid var(--lp2-ink-2);
    border-radius: 1px;
    transition: border-color .3s ease, transform .3s cubic-bezier(.4, 0, .2, 1), opacity .3s ease;
}
.kd .kd-services__icon::before { width: 12px; height: 0; border-top-width: 2px; }
.kd .kd-services__icon::after { width: 0; height: 12px; border-left-width: 2px; }
.kd .kd-services__item.is-open .kd-services__icon, .kd .kd-services__item.is-open .kd-services__icon::before { border-color: var(--lp2-red); }
.kd .kd-services__item.is-open .kd-services__icon::after { border-color: var(--lp2-red); opacity: 0; transform: rotate(90deg); }
/* Accordion look only with JS: .is-ready, or html.lp2-wait (set by the boot script); without JS every panel stays open.
   Deviation (contrast): closed titles --lp2-muted, the file's #8e8d96 is 3.28:1. */
html.lp2-wait .kd .kd-services__icon, .kd .kd-services__body.is-ready .kd-services__icon { visibility: visible; }
html.lp2-wait .kd .kd-services__item:not(.is-open) .kd-services__item-title,
.kd .kd-services__body.is-ready .kd-services__item:not(.is-open) .kd-services__item-title { color: var(--lp2-muted); }
html.lp2-wait .kd .kd-services__item:not(.is-open) .kd-services__toggle,
.kd .kd-services__body.is-ready .kd-services__item:not(.is-open) .kd-services__toggle { cursor: pointer; }
/* Closed panels out of the layout until the script hides them: the first paint is the designed state. */
html.lp2-wait .kd .kd-services__body:not(.is-ready) .kd-services__item:not(.is-open) .kd-services__panel { display: none; }
/* Height transition while .is-moving (300ms, the same in corporate-v2.js); padding on the inner box so the region can
   shrink to 0. */
.kd .kd-services__panel.is-moving { overflow: hidden; transition: height .3s cubic-bezier(.4, 0, .2, 1); }
.kd .kd-services__panel-inner {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    padding-bottom: 28px;
    transition: opacity .3s ease, transform .3s cubic-bezier(.4, 0, .2, 1);
}
.kd .kd-services__body.is-ready .kd-services__item:not(.is-open) .kd-services__panel-inner { opacity: 0; transform: translateY(-6px); }
.kd .kd-services__text { color: var(--kd-muted); font-size: 14px; font-weight: 500; line-height: 22px; overflow-wrap: anywhere; }
.kd .kd-services__stat { padding-top: 20px; }
.kd .kd-services__stat-value { color: var(--lp2-ink); font-size: 20px; font-weight: 700; line-height: 28px; overflow-wrap: anywhere; }
.kd .kd-services__stat-label { margin: -2px 0 6px; color: var(--kd-muted); font-size: 14px; font-weight: 400; line-height: 20px; overflow-wrap: anywhere; }
.kd .kd-services__cta {
    max-width: 100%;
    min-height: 48px;
    margin-top: 24px;
    padding: 0 24px;
    font-size: 16px;
    text-align: center;
    white-space: normal;
}
.kd .kd-services__media {
    position: relative;
    order: -1;
    overflow: hidden;
    isolation: isolate;
    aspect-ratio: 16 / 9;
    border-radius: var(--lp2-radius-md-strong);
    background: var(--lp2-grey-100);
}
.kd .kd-services__photo { position: absolute; top: 0; right: 0; bottom: 0; left: 0; transition: opacity .4s ease; }
.kd .kd-services__photo.is-top { z-index: 1; }
.kd .kd-services__photo picture { display: block; width: 100%; height: 100%; }
.kd .kd-services__photo img { width: 100%; max-width: none; height: 100%; object-fit: cover; }
/* No aspect-ratio (Safari before 15): a 16:9 ratio box. */
@supports not (aspect-ratio: 1 / 1) {
    .kd .kd-services__media::before { content: ""; display: block; padding-top: 56.25%; }
}

@media (min-width: 601px) {
    .kd .kd-services { padding-bottom: 80px; }
    .kd .kd-services__head { max-width: 760px; text-align: left; }
    .kd .kd-services__body { row-gap: 32px; margin-top: 40px; }
    .kd .kd-services__item-head { font-size: 22px; line-height: 30px; }
    .kd .kd-services__toggle { padding: 24px 0; }
    .kd .kd-services__icon { width: 32px; height: 32px; }
    .kd .kd-services__text { font-size: 16px; line-height: 26px; }
    .kd .kd-services__stat-value { font-size: 24px; line-height: 32px; }
}
@media (min-width: 1024px) {
    .kd .kd-services { padding-bottom: 96px; }
    .kd .kd-services__intro { margin-top: 18px; }
    .kd .kd-services__body { grid-template-columns: minmax(0, 657fr) minmax(0, 579fr); column-gap: 64px; align-items: start; margin-top: 38px; }
    .kd .kd-services__body--no-media { grid-template-columns: minmax(0, 1fr); }
    /* Sticky 24px under the header bar (109px high at 1024-1219px, 68px from 1220px). */
    .kd .kd-services__media { position: sticky; top: 133px; order: 0; aspect-ratio: 1 / 1; }
    @supports not (aspect-ratio: 1 / 1) {
        .kd .kd-services__media::before { padding-top: 100%; }
    }
}
@media (min-width: 1220px) {
    .kd .kd-services__media { top: 92px; }
}
@media (hover: hover) and (pointer: fine) {
    .kd .kd-services__body.is-ready .kd-services__item:not(.is-open) .kd-services__toggle:hover .kd-services__item-title { color: var(--lp2-ink); }
}
html.lp2-wait .kd .kd-services__photo img[loading="lazy"] { display: none; }
@media (prefers-reduced-motion: reduce) {
    .kd .kd-services__item-title, .kd .kd-services__icon, .kd .kd-services__icon::before, .kd .kd-services__icon::after,
    .kd .kd-services__panel.is-moving, .kd .kd-services__panel-inner, .kd .kd-services__photo, .kd .kd-services__cta { transition: none; }
}
/* Print: every panel, hidden="until-found" ones too. */
@media print {
    .kd .kd-services__panel[hidden] { display: block; content-visibility: visible; }
    .kd .kd-services__body.is-ready .kd-services__item:not(.is-open) .kd-services__panel-inner { opacity: 1; transform: none; }
    .kd .kd-services__body.is-ready .kd-services__item:not(.is-open) .kd-services__item-title { color: var(--lp2-ink); }
    .kd .kd-services__body.is-ready .kd-services__icon { visibility: hidden; }
    .kd .kd-services__item { break-inside: avoid; }
    .kd .kd-services__media { position: relative; }
}

/* ===== kd:leading ===== */
/* ---------- Leading investment bank #leading (Figma 1660:625 / 1666:620 / 1683:619) ---------- */
.kd .kd-leading { padding: 56px 0; background: var(--lp2-grey-50); }
.kd .kd-leading__inner { display: grid; grid-template-columns: minmax(0, 1fr); row-gap: 40px; }
.kd .kd-leading__intro { text-align: center; }
.kd .kd-leading__title-main { display: block; }
.kd .kd-leading__lead { margin-top: 16px; }
.kd .kd-leading__list { display: grid; grid-template-columns: minmax(0, 1fr); row-gap: 16px; }
.kd .kd-leading__item {
    display: grid;
    grid-template-columns: 56px minmax(0, 1fr);
    column-gap: 16px;
    align-items: center;
    padding: 24px 20px;
    border-radius: var(--lp2-radius-md-strong);
    background: var(--lp2-white);
    box-shadow: inset 0 0 0 1px var(--kd-card-line), var(--kd-shadow-card);
    /* Transparent outline: drawn in forced colors (no shadows there), so the card keeps an edge. */
    outline: 1px solid transparent;
    outline-offset: -1px;
}
/* Kept white in forced colors (images are never recoloured): the dark icon art stays visible. */
.kd .kd-leading__icon { display: block; width: 56px; height: 56px; border-radius: var(--lp2-radius-md); background: var(--lp2-white); forced-color-adjust: none; }
.kd .kd-leading__icon img { width: 100%; height: 100%; }
.kd .kd-leading__body { min-width: 0; }
.kd .kd-leading__item-title { color: var(--lp2-ink); font-size: 18px; font-weight: 600; line-height: 26px; text-wrap: pretty; }
.kd .kd-leading__item-text { color: var(--kd-muted); font-size: 14px; font-weight: 500; line-height: 22px; }
.kd .kd-leading__item-title + .kd-leading__item-text { margin-top: 8px; }

@media (min-width: 601px) {
    .kd .kd-leading { padding: 80px 0; }
    .kd .kd-leading__intro { text-align: left; }
    .kd .kd-leading__title-main { display: inline; }
    .kd .kd-leading__item { grid-template-columns: 60px minmax(0, 1fr); column-gap: 20px; padding: 28px; }
    .kd .kd-leading__icon { width: 60px; height: 60px; }
    .kd .kd-leading__item-title { font-size: 20px; line-height: 28px; }
    .kd .kd-leading__item-text { font-size: 16px; line-height: 24px; }
}
@media (min-width: 1024px) {
    .kd .kd-leading { padding: 96px 0; }
    .kd .kd-leading__inner { grid-template-columns: minmax(0, 515fr) minmax(0, 721fr); column-gap: 64px; align-items: start; }
    .kd .kd-leading__list:only-child { grid-column: 1 / -1; }
    .kd .kd-leading__title-main { display: block; }
    .kd .kd-leading__lead { margin-top: 18px; }
    .kd .kd-leading__item { grid-template-columns: 72px minmax(0, 1fr); column-gap: 24px; padding: 32px; }
    .kd .kd-leading__icon { width: 72px; height: 72px; }
    .kd .kd-leading__item-title { font-size: 24px; line-height: 32px; }
}
html.lp2-wait .kd .kd-leading__icon img[loading="lazy"] { display: none; }
@media print {
    .kd .kd-leading { padding: 24px 0; background: none; }
    .kd .kd-leading__item { box-shadow: none; outline-color: var(--lp2-line-2); break-inside: avoid; }
}

/* ===== kd:network ===== */
/* ---------- Global investor network #network (Figma v1.3.2 1749:2 / 1750:2 / 1751:2) ---------- */
.kd .kd-network { padding: 40px 0 56px; background: var(--lp2-white); }
.kd .kd-network__head { padding: 12px 0 24px; text-align: center; }
.kd .kd-network__lead { max-width: 640px; margin: 0 auto; padding-top: 12px; }

.kd .kd-network__stage { margin: 0 -4px; }
/* Pin sizes are multiples of --u (1px at the design widths, less below): pins and art scale together. */
.kd .kd-network__canvas {
    --u: min(1px, calc((100vw - 24px) / 366));
    position: relative;
    max-width: 366px;
    margin: 0 auto;
    aspect-ratio: 366 / 342;
}
.kd .kd-network__canvas picture { display: block; }
.kd .kd-network__globe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
.kd .kd-network__pin {
    position: absolute;
    top: var(--y);
    left: var(--x);
    display: flex;
    align-items: center;
    width: calc(24 * var(--u));
    height: calc(24 * var(--u));
    padding: calc(3 * var(--u));
    border-radius: var(--lp2-radius-pill);
    background: var(--lp2-white);
    box-shadow: inset 0 0 0 1px rgba(21, 23, 28, .12), var(--kd-shadow-card);
    white-space: nowrap;
    transform: translate(var(--tx, -50%), var(--ty, -50%));
}
.kd .kd-network__flag { display: block; flex: none; width: calc(18 * var(--u)); height: calc(18 * var(--u)); border-radius: 50%; box-shadow: var(--kd-shadow-sm); }
.kd .kd-network__flag img { width: 100%; height: 100%; border-radius: 50%; }
.kd .kd-network__pin-label { color: var(--lp2-ink); font-size: calc(12 * var(--u)); font-weight: 700; line-height: calc(16 * var(--u)); }
/* Phones: market pins are flag discs; the name stays in the accessibility tree. */
.kd .kd-network__pin:not(.kd-network__pin--home) .kd-network__pin-label {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    clip-path: inset(50%);
}
.kd .kd-network__pin--home {
    width: auto;
    height: calc(26 * var(--u));
    gap: calc(6 * var(--u));
    padding: 0 calc(12 * var(--u)) 0 calc(4 * var(--u));
    background: var(--lp2-red);
    box-shadow: var(--kd-shadow-card);
}
.kd .kd-network__pin--home .kd-network__pin-label { color: #fff; }
/* Anchors: --x / --y where the leader line in the art meets the chip, --tx / --ty grow labels away from it. */
.kd .kd-network__pin--hk { --x: 19.254%; --y: 61.129%; }
.kd .kd-network__pin--cn { --x: 31.661%; --y: 45.418%; }
.kd .kd-network__pin--tw { --x: 47.161%; --y: 60.114%; }
.kd .kd-network__pin--kr { --x: 44.530%; --y: 39.181%; }
.kd .kd-network__pin--jp { --x: 59.410%; --y: 52.292%; }
.kd .kd-network__pin--th { --x: 34.098%; --y: 54.401%; }
.kd .kd-network__pin--sg { --x: 26.557%; --y: 84.906%; }
.kd .kd-network__pin--au { --x: 66.689%; --y: 93.170%; }
.kd .kd-network__pin--gb { --x: 38.123%; --y: 7.003%; }
.kd .kd-network__pin--us { --x: 91.158%; --y: 21.898%; }
.kd .kd-network__pin--vn { --x: 29.235%; --y: 67.731%; --ty: 0%; }

.kd .kd-network__logos { position: relative; padding-top: 32px; }
.kd .kd-network__pause { top: 100%; right: 0; margin-top: 8px; }
.kd .kd-network__window {
    overflow: hidden;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
    mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.kd .kd-network__track { display: flex; width: max-content; animation: kd-network-marquee calc(var(--kd-network-items, 12) * 3.2s) linear infinite; }
.kd .kd-network__viewport:focus-within .kd-network__track, .kd .kd-network__logos--idle .kd-network__track { animation-play-state: paused; }
/* List padding = gap: the -50% step lands the copy exactly where the first list started. */
.kd .kd-network__logo-list { display: flex; flex: none; gap: 8px; padding: 0 8px; }
.kd .kd-network__logo {
    display: flex;
    flex: none;
    align-items: center;
    justify-content: center;
    width: 120px;
    height: 48px;
    padding: 6px 10px;
    border-radius: var(--lp2-radius-md);
}
.kd .kd-network__logo img { width: 100px; height: 28px; object-fit: contain; opacity: .6; }
@keyframes kd-network-marquee {
    from { transform: translateX(0); }
    to { transform: translateX(-50%); }
}
.kd .kd-network__logos--static .kd-network__window { -webkit-mask-image: none; mask-image: none; }
.kd .kd-network__logos--static .kd-network__track { width: auto; animation: none; }
.kd .kd-network__logos--static .kd-network__logo-list { flex: 1 1 auto; flex-wrap: wrap; justify-content: center; }

@media (min-width: 601px) {
    .kd .kd-network { padding: 48px 0 80px; }
    /* 36px: the tablet art starts at row 127.5 of the stage. */
    .kd .kd-network__head { padding: 16px 0 36px; }
    .kd .kd-network__stage { margin: 0; }
    .kd .kd-network__canvas { --u: min(1px, calc((100vw - 48px) / 720)); max-width: 720px; aspect-ratio: 720 / 538; }
    .kd .kd-network__pin { width: auto; height: calc(30 * var(--u)); gap: calc(6 * var(--u)); padding: 0 calc(12 * var(--u)) 0 calc(4 * var(--u)); }
    .kd .kd-network__flag { width: calc(22 * var(--u)); height: calc(22 * var(--u)); }
    .kd .kd-network__pin:not(.kd-network__pin--home) .kd-network__pin-label {
        position: static;
        width: auto;
        height: auto;
        margin: 0;
        overflow: visible;
        clip: auto;
        clip-path: none;
    }
    /* Tablet anchors. The gb chip starts 12px above the box: the stage must not clip vertically here. */
    .kd .kd-network__pin--hk { --x: 22.462%; --y: 60.703%; --tx: -100%; --ty: -50%; }
    .kd .kd-network__pin--cn { --x: 39.789%; --y: 54.630%; --tx: -100%; --ty: -50%; }
    .kd .kd-network__pin--tw { --x: 43.365%; --y: 60.998%; --tx: 0%; --ty: 0%; }
    .kd .kd-network__pin--kr { --x: 45.525%; --y: 47.833%; --tx: -50%; --ty: -100%; }
    .kd .kd-network__pin--jp { --x: 51.886%; --y: 53.671%; --tx: -50%; --ty: 0%; }
    .kd .kd-network__pin--th { --x: 18.144%; --y: 55.054%; --tx: -100%; --ty: -100%; }
    .kd .kd-network__pin--sg { --x: 30.822%; --y: 75.439%; --tx: -50%; --ty: 0%; }
    .kd .kd-network__pin--au { --x: 57.843%; --y: 91.476%; --tx: -50%; --ty: -100%; }
    .kd .kd-network__pin--gb { --x: 34.471%; --y: 3.314%; --tx: -50%; --ty: -100%; }
    .kd .kd-network__pin--us { --x: 77.861%; --y: 18.552%; --tx: -50%; --ty: -100%; }
    .kd .kd-network__pin--vn { --x: 33.013%; --y: 66.095%; --tx: -50%; --ty: 0%; }
    .kd .kd-network__track { animation-duration: calc(var(--kd-network-items, 12) * 4.6s); }
    .kd .kd-network__logo-list { gap: 16px; }
    .kd .kd-network__logo { width: 168px; height: 64px; padding: 8px 16px; border-radius: var(--lp2-radius-md-strong); }
    .kd .kd-network__logo img { width: 136px; height: 36px; }
}
@media (min-width: 1024px) {
    .kd .kd-network { padding: 64px 0 96px; }
    .kd .kd-network__head { padding: 20px 0; }
    /* The 1300px box never scales: the stage clips only its empty sides (art and pins need x 321-915). */
    .kd .kd-network__stage { overflow: hidden; }
    .kd .kd-network__canvas { --u: 1px; width: 1300px; max-width: none; margin-left: calc(50% - 650px); aspect-ratio: 1300 / 668; }
    /* Desktop anchors (as on the tablet but Thailand: top right corner). */
    .kd .kd-network__pin--hk { --x: 33.671%; --y: 63.240%; }
    .kd .kd-network__pin--cn { --x: 43.672%; --y: 57.581%; }
    .kd .kd-network__pin--tw { --x: 45.616%; --y: 63.349%; }
    .kd .kd-network__pin--kr { --x: 47.132%; --y: 51.500%; }
    .kd .kd-network__pin--jp { --x: 51.209%; --y: 56.430%; }
    .kd .kd-network__pin--th { --x: 33.369%; --y: 70.217%; --ty: 0%; }
    .kd .kd-network__pin--sg { --x: 37.705%; --y: 76.725%; }
    .kd .kd-network__pin--au { --x: 55.026%; --y: 92.181%; }
    .kd .kd-network__pin--gb { --x: 40.045%; --y: 10.000%; }
    .kd .kd-network__pin--us { --x: 67.862%; --y: 24.207%; }
    .kd .kd-network__pin--vn { --x: 39.109%; --y: 67.985%; }
}
/* Container units: --u from the stage width (100vw includes a classic scrollbar). */
@supports (width: 1cqw) {
    .kd .kd-network__stage { container-type: inline-size; }
    .kd .kd-network__canvas { --u: min(1px, calc(100cqw / 366)); }
    @media (min-width: 601px) {
        .kd .kd-network__canvas { --u: min(1px, calc(100cqw / 720)); }
    }
    @media (min-width: 1024px) {
        .kd .kd-network__canvas { --u: 1px; }
    }
}
/* No aspect-ratio (Safari before 15): a ratio box. */
@supports not (aspect-ratio: 1 / 1) {
    .kd .kd-network__canvas::before { content: ""; display: block; padding-top: calc(342 / 366 * 100%); }
    @media (min-width: 601px) {
        .kd .kd-network__canvas::before { padding-top: calc(538 / 720 * 100%); }
    }
    @media (min-width: 1024px) {
        .kd .kd-network__canvas::before { padding-top: 668px; }
    }
}
/* Strip logos are eager (a lazy image moved into view by the clipped track may never load): no rule for them. */
html.lp2-wait .kd .kd-network__globe[loading="lazy"],
html.lp2-wait .kd .kd-network__flag img[loading="lazy"] { display: none; }
@media (hover: hover) and (pointer: fine) {
    .kd .kd-network__viewport:hover .kd-network__track { animation-play-state: paused; }
}
/* Live globe (kd:network script): --globe from its start (stage geometry inline), --live after the first frame (canvas
   shown, pins moved by the script, --on on the near side). Without the script the static art and pins above stay. */
.kd .kd-network__stage.kd-network__stage--globe { overflow: visible; }
.kd .kd-network__stage--globe .kd-network__canvas {
    --u: 1px;
    width: auto;
    max-width: none;
    margin: 0;
    overflow: hidden;
    border-radius: 0 0 16px 16px;
    aspect-ratio: auto;
    touch-action: pan-y;
    cursor: grab;
}
.kd .kd-network__stage--globe .kd-network__canvas::before { content: none; }
.kd .kd-network__stage--globe .kd-network__globe { object-fit: contain; object-position: 50% 100%; }
.kd .kd-network__stage--globe .kd-network__canvas--drag { cursor: grabbing; }
.kd .kd-network__live { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
/* The prototype's heading scrim as a mask: on the white band the same as fading arcs and chips out near the lead. */
.kd .kd-network__stage--live .kd-network__canvas {
    -webkit-mask-image: linear-gradient(180deg, rgba(0, 0, 0, .5), #000 40px);
    mask-image: linear-gradient(180deg, rgba(0, 0, 0, .5), #000 40px);
}
.kd .kd-network__stage--live picture { display: none; }
.kd .kd-network__stage--live .kd-network__pin { top: 0; left: 0; opacity: 0; pointer-events: none; cursor: default; }
.kd .kd-network__stage--live .kd-network__pin--on { opacity: 1; pointer-events: auto; }
@media (min-width: 601px) {
    .kd .kd-network__stage--globe .kd-network__canvas { border-radius: 0 0 24px 24px; }
}
@media (prefers-reduced-motion: no-preference) {
    .kd .kd-network__stage--live .kd-network__pin { transition: opacity .35s; }
}
@media (prefers-reduced-motion: reduce) {
    .kd .kd-network__track { animation: none; }
    .kd .kd-network__logo-list--clone { display: none; }
    /* Below 1024px: a manual scroller (the focusable region scrolls). */
    .kd .kd-network__viewport { overflow-x: auto; scroll-snap-type: x proximity; }
    .kd .kd-network__window { overflow: visible; -webkit-mask-image: none; mask-image: none; }
    .kd .kd-network__logo { scroll-snap-align: start; }
    @media (min-width: 1024px) {
        .kd .kd-network__viewport { overflow: visible; }
        .kd .kd-network__track { width: auto; }
        .kd .kd-network__logo-list { flex: 1 1 auto; flex-wrap: wrap; justify-content: center; }
    }
}
@media print {
    .kd .kd-network__pin { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
    .kd .kd-network__track { width: auto; animation: none; }
    .kd .kd-network__logo-list--clone { display: none; }
    .kd .kd-network__window { overflow: visible; -webkit-mask-image: none; mask-image: none; }
    .kd .kd-network__logo-list { flex: 1 1 auto; flex-wrap: wrap; justify-content: center; }
}

/* ===== kd:awards ===== */
/* ---------- Awards #awards (Figma 1660:831 / 1666:824 / 1683:821) ---------- */
.kd .kd-awards { padding-bottom: 56px; background: linear-gradient(180deg, #fff 0%, #fff7f4 100%); }
.kd .kd-awards__head { text-align: center; }
.kd .kd-awards__lead { margin-top: 16px; }
/* Phones: a full-bleed swipe row; -10px takes back part of the 26px shadow room under the cards. */
.kd .kd-awards__row {
    margin: 0 -16px -10px;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory;
    scroll-padding-inline: 16px;
    scrollbar-width: none;
}
.kd .kd-awards__row::-webkit-scrollbar { display: none; }
/* Inset focus ring: the row spans the screen. */
.kd .kd-awards__row:focus-visible { outline-offset: -4px; }
/* max-content: the end padding belongs to the scrolled box. */
.kd .kd-awards__list { display: flex; gap: 12px; width: max-content; padding: 32px 16px 26px; }
.kd .kd-awards__card {
    display: flex;
    flex: 0 0 301px;
    flex-direction: column;
    max-width: calc(100vw - 72px);
    padding: 20px;
    border-radius: var(--lp2-radius-md-strong);
    background: var(--lp2-white);
    box-shadow: var(--kd-shadow-card);
    /* Transparent outline: drawn in forced colors (no shadows there), so the card keeps an edge. */
    outline: 1px solid transparent;
    outline-offset: -1px;
    overflow-wrap: break-word;
    scroll-snap-align: start;
}
.kd .kd-awards__heading { display: flex; align-items: center; gap: 12px; padding-bottom: 16px; }
/* Kept as authored in forced colors (images are never recoloured there). */
.kd .kd-awards__logo {
    display: grid;
    flex: none;
    place-items: center;
    width: 40px;
    height: 40px;
    border-radius: 10px;
    background: var(--lp2-grey-50);
    forced-color-adjust: none;
}
.kd .kd-awards__logo img { width: 30px; height: 30px; object-fit: contain; }
.kd .kd-awards__name { min-width: 0; color: var(--lp2-ink); font-size: 16px; font-weight: 600; line-height: 24px; }
.kd .kd-awards__items { display: flex; flex-direction: column; gap: 8px; }
.kd .kd-awards__item { padding: 12px 14px; border-radius: var(--lp2-radius-md); background: var(--lp2-grey-50); }
.kd .kd-awards__award { color: var(--lp2-ink); font-size: 14px; font-weight: 600; line-height: 20px; }
.kd .kd-awards__years { padding-top: 2px; color: var(--lp2-red-pressed); font-size: 12px; font-weight: 500; line-height: 20px; }
.kd .kd-awards__year { white-space: nowrap; }
html.lp2-wait .kd .kd-awards__logo img[loading="lazy"] { display: none; }

@media (min-width: 601px) {
    .kd .kd-awards { padding-bottom: 80px; }
    .kd .kd-awards__row { margin: 0; overflow: visible; scroll-snap-type: none; }
    .kd .kd-awards__list { flex-wrap: wrap; justify-content: center; gap: 16px; width: auto; padding: 40px 0 0; }
    .kd .kd-awards__card { flex: 0 1 calc((100% - 16px) / 2); max-width: none; }
}
@media (min-width: 1024px) {
    .kd .kd-awards { padding-bottom: 96px; }
    .kd .kd-awards__lead { margin-top: 18px; }
    /* 38, not 40: the file's header box overflows by 2px. */
    .kd .kd-awards__list { padding-top: 38px; }
    .kd .kd-awards__card { flex-basis: calc((100% - 48px) / 4); padding: 24px; }
}
@media print {
    .kd .kd-awards { background: none; }
    .kd .kd-awards__row { margin: 0; overflow: visible; }
    .kd .kd-awards__list { flex-wrap: wrap; justify-content: center; width: auto; padding: 24px 0 0; }
    .kd .kd-awards__card { box-shadow: none; outline-color: var(--lp2-line-2); break-inside: avoid; }
}

/* ===== kd:news ===== */
/* ---------- News #news (Figma 1660:937 / 1666:928 / 1683:925) ---------- */
.kd .kd-news { --kd-news-gut: 16px; --kd-news-gap: 16px; padding: 56px 0; background: var(--lp2-white); }
.kd .kd-news__head { margin-bottom: 56px; text-align: center; }
.kd .kd-news__head--nav { display: none; }
/* Arrows invisible (place kept) until the script runs: no shift, no dead controls without JS. */
.kd .kd-news__nav { display: none; flex: none; gap: 12px; margin-left: auto; visibility: hidden; }
.kd .kd-news--js .kd-news__nav { visibility: visible; }
.kd .kd-news__arrow {
    display: grid;
    place-items: center;
    width: 52px;
    height: 52px;
    padding: 0;
    border: 1px solid var(--lp2-line);
    border-radius: 50%;
    background: var(--lp2-white);
    color: var(--lp2-ink);
    cursor: pointer;
    /* No opacity transition: no fade when the script sets the first state. */
    transition: background-color .2s;
}
/* Disabled: no contrast minimum for inactive controls; the focus ring is not dimmed. */
.kd .kd-news__arrow[aria-disabled="true"] { border-color: transparent; background: var(--lp2-grey-150); color: var(--lp2-line-2); cursor: default; }
.kd .kd-news__arrow:not([aria-disabled="true"]):active { background: var(--lp2-grey-150); }
.kd .kd-news__arrow-icon { display: block; }
/* --kd-news-gut: how far the row reaches past the content edge. The end space is a 1px spacer (::after): some
   engines leave end padding out of the scroll area. */
.kd .kd-news__track {
    display: flex;
    gap: var(--kd-news-gap);
    margin: -4px calc(var(--kd-news-gut) * -1);
    padding: 4px 0 4px var(--kd-news-gut);
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory;
    scroll-padding-inline: var(--kd-news-gut);
    scroll-behavior: smooth;
    scrollbar-width: none;
}
.kd .kd-news__track::-webkit-scrollbar { display: none; }
.kd .kd-news__track::after { content: ""; flex: 0 0 1px; margin-left: calc(var(--kd-news-gut) - var(--kd-news-gap) - 1px); }
.kd .kd-news__item { display: flex; flex: 0 0 calc((100% - var(--kd-news-gut)) * .86); min-width: 0; scroll-snap-align: start; }
.kd .kd-news__card { display: flex; flex-direction: column; width: 100%; min-width: 0; border-radius: var(--lp2-radius-md-strong); color: var(--lp2-ink); }
.kd .kd-news__media { position: relative; flex: none; overflow: hidden; aspect-ratio: 16 / 9; border-radius: var(--lp2-radius-md-strong); background: var(--lp2-grey-100); }
.kd .kd-news__img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; object-position: center; }
.kd .kd-news__body { display: flex; flex: 1 1 auto; flex-direction: column; padding-top: 20px; text-align: center; }
.kd .kd-news__date { display: block; color: var(--kd-muted); font-size: 14px; font-weight: 500; line-height: 22px; }
.kd .kd-news__card-title {
    display: -webkit-box;
    margin-top: 4px;
    overflow: hidden;
    color: var(--lp2-ink);
    font-size: 20px;
    font-weight: 600;
    line-height: 28px;
    overflow-wrap: anywhere;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}
.kd .kd-news__teaser {
    display: -webkit-box;
    margin-top: 8px;
    overflow: hidden;
    color: var(--kd-muted);
    font-size: 16px;
    font-weight: 500;
    line-height: 24px;
    overflow-wrap: anywhere;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}
.kd .kd-news__foot { margin-top: auto; padding-top: 20px; }
.kd .kd-news__more {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 48px;
    padding: 0 24px;
    border: 1px solid var(--lp2-line-2);
    border-radius: var(--lp2-radius-pill);
    background: var(--lp2-white);
    color: var(--lp2-ink);
    font-size: 16px;
    font-weight: 600;
    line-height: 16px;
    white-space: nowrap;
    transition: background-color .2s;
}
.kd .kd-news__card:active .kd-news__more { background: var(--lp2-grey-150); }
/* No aspect-ratio (Safari before 15): a 16:9 ratio box. */
@supports not (aspect-ratio: 1 / 1) {
    .kd .kd-news__media::before { content: ""; display: block; padding-top: 56.25%; }
}

@media (min-width: 601px) {
    .kd .kd-news { --kd-news-gut: 24px; --kd-news-gap: 24px; padding: 80px 0; }
    .kd .kd-news__head { display: flex; align-items: center; gap: 24px; margin-bottom: 40px; text-align: left; }
    .kd .kd-news__title { flex: 1 1 auto; min-width: 0; }
    .kd .kd-news__nav { display: flex; }
    .kd .kd-news__item { flex-basis: calc((100% - var(--kd-news-gut) - var(--kd-news-gap)) / 1.4); }
    .kd .kd-news__body { text-align: left; }
    .kd .kd-news__card-title { font-size: 24px; line-height: 32px; }
}
@media (min-width: 1024px) {
    .kd .kd-news { --kd-news-gut: 4px; --kd-news-gap: 34px; padding: 96px 0; }
    .kd .kd-news__head { align-items: flex-start; gap: 40px; }
    /* .55: the 693 / 567 columns of the frame. */
    .kd .kd-news__title { max-width: calc((100% - 40px) * .55); }
    .kd .kd-news__nav { padding-top: 12px; }
    .kd .kd-news__item { flex-basis: calc((100% - var(--kd-news-gut) - 2 * var(--kd-news-gap)) / 3); }
}
@media (hover: hover) and (pointer: fine) {
    .kd .kd-news__arrow:not([aria-disabled="true"]):hover { background: var(--lp2-grey-150); }
    .kd .kd-news__card:hover .kd-news__more { background: var(--lp2-grey-150); }
    /* Only the image zooms on hover: no lift or shadow of the shared card motion (v2m:card). */
    .kd .kd-news__card[data-v2-card]:hover { box-shadow: none; transform: none; }
}
html.lp2-wait .kd .kd-news__img[loading="lazy"] { display: none; }
/* Motion layer: zoom and fade-in each set their own transition list and the zoom one wins (instant fade); both here. */
@media (prefers-reduced-motion: no-preference) {
    .kd .kd-news__card .kd-news__media .kd-news__img[data-v2-zoom][data-v2-img] {
        transition: opacity var(--v2-m-base) var(--v2-m-io), transform var(--v2-m-slow) var(--v2-m-out);
    }
}
/* Print: switching to print media must not start the fade (caught mid-way). */
@media print {
    @media (prefers-reduced-motion: no-preference) {
        .kd .kd-news__card .kd-news__media .kd-news__img[data-v2-zoom][data-v2-img] { transition: none; }
    }
}
@media (prefers-reduced-motion: reduce) {
    .kd .kd-news__track { scroll-behavior: auto; }
    .kd .kd-news__arrow, .kd .kd-news__more { transition: none; }
}
@media print {
    .kd .kd-news { padding: 24px 0; }
    .kd .kd-news__head--nav, .kd .kd-news__nav, .kd .kd-news__foot { display: none; }
    .kd .kd-news__track { flex-wrap: wrap; margin: 0; padding: 0; overflow: visible; }
    .kd .kd-news__track::after { display: none; }
    .kd .kd-news__item { flex-basis: calc((100% - 2 * var(--kd-news-gap)) / 3); break-inside: avoid; }
}

/* ===== kd:contact ===== */
/* ---------- Contact #contact (Figma 1660:991 / 1666:983 / 1683:973) ---------- */
.kd .kd-contact { padding: 56px 0; background: var(--lp2-grey-50); }
.kd .kd-contact__head { max-width: 760px; text-align: center; }
.kd .kd-contact__lead { margin-top: 16px; }
.kd .kd-contact__list { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
.kd .kd-contact__head + .kd-contact__list { margin-top: 32px; }
.kd .kd-contact__card {
    display: grid;
    grid-template-columns: 72px minmax(0, 1fr);
    column-gap: 20px;
    align-items: center;
    padding: 20px 16px;
    overflow: hidden;
    border-radius: var(--lp2-radius-md-strong);
    background: var(--lp2-white);
    box-shadow: inset 0 0 0 1px var(--kd-card-line), var(--kd-shadow-card);
    /* Transparent outline: drawn in forced colors (no shadows there), so the card keeps an edge. */
    outline: 1px solid transparent;
    outline-offset: -1px;
}
.kd .kd-contact__card--no-photo { grid-template-columns: minmax(0, 1fr); }
.kd .kd-contact__photo { display: block; width: 72px; height: 72px; overflow: hidden; border-radius: var(--lp2-radius-md); background: var(--lp2-grey-100); }
.kd .kd-contact__photo img { width: 100%; height: 100%; object-fit: cover; }
.kd .kd-contact__body { display: flex; flex-direction: column; min-width: 0; }
.kd .kd-contact__name { color: var(--lp2-ink); font-size: 18px; font-weight: 600; line-height: 26px; }
.kd .kd-contact__role { padding-top: 2px; color: var(--lp2-red-pressed); font-size: 14px; font-weight: 500; line-height: 22px; }
.kd .kd-contact__bio { display: none; padding-top: 8px; color: var(--kd-muted); font-size: 16px; font-weight: 500; line-height: 24px; }
.kd .kd-contact__mail { display: flex; margin-top: auto; padding-top: 16px; }
.kd .kd-contact__email {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
    min-height: 24px;
    color: var(--lp2-ink-2);
    font-size: 16px;
    font-weight: 600;
    line-height: 24px;
}
.kd .kd-contact__email-icon { display: block; flex: none; width: 18px; height: 18px; color: var(--lp2-ink-2); }
.kd .kd-contact__email-text { min-width: 0; overflow-wrap: anywhere; }

.kd .kd-form {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    padding: 28px 20px;
    overflow: hidden;
    border-radius: var(--lp2-radius-md-strong);
    background: var(--lp2-white);
    box-shadow: inset 0 0 0 1px var(--kd-card-line), 0 24px 56px -32px rgba(21, 23, 28, .3);
    outline: 1px solid transparent;
    outline-offset: -1px;
}
.kd .kd-contact__head + .kd-form { margin-top: 32px; }
.kd .kd-contact__list + .kd-form { margin-top: 24px; }
.kd .kd-form__title { color: var(--lp2-ink); font-size: 24px; font-weight: 600; line-height: 32px; }
.kd .kd-form__lead { padding-top: 8px; color: var(--kd-muted); font-size: 16px; font-weight: 500; line-height: 24px; }
.kd .kd-form__main { position: relative; min-width: 0; }
.kd .kd-form__fields { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; padding-top: 24px; }
.kd .kd-form__field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.kd .kd-form__label { display: block; min-height: 20px; color: var(--lp2-ink-2); font-size: 14px; font-weight: 600; line-height: 16px; }
.kd .kd-form__req { margin-left: 2px; color: var(--lp2-red); font-weight: 700; }
/* 16px keeps iOS from zooming. The fill is the only boundary, as drawn (1.1:1, deviation); the transparent outline
   gives an edge in forced colors. */
.kd .kd-form__control {
    display: block;
    width: 100%;
    height: 48px;
    margin: 0;
    padding: 0 16px;
    border: 0;
    border-radius: var(--lp2-radius-md);
    background: var(--lp2-grey-100);
    color: var(--lp2-ink);
    font-size: 16px;
    font-weight: 400;
    line-height: 24px;
    -webkit-appearance: none;
    appearance: none;
    outline: 1px solid transparent;
    outline-offset: -1px;
}
.kd .kd-form__control:focus-visible { outline: 2px solid var(--lp2-red-hover); outline-offset: 2px; }
.kd .kd-form__control[aria-invalid="true"] { box-shadow: inset 0 0 0 1px var(--lp2-red); }
.kd .kd-form__textarea { height: auto; min-height: 96px; padding: 12px 16px; resize: vertical; }
.kd .kd-form__select { position: relative; }
/* Right padding 50: a long option never runs under the chevron (16 + 18 + 16). */
.kd .kd-form__select .kd-form__control { padding: 0 50px 0 16px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; }
.kd .kd-form__chevron { position: absolute; top: 15px; right: 16px; display: block; width: 18px; height: 18px; color: var(--kd-muted); pointer-events: none; }
.kd .kd-form__error { color: var(--lp2-red-pressed); font-size: 13px; font-weight: 400; line-height: 18px; }
.kd .kd-form__error[hidden] { display: none !important; }
.kd .kd-form__consent { display: flex; align-items: flex-start; gap: 12px; padding-top: 20px; }
/* Margin: the drawn 27px box in front of the text; a one-line row stays 22px high. */
.kd .kd-form__check { flex: none; width: 20px; height: 20px; margin: 1px 3px 1px 4px; accent-color: var(--lp2-red); cursor: pointer; }
.kd .kd-form__check:focus-visible { outline: 2px solid var(--lp2-red-hover); outline-offset: 2px; }
.kd .kd-form__consent-text { color: var(--kd-muted); font-size: 14px; font-weight: 400; line-height: 22px; cursor: pointer; }
.kd .kd-form__policy { color: var(--lp2-ink-2); text-decoration: underline; text-underline-offset: 2px; }
/* Under the consent text (39px = checkbox 27 + gap 12). */
.kd .kd-form__error--consent { margin: 6px 0 0 39px; }
/* Anti-spam field: off-screen (not display: none, which some bots skip). */
.kd .kd-form__hp { position: absolute; top: 0; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.kd .kd-form__actions { display: flex; flex-direction: column; gap: 16px; padding-top: 24px; }
.kd .kd-form__submit { width: 100%; font-size: 16px; }
/* Sending: aria-disabled (the button keeps the focus). */
.kd .kd-form__submit[aria-disabled="true"] { background: var(--lp2-red-pressed); cursor: progress; }
.kd .kd-form__aside { min-width: 0; }
.kd .kd-form__status { color: var(--lp2-ink-2); font-size: 14px; font-weight: 500; line-height: 22px; }
.kd .kd-form__status--success { color: var(--lp2-green-text); }
.kd .kd-form__status--error { color: var(--lp2-red-pressed); }
.kd .kd-form__status:not(:empty) + .kd-form__notice { margin-top: 4px; }
.kd .kd-form__notice { color: var(--kd-muted); font-size: 12px; font-weight: 400; line-height: 18px; }
.kd .kd-form__notice a { color: var(--lp2-ink-2); text-decoration: underline; text-underline-offset: 2px; }
/* Invisible reCAPTCHA badge hidden: the notice under the button names the service (Google's terms). */
.kd .kd-contact__captcha .grecaptcha-badge { visibility: hidden; }

@media (min-width: 601px) {
    .kd .kd-contact { padding: 80px 0; }
    .kd .kd-contact__head { text-align: left; }
    .kd .kd-contact__head + .kd-contact__list { margin-top: 40px; }
    .kd .kd-contact__card { grid-template-columns: 96px minmax(0, 1fr); align-items: start; padding: 28px; }
    .kd .kd-contact__card--no-photo { grid-template-columns: minmax(0, 1fr); }
    .kd .kd-contact__photo { width: 96px; height: 96px; border-radius: var(--lp2-radius-md-strong); }
    .kd .kd-contact__name { font-size: 20px; line-height: 28px; }
    .kd .kd-contact__bio { display: block; }
    .kd .kd-contact__head + .kd-form { margin-top: 40px; }
    .kd .kd-form { padding: 32px; }
    .kd .kd-form__fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .kd .kd-form__field--full { grid-column: 1 / -1; }
    /* Matches the drawn two-line wrap: this Inter build sets the line 0.45% wider than the frame. */
    .kd .kd-form__consent-text { letter-spacing: -.004em; }
    .kd .kd-form__actions { flex-direction: row; align-items: center; }
    .kd .kd-form__submit { flex: none; width: auto; }
    .kd .kd-form__aside { flex: 1 1 auto; }
}
@media (min-width: 1024px) {
    .kd .kd-contact { padding: 96px 0; }
    .kd .kd-contact__lead { margin-top: 18px; }
    .kd .kd-contact__head + .kd-contact__list { margin-top: 38px; }
    .kd .kd-contact__list { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
    .kd .kd-contact__card { display: flex; flex-direction: column; gap: 20px; }
    .kd .kd-contact__body { flex: 1 1 auto; }
    .kd .kd-contact__list + .kd-form { margin-top: 48px; }
    .kd .kd-form { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); column-gap: 64px; align-items: start; padding: 48px; }
    .kd .kd-form__fields { padding-top: 0; }
}
@media (hover: hover) and (pointer: fine) {
    .kd .kd-contact__email:hover { color: var(--lp2-ink); }
    .kd .kd-contact__email:hover .kd-contact__email-text { text-decoration: underline; text-underline-offset: 2px; }
    .kd .kd-form__policy:hover, .kd .kd-form__notice a:hover { color: var(--lp2-ink); }
}
html.lp2-wait .kd .kd-contact__photo img[loading="lazy"] { display: none; }
@media print {
    .kd .kd-contact { padding: 24px 0; background: none; }
    .kd .kd-contact__card { box-shadow: none; outline-color: var(--lp2-line-2); break-inside: avoid; }
    .kd .kd-form, .kd .kd-contact__captcha { display: none; }
}
