/* Fonts are self-hosted: assets/css/fonts-latin.css is linked on every page,
   assets/css/fonts-cn.css only on the Chinese pages. */

/* ============================================================
   KRIF — Design System v3.0 · tokens
   Ported verbatim from the Claude Design project "KRIF Design System".
   ============================================================ */

:root{
/* ── colours: white canvas, noble muted red, gold accent ── */
--krif-white:#FFFFFF;
--krif-red:#9E1B32;
--krif-red-700:#85172A;
--krif-red-deep:#6B1222;
--krif-red-100:#F7EDEF;
--krif-gold:#CCA876;
--krif-gold-700:#B8905B;
--krif-gold-200:#EBDCC5;

--krif-grey-50:#FAF9FA;
--krif-grey-100:#F4F1F1;
--krif-grey-200:#E8E3E4;
--krif-grey-300:#D7D0D1;
--krif-grey-500:#AEA2A4;
--krif-grey-600:#8A7579;
--krif-grey-800:#514345;
--krif-void:#9A8D90;
--ink:#191011;

--text-heading:var(--ink);
--text-body:var(--krif-grey-600);
--text-body-strong:var(--ink);
--text-inverse:var(--krif-white);
--text-muted:var(--krif-grey-500);
--text-link:var(--krif-red);
--text-link-hover:var(--krif-red-700);
--text-stat:var(--krif-red);

--surface-page:var(--krif-white);
--surface-alt:var(--krif-grey-100);
--surface-alt-soft:var(--krif-grey-50);
--surface-card:var(--krif-white);
--surface-nav:var(--krif-red-deep);
--surface-footer:var(--krif-grey-100);
--surface-footer-bar:var(--krif-red-deep);
--surface-accent:var(--krif-gold);

--action-primary-bg:var(--krif-red);
--action-primary-bg-hover:var(--krif-red-700);
--action-primary-fg:var(--krif-white);
--action-secondary-bg:transparent;
--action-secondary-border:var(--krif-gold);
--action-secondary-fg:var(--krif-gold-700);
--action-ghost-border:var(--krif-red);
--action-ghost-fg:var(--krif-red);
--action-disabled-bg:var(--krif-grey-200);
--action-disabled-fg:var(--krif-grey-500);

--border-hairline:var(--krif-grey-200);
--border-field:var(--ink);
--border-rule-accent:var(--krif-red);
--bullet-accent:var(--krif-red);
--nav-active:var(--krif-gold);
--nav-idle:var(--krif-white);
--nav-rule:rgba(255,255,255,.35);
--icon-accent:var(--krif-gold);
--icon-nav:var(--krif-gold);

/* ── typography ── */
--font-display:"Unbounded","Golos Text","Segoe UI",sans-serif;
--font-body:"Golos Text","Segoe UI",sans-serif;
--font-cn:"Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;

--fw-light:300;--fw-regular:400;--fw-semibold:600;--fw-bold:700;--fw-black:800;

--fs-display-1:clamp(36px, 4.4vw, 74px);
--fs-display-2:clamp(32px, 3.8vw, 60px);
--fs-stat-xl:clamp(48px, 5vw, 86px);
--fs-stat-l:64px;
--fs-h1:38px;
--fs-h2:30px;
--fs-h3:22px;
--fs-lead:19px;
--fs-body:17px;
--fs-body-s:15px;
--fs-nav:18px;
--fs-button:15px;
--fs-caption:13px;
--fs-legal:12px;
--fs-logo-tagline:11px;

--lh-tight:1.1;--lh-heading:1.2;--lh-body:1.6;--lh-body-cn:1.9;
--ls-caps:0.08em;--ls-button:0.06em;--ls-heading:-0.01em;--ls-display:-0.03em;

/* ── spacing ── */
--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;
--sp-7:40px;--sp-8:56px;--sp-9:72px;--sp-10:112px;--sp-11:160px;
--content-max:1240px;
--rail-w:150px;
--gutter-page:64px;
--gutter-page-mobile:20px;
--section-py:112px;
--section-py-compact:64px;
--grid-gap:32px;
--card-pad:28px;
--field-gap:40px;

/* ── borders ── */
--radius-none:0;--radius-sm:2px;--radius-round:50%;
--bw-hairline:1px;--bw-field:1px;--bw-ghost:2px;--bw-rule-accent:4px;
--bw-nav-marker:2px;--bw-table-head:2px;

/* ── elevation: hairlines, never shadows ── */
--shadow-none:none;
--shadow-card:0 0 0 1px var(--krif-grey-200);
--shadow-card-hover:0 0 0 1px var(--krif-red);
--shadow-callout:0 0 0 1px var(--krif-grey-200);

/* ── motion: four moves, no fifth ── */
--dur-fast:120ms;--dur-base:200ms;--dur-slow:400ms;--dur-reveal:520ms;--dur-draw:900ms;
--ease-standard:cubic-bezier(.4,0,.2,1);
--ease-out:cubic-bezier(0,0,.2,1);
--ease-entrance:cubic-bezier(.16,1,.3,1);
--reveal-rise:10px;
--reveal-stagger:70ms;
--transition-colour:color var(--dur-base) var(--ease-standard),background-color var(--dur-base) var(--ease-standard),border-color var(--dur-base) var(--ease-standard),box-shadow var(--dur-base) var(--ease-standard);
--transition-move:transform var(--dur-base) var(--ease-out);
}

