/* ISLEON Typography 1.0.0 | Load noto-sans-sc.css before this file. */
@font-face {
  font-family: "Geist";
  src: url("./fonts/geist-variable.woff2") format("woff2");
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
}
@font-face {
  font-family: "Geist";
  src: url("./fonts/geist-italic-variable.woff2") format("woff2");
  font-style: italic;
  font-weight: 100 900;
  font-display: swap;
}
@font-face {
  font-family: "Geist Mono";
  src: url("./fonts/geist-mono-variable.woff2") format("woff2");
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
}
@font-face {
  font-family: "Geist Mono";
  src: url("./fonts/geist-mono-italic-variable.woff2") format("woff2");
  font-style: italic;
  font-weight: 100 900;
  font-display: swap;
}
:root {
  --font-latin: "Geist", Arial, sans-serif;
  --font-cjk: "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
  --font-mono: "Geist Mono", ui-monospace, SFMono-Regular, Consolas, monospace;
  /* Switch only after the brand font's Web license has been verified. */
  --font-brand: var(--font-latin);
  --font-body: var(--font-latin);
  --weight-body: 400;
  --weight-ui: 500;
  --weight-heading: 600;
  --weight-strong: 700;
  /* Fluid between 360px and 1280px at the default 16px root size. */
  --text-display-xl: clamp(3rem, calc(1.826087rem + 5.217391vw), 6rem);
  --text-display-l: clamp(2.5rem, calc(1.717391rem + 3.478261vw), 4.5rem);
  --text-h1: clamp(2.25rem, calc(1.760870rem + 2.173913vw), 3.5rem);
  --text-h2: clamp(1.875rem, calc(1.630435rem + 1.086957vw), 2.5rem);
  --text-h3: clamp(1.5rem, calc(1.304348rem + .869565vw), 2rem);
  --text-h4: clamp(1.25rem, calc(1.152174rem + .434783vw), 1.5rem);
  --text-h5: clamp(1.125rem, calc(1.076087rem + .217391vw), 1.25rem);
  --text-body-lg: clamp(1.0625rem, calc(1.038043rem + .108696vw), 1.125rem);
  --text-body: 1rem;
  --text-small: .875rem;
  --text-caption: .75rem;
  --text-ui: .875rem;
  --leading-body: 1.7;
  --leading-small: 1.6;
  --leading-caption: 1.5;
  --leading-ui: 1.4;
  --tracking-display: -.02em;
  --tracking-heading: -.015em;
  --tracking-label: .06em;
  --measure-en: 68ch;
  --measure-zh: 36em;
}
html { font-size: 100%; }
body {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--text-body);
  font-weight: var(--weight-body);
  line-height: var(--leading-body);
  letter-spacing: 0;
  font-synthesis: none;
}
body:lang(zh) { --font-body: var(--font-cjk); }
/* Mark explicitly switched language runs/sections with this class. */
.lang-run:lang(en) { font-family: var(--font-latin); }
.lang-run:lang(zh) { font-family: var(--font-cjk); }
h1, h2, h3, h4, h5, h6, .heading {
  margin-block: 0 0.6em;
  font-weight: var(--weight-heading);
  letter-spacing: var(--tracking-heading);
  overflow-wrap: anywhere;
}
h1, .type-h1 { font-size: var(--text-h1); line-height: 1.15; font-weight: 700; }
h2, .type-h2 { font-size: var(--text-h2); line-height: 1.2; }
h3, .type-h3 { font-size: var(--text-h3); line-height: 1.25; }
h4, .type-h4 { font-size: var(--text-h4); line-height: 1.3; }
h5, h6, .type-h5 { font-size: var(--text-h5); line-height: 1.4; }
:is(h1,h2,h3,h4,h5,h6,.heading):lang(zh) {
  letter-spacing: 0;
  line-height: 1.4;
}
.brand-display {
  font-family: var(--font-brand);
  font-size: var(--text-display-xl);
  font-weight: 700;
  line-height: 1.05;
  letter-spacing: var(--tracking-display);
  overflow-wrap: anywhere;
}
.brand-display--l { font-size: var(--text-display-l); line-height: 1.1; }
.type-body-lg { font-size: var(--text-body-lg); line-height: 1.65; }
.type-body { font-size: var(--text-body); line-height: var(--leading-body); }
.type-small { font-size: var(--text-small); line-height: var(--leading-small); }
.type-caption { font-size: var(--text-caption); line-height: var(--leading-caption); }
p { margin-block: 0 1em; }
strong, b { font-weight: 700; }
em:lang(zh) { font-style: normal; font-weight: 600; }
.prose { max-inline-size: var(--measure-en); overflow-wrap: anywhere; }
.prose:lang(zh) { max-inline-size: var(--measure-zh); line-break: strict; }
nav, button, input, select, textarea { font-family: inherit; }
.nav-link, button, .button {
  font-size: var(--text-ui);
  font-weight: var(--weight-ui);
  line-height: var(--leading-ui);
  letter-spacing: 0;
}
.nav-link:lang(en) { letter-spacing: .01em; }
/* Input stays 16px at default root size, including on mobile. */
input, select, textarea { font-size: var(--text-body); line-height: 1.5; }
button, .button { min-block-size: 2.75rem; padding: .75rem 1.25rem; }
.label-caps:lang(en) { text-transform: uppercase; letter-spacing: var(--tracking-label); }
code, pre, kbd, samp, .mono {
  font-family: var(--font-mono);
  font-size: .9375em;
  font-variant-ligatures: none;
}
pre { max-inline-size: 100%; overflow: auto; }
.numeric { font-variant-numeric: tabular-nums; }
