
:root {
  --ground:#141212;
  --surface:#1d1d1d;
  --surface-2:#2a2a2a;
  --line:#464646;
  --ink-soft:#b7b7b7;
  --ink:#e8e8e8;
  --accent:#2c995d;
  --accent-ink:#ffffff;
  --hairline:#b08d57;

  --fiji-6ef:'Newsreader', 'Newsreader Fallback', Georgia, "Times New Roman", serif;
  --fiji-66a:"Source Sans 3", 'Source Sans 3 Fallback', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  --fiji-686:'JetBrains Mono', 'JetBrains Mono Fallback', ui-monospace, "Cascadia Code", 'Source Code Pro', monospace;

  --ease-ledger:cubic-bezier(0.16, 1, 0.3, 1);
  --ease-out:cubic-bezier(0, 0, 0.2, 1);
  --duration-fast:140ms;
  --duration-mid:220ms;
  --duration-slow:380ms;

  --space-3xs:clamp(0.25rem, 0.22rem + 0.15vw, 0.375rem);

  --space-2xs:clamp(0.5rem, 0.44rem + 0.29vw, 0.75rem);
  --space-xs:clamp(0.75rem, 0.66rem + 0.44vw, 1.125rem);
  --space-s:clamp(1rem, 0.88rem + 0.59vw, 1.5rem);
  --space-m:clamp(1.5rem, 1.32rem + 0.88vw, 2.25rem);
  --space-l:clamp(2rem, 1.76rem + 1.18vw, 3rem);
  --space-xl:clamp(3rem, 2.65rem + 1.76vw, 4.5rem);
  --space-2xl:clamp(4rem, 3.53rem + 2.35vw, 6rem);
  --space-3xl:clamp(6rem, 5.29rem + 3.53vw, 9rem);

  --step--2:clamp(0.6944rem, 0.67rem + 0.12vw, 0.8rem);
  --step--1:clamp(0.8333rem, 0.8rem + 0.18vw, 0.96rem);
  --fiji-5e7:clamp(1rem, 0.95rem + 0.25vw, 1.15rem);
  --fiji-8a5:clamp(1.2rem, 1.12rem + 0.4vw, 1.44rem);
  --fiji-d44:clamp(1.44rem, 1.32rem + 0.6vw, 1.8rem);
  --fiji-774:clamp(1.728rem, 1.55rem + 0.89vw, 2.25rem);
  --fiji-548:clamp(2.074rem, 1.82rem + 1.27vw, 2.813rem);
  --fiji-148:clamp(2.488rem, 2.13rem + 1.79vw, 3.516rem);
  --fiji-0ee:clamp(2.986rem, 2.49rem + 2.48vw, 4.395rem);

  --measure-narrow:48ch;
  --measure-prose:65ch;
  --measure-wide:78ch;

  --container-max:1320px;
  --container-gutter:clamp(0.75rem, 0.5rem + 1.5vw, 3rem);

  --dock-height:64px;
  --radius-none:0px;
  --radius-subtle:2px;
  --control-h:48px;
  --control-h-sm:40px;
}

*, *::before, *::after {
  box-sizing:border-box;

  margin:0;
  padding:0;
}

html {
  font-size:100%;
  line-height:1.55;
  -webkit-text-size-adjust:100%;
  tab-size:4;
  background-color:var(--ground);
  color:var(--ink);
  font-family:var(--fiji-66a);
  color-scheme:dark;
  scroll-behavior:smooth;
}

body {
  min-height:100vh;
  background-color:var(--ground);
  color:var(--ink);
  font-family:var(--fiji-66a);
  font-size:var(--fiji-5e7);
  line-height:1.6;
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  padding-bottom:calc(var(--dock-height) + env(safe-area-inset-bottom, 0px) + 1.5rem);
  overflow-x:hidden;
  position:relative;
}

@media (min-width: 768px) {
  body {
    padding-bottom:0;
  }
}

img, picture, svg, video {
  display:block;
  max-width:100%;
  height:auto;
}

input, button, textarea, select {
  font:inherit;
  color:inherit;
}

h1, h2, h3, h4, h5, h6 {
  font-family:var(--fiji-6ef);

  color:var(--ink);
  font-weight:500;
  line-height:1.15;
  text-wrap:balance;
  letter-spacing:-0.015em;
}

h1 {
  font-size:var(--fiji-148);
  font-weight:500;
  line-height:1.1;
  letter-spacing:-0.025em;
  margin-bottom:var(--space-s);
}

h2 {
  font-size:var(--fiji-548);
  line-height:1.18;
  letter-spacing:-0.02em;
  margin-bottom:var(--space-xs);
}

h3 {
  font-size:var(--fiji-d44);
  line-height:1.25;
  margin-bottom:var(--space-2xs);
}

h4 {
  font-size:var(--fiji-8a5);
  line-height:1.3;
}

p {
  max-width:var(--measure-prose);
  color:var(--ink-soft);
  margin-bottom:var(--space-s);
  font-weight:400;
}

p:last-child {
  margin-bottom:0;
}

p.lede {
  font-size:var(--fiji-8a5);
  line-height:1.45;
  color:var(--ink);
  max-width:var(--measure-prose);
  font-weight:400;
}