@media (prefers-reduced-motion: reduce){:root{
--dur-reveal:1ms;--dur-draw:1ms;--reveal-rise:0px;--reveal-stagger:0ms;
}}

@media (max-width: 720px){:root{--gutter-page:var(--gutter-page-mobile);--sp-10:64px;--sp-11:80px;}}

/* ============================================================ base ==== */
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--surface-page);color:var(--text-body);font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body)}
h1,h2,h3,h4,h5,h6{margin:0;font-family:var(--font-display);font-weight:var(--fw-bold);color:var(--text-heading);line-height:var(--lh-heading);letter-spacing:var(--ls-heading)}
h1{font-size:var(--fs-h1)}h2{font-size:var(--fs-h2)}h3{font-size:var(--fs-h3)}
p{margin:0 0 var(--sp-5)}
p:last-child{margin-bottom:0}
a{color:var(--text-link);text-decoration:underline;text-underline-offset:2px;transition:var(--transition-colour)}
a:hover{color:var(--text-link-hover)}
strong,b{font-weight:var(--fw-bold);color:var(--text-body-strong)}
:lang(zh),.krif-cn{font-family:var(--font-cn);line-height:var(--lh-body-cn)}
img{display:block;max-width:100%}
*,*::before,*::after{box-sizing:border-box}
::selection{background:var(--krif-red-100);color:var(--ink)}
:focus-visible{outline:2px solid var(--krif-red);outline-offset:3px}
.k-skip{position:absolute;left:-9999px;top:0;background:var(--krif-red);color:#fff;padding:var(--sp-3) var(--sp-5);z-index:99;text-decoration:none}
.k-skip:focus{left:0}

/* ============================================================ logo ==== */
.k-logo{display:inline-flex;align-items:center;gap:.34em;color:var(--krif-red);line-height:1;text-decoration:none}
.k-logo svg{flex:0 0 auto;display:block}
.k-logo .k-word{font-family:var(--font-display);font-weight:var(--fw-bold);letter-spacing:-0.01em;color:currentColor}
.k-logo--ink{color:var(--ink)}
.k-logo--white{color:var(--krif-white)}
.k-logo__draw{stroke-dasharray:92;stroke-dashoffset:92;animation:k-draw var(--dur-draw) var(--ease-entrance) forwards}
.k-logo__corner{opacity:0;animation:k-fade var(--dur-base) var(--ease-out) var(--dur-draw) forwards}
@keyframes k-draw{to{stroke-dashoffset:0}}
@keyframes k-fade{to{opacity:1}}
@media (prefers-reduced-motion: reduce){
.k-logo__draw{animation:none;stroke-dashoffset:0}
.k-logo__corner{animation:none;opacity:1}
}

/* ============================================================ top bar ==== */
.k-topbar{position:sticky;top:0;z-index:20;background:var(--surface-page);border-bottom:1px solid transparent;transition:border-color var(--dur-slow) var(--ease-out)}
.k-topbar.is-scrolled,.k-topbar.is-open{border-bottom-color:var(--border-hairline)}
.k-topbar__inner{max-width:var(--content-max);margin:0 auto;padding:var(--sp-4) var(--gutter-page);min-height:84px;display:flex;align-items:center;gap:var(--sp-5)}
.k-topbar__brand{line-height:0;flex:0 0 auto;text-decoration:none}
.k-nav{display:flex;gap:var(--sp-5);margin-left:auto}
.k-nav a{font-family:var(--font-body);font-size:var(--fs-body-s);text-decoration:none;white-space:nowrap;color:var(--text-body);padding:0 0 2px;border-bottom:1px solid transparent;transition:var(--transition-colour)}
.k-nav a:hover{color:var(--krif-red)}
.k-nav a[aria-current="page"]{color:var(--krif-red);border-bottom-color:var(--krif-red)}
.k-cta-link{font-family:var(--font-display);font-size:var(--fs-caption);font-weight:var(--fw-semibold);letter-spacing:var(--ls-button);text-transform:uppercase;white-space:nowrap;color:var(--krif-red);text-decoration:none;border-bottom:2px solid var(--krif-red);padding-bottom:3px}
.k-cta-link:hover{color:var(--krif-red-700);border-bottom-color:var(--krif-red-700)}
.k-menu-toggle{display:none;margin-left:auto;border:none;background:none;cursor:pointer;padding:0 0 3px;font-family:var(--font-display);font-size:var(--fs-caption);font-weight:var(--fw-semibold);letter-spacing:var(--ls-button);text-transform:uppercase;color:var(--ink);border-bottom:2px solid var(--ink);transition:var(--transition-colour)}
.k-topbar.is-open .k-menu-toggle{color:var(--krif-red);border-bottom-color:var(--krif-red)}
.k-drawer{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--dur-slow) var(--ease-entrance);border-top:1px solid transparent}
.k-topbar.is-open .k-drawer{grid-template-rows:1fr;border-top-color:var(--border-hairline)}
.k-drawer__clip{overflow:hidden}
.k-drawer__inner{padding:var(--sp-4) var(--gutter-page) var(--sp-6)}
.k-drawer__inner .k-nav{display:grid;gap:0;margin:0}
.k-drawer__inner .k-nav a{font-size:var(--fs-body);padding:var(--sp-3) 0;border-bottom:1px solid var(--border-hairline);display:block}
.k-drawer__foot{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-5);margin-top:var(--sp-5)}
.k-drawer__foot a{font-family:var(--font-body);font-size:var(--fs-body-s);color:var(--krif-red);text-decoration:none}

