/* Runverra i18n (2026-10-20): the language menu (every translated page, all languages), the preview bar, and the typography of
   each extra language. Built by tools/i18n/index.mjs into /assets/i18n.<hash>.css (the font URLs __<lang>_400__ / __<lang>_700__
   are filled in). The English pages only use the language menu from this file; a font file only downloads on a page that uses it.
   CJK rules (runverra-languages skill), for zh-Hant and zh-Hans alike: one self-hosted Noto Sans TC / SC subset for all text,
   headings included (the condensed display font has no Chinese), no letter-spacing, no uppercase, no italics, display headings
   one size step down, body line-height 1.7, nothing wider than a 360px screen.
   Gurmukhi rules (pa): Noto Sans Gurmukhi for the Gurmukhi letters only (Latin names and numbers keep the site's own font),
   line-height at least 1.7 everywhere (tall vowel signs get clipped otherwise), no condensed display font, no uppercase,
   no letter-spacing, no italics. */
@font-face{font-family:"Noto Sans TC";src:url(/assets/noto-sans-tc-400.5ef4509e3a3b.woff2) format("woff2");font-weight:100 549;font-style:normal;font-display:swap}
@font-face{font-family:"Noto Sans TC";src:url(/assets/noto-sans-tc-700.40fbe5b63c8b.woff2) format("woff2");font-weight:550 900;font-style:normal;font-display:swap}
@font-face{font-family:"Noto Sans SC";src:url(/assets/noto-sans-sc-400.7e1e29a71ae6.woff2) format("woff2");font-weight:100 549;font-style:normal;font-display:swap}
@font-face{font-family:"Noto Sans SC";src:url(/assets/noto-sans-sc-700.80275ddd6a84.woff2) format("woff2");font-weight:550 900;font-style:normal;font-display:swap}
@font-face{font-family:"Noto Sans Gurmukhi";src:url(/assets/noto-sans-gurmukhi-400.46024ef5e22e.woff2) format("woff2");font-weight:100 549;font-style:normal;font-display:swap;unicode-range:U+0A00-0A7F,U+200C-200D,U+25CC,U+0964-0965}
@font-face{font-family:"Noto Sans Gurmukhi";src:url(/assets/noto-sans-gurmukhi-700.6eb642765291.woff2) format("woff2");font-weight:550 900;font-style:normal;font-display:swap;unicode-range:U+0A00-0A7F,U+200C-200D,U+25CC,U+0964-0965}

/* each language's name is shown in its own script and font, wherever it appears */
[lang="zh-Hant"]{--i18n-font:"Noto Sans TC",system-ui,-apple-system,"PingFang TC","Microsoft JhengHei",sans-serif}
[lang="zh-Hans"]{--i18n-font:"Noto Sans SC",system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif}
[lang="pa"]{--i18n-font:"Noto Sans Gurmukhi",Sans,"Geist","Nirmala UI","Raavi",system-ui,sans-serif}

