/* Direction-aware layer for RTL locales (loaded for every page; only acts on [dir=rtl]). Uses logical properties
   and mirrors directional chrome only; logos, maps, charts, numbers, emails, phones and URLs stay LTR. */
html{overflow-wrap:anywhere}
:is(input[type=email],input[type=url],input[type=tel],input[type=number],input[type=password].fn-ltr,.fn-ltr,[data-ltr]){direction:ltr;unicode-bidi:plaintext}
html[dir=rtl] :is(input[type=email],input[type=url],input[type=tel],input[type=number]){text-align:right}
html[dir=rtl] :is(input[type=email],input[type=url],input[type=tel])::placeholder{direction:rtl}
html[dir=rtl] :is(.mono,a[href^="mailto:"],a[href^="tel:"],.num,time,.price,.currency){unicode-bidi:isolate;direction:ltr;display:inline-block}
html[dir=rtl] :is(.leaflet-container,.map,.chart,svg.chart,.fn-chart,canvas,img,.logo,.fn-sh-logo,.d8-logo,.nv-logo,video){direction:ltr}
html[dir=rtl] body{text-align:start}
/* Language picker */
.fn-sh-lang{position:relative}
.fn-lang-list{inset-inline-end:0;inset-inline-start:auto;text-align:start}
html[dir=rtl] .fn-lang-list{left:0;right:auto}
.fn-lang-list li[aria-selected=true]{font-weight:700}
.fn-lang-list li[aria-selected=true]::after{content:"✓";margin-inline-start:auto;padding-inline-start:10px}
.fn-lang-list li:focus-visible,.fn-lang-list li.is-active{outline:2px solid #7c3aed;outline-offset:-2px}
/* Public header / sticky nav */
html[dir=rtl] .fn-sh-menu nav{right:auto;left:0}
html[dir=rtl] .fn-sh-nav,html[dir=rtl] .fn-sh-actions,html[dir=rtl] .d8-header-actions{flex-direction:row}
/* Directional glyphs */
html[dir=rtl] :is(.fa-arrow-right,.fa-chevron-right,.fa-angle-right,.fa-caret-right,.fa-arrow-right-long,.fa-arrow-left,.fa-chevron-left,.fa-angle-left){transform:scaleX(-1)}
html[dir=rtl] :is(.nv-arrow,.back-ico,.fn-flip){transform:scaleX(-1)}
/* App shells: sidebar rail moves to the inline start */
html[dir=rtl] .shell{direction:rtl}
html[dir=rtl] .sidebar,html[dir=rtl] .nv-rail{border-inline-end:1px solid var(--border,#0001);border-right:0}
html[dir=rtl] .nv-top{flex-direction:row-reverse}
html[dir=rtl] .table-wrap{direction:rtl}
html[dir=rtl] table.t :is(th,td){text-align:start}
html[dir=rtl] table.t :is(th.num,td.num){text-align:end}
html[dir=rtl] .field label,html[dir=rtl] .field-error{text-align:start}
html[dir=rtl] select.input{background-position:left 12px center;padding-inline:12px 34px}
html[dir=rtl] :is(.modal,.dialog,[role=dialog]){text-align:start}
html[dir=rtl] .toast,html[dir=rtl] .toasts{left:16px;right:auto}
/* Long translations must wrap, never overflow */
:is(button,.btn,.chip,.badge,.tab,a.nav-item){max-width:100%;overflow-wrap:anywhere;hyphens:auto}
body{overflow-x:clip}
/* Charts keep their data axis left-to-right in every language */
.fn-area-chart,.fn-mini-chart,.fn-chart,[data-chart]{direction:ltr}
.fn-area-chart .fn-area-val,.fn-mini-chart span{unicode-bidi:plaintext}
/* Longer translations: keep hero headlines inside the viewport and picker label on one line */
.fn-lang-btn{flex-shrink:0}.fn-lang-btn span{white-space:nowrap}
html:not([lang=de]):not([lang=en]) .hp-design_8 h1{font-size:clamp(34px,6.4vw,60px);overflow-wrap:anywhere}
html[lang=ar] .hp-design_8 h1{font-size:clamp(34px,6vw,54px);line-height:1.35}
html[lang=ru] .hp-design_8 h1,html[lang=uk] .hp-design_8 h1,html[lang=vi] .hp-design_8 h1{font-size:clamp(32px,5.8vw,54px)}
html:not([lang=de]):not([lang=en]) :is(.d8-cta,.d8-login,.fn-sh-login){white-space:normal;text-align:center}
/* RTL mirroring: headers, auth inputs, sliders (2026-11-01) */
html[dir=rtl] :is(.fn-sh,.fn-sh-in,.fn-sh-actions,.fn-auth-header,.pub-header,.d8-header,.d8-header-actions,.fn-sh-menu,.fn-sh-nav){direction:rtl}
html[dir=rtl] .fn-sh-menu nav,html[dir=rtl] .fn-lang-list{text-align:right}
html[dir=rtl] .fn-input-shell .input{padding-left:14px!important;padding-right:46px!important;text-align:right}
html[dir=rtl] .fn-input-icon{left:auto;right:15px}
html[dir=rtl] .fn-sh-lang select{background-position:left 11px center;padding:0 14px 0 30px!important}
html[dir=rtl] .fn-sh-lang .fa-globe{left:auto;right:12px}
html[dir=rtl] .fn-auth-register .wizard-steps{direction:rtl}
html[dir=rtl] :is(.fn-rs,.fn-rs-track,.fn-rs-body){direction:rtl}
html[dir=rtl] .fn-rs-ends{flex-direction:row}
html[dir=rtl] .fn-password-toggle{right:auto;left:9px}
html[dir=rtl] .fn-input-shell:has(.fn-password-toggle) .input{padding-right:46px!important;padding-left:50px!important}

/* RTL: progress connectors between wizard steps are anchored with physical `left`; mirror them. */
html[dir=rtl] .fn-auth-register .wizard-steps>div:not(:last-child):after{left:auto;right:calc(50% + 19px)}
html[dir=rtl] .fn-auth-register .wizard-steps>div.done:not(:last-child):after{background:linear-gradient(270deg,#f51ca2,#ff807d)}