/* ============================================================ lang switch ==== */
.k-lang{display:flex;gap:var(--sp-2);align-items:center;font-family:var(--font-body);font-size:var(--fs-caption)}
.k-lang span[aria-hidden]{color:var(--krif-grey-300)}
.k-lang a{text-decoration:none;text-transform:uppercase;letter-spacing:var(--ls-caps);color:var(--krif-grey-500);transition:var(--transition-colour)}
.k-lang a:hover{color:var(--krif-red)}
.k-lang a.is-current{color:var(--ink)}

@media (max-width: 1000px){
.k-topbar__inner > .k-nav,.k-topbar__inner > .k-lang,.k-topbar__inner > .k-cta-link{display:none}
.k-menu-toggle{display:block}
}

/* ============================================================ layout ==== */
.k-wrap{max-width:var(--content-max);margin:0 auto;padding-left:var(--gutter-page);padding-right:var(--gutter-page)}
.k-section{background:var(--surface-page);border-top:1px solid var(--border-hairline)}
.k-section--soft{background:var(--surface-alt-soft)}
.k-section--flush{border-top:none}
.k-section__inner{max-width:var(--content-max);margin:0 auto;padding:var(--sp-10) var(--gutter-page);display:flex;flex-wrap:wrap;gap:var(--sp-7);align-items:flex-start}
.k-rail{flex:0 1 var(--rail-w);min-width:120px;display:flex;flex-direction:column;gap:var(--sp-2)}
.k-rail__index{font-family:var(--font-display);font-size:var(--fs-caption);font-weight:var(--fw-bold);color:var(--krif-red)}
.k-rail__label{font-family:var(--font-body);font-size:var(--fs-caption);letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--text-muted);line-height:1.5}
.k-col{flex:1 1 420px;min-width:0}
.k-col > * + *{margin-top:var(--sp-6)}
.k-col > h2 + p,.k-col > h3 + p{margin-top:var(--sp-5)}

/* ============================================================ hero ==== */
.k-hero{padding:var(--sp-9) var(--gutter-page) var(--sp-9)}
.k-hero__inner{max-width:var(--content-max);margin:0 auto}
.k-eyebrow{display:flex;align-items:center;gap:var(--sp-4);margin-bottom:var(--sp-6)}
.k-eyebrow::before{content:"";width:48px;height:2px;background:var(--krif-red);flex:0 0 auto}
.k-eyebrow span{font-family:var(--font-body);font-size:var(--fs-caption);letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--text-body)}
.k-hero h1{max-width:1180px;margin:0;font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--fs-display-1);line-height:var(--lh-tight);letter-spacing:var(--ls-display);color:var(--text-heading)}
.k-hero__lede{max-width:660px;margin:var(--sp-6) 0 0;font-family:var(--font-body);font-size:var(--fs-lead);line-height:var(--lh-body);color:var(--text-body)}
.k-hero__meta{margin-top:var(--sp-7);font-family:var(--font-body);font-size:var(--fs-caption);letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--text-muted)}
.k-hero__actions{margin-top:var(--sp-7);display:flex;flex-wrap:wrap;gap:var(--sp-6);align-items:center}