/* footer language list (pages without the header placeholder): a plain list, each language in its own script */
.i18n-sw{position:relative;z-index:2;margin:28px 0 8px;font-size:15px;line-height:1.7;text-align:center;opacity:.85}
.i18n-sw a{color:inherit;text-decoration:underline;text-underline-offset:3px;padding:6px 4px}
.i18n-sw a:hover,.i18n-sw a:focus-visible{opacity:1;color:#FF5A1F}
.i18n-sw [aria-current]{font-weight:600}
.i18n-sw [lang]:not([lang="en"]),.lang-dd [lang]:not([lang="en"]){font-family:var(--i18n-font)!important;letter-spacing:0!important;text-transform:none!important}

/* the header's language menu (it was an aria-disabled "EN" placeholder button): a <details> whose summary is the round top-bar
   button or the menu-dialog pill, and a small list of every language that links to this page in that language */
.lang-dd{position:relative;display:inline-flex;flex:none}
.lang-dd>summary{list-style:none;cursor:pointer;opacity:1;user-select:none}
.lang-dd>summary::-webkit-details-marker{display:none}
.lang-dd>summary:hover{color:#FF5A1F}
.lang-dd--pill>summary::after{content:"";width:6px;height:6px;margin:-3px 0 0 8px;border:solid currentColor;border-width:0 1.5px 1.5px 0;transform:rotate(45deg);flex:none}
.lang-dd--pill[open]>summary::after{margin-top:3px;transform:rotate(225deg)}
.lang-dd__list{position:absolute;top:calc(100% + 8px);right:0;z-index:1002;min-width:168px;margin:0;padding:6px;list-style:none;
  background:#141416;color:#FAF8F4;border:1px solid rgba(250,248,244,.22);border-radius:14px;box-shadow:0 14px 40px rgba(0,0,0,.45);text-align:left}
.lang-dd__list li{margin:0;padding:0;list-style:none}
.lang-dd__list a{display:flex;align-items:center;min-height:44px;padding:0 14px;border-radius:9px;color:inherit!important;text-decoration:none;
  font:500 16px/1.7 Sans,"Geist",system-ui,sans-serif;white-space:nowrap}
.lang-dd__list a:hover,.lang-dd__list a:focus-visible{background:rgba(250,248,244,.1);color:#FF5A1F!important}
.lang-dd__list a[aria-current]{font-weight:700}
.lang-dd__list a[aria-current]::after{content:"";width:5px;height:10px;margin:-3px 0 0 auto;padding-left:0;border:solid #FF5A1F;border-width:0 2px 2px 0;transform:rotate(45deg)}
/* (its light-mode colours are in v3/site/theme.css: only theme.css and the light layer style light mode) */
/* phones and tablets: the top bar shows no language button (the menu dialog's pill is the switch there) */
@media (max-width:1023px){.nav__tools .lang-dd{display:none}}
/* the menu dialog's pill keeps its spacing (theme.css spaces .rvm__top .lang--pill) and its list stays on screen at 360px */
.rvm__top .lang-dd--pill>summary{margin-right:0}
.rvm__top .lang-dd--pill{margin-right:12px}
/* small phones: brand, Dark/Light, language and Close share one row, so the pill shows the short form (EN, 繁, 简, ਪੰ; its
   accessible name stays the full one) and no caret, and nothing in the row wraps */
@media (max-width:400px){
  .rvm__top .lang-dd--pill{margin-right:6px}
  .rvm__top .lang-dd--pill>summary{font-size:0!important;padding:0 12px;min-width:40px}
  .rvm__top .lang-dd--pill>summary::before{content:attr(data-short);font-size:14px}
  .rvm__top .lang-dd--pill>summary::after{display:none}
  .rvm__top .rvm__brand,.rvm__top .rvm__x,.rvm__top .thm--pill{white-space:nowrap}
}

/* preview bar (only while a page still has draft translations) */
.i18n-preview{position:sticky;top:0;z-index:1001;box-sizing:border-box;height:32px;margin:0;padding:5px 16px;background:#FF5A1F;color:#0B0B0C;text-align:center;font:600 14px/22px var(--i18n-font,system-ui),system-ui,sans-serif;white-space:nowrap;overflow:hidden}
.i18n-preview~.nav,.i18n-preview~* .nav{top:32px}

/* ---- Chinese pages (Traditional and Simplified) ---- */
html:is([lang="zh-Hant"],[lang="zh-Hans"]) body{font-family:var(--i18n-font);line-height:1.7;line-break:strict;overflow-wrap:break-word}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) body :not(.nav__logo,.nav__logo *,.hero__mark,.foot__mark,.gload__mark,.gload__mark *,.brand,.rvm__brand,svg,svg *,code,kbd){
  font-family:var(--i18n-font)!important;letter-spacing:0!important;text-transform:none!important;font-style:normal!important}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) :is(p,li,dd,dt,td,th,label,summary,figcaption,blockquote,small,.lede,.lede-dark,.hero__sub,.hero__trust,.ba__lede,.status):not(.hero__mark,.foot__mark,.gload__mark,.cine__big,.price,.mono){line-height:1.7}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) :is(h1,h2,h3,h4,.cine__big,.hero__line,.gi__name,.svx-also__h){line-height:1.3!important;font-weight:700}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) :is(h1,h2){text-wrap:balance}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) .price{line-height:1.3;font-weight:700}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) :is(em,i,cite,.s){font-weight:700}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) .mono{font-size:13px}

/* display headings: one size step down (about 0.72 of the English clamp values) */
html:is([lang="zh-Hant"],[lang="zh-Hans"]) h1{font-size:clamp(32px,7vw,92px)}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) h2{font-size:clamp(28px,4.6vw,60px)}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) .hero.page h1{font-size:clamp(34px,6.4vw,92px)}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) .hero.home h1{font-size:clamp(28px,3.8vw,52px)}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) .big-cta h2{font-size:clamp(34px,8vw,112px)}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) :is(.two,.touch,.prose) h2{font-size:clamp(24px,2.6vw,34px)}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) .work-card h2{font-size:clamp(22px,2.2vw,30px)}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) body:not(.rvc) h2{font-size:clamp(30px,4vw,60px);max-width:min(100%,13em)}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) body:not(.rvc) h3{font-size:clamp(22px,2.6vw,40px)}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) .pains h2{font-size:clamp(30px,4.4vw,60px);max-width:min(100%,13em)}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) .ba h2{font-size:clamp(28px,4vw,54px);max-width:min(100%,12em)}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) .val h2{font-size:clamp(26px,3.6vw,48px);max-width:min(100%,14em)}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) .who h2{font-size:clamp(26px,3.4vw,46px);max-width:min(100%,14em)}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) .gallery__head h2{font-size:clamp(36px,6.4vw,104px)}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) .gindex h2{font-size:clamp(32px,5vw,80px)}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) .gabout h2{font-size:clamp(28px,3.6vw,52px)}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) .gcase h3{font-size:clamp(32px,4.2vw,62px)}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) .gi__name{font-size:clamp(22px,2.4vw,36px)}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) .cine__big{font-size:clamp(44px,7.6vw,132px)}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) .hero__copy .hero__line{font-size:clamp(26px,2.8vw,40px)}
@media (max-width:860px){html:is([lang="zh-Hant"],[lang="zh-Hans"]) .cine .cine__big{font-size:clamp(34px,10vw,58px)}}

