/* Prefer each language's normal word boundaries. Emergency breaks only prevent overflow. */
html{word-break:normal;overflow-wrap:break-word}
:is(.sss-entry-content,.sss-content-flow){word-break:normal;overflow-wrap:break-word}
:is(.sss-entry-content,.sss-content-flow) :is(p,li,dd,dt,figcaption){word-break:normal;overflow-wrap:break-word;text-wrap:pretty}
:is(.sss-entry-content,.sss-content-flow) :is(h1,h2,h3,h4,h5,h6),.site-footer :is(p,a),.language-grid :is(b,span){word-break:normal;overflow-wrap:break-word}
:is(.sss-entry-content,.sss-content-flow) :is(h1,h2,h3,h4,h5,h6){text-wrap:balance}
:is(.sss-entry-content,.sss-content-flow) :is(section,article,div,figure),.site-footer :is(div,nav),.desktop-nav,.header-actions{min-inline-size:0}
:is(.sss-entry-content,.sss-content-flow) :is(a,button),.site-footer a,.desktop-nav a,.mobile-dialog a{max-inline-size:100%}
.button,.sss-sumopon-button,.header-cta,.hero-secondary,.text-link,.read-label{white-space:normal;word-break:normal;overflow-wrap:break-word;line-height:1.5;text-align:start}
.button>svg,.hero-secondary>svg,.text-link>svg,.read-label>svg{flex-shrink:0}
:is(.sss-entry-content,.sss-content-flow) :is(input,select,textarea){max-inline-size:100%;min-inline-size:0}
:is(.sss-entry-content,.sss-content-flow) :is(pre,table){max-inline-size:100%}
:is(.sss-entry-content,.sss-content-flow) pre{overflow-x:auto}
:is(.sss-entry-content,.sss-content-flow) :is(code,a[href^="mailto:"]){overflow-wrap:anywhere}
.breadcrumb{white-space:normal;flex-wrap:wrap;overflow:visible;line-height:1.6}
.language-grid>a{min-inline-size:0}
:is(html,[lang]):is(:lang(ja),:lang(zh),:lang(yue),:lang(wuu),:lang(nan),:lang(hak)){line-break:strict;word-break:normal}
:lang(ja) :is(h1,h2,h3,p,li,figcaption),:lang(zh) :is(h1,h2,h3,p,li,figcaption),:lang(yue) :is(h1,h2,h3,p,li,figcaption),:lang(wuu) :is(h1,h2,h3,p,li,figcaption),:lang(nan) :is(h1,h2,h3,p,li,figcaption),:lang(hak) :is(h1,h2,h3,p,li,figcaption){line-break:strict;word-break:normal;overflow-wrap:break-word;letter-spacing:normal}
:lang(ko) :is(h1,h2,h3,p,li,figcaption){word-break:keep-all;overflow-wrap:break-word;letter-spacing:normal}
:lang(th) :is(h1,h2,h3,p,li,figcaption),:lang(lo) :is(h1,h2,h3,p,li,figcaption),:lang(my) :is(h1,h2,h3,p,li,figcaption),:lang(km) :is(h1,h2,h3,p,li,figcaption){word-break:normal;line-break:auto;letter-spacing:normal;line-height:1.8}
:lang(ar) :is(h1,h2,h3,p,li,figcaption,.eyebrow),:lang(fa) :is(h1,h2,h3,p,li,figcaption,.eyebrow),:lang(ur) :is(h1,h2,h3,p,li,figcaption,.eyebrow),:lang(ps) :is(h1,h2,h3,p,li,figcaption,.eyebrow),:lang(sd) :is(h1,h2,h3,p,li,figcaption,.eyebrow),:lang(he) :is(h1,h2,h3,p,li,figcaption,.eyebrow){letter-spacing:normal;word-break:normal;line-height:1.65}
:is(:lang(hi),:lang(bn),:lang(pa),:lang(mr),:lang(gu),:lang(kn),:lang(ta),:lang(te),:lang(ml),:lang(or),:lang(ne),:lang(si),:lang(bho),:lang(mai)) :is(h1,h2,h3,p,li,figcaption,.eyebrow){letter-spacing:normal;word-break:normal;line-height:1.65}
[dir="rtl"] :is(:is(.sss-entry-content,.sss-content-flow),.site-footer,.sss-sumopon-page){text-align:start}
.sss-natural-phrase{display:inline;max-inline-size:100%;white-space:normal;vertical-align:baseline}
[lang="ja"] .sss-ja-phrase{display:inline;max-inline-size:100%;white-space:normal;overflow-wrap:break-word}
.sss-visual-journey[lang="ja"] .sss-visual-journey-heading>span{max-inline-size:100%;white-space:normal;overflow-wrap:break-word}
.sss-sumopon-page .sss-natural-phrase{max-inline-size:100%;word-break:normal;line-break:strict}
.sss-sumopon-page :is(.sss-sumopon-eyebrow,.sss-sumopon-pronunciation){letter-spacing:normal}
@media(max-width:560px){.sss-natural-phrase,[lang="ja"] .sss-ja-phrase{max-inline-size:100%}.site-footer .footer-bottom>div{flex-wrap:wrap}.language-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:359px){.language-grid{grid-template-columns:minmax(0,1fr)}}

/* Short headings and invitations should not leave a tiny final line.
   Long article and policy paragraphs keep their normal reading measure. */