/* ============================================================ buttons ==== */
.k-btn{font-family:var(--font-display);font-size:var(--fs-button);font-weight:var(--fw-bold);letter-spacing:var(--ls-button);text-transform:uppercase;border-radius:var(--radius-none);border:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);text-decoration:none;white-space:nowrap;transition:var(--transition-colour);padding:14px 28px}
.k-btn--s{padding:10px 20px;font-size:var(--fs-caption)}
.k-btn--l{padding:18px 40px}
.k-btn--primary{background:var(--action-primary-bg);color:var(--action-primary-fg)}
.k-btn--primary:hover{background:var(--action-primary-bg-hover);color:var(--action-primary-fg)}
.k-btn--secondary{background:transparent;color:var(--ink);padding-left:0;padding-right:0;box-shadow:inset 0 -2px 0 var(--action-secondary-border)}
.k-btn--secondary:hover{color:var(--krif-red);box-shadow:inset 0 -2px 0 var(--krif-red)}
.k-btn--ghost{background:transparent;color:var(--action-ghost-fg);box-shadow:inset 0 0 0 var(--bw-ghost) var(--action-ghost-border)}
.k-btn--ghost:hover{background:var(--action-primary-bg);color:var(--action-primary-fg)}
.k-btn--block{width:100%}

/* ============================================================ content ==== */
.k-lead{font-family:var(--font-body);font-size:var(--fs-lead);line-height:var(--lh-body);color:var(--text-body-strong)}
.k-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-3)}
.k-list li{display:flex;gap:var(--sp-3);align-items:baseline;font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--text-body-strong)}
.k-list li::before{content:"";width:6px;height:6px;border-radius:var(--radius-round);background:var(--bullet-accent);flex:0 0 auto;transform:translateY(-3px)}
.k-list--dash li::before{content:"—";width:auto;height:auto;border-radius:0;background:none;color:var(--text-body-strong);transform:none}
.k-list--lead li{font-size:var(--fs-lead)}
.k-callout{background:var(--surface-card);box-shadow:var(--shadow-callout);padding:var(--sp-7) var(--sp-8);text-align:center;font-family:var(--font-body);font-weight:var(--fw-bold);font-size:var(--fs-lead);line-height:var(--lh-body);color:var(--text-body-strong)}
.k-callout--alt{background:var(--surface-alt)}
.k-callout--left{text-align:left}

/* ── stats ── */
.k-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));column-gap:var(--sp-7);row-gap:var(--sp-8);align-items:start}
.k-stat__value{font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--fs-stat-xl);line-height:var(--lh-tight);letter-spacing:var(--ls-display);color:var(--text-stat);font-variant-numeric:tabular-nums;white-space:nowrap;display:flex;align-items:baseline;gap:.18em}
.k-stat__value--long{font-size:clamp(36px, 3.4vw, 60px)}
.k-stat__unit{font-size:.42em;font-weight:var(--fw-bold);letter-spacing:var(--ls-caps);text-transform:uppercase;white-space:nowrap}
.k-stat__label{margin-top:var(--sp-4);font-family:var(--font-body);font-size:var(--fs-caption);letter-spacing:var(--ls-caps);text-transform:uppercase;line-height:1.6;color:var(--text-body)}

/* ── criteria cards ── */
.k-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--grid-gap)}
.k-card{min-width:0;background:var(--surface-card);box-shadow:var(--shadow-card);padding:var(--card-pad);display:flex;flex-direction:column;gap:var(--sp-5);transition:var(--transition-colour)}
.k-card:hover{box-shadow:var(--shadow-card-hover)}
.k-card h3{margin:0;min-width:0;overflow-wrap:break-word;font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--fs-caption);letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--krif-red)}
.k-card__group{display:grid;gap:var(--sp-2)}
.k-card__group b{font-family:var(--font-body);font-weight:var(--fw-bold);font-size:var(--fs-body-s);letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--text-body-strong)}
.k-card__group span{font-family:var(--font-body);font-size:var(--fs-body-s);line-height:var(--lh-body);color:var(--text-body)}
.k-card__head{display:flex;align-items:baseline;gap:var(--sp-3);flex-wrap:nowrap}
.k-card__head .k-card__num{flex:0 0 auto}
.k-card__head h3{flex:1 1 auto;min-width:0}
.k-card__num{font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--fs-caption);color:var(--krif-red)}
.k-card a{text-decoration:none}
.k-card a:hover{text-decoration:underline}