strong, b {
  font-weight:600;
  color:var(--ink);
}

em, i {
  font-style:italic;
}

small {
  font-size:var(--step--1);
}

code, kbd, samp, pre {
  font-family:var(--fiji-686);
  font-size:var(--step--1);
}

a {
  color:var(--ink);
  text-decoration:underline;
  text-decoration-color:var(--line);
  text-underline-offset:0.22em;
  transition:color var(--duration-fast) var(--ease-out), text-decoration-color var(--duration-fast) var(--ease-out);
}

a:hover {
  color:var(--accent-ink);
  text-decoration-color:var(--accent);
}

a:focus-visible {
  outline:2px solid var(--accent);
  outline-offset:4px;
}

ul, ol {
  padding-left:var(--space-m);
  margin-bottom:var(--space-s);
  color:var(--ink-soft);
  max-width:var(--measure-prose);
}

li {
  margin-bottom:var(--space-2xs);
}

li:last-child {
  margin-bottom:0;
}

hr {
  border:0;
  height:1px;
  background-color:var(--line);
  margin:var(--space-l) 0;
}

blockquote {
  border-left:2px solid var(--hairline);
  padding-left:var(--space-m);
  margin:var(--space-m) 0;
  font-family:var(--fiji-6ef);
  font-style:italic;
  font-size:var(--fiji-8a5);
  color:var(--ink);
  max-width:var(--measure-wide);
}

table {
  width:100%;
  border-collapse:collapse;
  font-variant-numeric:tabular-nums lining-nums;
  margin-bottom:var(--space-m);
}

th, td {
  text-align:left;
  padding:var(--space-xs) var(--space-s);
  border-bottom:1px solid var(--line);
}

th {
  font-family:var(--fiji-686);
  font-size:var(--step--1);
  font-weight:500;
  text-transform:uppercase;
  letter-spacing:0.08em;
  color:var(--ink-soft);
}

td {
  color:var(--ink);
  font-size:var(--fiji-5e7);
}

.table-wrap {
  width:100%;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
  margin-bottom:var(--space-m);
  border:1px solid var(--line);
}

.shell-container {
  width:100%;
  max-width:var(--container-max);
  margin-left:auto;
  margin-right:auto;
  padding-left:var(--container-gutter);
  padding-right:var(--container-gutter);
}

.grid {
  display:grid;
  gap:var(--space-m);
}

.grid-cols-2 {
  display:grid;
  grid-template-columns:1fr;
  gap:var(--space-l);
}

@media (min-width: 768px) {
  .grid-cols-2 {
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }
}

.grid-cols-3 {
  display:grid;
  grid-template-columns:1fr;
  gap:var(--space-m);
}

@media (min-width: 640px) {
  .grid-cols-3 {
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 1024px) {
  .grid-cols-3 {
    grid-template-columns:repeat(3, minmax(0, 1fr));
  }
}

.flex {
  display:flex;
}

.flex-col {
  display:flex;
  flex-direction:column;
}

.items-center {
  align-items:center;
}

.justify-between {
  justify-content:space-between;
}

.gap-xs { gap: var(--space-xs); }
.gap-s { gap: var(--space-s); }
.gap-m { gap: var(--space-m); }
.gap-l { gap: var(--space-l); }

.tabular {
  font-family:var(--fiji-686);
  font-variant-numeric:tabular-nums lining-nums;
  letter-spacing:-0.02em;
  white-space:normal;
  overflow-wrap:break-word;
}

.ledger-rule {
  border-bottom:1px solid var(--line);
  position:relative;
}

.ledger-rule::after {
  content:'';
  position:absolute;
  bottom:-1px;
  left:0;
  width:3rem;
  height:1px;
  background-color:var(--hairline);
}

.ledger-box {
  background-color:var(--surface);
  border:1px solid var(--line);
  position:relative;
  padding:var(--space-m);
}

.ledger-box::before {
  content:'';
  position:absolute;
  top:0;
  left:0;
  right:0;
  height:1px;
  background:linear-gradient(90deg, var(--hairline) 0%, transparent 100%);
}

.sr-only {
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0, 0, 0, 0);
  white-space:nowrap;
  border:0;
}

.icon {
  width:1.25rem;
  height:1.25rem;
  display:inline-block;
  vertical-align:middle;
  fill:currentColor;
  flex-shrink:0;
}

.icon-s {
  width:1rem;
  height:1rem;
}

.icon-m {
  width:1.35rem;
  height:1.35rem;
}

.icon-l {
  width:1.75rem;
  height:1.75rem;
}

.skip-link {
  position:absolute;
  top:-100px;
  left:1rem;
  z-index:9999;
  background-color:var(--accent);
  color:var(--accent-ink);
  padding:0.75rem 1.25rem;
  font-weight:600;
  font-size:var(--fiji-5e7);
  text-decoration:none;
  border:1px solid var(--hairline);
  transition:top var(--duration-fast) var(--ease-out);
}

.skip-link:focus {
  top:1rem;
  outline:2px solid var(--accent-ink);
  outline-offset:2px;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration:0.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:0.01ms !important;
    scroll-behavior:auto !important;
  }
}