/* nothing wider than the screen: long Latin words, emails and URLs may wrap inside Chinese text */
html:is([lang="zh-Hant"],[lang="zh-Hans"]) :is(p,li,dd,td,a,span,label,h1,h2,h3,h4){overflow-wrap:anywhere}
html:is([lang="zh-Hant"],[lang="zh-Hans"]) .btn{white-space:normal}

/* ---- Punjabi pages (Gurmukhi) ---- */
html[lang="pa"] body{font-family:var(--i18n-font);line-height:1.8;overflow-wrap:break-word}
html[lang="pa"] body :not(.nav__logo,.nav__logo *,.hero__mark,.foot__mark,.gload__mark,.gload__mark *,.brand,.rvm__brand,svg,svg *,code,kbd){
  font-family:var(--i18n-font)!important;letter-spacing:0!important;text-transform:none!important;font-style:normal!important}
html[lang="pa"] :is(p,li,dd,dt,td,th,label,summary,figcaption,blockquote,small,.lede,.lede-dark,.hero__sub,.hero__trust,.ba__lede,.status,a,span,button,.btn,.price,.mono):not(.hero__mark,.foot__mark,.gload__mark){line-height:1.8}
html[lang="pa"] :is(h1,h2,h3,h4,.cine__big,.hero__line,.gi__name,.svx-also__h){line-height:1.7!important;font-weight:700}
html[lang="pa"] :is(h1,h2){text-wrap:balance}
html[lang="pa"] .price{font-weight:700}
html[lang="pa"] :is(em,i,cite,.s){font-weight:700}
html[lang="pa"] .mono{font-size:13px}
/* display headings: Gurmukhi words are long and the marks are tall, so two size steps down from the condensed English */
html[lang="pa"] h1{font-size:clamp(28px,5.6vw,72px)}
html[lang="pa"] h2{font-size:clamp(24px,3.8vw,48px)}
html[lang="pa"] .hero.page h1{font-size:clamp(28px,5.2vw,72px)}
html[lang="pa"] .hero.home h1{font-size:clamp(24px,3.2vw,44px)}
html[lang="pa"] .big-cta h2{font-size:clamp(28px,6vw,84px)}
html[lang="pa"] :is(.two,.touch,.prose) h2{font-size:clamp(22px,2.4vw,30px)}
html[lang="pa"] .work-card h2{font-size:clamp(20px,2vw,28px)}
html[lang="pa"] body:not(.rvc) h2{font-size:clamp(26px,3.4vw,48px);max-width:min(100%,18em)}
html[lang="pa"] body:not(.rvc) h3{font-size:clamp(20px,2.2vw,32px)}
html[lang="pa"] .pains h2{font-size:clamp(26px,3.6vw,48px);max-width:min(100%,18em)}
html[lang="pa"] .ba h2{font-size:clamp(24px,3.4vw,44px);max-width:min(100%,17em)}
html[lang="pa"] .val h2{font-size:clamp(22px,3vw,40px);max-width:min(100%,19em)}
html[lang="pa"] .who h2{font-size:clamp(22px,2.8vw,38px);max-width:min(100%,19em)}
html[lang="pa"] .gallery__head h2{font-size:clamp(30px,5vw,80px)}
html[lang="pa"] .gindex h2{font-size:clamp(28px,4vw,64px)}
html[lang="pa"] .gabout h2{font-size:clamp(24px,3vw,44px)}
html[lang="pa"] .gcase h3{font-size:clamp(26px,3.4vw,50px)}
html[lang="pa"] .gi__name{font-size:clamp(20px,2vw,30px)}
html[lang="pa"] .cine__big{font-size:clamp(34px,6vw,104px)}
html[lang="pa"] .hero__copy .hero__line{font-size:clamp(22px,2.4vw,34px)}
@media (max-width:860px){html[lang="pa"] .cine .cine__big{font-size:clamp(28px,8vw,48px)}}
html[lang="pa"] :is(p,li,dd,td,a,span,label,h1,h2,h3,h4){overflow-wrap:break-word}
html[lang="pa"] .btn{white-space:normal}