/* ── table ── */
.k-table-wrap{overflow-x:auto}
.k-table{width:100%;border-collapse:collapse;font-family:var(--font-body);font-size:var(--fs-body-s);color:var(--text-body-strong)}
.k-table th{text-align:center;padding:var(--sp-4);font-weight:var(--fw-bold);border-top:var(--bw-table-head) solid var(--krif-red);border-bottom:var(--bw-hairline) solid var(--krif-red)}
.k-table th:first-child,.k-table td:first-child{text-align:left}
.k-table td{text-align:center;padding:var(--sp-4);border-bottom:var(--bw-hairline) solid var(--border-hairline);color:var(--text-body)}
.k-table td:first-child{color:var(--text-body-strong)}
.k-table tbody tr:nth-child(even){background:var(--surface-alt-soft)}
.k-table tbody tr:last-child td{border-bottom:var(--bw-table-head) solid var(--ink)}

/* ── photo ── */
.k-figure{margin:0}
.k-figure img{width:100%;height:560px;object-fit:cover;display:block}
.k-figure--short img{height:380px}
.k-figure figcaption{max-width:var(--content-max);margin:var(--sp-4) auto 0;padding:0 var(--gutter-page);font-family:var(--font-body);font-size:var(--fs-caption);color:var(--text-muted)}
.k-figure--inline img{height:auto}
.k-figure--inline figcaption{padding:0}
@media (max-width:720px){.k-figure img{height:280px}.k-figure--short img{height:220px}}

/* ── news list ── */
.k-news{border-top:1px solid var(--border-hairline)}
.k-news a{display:grid;grid-template-columns:110px 1fr 28px;gap:var(--sp-6);align-items:baseline;padding:var(--sp-6) 0;border-bottom:1px solid var(--border-hairline);text-decoration:none;transition:var(--transition-colour)}
.k-news__date{font-family:var(--font-body);font-size:var(--fs-caption);color:var(--text-muted)}
.k-news__title{font-family:var(--font-display);font-weight:var(--fw-semibold);font-size:var(--fs-h3);line-height:var(--lh-heading);color:var(--text-heading);transition:var(--transition-colour)}
.k-news__arrow{font-family:var(--font-body);font-size:var(--fs-body);color:var(--krif-grey-300);text-align:right;display:inline-block;transition:var(--transition-move),var(--transition-colour)}
.k-news a:hover .k-news__title{color:var(--krif-red)}
.k-news a:hover .k-news__arrow{color:var(--krif-red);transform:translateX(4px)}
@media (max-width:640px){.k-news a{grid-template-columns:1fr 28px}.k-news__date{grid-column:1/-1}}

/* ── article ── */
.k-article{max-width:720px}
.k-article p{font-size:var(--fs-body);line-height:var(--lh-body);color:var(--text-body-strong)}
.k-article h2{font-size:var(--fs-h3);margin:var(--sp-8) 0 var(--sp-5)}
.k-article strong{font-weight:var(--fw-bold)}
.k-meta-row{display:flex;flex-wrap:wrap;gap:var(--sp-5);align-items:center;font-family:var(--font-body);font-size:var(--fs-caption);letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--text-muted)}

/* ── chips ── */
.k-chips{display:flex;flex-wrap:wrap;gap:var(--sp-3)}
.k-chip{display:inline-block;padding:10px 16px;background:var(--krif-grey-100);color:var(--text-body);font-family:var(--font-body);font-size:var(--fs-body-s);text-decoration:none;transition:var(--transition-colour)}
.k-chip:hover{background:var(--krif-grey-200);color:var(--text-body)}

/* ── partner wall ── */
.k-partners{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0;border-top:1px solid var(--border-hairline);border-left:1px solid var(--border-hairline)}
.k-partners a,.k-partners span{display:flex;align-items:center;justify-content:center;text-align:center;min-height:132px;padding:var(--sp-5);border-right:1px solid var(--border-hairline);border-bottom:1px solid var(--border-hairline);font-family:var(--font-body);font-size:var(--fs-body-s);line-height:1.45;color:var(--text-body);text-decoration:none;transition:var(--transition-colour)}
.k-partners img{height:76px;width:auto;max-width:100%;object-fit:contain;opacity:.9;transition:opacity var(--dur-base) var(--ease-standard)}
.k-partners a:hover img{opacity:1}
.k-partners a:hover{color:var(--krif-red)}