:is(.sss-entry-content,.sss-content-flow) :is(.hero-content>p:not(.eyebrow),.detail-hero .lead,.enquiry-intro>p:not(.small),.section-heading>p,.sss-section-intro>p,.sss-team-intro>p,.sss-availability-intro>p),
.sss-sumopon-page .sss-sumopon-next>p{ text-wrap:balance }
.sss-sumopon-page :is(h1,h2,h3,h4,h5,h6),.site-footer :is(h2,h3,h4){text-wrap:balance}
.sss-sumopon-page .sss-sumopon-next>p{max-inline-size:42rem;margin-inline:auto}
:is(.sss-entry-content,.sss-content-flow) :is(.button,.hero-secondary,.text-link,.read-label),
.sss-sumopon-page .sss-sumopon-button{min-inline-size:0;overflow-wrap:anywhere;text-wrap:balance}
:is(.sss-entry-content,.sss-content-flow) :is(.button,.hero-secondary,.text-link,.read-label)>span,
.sss-sumopon-page .sss-sumopon-button>span{min-inline-size:0}
.sss-sumopon-page .sss-sumopon-button>[aria-hidden="true"]{flex-shrink:0}
.sss-sumopon-hero h1 bdi{white-space:normal;overflow-wrap:break-word}
:is(.sss-entry-content,.sss-content-flow) :is(.sss-ja-phrase,.sss-natural-phrase),
.sss-sumopon-page .sss-natural-phrase{display:inline;white-space:normal}

/* Complex scripts need room above and below each heading line. These scoped
   selectors also cover the more specific photo-hero and card typography. */
:is(.sss-entry-content,.sss-content-flow,.sss-sumopon-page):is(:lang(ar),:lang(fa),:lang(ur),:lang(ps),:lang(sd),:lang(he),:lang(hi),:lang(bn),:lang(pa),:lang(mr),:lang(gu),:lang(kn),:lang(ta),:lang(te),:lang(ml),:lang(or),:lang(ne),:lang(si),:lang(bho),:lang(mai),:lang(am)) :is(h1,h2,h3,h4,h5,h6){line-height:1.65;letter-spacing:normal}
:is(.sss-entry-content,.sss-content-flow,.sss-sumopon-page):is(:lang(th),:lang(lo),:lang(my),:lang(km)) :is(h1,h2,h3,h4,h5,h6){line-height:1.8;letter-spacing:normal}

/* Browser phrase segmentation uses the declared Japanese language. It is an
   enhancement for short copy; strict punctuation and normal wrapping remain
   the fallback. No translation is rewritten and no fixed line break is added. */
@supports(word-break:auto-phrase){
 :is(.sss-entry-content,.sss-content-flow):lang(ja) :is(h1,h2,h3,h4,h5,h6,.lead,.eyebrow,.hero-content>p,.enquiry-intro>p,.section-heading>p,.sss-section-intro>p,.sss-team-intro>p,.sss-availability-intro>p,.button,.hero-secondary,.text-link,.read-label),
 .sss-sumopon-page:lang(ja) :is(h1,h2,h3,h4,h5,h6,.sss-sumopon-next>p,.sss-sumopon-lead,.sss-sumopon-pose-label,.sss-sumopon-button),
 .site-footer:lang(ja) :is(p,strong,a){word-break:auto-phrase;overflow-wrap:break-word}
 :is(.sss-entry-content,.sss-content-flow):lang(ja) :is(.sss-ja-phrase,.sss-natural-phrase),
 .sss-sumopon-page:lang(ja) .sss-natural-phrase{word-break:inherit}
}

/* Real managed pages use sss-content-flow. Keep inline emphasis in the
   parent's language-aware line-breaking context. */
:is(.sss-entry-content,.sss-content-flow,.sss-sumopon-page):lang(ja) :is(h1,h2,h3,h4,h5,h6,p,li,dd,dt,figcaption) :is(em,strong,b,i,a,bdi,span){word-break:inherit}
/* Bounded Japanese reading units are emitted by PHP: no browser segmentation
   or JavaScript requirement. Units can shrink/wrap only if a whole unit is
   wider than the available line, so narrow cards and text zoom still fit. */
:is(.sss-content-flow,.sss-entry-content,.site-footer,.site-header,.sss-dialog,.sss-sumopon-page) .sss-ja-text{display:inline;min-inline-size:0;max-inline-size:100%;font:inherit;letter-spacing:inherit;white-space:normal;word-break:normal;overflow-wrap:break-word}
:is(.sss-content-flow,.sss-entry-content,.site-footer,.site-header,.sss-dialog,.sss-sumopon-page) .sss-ja-text>.sss-ja-unit{display:inline-block;vertical-align:baseline;max-inline-size:100%;font:inherit;letter-spacing:inherit;white-space:normal;word-break:normal;overflow-wrap:break-word;text-indent:0}
:is(.button,.hero-secondary,.text-link,.read-label,.sss-sumopon-button)>.sss-ja-text{min-inline-size:0}
/* Keep Japanese hero copy comfortably readable at tablet widths. */
.sss-content-flow:lang(ja) .hero h1{font-size:clamp(2rem,4.6vw,4.1875rem);line-height:1.45;letter-spacing:normal}
.sss-content-flow:lang(ja) .hero-content>p:not(.eyebrow){max-inline-size:36em;text-wrap:pretty}
