/* V32 R2: natural language wrapping, unchanged type sizes and copy. */
/* Short headings use balanced lines; body text keeps a readable final line. */
html #main :is(h1,h2,h3,h4,summary,.service-card-title){text-wrap:balance}
html #main :is(p,li){text-wrap:pretty}
html #main :is(.home-card-copy p,.mission-steps p,.aiko-caption,.contact-panel .hint,.service-terms li){text-wrap:balance}
/* These spans protect only short, reviewed phrases, never whole paragraphs. */
html #main .vc-copy-unit{display:inline-block;white-space:nowrap;max-inline-size:100%}
html:is([data-locale="ja"],[data-locale="zh-CN"],[data-locale="zh-TW"],[data-locale="yue"]) #main{line-break:strict}
/* Korean words stay together; exceptionally long tokens can still wrap. */
html:lang(ko) #main :is(h1,h2,h3,h4,p,li,summary,.service-card-title){word-break:keep-all;overflow-wrap:break-word;hyphens:none}
/* Prefer word boundaries and proper language-aware hyphenation in Latin text. */
html:is(:lang(en),:lang(fr),:lang(it),:lang(de),:lang(es),:lang(pt),:lang(id),:lang(ms),:lang(vi),:lang(fil)) #main :is(h1,h2,h3,h4,summary,.service-card-title){word-break:normal;overflow-wrap:break-word;hyphens:auto}
/* Give the Malay service name its natural width without reducing the font.
   The arrow moves to the existing number row, above the heading. */
html:lang(ms) #main .home-card-copy{padding-inline-end:0}
html:lang(ms) #main .home-card-copy h3{overflow-wrap:normal;hyphens:none}
html:lang(ms) #main .home-arrow{top:18px}
@media(max-width:700px){html:lang(ms) #main .home-arrow{top:0}}

/* R2 expanded link review: keep Korean words intact in the delivery enquiry link. */
html:lang(ko) #main .service-draft-link{word-break:keep-all;overflow-wrap:break-word;hyphens:none;text-wrap:balance}

/* MIRAI review: Japanese content uses short, human-reviewed semantic phrases.
   All typography is inherited. No forced line breaks or reduced font sizes. */
html:lang(ja) #main .vc-jp-phrase{display:inline-block;white-space:nowrap;font:inherit;letter-spacing:inherit;max-inline-size:100%;vertical-align:baseline}

/* R3: use whole words in Latin headings, not automatic hyphenation chosen
   merely to balance a line. Long German headings use concise equivalents. */
html:is(:lang(en),:lang(fr),:lang(it),:lang(de),:lang(es),:lang(pt),:lang(id),:lang(ms),:lang(vi),:lang(fil)) #main :is(h1,h2,h3,h4,summary,.service-card-title){word-break:normal;overflow-wrap:normal;hyphens:none}
/* Only short, individually reviewed phrases receive this class. Overrides
   legacy button/span rules: no font, spacing, or vertical-position changes. */
html #main .vc-r3-phrase{display:inline-block;white-space:nowrap;word-break:normal;overflow-wrap:normal;hyphens:none;font:inherit;letter-spacing:inherit;vertical-align:baseline;max-inline-size:100%}
/* A wider tablet layout is preferable to breaking a name or shrinking type. */
@media(min-width:701px) and (max-width:950px){
 html:is(:lang(ms),[data-locale="yue"],[data-locale="zh-CN"],[data-locale="zh-TW"]) #main .home-hero{grid-template-columns:1fr}
 html:is(:lang(fr),:lang(es)) #main .company-grid{grid-template-columns:1fr;gap:25px}
}

/* One flex child keeps CTA text in normal inline flow around phrase spans. */
html #main .vc-r3-content{display:block;font:inherit;letter-spacing:inherit;white-space:normal;max-inline-size:100%}

/* AIKO origin note: a quiet, readable line directly below the existing video.
   No heading, extra border, background panel, or change to existing text. */
html #main .home-aiko .aiko-origin-note{margin:0;padding:10px 14px 12px;font-size:15px;font-weight:400;line-height:1.8;color:#526474;text-wrap:pretty;overflow-wrap:normal;word-break:normal;hyphens:none}
html:lang(ko) #main .home-aiko .aiko-origin-note{word-break:keep-all}