/* ── steps ── */
.k-steps{display:grid;gap:0;border-top:1px solid var(--border-hairline)}
.k-step{display:grid;grid-template-columns:110px 1fr;gap:var(--sp-6);padding:var(--sp-6) 0;border-bottom:1px solid var(--border-hairline)}
.k-step__n{font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--fs-caption);color:var(--krif-red);letter-spacing:var(--ls-caps)}
.k-step h3{font-size:var(--fs-h3);margin-bottom:var(--sp-3)}
.k-step p{margin:0;font-size:var(--fs-body-s)}
@media (max-width:640px){.k-step{grid-template-columns:1fr;gap:var(--sp-3)}}

/* ── form ── */
.k-form{display:grid;gap:var(--field-gap);max-width:760px}
.k-field{display:flex;align-items:baseline;gap:var(--sp-3)}
.k-field > span{font-family:var(--font-body);font-size:var(--fs-body);color:var(--text-body-strong);white-space:nowrap}
.k-field__control{flex:1;display:flex;align-items:baseline;gap:var(--sp-3);border-bottom:var(--bw-field) solid var(--border-field);transition:var(--transition-colour)}
.k-field__control:focus-within{border-bottom-color:var(--krif-red)}
.k-field input,.k-field textarea{flex:1;min-width:0;border:none;outline:none;background:transparent;padding:4px 0 8px;font-family:var(--font-body);font-size:var(--fs-body);color:var(--text-body-strong);resize:vertical}
.k-legal{font-family:var(--font-body);font-size:var(--fs-legal);color:var(--text-muted);max-width:620px}
@media (max-width:640px){.k-field{flex-direction:column;align-items:stretch;gap:var(--sp-2)}.k-field > span{white-space:normal}}

/* ── footer ── */
.k-footer{border-top:1px solid var(--border-hairline);background:var(--surface-page)}
.k-footer__inner{max-width:var(--content-max);margin:0 auto;padding:var(--sp-7) var(--gutter-page);display:grid;grid-template-columns:minmax(210px,1.15fr) repeat(3,minmax(140px,1fr));gap:var(--sp-7) var(--sp-8);align-items:start}
@media (max-width:900px){.k-footer__inner{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.k-footer__inner{grid-template-columns:1fr}}
.k-footer__brand{display:flex;flex-direction:column;gap:var(--sp-4);align-items:flex-start}
.k-footer__descriptor{font-family:var(--font-body);font-size:var(--fs-caption);color:var(--text-muted);max-width:250px;line-height:1.6}
.k-footer__col{display:grid;gap:var(--sp-3);justify-items:start;align-content:start;font-family:var(--font-body);font-size:var(--fs-body-s);min-width:0}
.k-footer__col a{color:var(--text-body);text-decoration:none}
.k-footer__col a:hover{color:var(--krif-red)}
.k-footer__col a.k-footer__mail{color:var(--krif-red)}
.k-footer__col b{font-family:var(--font-body);font-size:var(--fs-caption);letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--text-muted);font-weight:var(--fw-regular)}
.k-footer__legal{border-top:1px solid var(--border-hairline)}
.k-footer__legal .k-wrap{padding-top:var(--sp-4);padding-bottom:var(--sp-4);display:flex;flex-wrap:wrap;gap:var(--sp-5);justify-content:space-between;font-family:var(--font-body);font-size:var(--fs-legal);color:var(--text-muted)}
.k-footer__legal a{color:var(--text-muted);text-decoration:none}
.k-footer__legal a:hover{color:var(--krif-red)}

/* ── reveal ── */
.k-reveal{opacity:1}
.js .k-reveal{opacity:0;transform:translateY(var(--reveal-rise));transition:opacity var(--dur-reveal) var(--ease-entrance),transform var(--dur-reveal) var(--ease-entrance)}
.js .k-reveal.is-in{opacity:1;transform:none}
@media (prefers-reduced-motion: reduce){.js .k-reveal{opacity:1;transform:none}}

/* ── misc ── */
.k-hr{border:0;border-top:1px solid var(--border-hairline);margin:0}
.k-mt-0{margin-top:0}
.k-prose > * + *{margin-top:var(--sp-5)}
.k-two{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--grid-gap)}
.k-note{font-family:var(--font-body);font-size:var(--fs-body-s);color:var(--text-muted);font-style:italic}

/* ── narrow screens: long uppercase labels must wrap rather than overflow ── */
@media (max-width:560px){
.k-btn{white-space:normal;text-align:center}
.k-hero__actions{gap:var(--sp-5);flex-direction:column;align-items:flex-start}
.k-hero__actions .k-btn{width:100%}
.k-hero__actions .k-btn--secondary{width:auto}
.k-news a{gap:var(--sp-3)}
.k-footer__inner{gap:var(--sp-7)}
}

/* ── action row inside a content column (not the hero) ── */
.k-actions{display:flex;flex-wrap:wrap;gap:var(--sp-6);align-items:center}
.k-col > .k-actions{margin-top:var(--sp-8)}
.k-col > * + .k-actions{margin-top:var(--sp-8)}
@media (max-width:560px){
.k-actions{flex-direction:column;align-items:flex-start;gap:var(--sp-5)}
.k-actions .k-btn{width:100%}
.k-actions .k-btn--secondary{width:auto}
}

/* ── forms v2: sectioned questionnaires ── */
.k-form__legend{font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--fs-caption);letter-spacing:var(--ls-caps);text-transform:uppercase;color:var(--krif-red);margin:0}
.k-form__group{display:grid;gap:var(--field-gap)}
.k-form > * + *{margin-top:var(--sp-8)}
.k-form__legend + .k-form__group{margin-top:var(--sp-6)}
.k-field--stack{flex-direction:column;align-items:stretch;gap:var(--sp-3)}
.k-field--stack > span:first-child{white-space:normal}
.k-field select{flex:1;min-width:0;border:none;outline:none;background:transparent;padding:4px 0 8px;font-family:var(--font-body);font-size:var(--fs-body);color:var(--text-body-strong);appearance:none;cursor:pointer}
.k-field input[type=file]{flex:1;min-width:0;border:none;outline:none;background:transparent;padding:6px 0 8px;font-family:var(--font-body);font-size:var(--fs-body-s);color:var(--text-body)}
.k-field input[type=file]::file-selector-button{font-family:var(--font-display);font-size:var(--fs-caption);font-weight:var(--fw-bold);letter-spacing:var(--ls-button);text-transform:uppercase;border:none;border-radius:0;background:var(--krif-grey-100);color:var(--krif-grey-800);padding:8px 16px;margin-right:var(--sp-4);cursor:pointer;transition:var(--transition-colour)}
.k-field input[type=file]::file-selector-button:hover{background:var(--krif-grey-200)}
.k-field input::placeholder,.k-field textarea::placeholder{color:var(--krif-grey-500)}
.k-form__foot{display:grid;gap:var(--sp-5);justify-items:start}
.k-form__foot .k-legal{margin:0}

/* ── two-track offer cards ── */
.k-track{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--grid-gap)}
.k-track__item{display:flex;flex-direction:column;gap:var(--sp-5);padding:var(--card-pad);box-shadow:var(--shadow-card);background:var(--surface-card);transition:var(--transition-colour)}
.k-track__item:hover{box-shadow:var(--shadow-card-hover)}
.k-track__price{font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--fs-h2);color:var(--krif-red);letter-spacing:var(--ls-display)}
.k-track__item h3{font-size:var(--fs-h3)}
.k-track__item p{margin:0;font-size:var(--fs-body-s)}
.k-track__item .k-btn{margin-top:auto;align-self:flex-start}

/* ── map legend ── */
.k-map figcaption{margin-top:var(--sp-5)}
.k-legend{display:flex;flex-wrap:wrap;gap:var(--sp-5);margin-top:var(--sp-5);font-family:var(--font-body);font-size:var(--fs-caption);color:var(--text-body)}
.k-legend span{display:inline-flex;align-items:center;gap:var(--sp-2)}
.k-legend i{width:14px;height:14px;display:inline-block;flex:0 0 auto}

/* ============================================================================
   Chinese version — typographic and layout adjustments.
   Scoped to html[lang="zh-Hans"] so the English and Russian pages are untouched.
   ========================================================================== */
html[lang="zh-Hans"]{
  /* Density: a Chinese business reader reads large white expanses as unfinished,
     not as premium. Sections breathe less and carry more per screen. */
  --section-py:80px;
  --sp-10:80px;
  --sp-11:64px;
  --sp-9:56px;
  /* CJK needs a larger optical size and no negative tracking. */
  --fs-body:18px;
  --fs-body-s:16px;
  --fs-lead:20px;
  --fs-display-1:clamp(32px, 3.4vw, 58px);
  --fs-display-2:clamp(28px, 3vw, 46px);
  --fs-h1:32px;
  --fs-h2:27px;
  --fs-h3:21px;
  --ls-display:0;
  --ls-heading:0;
  --ls-caps:0.04em;
  --ls-button:0.02em;
  /* Warm the canvas: unbroken cold white is not a neutral in this context. */
  --surface-page:#FDFCFC;
  --surface-alt-soft:#FAF7F6;
  --surface-alt:#F4F1F1;
}

/* Unbounded carries no CJK glyphs, so headings fall back to Noto Sans SC —
   compensate with weight so they still read as display type. */
html[lang="zh-Hans"] h1,
html[lang="zh-Hans"] h2,
html[lang="zh-Hans"] h3,
html[lang="zh-Hans"] .k-hero h1,
html[lang="zh-Hans"] .k-news__title,
html[lang="zh-Hans"] .k-stat__value,
html[lang="zh-Hans"] .k-track__price,
html[lang="zh-Hans"] .k-logo .k-word{font-family:var(--font-cn);font-weight:900}
html[lang="zh-Hans"] .k-logo .k-word{font-family:var(--font-display);font-weight:var(--fw-bold)}
html[lang="zh-Hans"] .k-btn,
html[lang="zh-Hans"] .k-cta-link,
html[lang="zh-Hans"] .k-menu-toggle{font-family:var(--font-cn);font-weight:700;text-transform:none}
html[lang="zh-Hans"] .k-rail__index,
html[lang="zh-Hans"] .k-card__num{font-family:var(--font-cn);font-weight:900}
html[lang="zh-Hans"] .k-eyebrow span,
html[lang="zh-Hans"] .k-rail__label,
html[lang="zh-Hans"] .k-stat__label,
html[lang="zh-Hans"] .k-hero__meta{text-transform:none}

/* Gold reads as prosperity here, so it does more than underline a button:
   it marks the section rails and the footer edge. */
html[lang="zh-Hans"] .k-section{border-top-color:var(--krif-gold-200)}
html[lang="zh-Hans"] .k-footer{border-top:var(--bw-rule-accent) solid var(--krif-red)}
html[lang="zh-Hans"] .k-card,
html[lang="zh-Hans"] .k-track__item{box-shadow:0 0 0 1px var(--krif-gold-200)}
html[lang="zh-Hans"] .k-card:hover,
html[lang="zh-Hans"] .k-track__item:hover{box-shadow:0 0 0 1px var(--krif-red)}
html[lang="zh-Hans"] .k-callout{box-shadow:0 0 0 1px var(--krif-gold-200)}
html[lang="zh-Hans"] .k-eyebrow::before{background:var(--krif-gold);width:56px}

/* Figures are the argument: give the stat row a marked band of its own. */
html[lang="zh-Hans"] .k-stats{row-gap:var(--sp-7)}
html[lang="zh-Hans"] .k-stat__label{color:var(--krif-grey-800);line-height:1.8}

/* CJK wraps anywhere, so long labels never need hyphen-free nowrap hacks. */
html[lang="zh-Hans"] .k-nav a,
html[lang="zh-Hans"] .k-cta-link,
html[lang="zh-Hans"] .k-btn{white-space:normal}
html[lang="zh-Hans"] .k-list li{line-height:var(--lh-body-cn)}

/* ============================================================================
   Content flow — declared LAST on purpose. Component resets (.k-list{margin:0},
   .k-table, .k-form …) carry the same specificity as `.k-col > * + *`, so if the
   flow rules sit earlier in the file the reset wins and blocks collide with the
   heading above them. Keep this block at the bottom of the stylesheet.
   ========================================================================== */
.k-col > * + *{margin-top:var(--sp-6)}
.k-col > h2 + *,.k-col > h3 + *{margin-top:var(--sp-5)}
.k-col > * + .k-stats,.k-col > * + .k-cards,.k-col > * + .k-track,
.k-col > * + .k-steps,.k-col > * + .k-partners,.k-col > * + .k-table-wrap,
.k-col > * + .k-figure,.k-col > * + .k-form{margin-top:var(--sp-7)}
.k-col > * + .k-actions{margin-top:var(--sp-8)}
.k-col > .k-note{margin-top:var(--sp-5)}


/* ── price table: the figure column shrinks to its content and never wraps ── */
.k-table th:not(:first-child),.k-table td:not(:first-child){white-space:nowrap;width:1%}
.k-table th:first-child,.k-table td:first-child{width:auto}
@media (max-width:560px){.k-table th:not(:first-child),.k-table td:not(:first-child){white-space:normal}}
