/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
/*!
 * Justified gallery style
 */
@layer properties;
@layer theme, base, components, utilities;
@layer theme {
  :root, :host {
    --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue",
      "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
      "Segoe UI Symbol", "Noto Color Emoji";
    --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
      "Courier New", monospace;
    --color-red-200: oklch(88.5% 0.062 18.334);
    --color-red-500: oklch(63.7% 0.237 25.331);
    --color-yellow-200: oklch(94.5% 0.129 101.54);
    --color-green-200: oklch(92.5% 0.084 155.995);
    --color-blue-200: oklch(88.2% 0.059 254.128);
    --color-pink-200: oklch(89.9% 0.061 343.231);
    --color-gray-200: oklch(92.8% 0.006 264.531);
    --color-black: #000;
    --color-white: #fff;
    --spacing: 0.25rem;
    --container-3xl: 48rem;
    --text-xs: 0.75rem;
    --text-xs--line-height: calc(1 / 0.75);
    --text-sm: 0.875rem;
    --text-sm--line-height: calc(1.25 / 0.875);
    --text-base: 18px;
    --text-base--line-height: calc(1.5 / 1);
    --text-lg: 1.125rem;
    --text-lg--line-height: calc(1.75 / 1.125);
    --text-xl: 1.25rem;
    --text-xl--line-height: calc(1.75 / 1.25);
    --text-2xl: 1.5rem;
    --text-2xl--line-height: calc(2 / 1.5);
    --font-weight-normal: 400;
    --font-weight-semibold: 600;
    --font-weight-bold: 700;
    --leading-tight: 1.25;
    --leading-relaxed: 1.625;
    --radius-sm: 0.25rem;
    --radius-lg: 0.5rem;
    --radius-xl: 0.75rem;
    --radius-2xl: 1rem;
    --ease-out: cubic-bezier(0, 0, 0.2, 1);
    --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
    --default-transition-duration: 150ms;
    --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    --default-font-family: var(--font-sans);
    --default-mono-font-family: var(--font-mono);
    --color-primary: #4242fa;
    --color-body: #ffffff;
    --color-border: #d9d9e0;
    --color-light: #f9f9fb;
    --color-dark: #0a0c10;
    --color-text: #0a0c10;
    --color-text-dark: #0a0c10;
    --color-text-light: #60646c;
    --color-darkmode-primary: #4242fa;
    --color-darkmode-body: #0d0f12;
    --color-darkmode-border: #363a3f;
    --color-darkmode-light: #18191b;
    --color-darkmode-text: #e3e6e8;
    --color-darkmode-text-dark: #e3e6e8;
    --color-darkmode-text-light: #b0b4ba;
    --font-primary: Figtree, sans-serif;
    --font-secondary: Figtree, sans-serif;
    --text-base-sm: 16px;
    --text-h6: 1.35rem;
    --text-h5: 1.62rem;
    --text-h4: 1.944rem;
    --text-h3: 2.333rem;
    --text-h3-sm: 2.1rem;
    --text-h2: 2.799rem;
    --text-h2-sm: 2.519rem;
    --text-h1: 3.359rem;
    --text-h1-sm: 3.023rem;
  }
}
@layer base {
  *, ::after, ::before, ::backdrop, ::file-selector-button {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
    border: 0 solid;
  }
  html, :host {
    line-height: 1.5;
    -webkit-text-size-adjust: 100%;
    tab-size: 4;
    font-family: var(--default-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");
    font-feature-settings: var(--default-font-feature-settings, normal);
    font-variation-settings: var(--default-font-variation-settings, normal);
    -webkit-tap-highlight-color: transparent;
  }
  hr {
    height: 0;
    color: inherit;
    border-top-width: 1px;
  }
  abbr:where([title]) {
    -webkit-text-decoration: underline dotted;
    text-decoration: underline dotted;
  }
  h1, h2, h3, h4, h5, h6 {
    font-size: inherit;
    font-weight: inherit;
  }
  a {
    color: inherit;
    -webkit-text-decoration: inherit;
    text-decoration: inherit;
  }
  b, strong {
    font-weight: bolder;
  }
  code, kbd, samp, pre {
    font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);
    font-feature-settings: var(--default-mono-font-feature-settings, normal);
    font-variation-settings: var(--default-mono-font-variation-settings, normal);
    font-size: 1em;
  }
  small {
    font-size: 80%;
  }
  sub, sup {
    font-size: 75%;
    line-height: 0;
    position: relative;
    vertical-align: baseline;
  }
  sub {
    bottom: -0.25em;
  }
  sup {
    top: -0.5em;
  }
  table {
    text-indent: 0;
    border-color: inherit;
    border-collapse: collapse;
  }
  :-moz-focusring:where(:not(iframe)) {
    outline: auto;
  }
  progress {
    vertical-align: baseline;
  }
  summary {
    display: list-item;
  }
  ol, ul, menu {
    list-style: none;
  }
  img, svg, video, canvas, audio, iframe, embed, object {
    display: block;
    vertical-align: middle;
  }
  img, video {
    max-width: 100%;
    height: auto;
  }
  button, input, select, optgroup, textarea, ::file-selector-button {
    font: inherit;
    font-feature-settings: inherit;
    font-variation-settings: inherit;
    letter-spacing: inherit;
    color: inherit;
    border-radius: 0;
    background-color: transparent;
    opacity: 1;
  }
  :where(select:is([multiple], [size])) optgroup {
    font-weight: bolder;
  }
  :where(select:is([multiple], [size])) optgroup option {
    padding-inline-start: 20px;
  }
  ::file-selector-button {
    margin-inline-end: 4px;
  }
  ::placeholder {
    opacity: 1;
  }
  @supports (not (-webkit-appearance: -apple-pay-button))  or (contain-intrinsic-size: 1px) {
    ::placeholder {
      color: currentcolor;
      @supports (color: color-mix(in lab, red, red)) {
        color: color-mix(in oklab, currentcolor 50%, transparent);
      }
    }
  }
  textarea {
    resize: vertical;
  }
  ::-webkit-search-decoration {
    -webkit-appearance: none;
  }
  ::-webkit-date-and-time-value {
    min-height: 1lh;
    text-align: inherit;
  }
  ::-webkit-datetime-edit {
    display: inline-flex;
  }
  ::-webkit-datetime-edit-fields-wrapper {
    padding: 0;
  }
  ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {
    padding-block: 0;
  }
  ::-webkit-calendar-picker-indicator {
    line-height: 1;
  }
  :-moz-ui-invalid {
    box-shadow: none;
  }
  button, input:where([type="button"], [type="reset"], [type="submit"]), ::file-selector-button {
    appearance: button;
  }
  ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {
    height: auto;
  }
  [hidden]:where(:not([hidden="until-found"])) {
    display: none !important;
  }
}
@layer utilities {
  .collapse {
    visibility: collapse;
  }
  .invisible {
    visibility: hidden;
  }
  .visible {
    visibility: visible;
  }
  .sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
    border-width: 0;
  }
  .absolute {
    position: absolute;
  }
  .fixed {
    position: fixed;
  }
  .relative {
    position: relative;
  }
  .static {
    position: static;
  }
  .sticky {
    position: sticky;
  }
  .top-0 {
    top: 0px;
  }
  .top-1\.5 {
    top: calc(var(--spacing) * 1.5);
  }
  .top-1\/2 {
    top: calc(1 / 2 * 100%);
  }
  .top-5 {
    top: calc(var(--spacing) * 5);
  }
  .left-0 {
    left: 0px;
  }
  .left-1\/2 {
    left: calc(1 / 2 * 100%);
  }
  .isolate {
    isolation: isolate;
  }
  .z-10 {
    z-index: 10;
  }
  .z-30 {
    z-index: 30;
  }
  .z-50 {
    z-index: 50;
  }
  .order-0 {
    order: 0;
  }
  .order-1 {
    order: 1;
  }
  .order-3 {
    order: 3;
  }
  .order-first {
    order: -1;
    order: -9999;
  }
  .order-last {
    order: 13;
    order: 9999;
  }
  .col-6 {
    grid-column: 6;
  }
  .col-12 {
    grid-column: 12;
  }
  .col-auto {
    grid-column: auto;
  }
  .container {
    width: 100%;
    @media (width >= 40rem) {
      max-width: 40rem;
    }
    @media (width >= 48rem) {
      max-width: 48rem;
    }
    @media (width >= 64rem) {
      max-width: 64rem;
    }
    @media (width >= 80rem) {
      max-width: 80rem;
    }
    @media (width >= 96rem) {
      max-width: 96rem;
    }
  }
  .m-1 {
    margin: var(--spacing);
  }
  .m-3 {
    margin: calc(var(--spacing) * 3);
  }
  .row {
    --bs-gutter-x: 1.5rem;
    --bs-gutter-y: 0;
    display: flex;
    flex-wrap: wrap;
    margin-top: calc(var(--bs-gutter-y) * -1);
    margin-inline: calc(var(--bs-gutter-x) / -2);
     > * {
      box-sizing: border-box;
      flex-shrink: 0;
      width: 100%;
      max-width: 100%;
      padding-inline: calc(var(--bs-gutter-x) / 2);
      margin-top: var(--bs-gutter-y);
    }
  }
  .container {
    max-width: var(--container-max-width);
    width: 100%;
    margin-inline: auto;
    padding-inline: var(--bs-gutter-x, calc(1.5rem / 2));
  }
  .mx-2 {
    margin-inline: calc(var(--spacing) * 2);
  }
  .mx-auto {
    margin-inline: auto;
  }
  .my-6 {
    margin-block: calc(var(--spacing) * 6);
  }
  .ms-1 {
    margin-inline-start: var(--spacing);
  }
  .prose {
    color: var(--tw-prose-body);
    max-width: 65ch;
    :where(p):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 1.25em;
      margin-bottom: 1.25em;
    }
    :where([class~="lead"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-lead);
      font-size: 1.25em;
      line-height: 1.6;
      margin-top: 1.2em;
      margin-bottom: 1.2em;
    }
    :where(a):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-links);
      text-decoration: underline;
      font-weight: 500;
    }
    :where(strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-bold);
      font-weight: 600;
    }
    :where(a strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
    }
    :where(blockquote strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
    }
    :where(thead th strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
    }
    :where(ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: decimal;
      margin-top: 1.25em;
      margin-bottom: 1.25em;
      padding-inline-start: 1.625em;
    }
    :where(ol[type="A"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: upper-alpha;
    }
    :where(ol[type="a"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: lower-alpha;
    }
    :where(ol[type="A" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: upper-alpha;
    }
    :where(ol[type="a" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: lower-alpha;
    }
    :where(ol[type="I"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: upper-roman;
    }
    :where(ol[type="i"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: lower-roman;
    }
    :where(ol[type="I" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: upper-roman;
    }
    :where(ol[type="i" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: lower-roman;
    }
    :where(ol[type="1"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: decimal;
    }
    :where(ul):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: disc;
      margin-top: 1.25em;
      margin-bottom: 1.25em;
      padding-inline-start: 1.625em;
    }
    :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *))::marker {
      font-weight: 400;
      color: var(--tw-prose-counters);
    }
    :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *))::marker {
      color: var(--tw-prose-bullets);
    }
    :where(dt):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-headings);
      font-weight: 600;
      margin-top: 1.25em;
    }
    :where(hr):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      border-color: var(--tw-prose-hr);
      border-top-width: 1px;
      margin-top: 3em;
      margin-bottom: 3em;
    }
    :where(blockquote):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      font-weight: 500;
      font-style: italic;
      color: var(--tw-prose-quotes);
      border-inline-start-width: 0.25rem;
      border-inline-start-color: var(--tw-prose-quote-borders);
      quotes: "\201C""\201D""\2018""\2019";
      margin-top: 1.6em;
      margin-bottom: 1.6em;
      padding-inline-start: 1em;
    }
    :where(blockquote p:first-of-type):not(:where([class~="not-prose"], [class~="not-prose"] *))::before {
      content: open-quote;
    }
    :where(blockquote p:last-of-type):not(:where([class~="not-prose"], [class~="not-prose"] *))::after {
      content: close-quote;
    }
    :where(h1):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-headings);
      font-weight: 800;
      font-size: 2.25em;
      margin-top: 0;
      margin-bottom: 0.8888889em;
      line-height: 1.1111111;
    }
    :where(h1 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      font-weight: 900;
      color: inherit;
    }
    :where(h2):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-headings);
      font-weight: 700;
      font-size: 1.5em;
      margin-top: 2em;
      margin-bottom: 1em;
      line-height: 1.3333333;
    }
    :where(h2 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      font-weight: 800;
      color: inherit;
    }
    :where(h3):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-headings);
      font-weight: 600;
      font-size: 1.25em;
      margin-top: 1.6em;
      margin-bottom: 0.6em;
      line-height: 1.6;
    }
    :where(h3 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      font-weight: 700;
      color: inherit;
    }
    :where(h4):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-headings);
      font-weight: 600;
      margin-top: 1.5em;
      margin-bottom: 0.5em;
      line-height: 1.5;
    }
    :where(h4 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      font-weight: 700;
      color: inherit;
    }
    :where(img):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 2em;
      margin-bottom: 2em;
    }
    :where(picture):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      display: block;
      margin-top: 2em;
      margin-bottom: 2em;
    }
    :where(video):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 2em;
      margin-bottom: 2em;
    }
    :where(kbd):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      font-weight: 500;
      font-family: inherit;
      color: var(--tw-prose-kbd);
      box-shadow: 0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows);
      font-size: 0.875em;
      border-radius: 0.3125rem;
      padding-top: 0.1875em;
      padding-inline-end: 0.375em;
      padding-bottom: 0.1875em;
      padding-inline-start: 0.375em;
    }
    :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-code);
      font-weight: 600;
      font-size: 0.875em;
    }
    :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *))::before {
      content: "`";
    }
    :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *))::after {
      content: "`";
    }
    :where(a code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
    }
    :where(h1 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
    }
    :where(h2 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
      font-size: 0.875em;
    }
    :where(h3 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
      font-size: 0.9em;
    }
    :where(h4 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
    }
    :where(blockquote code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
    }
    :where(thead th code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
    }
    :where(pre):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-pre-code);
      background-color: var(--tw-prose-pre-bg);
      overflow-x: auto;
      font-weight: 400;
      font-size: 0.875em;
      line-height: 1.7142857;
      margin-top: 1.7142857em;
      margin-bottom: 1.7142857em;
      border-radius: 0.375rem;
      padding-top: 0.8571429em;
      padding-inline-end: 1.1428571em;
      padding-bottom: 0.8571429em;
      padding-inline-start: 1.1428571em;
    }
    :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      background-color: transparent;
      border-width: 0;
      border-radius: 0;
      padding: 0;
      font-weight: inherit;
      color: inherit;
      font-size: inherit;
      font-family: inherit;
      line-height: inherit;
    }
    :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *))::before {
      content: none;
    }
    :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *))::after {
      content: none;
    }
    :where(table):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      width: 100%;
      table-layout: auto;
      margin-top: 2em;
      margin-bottom: 2em;
      font-size: 0.875em;
      line-height: 1.7142857;
    }
    :where(thead):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      border-bottom-width: 1px;
      border-bottom-color: var(--tw-prose-th-borders);
    }
    :where(thead th):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-headings);
      font-weight: 600;
      vertical-align: bottom;
      padding-inline-end: 0.5714286em;
      padding-bottom: 0.5714286em;
      padding-inline-start: 0.5714286em;
    }
    :where(tbody tr):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      border-bottom-width: 1px;
      border-bottom-color: var(--tw-prose-td-borders);
    }
    :where(tbody tr:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      border-bottom-width: 0;
    }
    :where(tbody td):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      vertical-align: baseline;
    }
    :where(tfoot):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      border-top-width: 1px;
      border-top-color: var(--tw-prose-th-borders);
    }
    :where(tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      vertical-align: top;
    }
    :where(th, td):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      text-align: start;
    }
    :where(figure > *):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0;
      margin-bottom: 0;
    }
    :where(figcaption):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-captions);
      font-size: 0.875em;
      line-height: 1.4285714;
      margin-top: 0.8571429em;
    }
    --tw-prose-body: oklch(37.3% 0.034 259.733);
    --tw-prose-headings: oklch(21% 0.034 264.665);
    --tw-prose-lead: oklch(44.6% 0.03 256.802);
    --tw-prose-links: oklch(21% 0.034 264.665);
    --tw-prose-bold: oklch(21% 0.034 264.665);
    --tw-prose-counters: oklch(55.1% 0.027 264.364);
    --tw-prose-bullets: oklch(87.2% 0.01 258.338);
    --tw-prose-hr: oklch(92.8% 0.006 264.531);
    --tw-prose-quotes: oklch(21% 0.034 264.665);
    --tw-prose-quote-borders: oklch(92.8% 0.006 264.531);
    --tw-prose-captions: oklch(55.1% 0.027 264.364);
    --tw-prose-kbd: oklch(21% 0.034 264.665);
    --tw-prose-kbd-shadows: color-mix(in oklab, oklch(21% 0.034 264.665) 10%, transparent);
    --tw-prose-code: oklch(21% 0.034 264.665);
    --tw-prose-pre-code: oklch(92.8% 0.006 264.531);
    --tw-prose-pre-bg: oklch(27.8% 0.033 256.848);
    --tw-prose-th-borders: oklch(87.2% 0.01 258.338);
    --tw-prose-td-borders: oklch(92.8% 0.006 264.531);
    --tw-prose-invert-body: oklch(87.2% 0.01 258.338);
    --tw-prose-invert-headings: #fff;
    --tw-prose-invert-lead: oklch(70.7% 0.022 261.325);
    --tw-prose-invert-links: #fff;
    --tw-prose-invert-bold: #fff;
    --tw-prose-invert-counters: oklch(70.7% 0.022 261.325);
    --tw-prose-invert-bullets: oklch(44.6% 0.03 256.802);
    --tw-prose-invert-hr: oklch(37.3% 0.034 259.733);
    --tw-prose-invert-quotes: oklch(96.7% 0.003 264.542);
    --tw-prose-invert-quote-borders: oklch(37.3% 0.034 259.733);
    --tw-prose-invert-captions: oklch(70.7% 0.022 261.325);
    --tw-prose-invert-kbd: #fff;
    --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);
    --tw-prose-invert-code: #fff;
    --tw-prose-invert-pre-code: oklch(87.2% 0.01 258.338);
    --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);
    --tw-prose-invert-th-borders: oklch(44.6% 0.03 256.802);
    --tw-prose-invert-td-borders: oklch(37.3% 0.034 259.733);
    font-size: 1rem;
    line-height: 1.75;
    :where(picture > img):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0;
      margin-bottom: 0;
    }
    :where(li):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0.5em;
      margin-bottom: 0.5em;
    }
    :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      padding-inline-start: 0.375em;
    }
    :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      padding-inline-start: 0.375em;
    }
    :where(.prose > ul > li p):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0.75em;
      margin-bottom: 0.75em;
    }
    :where(.prose > ul > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 1.25em;
    }
    :where(.prose > ul > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-bottom: 1.25em;
    }
    :where(.prose > ol > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 1.25em;
    }
    :where(.prose > ol > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-bottom: 1.25em;
    }
    :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0.75em;
      margin-bottom: 0.75em;
    }
    :where(dl):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 1.25em;
      margin-bottom: 1.25em;
    }
    :where(dd):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0.5em;
      padding-inline-start: 1.625em;
    }
    :where(hr + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0;
    }
    :where(h2 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0;
    }
    :where(h3 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0;
    }
    :where(h4 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0;
    }
    :where(thead th:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      padding-inline-start: 0;
    }
    :where(thead th:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      padding-inline-end: 0;
    }
    :where(tbody td, tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      padding-top: 0.5714286em;
      padding-inline-end: 0.5714286em;
      padding-bottom: 0.5714286em;
      padding-inline-start: 0.5714286em;
    }
    :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      padding-inline-start: 0;
    }
    :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      padding-inline-end: 0;
    }
    :where(figure):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 2em;
      margin-bottom: 2em;
    }
    :where(.prose > :first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0;
    }
    :where(.prose > :last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-bottom: 0;
    }
  }
  .mt-2 {
    margin-top: calc(var(--spacing) * 2);
  }
  .mt-4 {
    margin-top: calc(var(--spacing) * 4);
  }
  .mt-6 {
    margin-top: calc(var(--spacing) * 6);
  }
  .mt-8 {
    margin-top: calc(var(--spacing) * 8);
  }
  .mt-9 {
    margin-top: calc(var(--spacing) * 9);
  }
  .mt-10 {
    margin-top: calc(var(--spacing) * 10);
  }
  .mt-11 {
    margin-top: calc(var(--spacing) * 11);
  }
  .mt-20 {
    margin-top: calc(var(--spacing) * 20);
  }
  .mr-1 {
    margin-right: var(--spacing);
  }
  .mr-2 {
    margin-right: calc(var(--spacing) * 2);
  }
  .mr-3 {
    margin-right: calc(var(--spacing) * 3);
  }
  .mr-4 {
    margin-right: calc(var(--spacing) * 4);
  }
  .mr-5 {
    margin-right: calc(var(--spacing) * 5);
  }
  .form-label {
    margin-bottom: calc(var(--spacing) * 4);
    display: block;
    font-family: var(--font-secondary);
    font-size: var(--text-xl);
    line-height: var(--tw-leading, var(--text-xl--line-height));
    --tw-font-weight: var(--font-weight-normal);
    font-weight: var(--font-weight-normal);
    color: var(--color-text-dark);
    &:where(.dark, .dark *) {
      color: var(--color-darkmode-text-light);
    }
  }
  .mb-2 {
    margin-bottom: calc(var(--spacing) * 2);
  }
  .mb-3 {
    margin-bottom: calc(var(--spacing) * 3);
  }
  .mb-4 {
    margin-bottom: calc(var(--spacing) * 4);
  }
  .mb-5 {
    margin-bottom: calc(var(--spacing) * 5);
  }
  .mb-6 {
    margin-bottom: calc(var(--spacing) * 6);
  }
  .mb-8 {
    margin-bottom: calc(var(--spacing) * 8);
  }
  .mb-10 {
    margin-bottom: calc(var(--spacing) * 10);
  }
  .mb-12 {
    margin-bottom: calc(var(--spacing) * 12);
  }
  .mb-14 {
    margin-bottom: calc(var(--spacing) * 14);
  }
  .mb-28 {
    margin-bottom: calc(var(--spacing) * 28);
  }
  .ml-2 {
    margin-left: calc(var(--spacing) * 2);
  }
  .ml-4 {
    margin-left: calc(var(--spacing) * 4);
  }
  .ml-auto {
    margin-left: auto;
  }
  .form-input {
    appearance: none;
    background-color: #fff;
    border-color: oklch(55.1% 0.027 264.364);
    border-width: 1px;
    border-radius: 0px;
    padding-top: 0.5rem;
    padding-right: 0.75rem;
    padding-bottom: 0.5rem;
    padding-left: 0.75rem;
    font-size: 1rem;
    line-height: 1.5rem;
    --tw-shadow: 0 0 #0000;
    &:focus {
      outline: 2px solid transparent;
      outline-offset: 2px;
      --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);
      --tw-ring-offset-width: 0px;
      --tw-ring-offset-color: #fff;
      --tw-ring-color: oklch(54.6% 0.245 262.881);
      --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
      --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
      box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
      border-color: oklch(54.6% 0.245 262.881);
    }
    &::placeholder {
      color: oklch(55.1% 0.027 264.364);
      opacity: 1;
    }
    &::-webkit-datetime-edit-fields-wrapper {
      padding: 0;
    }
    &::-webkit-date-and-time-value {
      min-height: 1.5em;
    }
    &::-webkit-date-and-time-value {
      text-align: inherit;
    }
    &::-webkit-datetime-edit {
      display: inline-flex;
    }
    &::-webkit-datetime-edit {
      padding-top: 0;
      padding-bottom: 0;
    }
    &::-webkit-datetime-edit-year-field {
      padding-top: 0;
      padding-bottom: 0;
    }
    &::-webkit-datetime-edit-month-field {
      padding-top: 0;
      padding-bottom: 0;
    }
    &::-webkit-datetime-edit-day-field {
      padding-top: 0;
      padding-bottom: 0;
    }
    &::-webkit-datetime-edit-hour-field {
      padding-top: 0;
      padding-bottom: 0;
    }
    &::-webkit-datetime-edit-minute-field {
      padding-top: 0;
      padding-bottom: 0;
    }
    &::-webkit-datetime-edit-second-field {
      padding-top: 0;
      padding-bottom: 0;
    }
    &::-webkit-datetime-edit-millisecond-field {
      padding-top: 0;
      padding-bottom: 0;
    }
    &::-webkit-datetime-edit-meridiem-field {
      padding-top: 0;
      padding-bottom: 0;
    }
  }
  .col {
    flex: 1 0 0%;
    width: initial;
    display: initial;
  }
  .block {
    display: block;
  }
  .contents {
    display: contents;
  }
  .flex {
    display: flex;
  }
  .grid {
    display: grid;
  }
  .hidden {
    display: none;
  }
  .inline {
    display: inline;
  }
  .inline-block {
    display: inline-block;
  }
  .inline-flex {
    display: inline-flex;
  }
  .table {
    display: table;
  }
  .h-4 {
    height: calc(var(--spacing) * 4);
  }
  .h-6 {
    height: calc(var(--spacing) * 6);
  }
  .h-full {
    height: 100%;
  }
  .col-6 {
    flex: 0 0 auto;
    width: 50%;
  }
  .col-12 {
    flex: 0 0 auto;
    width: 100%;
  }
  .col-auto {
    flex: 0 0 auto;
    width: auto;
  }
  .row-cols-auto  > * {
    flex: 0 0 auto;
    width: auto;
  }
  .form-input {
    width: 100%;
    border-radius: 0.25rem;
    border-color: transparent;
    background-color: var(--color-light);
    padding-inline: calc(var(--spacing) * 6);
    padding-block: calc(var(--spacing) * 4);
    color: var(--color-text-dark);
    &::placeholder {
      color: var(--color-text-light);
    }
    &:focus {
      border-color: var(--color-primary);
    }
    &:focus {
      --tw-ring-color: transparent;
    }
    &:where(.dark, .dark *) {
      border-color: var(--color-darkmode-border);
    }
    &:where(.dark, .dark *) {
      background-color: var(--color-darkmode-light);
    }
    &:where(.dark, .dark *) {
      color: var(--color-darkmode-text-light);
    }
    &:where(.dark, .dark *) {
      &:focus {
        border-color: var(--color-darkmode-primary);
      }
    }
  }
  .w-4 {
    width: calc(var(--spacing) * 4);
  }
  .w-75 {
    width: calc(var(--spacing) * 75);
  }
  .w-\[30px\] {
    width: 30px;
  }
  .w-full {
    width: 100%;
  }
  .max-w-3xl {
    max-width: var(--container-3xl);
  }
  .grow {
    flex-grow: 1;
  }
  .-translate-x-1\/2 {
    --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);
    translate: var(--tw-translate-x) var(--tw-translate-y);
  }
  .-translate-y-1\/2 {
    --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
    translate: var(--tw-translate-x) var(--tw-translate-y);
  }
  .transform {
    transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);
  }
  .cursor-pointer {
    cursor: pointer;
  }
  .resize {
    resize: both;
  }
  .flex-wrap {
    flex-wrap: wrap;
  }
  .items-center {
    align-items: center;
  }
  .items-start {
    align-items: flex-start;
  }
  .justify-between {
    justify-content: space-between;
  }
  .justify-center {
    justify-content: center;
  }
  .gap-2 {
    gap: calc(var(--spacing) * 2);
  }
  :where(.space-y-4 > :not(:last-child)) {
    --tw-space-y-reverse: 0;
    margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));
    margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));
  }
  :where(.space-x-1 > :not(:last-child)) {
    --tw-space-x-reverse: 0;
    margin-inline-start: calc(var(--spacing) * var(--tw-space-x-reverse));
    margin-inline-end: calc(var(--spacing) * calc(1 - var(--tw-space-x-reverse)));
  }
  :where(.space-x-3 > :not(:last-child)) {
    --tw-space-x-reverse: 0;
    margin-inline-start: calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));
    margin-inline-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)));
  }
  .truncate {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .rounded {
    border-radius: 0.25rem;
  }
  .rounded-2xl {
    border-radius: var(--radius-2xl);
  }
  .rounded-full {
    border-radius: calc(infinity * 1px);
  }
  .rounded-lg {
    border-radius: var(--radius-lg);
  }
  .rounded-xl {
    border-radius: var(--radius-xl);
  }
  .border {
    border-style: var(--tw-border-style);
    border-width: 1px;
  }
  .border-t {
    border-top-style: var(--tw-border-style);
    border-top-width: 1px;
  }
  .border-r {
    border-right-style: var(--tw-border-style);
    border-right-width: 1px;
  }
  .border-b {
    border-bottom-style: var(--tw-border-style);
    border-bottom-width: 1px;
  }
  .border-border {
    border-color: var(--color-border);
  }
  .bg-body {
    background-color: var(--color-body);
  }
  .bg-gray-200 {
    background-color: var(--color-gray-200);
  }
  .bg-light {
    background-color: var(--color-light);
  }
  .bg-primary {
    background-color: var(--color-primary);
  }
  .bg-white {
    background-color: var(--color-white);
  }
  .bg-gradient {
    --tw-gradient-position: to bottom;
    @supports (background-image: linear-gradient(in lab, red, red)) {
      --tw-gradient-position: to bottom in oklab;
    }
    background-image: linear-gradient(var(--tw-gradient-stops));
    --tw-gradient-from: rgba(249,249,249,1);
    --tw-gradient-from-position: 0.53%;
    --tw-gradient-to: var(--color-white);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    --tw-gradient-to-position: 83.28%;
    &:where(.dark, .dark *) {
      --tw-gradient-from: var(--color-darkmode-light);
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
    &:where(.dark, .dark *) {
      --tw-gradient-to: var(--color-darkmode-body);
      --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
    }
  }
  .bg-gradient-to-b {
    --tw-gradient-position: to bottom in oklab;
    background-image: linear-gradient(var(--tw-gradient-stops));
  }
  .from-body {
    --tw-gradient-from: var(--color-body);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .to-light {
    --tw-gradient-to: var(--color-light);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .fill-current {
    fill: currentcolor;
  }
  .p-1 {
    padding: var(--spacing);
  }
  .p-5 {
    padding: calc(var(--spacing) * 5);
  }
  .p-6 {
    padding: calc(var(--spacing) * 6);
  }
  .p-8 {
    padding: calc(var(--spacing) * 8);
  }
  .px-2 {
    padding-inline: calc(var(--spacing) * 2);
  }
  .px-3 {
    padding-inline: calc(var(--spacing) * 3);
  }
  .px-4 {
    padding-inline: calc(var(--spacing) * 4);
  }
  .px-7 {
    padding-inline: calc(var(--spacing) * 7);
  }
  .px-8 {
    padding-inline: calc(var(--spacing) * 8);
  }
  .py-1 {
    padding-block: var(--spacing);
  }
  .py-1\.5 {
    padding-block: calc(var(--spacing) * 1.5);
  }
  .py-2 {
    padding-block: calc(var(--spacing) * 2);
  }
  .py-7 {
    padding-block: calc(var(--spacing) * 7);
  }
  .py-10 {
    padding-block: calc(var(--spacing) * 10);
  }
  .py-12 {
    padding-block: calc(var(--spacing) * 12);
  }
  .py-14 {
    padding-block: calc(var(--spacing) * 14);
  }
  .py-16 {
    padding-block: calc(var(--spacing) * 16);
  }
  .py-\[2\.5px\] {
    padding-block: 2.5px;
  }
  .pt-0 {
    padding-top: 0px;
  }
  .pt-7 {
    padding-top: calc(var(--spacing) * 7);
  }
  .pt-14 {
    padding-top: calc(var(--spacing) * 14);
  }
  .pr-5 {
    padding-right: calc(var(--spacing) * 5);
  }
  .pb-0 {
    padding-bottom: 0px;
  }
  .pb-6 {
    padding-bottom: calc(var(--spacing) * 6);
  }
  .pb-14 {
    padding-bottom: calc(var(--spacing) * 14);
  }
  .pb-16 {
    padding-bottom: calc(var(--spacing) * 16);
  }
  .pl-2 {
    padding-left: calc(var(--spacing) * 2);
  }
  .pl-6 {
    padding-left: calc(var(--spacing) * 6);
  }
  .text-center {
    text-align: center;
  }
  .text-left {
    text-align: left;
  }
  .text-right {
    text-align: right;
  }
  .font-primary {
    font-family: var(--font-primary);
  }
  .text-lg {
    font-size: var(--text-lg);
    line-height: var(--tw-leading, var(--text-lg--line-height));
  }
  .text-sm {
    font-size: var(--text-sm);
    line-height: var(--tw-leading, var(--text-sm--line-height));
  }
  .text-xl {
    font-size: var(--text-xl);
    line-height: var(--tw-leading, var(--text-xl--line-height));
  }
  .text-xs {
    font-size: var(--text-xs);
    line-height: var(--tw-leading, var(--text-xs--line-height));
  }
  .text-\[8rem\] {
    font-size: 8rem;
  }
  .text-\[12px\] {
    font-size: 12px;
  }
  .text-h2 {
    font-size: var(--text-h2);
  }
  .text-h3 {
    font-size: var(--text-h3);
  }
  .leading-relaxed {
    --tw-leading: var(--leading-relaxed);
    line-height: var(--leading-relaxed);
  }
  .font-bold {
    --tw-font-weight: var(--font-weight-bold);
    font-weight: var(--font-weight-bold);
  }
  .font-semibold {
    --tw-font-weight: var(--font-weight-semibold);
    font-weight: var(--font-weight-semibold);
  }
  .text-black {
    color: var(--color-black);
  }
  .text-dark {
    color: var(--color-dark);
  }
  .text-light {
    color: var(--color-light);
  }
  .text-primary {
    color: var(--color-primary);
  }
  .text-red-500 {
    color: var(--color-red-500);
  }
  .text-text-dark {
    color: var(--color-text-dark);
  }
  .text-text-light {
    color: var(--color-text-light);
  }
  .text-white {
    color: var(--color-white);
  }
  .capitalize {
    text-transform: capitalize;
  }
  .lowercase {
    text-transform: lowercase;
  }
  .uppercase {
    text-transform: uppercase;
  }
  .opacity-0 {
    opacity: 0%;
  }
  .opacity-70 {
    opacity: 70%;
  }
  .opacity-80 {
    opacity: 80%;
  }
  .opacity-100 {
    opacity: 100%;
  }
  .shadow {
    --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .ring {
    --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .outline {
    outline-style: var(--tw-outline-style);
    outline-width: 1px;
  }
  .invert {
    --tw-invert: invert(100%);
    filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
  }
  .filter {
    filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
  }
  .transition {
    transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
    transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
    transition-duration: var(--tw-duration, var(--default-transition-duration));
  }
  .transition-all {
    transition-property: all;
    transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
    transition-duration: var(--tw-duration, var(--default-transition-duration));
  }
  .duration-300 {
    --tw-duration: 300ms;
    transition-duration: 300ms;
  }
  .ease-in-out {
    --tw-ease: var(--ease-in-out);
    transition-timing-function: var(--ease-in-out);
  }
  .ease-out {
    --tw-ease: var(--ease-out);
    transition-timing-function: var(--ease-out);
  }
  .backface-hidden {
    backface-visibility: hidden;
  }
  .peer-checked\:block:is(:where(.peer):checked ~ *) {
    display: block;
  }
  @media (hover: hover) {
    .hover\:bg-light:hover {
      background-color: var(--color-light);
    }
    .hover\:bg-primary:hover {
      background-color: var(--color-primary);
    }
    .hover\:text-primary:hover {
      color: var(--color-primary);
    }
    .hover\:text-white:hover {
      color: var(--color-white);
    }
  }
  @media (width >= 40rem) {
    .sm\:col-10 {
      grid-column: 10;
    }
    .sm\:block {
      display: block;
    }
    .sm\:hidden {
      display: none;
    }
    .sm\:col-10 {
      flex: 0 0 auto;
      width: 83.33333333333334%;
    }
    .sm\:bg-red-200 {
      background-color: var(--color-red-200);
    }
  }
  @media (width >= 48rem) {
    .md\:order-1 {
      order: 1;
    }
    .md\:order-2 {
      order: 2;
    }
    .md\:col-3 {
      grid-column: 3;
    }
    .md\:col-4 {
      grid-column: 4;
    }
    .md\:col-5 {
      grid-column: 5;
    }
    .md\:col-6 {
      grid-column: 6;
    }
    .md\:col-7 {
      grid-column: 7;
    }
    .md\:col-8 {
      grid-column: 8;
    }
    .md\:col-9 {
      grid-column: 9;
    }
    .md\:col-10 {
      grid-column: 10;
    }
    .md\:mb-0 {
      margin-bottom: 0px;
    }
    .md\:block {
      display: block;
    }
    .md\:hidden {
      display: none;
    }
    .md\:col-3 {
      flex: 0 0 auto;
      width: 25%;
    }
    .md\:col-4 {
      flex: 0 0 auto;
      width: 33.333333333333336%;
    }
    .md\:col-5 {
      flex: 0 0 auto;
      width: 41.66666666666667%;
    }
    .md\:col-6 {
      flex: 0 0 auto;
      width: 50%;
    }
    .md\:col-7 {
      flex: 0 0 auto;
      width: 58.333333333333336%;
    }
    .md\:col-8 {
      flex: 0 0 auto;
      width: 66.66666666666667%;
    }
    .md\:col-9 {
      flex: 0 0 auto;
      width: 75%;
    }
    .md\:col-10 {
      flex: 0 0 auto;
      width: 83.33333333333334%;
    }
    .md\:bg-yellow-200 {
      background-color: var(--color-yellow-200);
    }
  }
  @media (width >= 64rem) {
    .lg\:invisible {
      visibility: hidden;
    }
    .lg\:absolute {
      position: absolute;
    }
    .lg\:order-1 {
      order: 1;
    }
    .lg\:order-none {
      order: 0;
    }
    .lg\:col-2 {
      grid-column: 2;
    }
    .lg\:col-3 {
      grid-column: 3;
    }
    .lg\:col-4 {
      grid-column: 4;
    }
    .lg\:col-6 {
      grid-column: 6;
    }
    .lg\:col-7 {
      grid-column: 7;
    }
    .lg\:col-8 {
      grid-column: 8;
    }
    .lg\:col-9 {
      grid-column: 9;
    }
    .lg\:col-10 {
      grid-column: 10;
    }
    .lg\:my-0 {
      margin-block: 0px;
    }
    .lg\:mt-0 {
      margin-top: 0px;
    }
    .lg\:mb-0 {
      margin-bottom: 0px;
    }
    .lg\:ml-0 {
      margin-left: 0px;
    }
    .lg\:block {
      display: block;
    }
    .lg\:flex {
      display: flex;
    }
    .lg\:hidden {
      display: none;
    }
    .lg\:inline-block {
      display: inline-block;
    }
    .lg\:col-2 {
      flex: 0 0 auto;
      width: 16.666666666666668%;
    }
    .lg\:col-3 {
      flex: 0 0 auto;
      width: 25%;
    }
    .lg\:col-4 {
      flex: 0 0 auto;
      width: 33.333333333333336%;
    }
    .lg\:col-6 {
      flex: 0 0 auto;
      width: 50%;
    }
    .lg\:col-7 {
      flex: 0 0 auto;
      width: 58.333333333333336%;
    }
    .lg\:col-8 {
      flex: 0 0 auto;
      width: 66.66666666666667%;
    }
    .lg\:col-9 {
      flex: 0 0 auto;
      width: 75%;
    }
    .lg\:col-10 {
      flex: 0 0 auto;
      width: 83.33333333333334%;
    }
    .lg\:w-auto {
      width: auto;
    }
    .lg\:\!max-w-\[800px\] {
      max-width: 800px !important;
    }
    .lg\:justify-end {
      justify-content: flex-end;
    }
    :where(.lg\:space-x-2 > :not(:last-child)) {
      --tw-space-x-reverse: 0;
      margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));
      margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));
    }
    .lg\:border-r-0 {
      border-right-style: var(--tw-border-style);
      border-right-width: 0px;
    }
    .lg\:bg-green-200 {
      background-color: var(--color-green-200);
    }
    .lg\:py-14 {
      padding-block: calc(var(--spacing) * 14);
    }
    .lg\:py-16 {
      padding-block: calc(var(--spacing) * 16);
    }
    .lg\:py-20 {
      padding-block: calc(var(--spacing) * 20);
    }
    .lg\:pr-0 {
      padding-right: 0px;
    }
    .lg\:pb-0 {
      padding-bottom: 0px;
    }
    .lg\:text-left {
      text-align: left;
    }
    .lg\:text-right {
      text-align: right;
    }
    .lg\:text-h1 {
      font-size: var(--text-h1);
    }
    .lg\:text-h2 {
      font-size: var(--text-h2);
    }
    .lg\:opacity-0 {
      opacity: 0%;
    }
    @media (hover: hover) {
      .lg\:group-hover\:visible:is(:where(.group):hover *) {
        visibility: visible;
      }
      .lg\:group-hover\:opacity-100:is(:where(.group):hover *) {
        opacity: 100%;
      }
    }
  }
  @media (width >= 80rem) {
    .xl\:col-6 {
      grid-column: 6;
    }
    .xl\:block {
      display: block;
    }
    .xl\:hidden {
      display: none;
    }
    .xl\:col-6 {
      flex: 0 0 auto;
      width: 50%;
    }
    :where(.xl\:space-x-8 > :not(:last-child)) {
      --tw-space-x-reverse: 0;
      margin-inline-start: calc(calc(var(--spacing) * 8) * var(--tw-space-x-reverse));
      margin-inline-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-x-reverse)));
    }
    .xl\:bg-blue-200 {
      background-color: var(--color-blue-200);
    }
    .xl\:p-20 {
      padding: calc(var(--spacing) * 20);
    }
  }
  @media (width >= 96rem) {
    .\32 xl\:block {
      display: block;
    }
    .\32 xl\:hidden {
      display: none;
    }
    .\32 xl\:bg-pink-200 {
      background-color: var(--color-pink-200);
    }
  }
  .dark\:border-darkmode-border:where(.dark, .dark *) {
    border-color: var(--color-darkmode-border);
  }
  .dark\:bg-darkmode-body:where(.dark, .dark *) {
    background-color: var(--color-darkmode-body);
  }
  .dark\:bg-darkmode-light:where(.dark, .dark *) {
    background-color: var(--color-darkmode-light);
  }
  .dark\:bg-darkmode-primary:where(.dark, .dark *) {
    background-color: var(--color-darkmode-primary);
  }
  .dark\:from-darkmode-body:where(.dark, .dark *) {
    --tw-gradient-from: var(--color-darkmode-body);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .dark\:to-darkmode-light:where(.dark, .dark *) {
    --tw-gradient-to: var(--color-darkmode-light);
    --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
  }
  .dark\:text-darkmode-primary:where(.dark, .dark *) {
    color: var(--color-darkmode-primary);
  }
  .dark\:text-darkmode-text-dark:where(.dark, .dark *) {
    color: var(--color-darkmode-text-dark);
  }
  .dark\:text-darkmode-text-light:where(.dark, .dark *) {
    color: var(--color-darkmode-text-light);
  }
  .dark\:text-text-dark:where(.dark, .dark *) {
    color: var(--color-text-dark);
  }
  .dark\:text-white:where(.dark, .dark *) {
    color: var(--color-white);
  }
  .dark\:opacity-0:where(.dark, .dark *) {
    opacity: 0%;
  }
  .dark\:opacity-100:where(.dark, .dark *) {
    opacity: 100%;
  }
  @media (hover: hover) {
    .dark\:hover\:bg-darkmode-light:where(.dark, .dark *):hover {
      background-color: var(--color-darkmode-light);
    }
    .dark\:hover\:bg-darkmode-primary:where(.dark, .dark *):hover {
      background-color: var(--color-darkmode-primary);
    }
    .dark\:hover\:text-darkmode-primary:where(.dark, .dark *):hover {
      color: var(--color-darkmode-primary);
    }
    .dark\:hover\:text-text-dark:where(.dark, .dark *):hover {
      color: var(--color-text-dark);
    }
  }
}
input#nav-toggle:checked + label #show-button {
  display: none;
}
input#nav-toggle:checked + label #hide-button {
  display: block;
}
input#nav-toggle:checked ~ #nav-menu {
  display: block;
}
.swiper-pagination-bullet {
  height: calc(var(--spacing) * 2.5) !important;
  width: calc(var(--spacing) * 2.5) !important;
  background-color: var(--color-light) !important;
  opacity: 100% !important;
  &:where(.dark, .dark *) {
    background-color: var(--color-darkmode-light) !important;
  }
}
.swiper-pagination-bullet-active {
  height: calc(var(--spacing) * 4) !important;
  width: calc(var(--spacing) * 4) !important;
  background-color: var(--color-primary) !important;
  &:where(.dark, .dark *) {
    background-color: var(--color-darkmode-primary) !important;
  }
}
@layer base {
  html {
    font-size: var(--text-base-sm);
    @media (width >= 48rem) {
      font-size: var(--text-base);
      line-height: var(--tw-leading, var(--text-base--line-height));
    }
  }
  body {
    background-color: var(--color-body);
    font-family: var(--font-primary);
    font-size: var(--text-base);
    line-height: var(--tw-leading, var(--text-base--line-height));
    --tw-leading: var(--leading-relaxed);
    line-height: var(--leading-relaxed);
    --tw-font-weight: var(--font-weight-normal);
    font-weight: var(--font-weight-normal);
    color: var(--color-text);
    &:where(.dark, .dark *) {
      background-color: var(--color-darkmode-body);
    }
    &:where(.dark, .dark *) {
      color: var(--color-darkmode-text);
    }
  }
  h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-secondary);
    --tw-leading: var(--leading-tight);
    line-height: var(--leading-tight);
    --tw-font-weight: var(--font-weight-bold);
    font-weight: var(--font-weight-bold);
    color: var(--color-text-dark);
    &:where(.dark, .dark *) {
      color: var(--color-darkmode-text-dark);
    }
  }
  h1, .h1 {
    font-size: var(--text-h1-sm);
    @media (width >= 48rem) {
      font-size: var(--text-h1);
    }
  }
  h2, .h2 {
    font-size: var(--text-h2-sm);
    @media (width >= 48rem) {
      font-size: var(--text-h2);
    }
  }
  h3, .h3 {
    font-size: var(--text-h3-sm);
    @media (width >= 48rem) {
      font-size: var(--text-h3);
    }
  }
  h4, .h4 {
    font-size: var(--text-h4);
  }
  h5, .h5 {
    font-size: var(--text-h5);
  }
  h6, .h6 {
    font-size: var(--text-h6);
  }
  b, strong {
    --tw-font-weight: var(--font-weight-semibold);
    font-weight: var(--font-weight-semibold);
  }
  code::after {
    content: var(--tw-content);
    --tw-border-style: none;
    border-style: none;
  }
  blockquote > p {
    margin-block: 0px !important;
  }
}
@layer components {
  .section {
    padding-block: calc(var(--spacing) * 24);
    @media (width >= 80rem) {
      padding-block: calc(var(--spacing) * 28);
    }
  }
  .section-sm {
    padding-block: calc(var(--spacing) * 16);
    @media (width >= 80rem) {
      padding-block: calc(var(--spacing) * 20);
    }
  }
  .container {
    margin-inline: auto;
    padding-inline: calc(var(--spacing) * 4);
    @media (width >= 80rem) {
      max-width: 1320px !important;
    }
  }
  :where(.social-icons > :not(:last-child)) {
    --tw-space-x-reverse: 0;
    margin-inline-start: calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));
    margin-inline-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)));
  }
  .social-icons li {
    display: inline-block;
  }
  .social-icons li a {
    display: flex;
    height: calc(var(--spacing) * 9);
    width: calc(var(--spacing) * 9);
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-sm);
    background-color: var(--color-primary);
    text-align: center;
    --tw-leading: calc(var(--spacing) * 9);
    line-height: calc(var(--spacing) * 9);
    color: var(--color-white);
    &:where(.dark, .dark *) {
      background-color: var(--color-darkmode-primary);
    }
    &:where(.dark, .dark *) {
      color: var(--color-text-dark);
    }
  }
  .social-icons li a svg {
    height: calc(var(--spacing) * 5);
    width: calc(var(--spacing) * 5);
  }
  .content {
    color: var(--tw-prose-body);
    max-width: 65ch;
    :where(p):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 1.25em;
      margin-bottom: 1.25em;
    }
    :where([class~="lead"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-lead);
      font-size: 1.25em;
      line-height: 1.6;
      margin-top: 1.2em;
      margin-bottom: 1.2em;
    }
    :where(a):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-links);
      text-decoration: underline;
      font-weight: 500;
    }
    :where(strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-bold);
      font-weight: 600;
    }
    :where(a strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
    }
    :where(blockquote strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
    }
    :where(thead th strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
    }
    :where(ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: decimal;
      margin-top: 1.25em;
      margin-bottom: 1.25em;
      padding-inline-start: 1.625em;
    }
    :where(ol[type="A"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: upper-alpha;
    }
    :where(ol[type="a"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: lower-alpha;
    }
    :where(ol[type="A" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: upper-alpha;
    }
    :where(ol[type="a" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: lower-alpha;
    }
    :where(ol[type="I"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: upper-roman;
    }
    :where(ol[type="i"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: lower-roman;
    }
    :where(ol[type="I" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: upper-roman;
    }
    :where(ol[type="i" s]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: lower-roman;
    }
    :where(ol[type="1"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: decimal;
    }
    :where(ul):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      list-style-type: disc;
      margin-top: 1.25em;
      margin-bottom: 1.25em;
      padding-inline-start: 1.625em;
    }
    :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *))::marker {
      font-weight: 400;
      color: var(--tw-prose-counters);
    }
    :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *))::marker {
      color: var(--tw-prose-bullets);
    }
    :where(dt):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-headings);
      font-weight: 600;
      margin-top: 1.25em;
    }
    :where(hr):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      border-color: var(--tw-prose-hr);
      border-top-width: 1px;
      margin-top: 3em;
      margin-bottom: 3em;
    }
    :where(blockquote):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      font-weight: 500;
      font-style: italic;
      color: var(--tw-prose-quotes);
      border-inline-start-width: 0.25rem;
      border-inline-start-color: var(--tw-prose-quote-borders);
      quotes: "\201C""\201D""\2018""\2019";
      margin-top: 1.6em;
      margin-bottom: 1.6em;
      padding-inline-start: 1em;
    }
    :where(blockquote p:first-of-type):not(:where([class~="not-prose"], [class~="not-prose"] *))::before {
      content: open-quote;
    }
    :where(blockquote p:last-of-type):not(:where([class~="not-prose"], [class~="not-prose"] *))::after {
      content: close-quote;
    }
    :where(h1):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-headings);
      font-weight: 800;
      font-size: 2.25em;
      margin-top: 0;
      margin-bottom: 0.8888889em;
      line-height: 1.1111111;
    }
    :where(h1 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      font-weight: 900;
      color: inherit;
    }
    :where(h2):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-headings);
      font-weight: 700;
      font-size: 1.5em;
      margin-top: 2em;
      margin-bottom: 1em;
      line-height: 1.3333333;
    }
    :where(h2 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      font-weight: 800;
      color: inherit;
    }
    :where(h3):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-headings);
      font-weight: 600;
      font-size: 1.25em;
      margin-top: 1.6em;
      margin-bottom: 0.6em;
      line-height: 1.6;
    }
    :where(h3 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      font-weight: 700;
      color: inherit;
    }
    :where(h4):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-headings);
      font-weight: 600;
      margin-top: 1.5em;
      margin-bottom: 0.5em;
      line-height: 1.5;
    }
    :where(h4 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      font-weight: 700;
      color: inherit;
    }
    :where(img):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 2em;
      margin-bottom: 2em;
    }
    :where(picture):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      display: block;
      margin-top: 2em;
      margin-bottom: 2em;
    }
    :where(video):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 2em;
      margin-bottom: 2em;
    }
    :where(kbd):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      font-weight: 500;
      font-family: inherit;
      color: var(--tw-prose-kbd);
      box-shadow: 0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows);
      font-size: 0.875em;
      border-radius: 0.3125rem;
      padding-top: 0.1875em;
      padding-inline-end: 0.375em;
      padding-bottom: 0.1875em;
      padding-inline-start: 0.375em;
    }
    :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-code);
      font-weight: 600;
      font-size: 0.875em;
    }
    :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *))::before {
      content: "`";
    }
    :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *))::after {
      content: "`";
    }
    :where(a code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
    }
    :where(h1 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
    }
    :where(h2 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
      font-size: 0.875em;
    }
    :where(h3 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
      font-size: 0.9em;
    }
    :where(h4 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
    }
    :where(blockquote code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
    }
    :where(thead th code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: inherit;
    }
    :where(pre):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-pre-code);
      background-color: var(--tw-prose-pre-bg);
      overflow-x: auto;
      font-weight: 400;
      font-size: 0.875em;
      line-height: 1.7142857;
      margin-top: 1.7142857em;
      margin-bottom: 1.7142857em;
      border-radius: 0.375rem;
      padding-top: 0.8571429em;
      padding-inline-end: 1.1428571em;
      padding-bottom: 0.8571429em;
      padding-inline-start: 1.1428571em;
    }
    :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      background-color: transparent;
      border-width: 0;
      border-radius: 0;
      padding: 0;
      font-weight: inherit;
      color: inherit;
      font-size: inherit;
      font-family: inherit;
      line-height: inherit;
    }
    :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *))::before {
      content: none;
    }
    :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *))::after {
      content: none;
    }
    :where(table):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      width: 100%;
      table-layout: auto;
      margin-top: 2em;
      margin-bottom: 2em;
      font-size: 0.875em;
      line-height: 1.7142857;
    }
    :where(thead):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      border-bottom-width: 1px;
      border-bottom-color: var(--tw-prose-th-borders);
    }
    :where(thead th):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-headings);
      font-weight: 600;
      vertical-align: bottom;
      padding-inline-end: 0.5714286em;
      padding-bottom: 0.5714286em;
      padding-inline-start: 0.5714286em;
    }
    :where(tbody tr):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      border-bottom-width: 1px;
      border-bottom-color: var(--tw-prose-td-borders);
    }
    :where(tbody tr:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      border-bottom-width: 0;
    }
    :where(tbody td):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      vertical-align: baseline;
    }
    :where(tfoot):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      border-top-width: 1px;
      border-top-color: var(--tw-prose-th-borders);
    }
    :where(tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      vertical-align: top;
    }
    :where(th, td):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      text-align: start;
    }
    :where(figure > *):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0;
      margin-bottom: 0;
    }
    :where(figcaption):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      color: var(--tw-prose-captions);
      font-size: 0.875em;
      line-height: 1.4285714;
      margin-top: 0.8571429em;
    }
    --tw-prose-body: oklch(37.3% 0.034 259.733);
    --tw-prose-headings: oklch(21% 0.034 264.665);
    --tw-prose-lead: oklch(44.6% 0.03 256.802);
    --tw-prose-links: oklch(21% 0.034 264.665);
    --tw-prose-bold: oklch(21% 0.034 264.665);
    --tw-prose-counters: oklch(55.1% 0.027 264.364);
    --tw-prose-bullets: oklch(87.2% 0.01 258.338);
    --tw-prose-hr: oklch(92.8% 0.006 264.531);
    --tw-prose-quotes: oklch(21% 0.034 264.665);
    --tw-prose-quote-borders: oklch(92.8% 0.006 264.531);
    --tw-prose-captions: oklch(55.1% 0.027 264.364);
    --tw-prose-kbd: oklch(21% 0.034 264.665);
    --tw-prose-kbd-shadows: color-mix(in oklab, oklch(21% 0.034 264.665) 10%, transparent);
    --tw-prose-code: oklch(21% 0.034 264.665);
    --tw-prose-pre-code: oklch(92.8% 0.006 264.531);
    --tw-prose-pre-bg: oklch(27.8% 0.033 256.848);
    --tw-prose-th-borders: oklch(87.2% 0.01 258.338);
    --tw-prose-td-borders: oklch(92.8% 0.006 264.531);
    --tw-prose-invert-body: oklch(87.2% 0.01 258.338);
    --tw-prose-invert-headings: #fff;
    --tw-prose-invert-lead: oklch(70.7% 0.022 261.325);
    --tw-prose-invert-links: #fff;
    --tw-prose-invert-bold: #fff;
    --tw-prose-invert-counters: oklch(70.7% 0.022 261.325);
    --tw-prose-invert-bullets: oklch(44.6% 0.03 256.802);
    --tw-prose-invert-hr: oklch(37.3% 0.034 259.733);
    --tw-prose-invert-quotes: oklch(96.7% 0.003 264.542);
    --tw-prose-invert-quote-borders: oklch(37.3% 0.034 259.733);
    --tw-prose-invert-captions: oklch(70.7% 0.022 261.325);
    --tw-prose-invert-kbd: #fff;
    --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);
    --tw-prose-invert-code: #fff;
    --tw-prose-invert-pre-code: oklch(87.2% 0.01 258.338);
    --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);
    --tw-prose-invert-th-borders: oklch(44.6% 0.03 256.802);
    --tw-prose-invert-td-borders: oklch(37.3% 0.034 259.733);
    font-size: 1rem;
    line-height: 1.75;
    :where(picture > img):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0;
      margin-bottom: 0;
    }
    :where(li):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0.5em;
      margin-bottom: 0.5em;
    }
    :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      padding-inline-start: 0.375em;
    }
    :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      padding-inline-start: 0.375em;
    }
    :where(.prose > ul > li p):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0.75em;
      margin-bottom: 0.75em;
    }
    :where(.prose > ul > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 1.25em;
    }
    :where(.prose > ul > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-bottom: 1.25em;
    }
    :where(.prose > ol > li > p:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 1.25em;
    }
    :where(.prose > ol > li > p:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-bottom: 1.25em;
    }
    :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0.75em;
      margin-bottom: 0.75em;
    }
    :where(dl):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 1.25em;
      margin-bottom: 1.25em;
    }
    :where(dd):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0.5em;
      padding-inline-start: 1.625em;
    }
    :where(hr + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0;
    }
    :where(h2 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0;
    }
    :where(h3 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0;
    }
    :where(h4 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0;
    }
    :where(thead th:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      padding-inline-start: 0;
    }
    :where(thead th:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      padding-inline-end: 0;
    }
    :where(tbody td, tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      padding-top: 0.5714286em;
      padding-inline-end: 0.5714286em;
      padding-bottom: 0.5714286em;
      padding-inline-start: 0.5714286em;
    }
    :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      padding-inline-start: 0;
    }
    :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      padding-inline-end: 0;
    }
    :where(figure):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 2em;
      margin-bottom: 2em;
    }
    :where(.prose > :first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-top: 0;
    }
    :where(.prose > :last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) {
      margin-bottom: 0;
    }
    max-width: none;
    & :is(:where(h1, h2, h3, h4, h5, h6, th):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      margin-top: .6em;
    }
    & :is(:where(h1, h2, h3, h4, h5, h6, th):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      margin-bottom: .3em;
    }
    & :is(:where(h1, h2, h3, h4, h5, h6, th):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      color: var(--color-text-dark);
    }
    &:where(.dark, .dark *) {
      & :is(:where(h1, h2, h3, h4, h5, h6, th):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        color: var(--color-darkmode-text-dark);
      }
    }
    & :is(:where(h1):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      font-size: var(--text-h1-sm);
    }
    @media (width >= 48rem) {
      & :is(:where(h1):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        font-size: var(--text-h1);
      }
    }
    & :is(:where(h2):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      font-size: var(--text-h2-sm);
    }
    @media (width >= 48rem) {
      & :is(:where(h2):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        font-size: var(--text-h2);
      }
    }
    & :is(:where(h3):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      font-size: var(--text-h3-sm);
    }
    @media (width >= 48rem) {
      & :is(:where(h3):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        font-size: var(--text-h3);
      }
    }
    & :is(:where(p):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      font-size: var(--text-base);
      line-height: var(--tw-leading, var(--text-base--line-height));
    }
    & :is(:where(p):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      color: var(--color-text);
    }
    &:where(.dark, .dark *) {
      & :is(:where(p):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        color: var(--color-darkmode-text);
      }
    }
    & :is(:where(a):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      color: var(--color-text);
    }
    &:where(.dark, .dark *) {
      & :is(:where(a):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        color: var(--color-darkmode-text);
      }
    }
    & :is(:where(a):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      &.btn {
        text-decoration-line: none;
      }
    }
    & :is(:where(img):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      max-width: 100%;
    }
    & :is(:where(img):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      border-radius: 0.25rem;
    }
    & :is(:where(strong):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      color: var(--color-text-dark);
    }
    &:where(.dark, .dark *) {
      & :is(:where(strong):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        color: var(--color-darkmode-text);
      }
    }
    & :is(:where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      border-color: var(--color-border);
    }
    &:where(.dark, .dark *) {
      & :is(:where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        border-color: var(--color-darkmode-border);
      }
    }
    & :is(:where(pre):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      border-radius: var(--radius-lg);
    }
    & :is(:where(pre):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      background-color: var(--color-light);
    }
    &:where(.dark, .dark *) {
      & :is(:where(pre):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        background-color: var(--color-darkmode-light);
      }
    }
    &:where(.dark, .dark *) {
      & :is(:where(code):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        color: var(--color-darkmode-text-dark);
      }
    }
    & :is(:where(li):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      color: var(--color-text);
    }
    &:where(.dark, .dark *) {
      & :is(:where(li):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        color: var(--color-darkmode-text);
      }
    }
    & :is(:where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      border-radius: var(--radius-lg);
    }
    & :is(:where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      border-style: var(--tw-border-style);
      border-width: 1px;
    }
    & :is(:where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      border-left-style: var(--tw-border-style);
      border-left-width: 10px;
    }
    & :is(:where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      border-color: var(--color-primary);
    }
    & :is(:where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      background-color: var(--color-light);
    }
    & :is(:where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      padding-inline: calc(var(--spacing) * 8);
    }
    & :is(:where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      padding-block: calc(var(--spacing) * 10);
    }
    & :is(:where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      font-family: var(--font-secondary);
    }
    & :is(:where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      font-size: var(--text-2xl);
      line-height: var(--tw-leading, var(--text-2xl--line-height));
    }
    & :is(:where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      color: var(--color-text-dark);
    }
    & :is(:where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      font-style: normal;
    }
    &:where(.dark, .dark *) {
      & :is(:where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        border-color: var(--color-darkmode-primary);
      }
    }
    &:where(.dark, .dark *) {
      & :is(:where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        background-color: var(--color-darkmode-light);
      }
    }
    &:where(.dark, .dark *) {
      & :is(:where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        color: var(--color-darkmode-text-light);
      }
    }
    & :is(:where(table):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      position: relative;
    }
    & :is(:where(table):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      overflow: hidden;
    }
    & :is(:where(table):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      border-radius: var(--radius-lg);
    }
    & :is(:where(table):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      &::before {
        content: var(--tw-content);
        position: absolute;
      }
    }
    & :is(:where(table):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      &::before {
        content: var(--tw-content);
        top: 0px;
      }
    }
    & :is(:where(table):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      &::before {
        content: var(--tw-content);
        left: 0px;
      }
    }
    & :is(:where(table):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      &::before {
        content: var(--tw-content);
        height: 100%;
      }
    }
    & :is(:where(table):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      &::before {
        content: var(--tw-content);
        width: 100%;
      }
    }
    & :is(:where(table):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      &::before {
        content: var(--tw-content);
        border-radius: inherit;
      }
    }
    & :is(:where(table):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      &::before {
        content: var(--tw-content);
        border-style: var(--tw-border-style);
        border-width: 1px;
      }
    }
    & :is(:where(table):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      &::before {
        content: var(--tw-content);
        border-color: var(--color-border);
      }
    }
    & :is(:where(table):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      &::before {
        content: var(--tw-content);
        --tw-content: "";
        content: var(--tw-content);
      }
    }
    &:where(.dark, .dark *) {
      & :is(:where(table):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        &::before {
          content: var(--tw-content);
          border-color: var(--color-darkmode-border);
        }
      }
    }
    & :is(:where(thead):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      border-color: var(--color-border);
    }
    & :is(:where(thead):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      background-color: var(--color-light);
    }
    &:where(.dark, .dark *) {
      & :is(:where(thead):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        border-color: var(--color-darkmode-border);
      }
    }
    &:where(.dark, .dark *) {
      & :is(:where(thead):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        background-color: var(--color-darkmode-light);
      }
    }
    & :is(:where(th):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      position: relative;
    }
    & :is(:where(th):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      z-index: 10;
    }
    & :is(:where(th):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      padding-inline: calc(var(--spacing) * 4);
    }
    & :is(:where(th):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      padding-block: 18px;
    }
    & :is(:where(th):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      color: var(--color-text-dark);
    }
    &:where(.dark, .dark *) {
      & :is(:where(th):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        color: var(--color-darkmode-text);
      }
    }
    & :is(:where(tr):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      border-color: var(--color-border);
    }
    &:where(.dark, .dark *) {
      & :is(:where(tr):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        border-color: var(--color-darkmode-border);
      }
    }
    & :is(:where(td):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      position: relative;
    }
    & :is(:where(td):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      z-index: 10;
    }
    & :is(:where(td):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      padding-inline: calc(var(--spacing) * 3);
    }
    & :is(:where(td):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
      padding-block: 18px;
    }
    &:where(.dark, .dark *) {
      & :is(:where(td):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
        color: var(--color-darkmode-text);
      }
    }
  }
  .header {
    background-color: var(--color-body);
    padding-block: calc(var(--spacing) * 2);
    &:where(.dark, .dark *) {
      background-color: var(--color-darkmode-body);
    }
  }
  .navbar {
    position: relative;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
  }
  .navbar-brand {
    font-size: var(--text-xl);
    line-height: var(--tw-leading, var(--text-xl--line-height));
    --tw-font-weight: var(--font-weight-semibold);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-dark);
    &:where(.dark, .dark *) {
      color: var(--color-darkmode-text-dark);
    }
    image {
      max-height: 100%;
      max-width: 100%;
    }
  }
  .navbar-nav {
    text-align: center;
    @media (width >= 64rem) {
      text-align: left;
    }
  }
  .nav-link {
    display: block;
    cursor: pointer;
    padding: calc(var(--spacing) * 3);
    --tw-font-weight: var(--font-weight-semibold);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-dark);
    transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
    transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
    transition-duration: var(--tw-duration, var(--default-transition-duration));
    &:hover {
      @media (hover: hover) {
        color: var(--color-primary);
      }
    }
    @media (width >= 64rem) {
      padding-inline: calc(var(--spacing) * 2);
    }
    @media (width >= 64rem) {
      padding-block: calc(var(--spacing) * 3);
    }
    &:where(.dark, .dark *) {
      color: var(--color-darkmode-text-dark);
    }
    &:where(.dark, .dark *) {
      &:hover {
        @media (hover: hover) {
          color: var(--color-darkmode-primary);
        }
      }
    }
  }
  .nav-dropdown {
    margin-right: 0px;
  }
  .nav-dropdown > svg {
    pointer-events: none;
  }
  .nav-dropdown-list {
    z-index: 10;
    min-width: 180px;
    border-radius: 0.25rem;
    background-color: var(--color-body);
    padding: calc(var(--spacing) * 4);
    --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
    &:where(.dark, .dark *) {
      background-color: var(--color-darkmode-body);
    }
  }
  .nav-dropdown-item:not(:last-child) {
    margin-bottom: calc(var(--spacing) * 2);
  }
  .nav-dropdown-link {
    display: block;
    padding-block: var(--spacing);
    --tw-font-weight: var(--font-weight-semibold);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-dark);
    transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
    transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
    transition-duration: var(--tw-duration, var(--default-transition-duration));
    &:hover {
      @media (hover: hover) {
        color: var(--color-primary);
      }
    }
    &:where(.dark, .dark *) {
      color: var(--color-darkmode-text);
    }
    &:where(.dark, .dark *) {
      &:hover {
        @media (hover: hover) {
          color: var(--color-darkmode-primary);
        }
      }
    }
  }
  .theme-switcher {
    display: inline-flex;
    label {
      position: relative;
      display: inline-block;
      height: calc(var(--spacing) * 4);
      width: calc(var(--spacing) * 6);
      cursor: pointer;
      border-radius: var(--radius-2xl);
      background-color: var(--color-border);
      @media (width >= 64rem) {
        width: calc(var(--spacing) * 10);
      }
    }
    input {
      position: absolute;
      opacity: 0%;
    }
    span {
      position: absolute;
      top: calc(var(--spacing) * -1);
      left: 0px;
      display: flex;
      height: calc(var(--spacing) * 6);
      width: calc(var(--spacing) * 6);
      align-items: center;
      justify-content: center;
      border-radius: calc(infinity * 1px);
      background-color: var(--color-dark);
      transition-property: all;
      transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
      transition-duration: var(--tw-duration, var(--default-transition-duration));
      --tw-duration: 300ms;
      transition-duration: 300ms;
      &:where(.dark, .dark *) {
        background-color: var(--color-white);
      }
    }
    input:checked + label {
      span {
        @media (width >= 64rem) {
          left: calc(var(--spacing) * 4);
        }
      }
    }
  }
  .btn {
    display: inline-block;
    border-radius: 0.25rem;
    border-style: var(--tw-border-style);
    border-width: 1px;
    border-color: transparent;
    padding-inline: calc(var(--spacing) * 5);
    padding-block: calc(var(--spacing) * 2);
    --tw-font-weight: var(--font-weight-semibold);
    font-weight: var(--font-weight-semibold);
    transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
    transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
    transition-duration: var(--tw-duration, var(--default-transition-duration));
  }
  .btn-sm {
    border-radius: var(--radius-sm);
    padding-inline: calc(var(--spacing) * 4);
    padding-block: calc(var(--spacing) * 1.5);
    font-size: var(--text-sm);
    line-height: var(--tw-leading, var(--text-sm--line-height));
  }
  .btn-primary {
    border-color: var(--color-primary);
    background-color: var(--color-primary);
    color: var(--color-white);
    &:where(.dark, .dark *) {
      border-color: var(--color-darkmode-primary);
    }
    &:where(.dark, .dark *) {
      background-color: var(--color-darkmode-primary);
    }
    &:where(.dark, .dark *) {
      color: var(--color-text-dark);
    }
  }
  .btn-outline-primary {
    border-color: var(--color-dark);
    background-color: transparent;
    color: var(--color-text-dark);
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-dark);
      }
    }
    &:hover {
      @media (hover: hover) {
        color: var(--color-white);
      }
    }
    &:where(.dark, .dark *) {
      border-color: var(--color-darkmode-primary);
    }
    &:where(.dark, .dark *) {
      color: var(--color-white);
    }
    &:where(.dark, .dark *) {
      &:hover {
        @media (hover: hover) {
          background-color: var(--color-darkmode-primary);
        }
      }
    }
    &:where(.dark, .dark *) {
      &:hover {
        @media (hover: hover) {
          color: var(--color-text-dark);
        }
      }
    }
  }
}
.search-wrapper {
  position: relative;
  z-index: 1;
}
.search-wrapper svg {
  display: inline-block;
  background-color: transparent;
}
.search-wrapper-header {
  padding: 14px;
  position: relative;
}
.search-wrapper-header input {
  border: 1px solid #ddd;
  width: 100%;
  border-radius: 4px;
  height: 52px;
  padding: 0 15px 0 40px;
  transition: 0.25s;
}
.search-wrapper-header input:focus {
  border-color: var(--color-primary);
  box-shadow: none;
  outline: none;
}
.search-wrapper-header label {
  position: absolute;
  left: 28px;
  top: calc(50% - 13px);
}
.search-wrapper-header label .search-reset {
  display: none;
  transition: 0.1s;
}
.search-wrapper-header label .search-reset:hover {
  cursor: pointer;
  color: #fb5c5c;
}
.search-result-empty {
  display: block;
  text-align: center;
  padding: 32px 0;
  cursor: text;
  user-select: none;
}
.search-result mark {
  padding: 0;
  border-radius: 2px;
}
.search-result:not(:empty) + .search-result-empty {
  display: none;
}
.search-not-found {
  text-align: center;
}
.search-not-found svg {
  margin-bottom: 16px;
}
.search-not-found p {
  margin-bottom: 0;
}
.search-result-item {
  position: relative;
  display: block;
  padding: 16px;
  border-radius: 4px;
  border: 1px solid #eee;
  background-color: #fff;
  transition: 0s;
  margin-bottom: 4px;
  display: flex;
  align-items: flex-start;
}
.search-result-item div:empty, .search-result-item .search-result-item-description:empty {
  display: none;
}
.search-result-item-image {
  flex-shrink: 0;
}
.search-result-item-image:empty {
  display: none;
}
.search-result-item-body {
  flex-grow: 1;
}
.search-result-item > div > img {
  border-radius: 4px;
  max-height: 400px;
  width: 100%;
  object-fit: cover;
}
.search-page .search-result-item > div > img {
  object-fit: cover;
  max-height: 250px;
  width: 100%;
}
.search-result-item:focus, .search-result-item.search-item-selected, .search-result-item:hover {
  background-color: var(--color-primary);
}
.search-result-item:focus *, .search-result-item.search-item-selected *, .search-result-item:hover * {
  color: white;
}
.search-result-item:focus mark, .search-result-item.search-item-selected mark, .search-result-item:hover mark {
  background-color: #fef08a;
  color: #060606;
}
.search-result-item [data-result-item] u {
  color: var(--color-primary);
}
.search-result-item .hidden {
  display: none;
}
.search-result-group-title {
  padding: 0 12px;
  display: inline-block;
  margin-bottom: 5px;
  margin-top: 15px;
  font-size: 18px;
}
.search-result-item-title {
  transition: 0s;
  font-size: 18px;
  color: black;
  margin-bottom: 0;
  line-height: 1.35;
  font-weight: bold;
}
.search-result-item-title::before {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  top: 0;
  z-index: 10;
  content: "";
}
.search-result-item-content {
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
  margin: 6px 0;
}
.search-result-item-description {
  font-size: 90%;
  margin-top: 6px;
  margin-bottom: 4px;
}
.search-result-item-content:empty {
  display: none;
}
.search-result-item-taxonomies {
  display: flex;
  flex-wrap: wrap;
  font-size: 13px;
  align-items: center;
}
.search-result-item-taxonomies > div {
  margin-right: 12px;
  color: #999;
}
.search-result-item-taxonomies > div svg {
  margin-right: 4px;
}
.search-wrapper-footer {
  color: #999;
  font-size: 12px;
  padding: 8px 14px;
  user-select: none;
  line-height: 1;
  display: flex;
  align-items: center;
}
.search-wrapper-footer kbd {
  color: #777;
  background-color: #eee;
  font-size: 12px;
  border-radius: 3px;
  margin-right: 3px;
  padding: 2px 4px;
  line-height: 1;
  text-align: center;
  display: inline-block;
}
.search-wrapper-footer span:not(:last-child) {
  margin-right: 16px;
}
.search-wrapper-footer span:last-child {
  margin-left: auto;
}
.search-wrapper-footer .search-result-info:empty {
  display: none;
}
.search-wrapper-footer .search-result-info {
  margin-left: -3px;
}
.search-wrapper-footer .search-result-info em {
  color: black;
  font-style: normal;
  padding: 0 3px;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}
.search-modal {
  position: fixed;
  height: 100%;
  width: 100%;
  inset: 0;
  z-index: 9999;
  opacity: 0;
  visibility: hidden;
}
.search-modal.show {
  opacity: 1;
  visibility: visible;
}
.search-modal-overlay {
  position: fixed;
  height: 100%;
  width: 100%;
  top: 0;
  left: 0;
  background-color: rgba(0, 0, 0, 0.5);
}
.search-modal .search-wrapper {
  width: 660px;
  max-width: 96%;
  margin: 100px auto;
  border-radius: 4px;
  background-color: white;
}
.search-modal .search-wrapper-body {
  max-height: calc(100vh - 350px);
  padding: 14px;
  overflow-y: auto;
  background-color: #f5f6f7;
  box-shadow: inset 0 2px 18px #ddd;
  border-radius: 4px;
}
.search-modal .search-result-group:first-child .search-result-group-title:not(:empty) {
  margin-top: -15px;
}
.search-modal .search-result-item a > div {
  margin-right: 16px;
}
.search-modal .search-result-item-image {
  margin-right: 15px;
}
.search-modal .search-result-item-image img {
  width: 100px;
  height: 100px;
  object-fit: cover;
}
@media (max-width: 576px) {
  .search-modal .search-result-item-image img {
    width: 60px;
    height: 60px;
  }
  .search-wrapper-footer {
    display: none;
  }
}
.dark .search-modal .search-wrapper {
  background-color: #1c1c1c;
}
.dark .search-modal .search-wrapper-header input {
  color: #fff;
  background-color: #222222;
  border-color: #535353;
}
.dark .search-modal .search-wrapper-header input:focus {
  border-color: #fff;
}
.dark .search-modal .search-wrapper-body {
  background-color: #222222;
  box-shadow: none;
}
.dark .search-modal .search-result-item {
  border-color: #3e3e3e;
  background-color: #1c1c1c;
}
.dark .search-modal .search-result-item:focus, .dark .search-modal .search-result-item.search-item-selected, .dark .search-modal .search-result-item:hover {
  background-color: #060606;
}
.dark .search-modal .search-result-item .search-result-item-title {
  color: #fff;
}
.dark .search-wrapper-footer kbd {
  background-color: #3e3e3e;
  color: #ccc;
}
.dark .search-wrapper-footer .search-result-info em {
  color: #fff;
}
.search-page .search-wrapper {
  padding: 100px 0;
}
.search-page .search-wrapper-header, .search-page .search-wrapper-footer {
  width: 660px;
  max-width: 96%;
  margin: 0 auto;
}
.search-page .search-wrapper-footer {
  padding-top: 0;
  padding-bottom: 0;
  margin-bottom: 60px;
}
.search-page .search-wrapper-body {
  padding: 0 16px;
}
.search-page .search-result-group {
  display: flex;
  flex-wrap: wrap;
}
.search-page .search-result-item {
  margin-right: -15px;
  margin-left: -15px;
}
.search-page .search-result-group > p, .search-page .search-result-item {
  padding-right: 15px !important;
  padding-left: 15px !important;
}
.search-page .search-result-group > p {
  width: 100%;
}
.search-page .search-result-item {
  flex: 0 0 auto;
  width: calc(100% - (4 * 4px));
  display: block;
  padding-top: 15px !important;
  padding-bottom: 15px !important;
  margin: 0 8px 16px 8px;
}
.search-page .search-result-item .search-result-item-image {
  margin-bottom: 10px;
}
.search-page .search-result-group-title {
  font-size: 22px;
  font-weight: bold;
}
.search-page .search-result-info {
  display: block;
  text-align: center;
}
.search-page .search-wrapper-header input {
  padding: 0 20px;
}
@media (min-width: 576px) {
  .search-page .search-result-item {
    width: calc(50% - (4 * 4px));
  }
}
@media (max-width: 576px) {
  .search-wrapper .search-wrapper-footer span:not(.search-result-info) {
    display: none;
  }
}
@media (min-width: 768px) {
  .search-page .search-result-item {
    width: calc(33.3333333333% - (4 * 4px));
  }
}
@media (min-width: 992px) {
  .search-page .search-result-item {
    width: calc(25% - (4 * 4px));
  }
}
.dark .search-page .search-wrapper-header input {
  color: #fff;
  background-color: #222222;
  border-color: #535353;
}
.dark .search-page .search-wrapper-header input:focus {
  border-color: #fff;
}
.dark .search-page .search-result-item {
  border-color: #3e3e3e;
  background-color: #1c1c1c;
}
.dark .search-page .search-result-item:focus, .dark .search-page .search-result-item.search-item-selected, .dark .search-page .search-result-item:hover {
  background-color: #060606;
}
.dark .search-page .search-result-item-title {
  color: #fff;
}
.share-link {
  border-radius: 0.25rem;
  transition: 25ms ease-out;
  height: 2.5em;
  width: 2.5em;
  line-height: 2.5em;
  text-align: center;
  font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
  text-decoration: none;
  color: #fff;
  margin: 0.5em;
  display: inline-block;
  vertical-align: middle;
  cursor: pointer;
}
.share-icon {
  fill: #fff;
  stroke: none;
  display: block;
  height: 100%;
}
.share-icon svg {
  width: 1em;
  height: 100%;
  margin: auto;
}
.share-pinterest {
  background-color: #bd081c;
}
.share-pinterest:hover {
  background-color: #8c0615;
}
.share-facebook {
  background-color: #3b5998;
}
.share-facebook:hover {
  background-color: #2d4373;
}
.share-tumblr {
  background-color: #35465c;
}
.share-tumblr:hover {
  background-color: #222d3c;
}
.share-reddit {
  background-color: #5f99cf;
}
.share-reddit:hover {
  background-color: #3a80c1;
}
.share-linkedin {
  background-color: #0077b5;
}
.share-linkedin:hover {
  background-color: #046293;
}
.share-vk {
  background-color: #507299;
}
.share-vk:hover {
  background-color: #43648c;
}
.share-x {
  background-color: #000;
}
.share-x:hover {
  background-color: #000;
}
.share-email {
  background-color: #777777;
}
.share-email:hover {
  background-color: #5e5e5e;
}
.share-whatsapp {
  background-color: #25d366;
}
.share-whatsapp:hover {
  background-color: #1da851;
}
.share-telegram {
  background-color: #54a9eb;
}
.share-telegram:hover {
  background-color: #4b97d1;
}
.share-copy {
  background-color: #28a745;
}
.share-copy:hover {
  background-color: #218838;
}
.share-fediverse {
  background-color: #6364ff;
}
.share-fediverse:hover {
  background-color: #4b4ccf;
}
.fediverse-share {
  position: relative;
  display: inline-block;
}
.fediverse-input-wrapper {
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  margin-top: 8px;
  background: #fff;
  border: 1px solid #ccc;
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
  padding: 8px;
  display: none;
  z-index: 10;
  white-space: nowrap;
}
.dark .fediverse-input-wrapper {
  background: #2d2d2d;
  border-color: #444;
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.5);
}
.fediverse-input {
  width: 200px;
  padding: 6px 8px;
  border: 1px solid #ccc;
  font-size: 14px;
  margin-right: 8px;
}
.fediverse-input:focus {
  outline: none;
  border-color: #4b4ccf;
}
.fediverse-check-button {
  padding: 7px 12px;
  background-color: #4b4ccf;
  color: #fff;
  border: none;
  cursor: pointer;
  font-size: 14px;
}
.fediverse-check-button:hover {
  background-color: #4b4ccf;
}
.img {
  max-width: 100%;
  height: auto;
}
.gallery {
  display: flex;
  flex-wrap: wrap;
  margin-left: -10px;
  margin-right: -10px;
}
.gallery .gallery-item {
  margin: 0 10px;
  margin-bottom: 20px;
  overflow: hidden;
  max-width: calc(100% - 20px);
}
.gallery .gallery-item img {
  user-select: none;
  width: 100%;
  vertical-align: middle;
  transition: 0.3s;
}
.gallery.zoomable .gallery-item:hover img {
  transform: scale(1.05);
  cursor: zoom-in;
}
.gallery::after {
  content: "";
  flex-grow: 99999;
  min-width: calc(100vw / 3);
}
@media (max-width: 460px) {
  .gallery {
    flex-direction: column;
  }
  .gallery .gallery-item {
    width: calc(100% - 20px) !important;
  }
}
.gallery-slider .swiper-slide img {
  width: 100%;
}
.gallery-slider .swiper-button-prev, .gallery-slider .swiper-button-next {
  color: white;
  opacity: 0;
  transition: 0.3s;
}
.gallery-slider:hover .swiper-button-prev, .gallery-slider:hover .swiper-button-next {
  opacity: 1;
}
.gallery-slider:hover .swiper-button-prev {
  left: 30px;
}
.gallery-slider:hover .swiper-button-next {
  right: 30px;
}
.img {
  max-width: 100%;
  height: auto;
}
.img-light {
  display: initial;
}
.img-dark {
  display: none;
}
.dark .img-light {
  display: none;
}
.dark .img-dark {
  display: initial;
}
.content img {
  max-width: 100%;
  margin-bottom: 1.5rem;
  height: auto;
  display: inline-block;
}
.content img.glightbox {
  cursor: pointer;
}
.content img.img-center {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.content img.img-left {
  display: block;
  margin-left: 0;
  margin-right: auto;
}
.content img.img-right {
  display: block;
  margin-left: auto;
  margin-right: 0;
}
.content img.img-float-left {
  float: left;
  margin-right: 1.5rem;
}
.content img.img-float-right {
  float: right;
  margin-left: 1.5rem;
}
.content figure {
  display: inline-block;
  margin-bottom: 1.5rem;
}
.content figure img {
  margin-bottom: 0.7rem;
}
.content figure.img-center {
  display: block;
  text-align: center;
}
.content figure.img-left {
  display: block;
  text-align: left;
}
.content figure.img-right {
  display: block;
  text-align: right;
}
.content figure.img-float-left {
  float: left;
  margin-right: 1.5rem;
}
.content figure.img-float-right {
  float: right;
  margin-left: 1.5rem;
}
.table-of-content {
  margin: 1rem 0 1.5rem;
}
.table-of-content summary {
  font-size: 18px;
  color: #fff;
  background-color: #555;
  padding: 5px 20px;
  margin-bottom: 0 !important;
}
.table-of-content ul li:before {
  display: none;
}
#TableOfContents {
  padding: 10px;
  background-color: #f7f7f7;
}
#TableOfContents li, #TableOfContents a {
  color: #333 !important;
}
#TableOfContents a {
  text-decoration: none;
}
#TableOfContents a:hover {
  text-decoration: underline;
}
.content .table-of-content ul li, .content .table-of-content ol li {
  margin-bottom: 6px !important;
}
.dark #TableOfContents {
  background-color: #333;
}
.dark #TableOfContents li, .dark #TableOfContents a {
  color: #fff !important;
}
.tab-nav {
  list-style: none;
  padding: 0;
  margin: 0 !important;
  display: flex;
  border-bottom: 1px solid #aaa;
  overflow-x: auto;
}
.tab-nav::-webkit-scrollbar {
  width: 2px;
}
.tab-nav-item {
  padding: 0.5rem 1rem !important;
  cursor: pointer;
  opacity: 0.8;
  margin: 0 !important;
  white-space: nowrap;
}
.tab-nav-item::before {
  display: none !important;
}
.tab-nav-item.active {
  border-bottom: 3px solid #aaa;
  opacity: 1;
}
.tab-content .tab-content-panel {
  display: none;
  padding: 1rem;
}
.tab-content .tab-content-panel p {
  margin-bottom: 0 !important;
}
.tab-content .tab-content-panel.active {
  display: block;
}
.accordion {
  border: 1px solid #ccc;
}
.accordion-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1rem;
  font-size: 1.1rem;
  width: 100%;
  font-weight: bold;
  text-align: left;
  cursor: pointer;
}
.accordion-icon {
  width: 0.78em;
  height: 0.78em;
  transform: rotate(-90deg);
  transition: transform 0.2s ease;
}
.accordion-content {
  max-height: 0;
  overflow: hidden;
  padding: 0 1rem;
}
.accordion.active .accordion-icon {
  transform: rotate(0deg);
}
.accordion.active .accordion-content {
  max-height: max-content;
}
.modal {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 40;
  display: none;
  height: 100%;
  width: 100%;
  overflow: auto;
}
.modal-overlay {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 40;
  display: none;
  height: 100%;
  width: 100%;
  background-color: rgba(0, 0, 0, 0.4);
}
.modal-content {
  position: relative;
  top: 50%;
  z-index: 50;
  transform: translateY(-50%);
  background-color: #fff;
  border-radius: 0.5rem;
  padding: 2rem;
  max-width: 90%;
  margin: 0 auto;
}
.modal-close {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  height: 2rem;
  width: 2rem;
  background-color: #f2f2f2;
  color: #000;
  border-radius: 50%;
  text-align: center;
  line-height: 2rem;
}
.notice {
  margin-bottom: 1.5rem;
  border: 1px solid;
  padding: 1.5rem;
  border-color: currentColor;
}
.notice-head {
  display: flex;
  align-items: center;
}
.notice-head svg {
  margin-right: 0.75rem;
}
.notice-head p {
  font-size: 1.25rem;
  font-weight: 600;
  color: #1f2937;
  margin: 0;
  line-height: 1;
}
.notice-body {
  margin-top: 0.75rem;
}
.notice-body p {
  margin: 0;
}
.notice.note {
  color: #293df2;
  background-color: rgba(41, 61, 242, 0.15);
}
.notice.abstract {
  color: #0ca68c;
  background-color: rgba(12, 166, 140, 0.15);
}
.notice.info {
  color: #09c3ed;
  background-color: rgba(9, 195, 237, 0.15);
}
.notice.todo {
  color: #8d05a8;
  background-color: rgba(141, 5, 168, 0.15);
}
.notice.tip {
  color: #19cfb0;
  background-color: rgba(25, 207, 176, 0.15);
}
.notice.success {
  color: #04d904;
  background-color: rgba(4, 217, 4, 0.15);
}
.notice.question {
  color: #e38902;
  background-color: rgba(227, 137, 2, 0.15);
}
.notice.warning {
  color: #e38902;
  background-color: rgba(227, 137, 2, 0.15);
}
.notice.failure {
  color: #e31a00;
  background-color: rgba(227, 26, 0, 0.15);
}
.notice.danger {
  color: #e31a00;
  background-color: rgba(227, 26, 0, 0.15);
}
.notice.bug {
  color: #e31a00;
  background-color: rgba(227, 26, 0, 0.15);
}
.notice.example {
  color: #b83acf;
  background-color: rgba(184, 54, 207, 0.15);
}
.notice.quote {
  color: #918e91;
  background-color: rgba(145, 142, 145, 0.15);
}
.dark .notice-head p {
  color: #d1d5db;
}
.table-of-content {
  overflow: hidden;
  border-radius: 0.25rem;
}
.share-icons .share-link {
  height: calc(var(--spacing) * 9);
  width: calc(var(--spacing) * 9);
  border-radius: 0.25rem;
  background-color: var(--color-primary);
  --tw-leading: calc(var(--spacing) * 9);
  line-height: calc(var(--spacing) * 9);
  &:hover {
    @media (hover: hover) {
      background-color: var(--color-primary);
    }
  }
  &:where(.dark, .dark *) {
    background-color: var(--color-darkmode-primary);
  }
  &:where(.dark, .dark *) {
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-darkmode-primary);
      }
    }
  }
}
.share-icons .share-icon svg:where(.dark, .dark *) {
  fill: var(--color-darkmode-light);
}
.fediverse-input-wrapper {
  border-radius: 0.25rem;
  background-color: var(--color-body);
  &:where(.dark, .dark *) {
    background-color: var(--color-darkmode-body);
  }
  input {
    border-radius: 0.25rem;
    &:focus {
      border-color: var(--color-primary);
    }
    &:focus {
      --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
      box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
    }
  }
  button {
    border-radius: 0.25rem;
    background-color: var(--color-primary);
    color: var(--color-light);
    &:hover {
      @media (hover: hover) {
        background-color: var(--color-primary);
      }
    }
    &:where(.dark, .dark *) {
      background-color: var(--color-darkmode-primary);
    }
    &:where(.dark, .dark *) {
      color: var(--color-darkmode-light);
    }
    &:where(.dark, .dark *) {
      &:hover {
        @media (hover: hover) {
          background-color: var(--color-darkmode-primary);
        }
      }
    }
  }
}
.notice {
  border-radius: var(--radius-lg);
}
.tab {
  overflow: hidden;
  border-radius: var(--radius-lg);
  border-style: var(--tw-border-style);
  border-width: 1px;
  border-color: var(--color-border);
  &:where(.dark, .dark *) {
    border-color: var(--color-darkmode-border);
  }
}
.tab-nav {
  border-color: var(--color-border);
  background-color: var(--color-light);
  padding-left: calc(var(--spacing) * 4);
  &:where(.dark, .dark *) {
    border-color: var(--color-darkmode-border);
  }
  &:where(.dark, .dark *) {
    background-color: var(--color-darkmode-light);
  }
}
.tab-nav-item {
  padding-inline: calc(var(--spacing) * 8);
  font-size: var(--text-lg) !important;
  line-height: var(--tw-leading, var(--text-lg--line-height)) !important;
  color: var(--color-text-dark);
  &:where(.dark, .dark *) {
    color: var(--color-darkmode-text-dark);
  }
}
.tab-nav-item.active {
  border-color: var(--color-dark);
  &:where(.dark, .dark *) {
    border-color: var(--color-darkmode-primary);
  }
}
.tab-content-panel {
  padding-inline: calc(var(--spacing) * 4);
  padding-top: 0px !important;
}
.accordion {
  margin-bottom: calc(var(--spacing) * 6);
  overflow: hidden;
  border-radius: var(--radius-lg);
  border-style: var(--tw-border-style);
  border-width: 1px;
  border-color: var(--color-border);
  background-color: var(--color-light);
  &:where(.dark, .dark *) {
    border-color: var(--color-darkmode-border);
  }
  &:where(.dark, .dark *) {
    background-color: var(--color-darkmode-light);
  }
}
.accordion-header {
  color: var(--color-text-dark);
  &:where(.dark, .dark *) {
    color: var(--color-darkmode-text-dark);
  }
}
.cookie-box {
  border-radius: var(--radius-lg) !important;
}
.gallery-slider {
  margin-left: 0px !important;
}
@layer components {
  a, .btn, .nav-link, .social-icons li a {
    transition: all 0.2s ease-in-out;
  }
  body {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
  }
  .bg-body {
    transition: transform 0.2s ease, box-shadow 0.2s ease;
  }
  .md\:col-6 .bg-body:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 24px -8px var(--gray-a8);
  }
  .card-tags {
    margin-bottom: 1rem;
    display: flex;
    align-items: center;
    gap: 0.25rem;
    flex-wrap: wrap;
    font-size: 0.8125rem;
    color: var(--fg-muted);
  }
  .content p {
    margin-bottom: 1.25em;
  }
  .lg\:col-4 a {
    transition: color 0.15s ease, background-color 0.15s ease;
  }
  footer {
    padding-top: 3rem;
    padding-bottom: 2rem;
  }
  .hero-svg, .feature-svg {
    width: 100%;
    height: auto;
    max-width: 100%;
  }
  @keyframes float {
    0%, 100% {
      transform: translateY(0);
    }
    50% {
      transform: translateY(-10px);
    }
  }
  @keyframes pulse-soft {
    0%, 100% {
      opacity: 1;
    }
    50% {
      opacity: 0.6;
    }
  }
  @keyframes draw-line {
    from {
      stroke-dashoffset: 200;
    }
    to {
      stroke-dashoffset: 0;
    }
  }
  @keyframes spin-slow {
    from {
      transform: rotate(0deg);
    }
    to {
      transform: rotate(360deg);
    }
  }
  .animate-float {
    animation: float 4s ease-in-out infinite;
  }
  .animate-float-delayed {
    animation: float 4s ease-in-out 1s infinite;
  }
  .animate-pulse-soft {
    animation: pulse-soft 3s ease-in-out infinite;
  }
  .animate-draw {
    stroke-dasharray: 200;
    animation: draw-line 2s ease-in-out infinite alternate;
  }
  .animate-spin-slow {
    animation: spin-slow 20s linear infinite;
  }
  .content table {
    font-size: 0.875rem;
  }
  .content th {
    font-weight: 600;
    text-transform: uppercase;
    font-size: 0.75rem;
    letter-spacing: 0.05em;
    color: var(--fg-strong);
  }
  .content :is(th, td) {
    border-color: var(--line) !important;
  }
  .content tbody tr:nth-child(even) {
    background: var(--surface-subtle);
  }
}
@layer base {
  input:where([type='text']),input:where(:not([type])),input:where([type='email']),input:where([type='url']),input:where([type='password']),input:where([type='number']),input:where([type='date']),input:where([type='datetime-local']),input:where([type='month']),input:where([type='search']),input:where([type='tel']),input:where([type='time']),input:where([type='week']),select:where([multiple]),textarea,select {
    appearance: none;
    background-color: #fff;
    border-color: oklch(55.1% 0.027 264.364);
    border-width: 1px;
    border-radius: 0px;
    padding-top: 0.5rem;
    padding-right: 0.75rem;
    padding-bottom: 0.5rem;
    padding-left: 0.75rem;
    font-size: 1rem;
    line-height: 1.5rem;
    --tw-shadow: 0 0 #0000;
    &:focus {
      outline: 2px solid transparent;
      outline-offset: 2px;
      --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);
      --tw-ring-offset-width: 0px;
      --tw-ring-offset-color: #fff;
      --tw-ring-color: oklch(54.6% 0.245 262.881);
      --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
      --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
      box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
      border-color: oklch(54.6% 0.245 262.881);
    }
  }
  input::placeholder,textarea::placeholder {
    color: oklch(55.1% 0.027 264.364);
    opacity: 1;
  }
  ::-webkit-datetime-edit-fields-wrapper {
    padding: 0;
  }
  ::-webkit-date-and-time-value {
    min-height: 1.5em;
    text-align: inherit;
  }
  ::-webkit-datetime-edit {
    display: inline-flex;
  }
  ::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field {
    padding-top: 0;
    padding-bottom: 0;
  }
  select {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='oklch(55.1%25 0.027 264.364)' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");
    background-position: right 0.5rem center;
    background-repeat: no-repeat;
    background-size: 1.5em 1.5em;
    padding-right: 2.5rem;
    print-color-adjust: exact;
  }
  select:where([multiple]),select:where([size]:not([size="1"])) {
    background-image: initial;
    background-position: initial;
    background-repeat: unset;
    background-size: initial;
    padding-right: 0.75rem;
    print-color-adjust: unset;
  }
  input:where([type='checkbox']),input:where([type='radio']) {
    appearance: none;
    padding: 0;
    print-color-adjust: exact;
    display: inline-block;
    vertical-align: middle;
    background-origin: border-box;
    user-select: none;
    flex-shrink: 0;
    height: 1rem;
    width: 1rem;
    color: oklch(54.6% 0.245 262.881);
    background-color: #fff;
    border-color: oklch(55.1% 0.027 264.364);
    border-width: 1px;
    --tw-shadow: 0 0 #0000;
  }
  input:where([type='checkbox']) {
    border-radius: 0px;
  }
  input:where([type='radio']) {
    border-radius: 100%;
  }
  input:where([type='checkbox']):focus,input:where([type='radio']):focus {
    outline: 2px solid transparent;
    outline-offset: 2px;
    --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);
    --tw-ring-offset-width: 2px;
    --tw-ring-offset-color: #fff;
    --tw-ring-color: oklch(54.6% 0.245 262.881);
    --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
    --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
    box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  input:where([type='checkbox']):checked,input:where([type='radio']):checked {
    border-color: transparent;
    background-color: currentColor;
    background-size: 100% 100%;
    background-position: center;
    background-repeat: no-repeat;
  }
  input:where([type='checkbox']):checked {
    background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e");
    @media (forced-colors: active) {
      appearance: auto;
    }
  }
  input:where([type='radio']):checked {
    background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e");
    @media (forced-colors: active) {
      appearance: auto;
    }
  }
  input:where([type='checkbox']):checked:hover,input:where([type='checkbox']):checked:focus,input:where([type='radio']):checked:hover,input:where([type='radio']):checked:focus {
    border-color: transparent;
    background-color: currentColor;
  }
  input:where([type='checkbox']):indeterminate {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");
    border-color: transparent;
    background-color: currentColor;
    background-size: 100% 100%;
    background-position: center;
    background-repeat: no-repeat;
    @media (forced-colors: active) {
      appearance: auto;
    }
  }
  input:where([type='checkbox']):indeterminate:hover,input:where([type='checkbox']):indeterminate:focus {
    border-color: transparent;
    background-color: currentColor;
  }
  input:where([type='file']) {
    background: unset;
    border-color: inherit;
    border-width: 0;
    border-radius: 0;
    padding: 0;
    font-size: unset;
    line-height: inherit;
  }
  input:where([type='file']):focus {
    outline: 1px solid ButtonText;
    outline: 1px auto -webkit-focus-ring-color;
  }
  @media (min-width: 40rem) {
    :root {
      --container-max-width: 40rem;
    }
  }
  @media (min-width: 48rem) {
    :root {
      --container-max-width: 48rem;
    }
  }
  @media (min-width: 64rem) {
    :root {
      --container-max-width: 64rem;
    }
  }
  @media (min-width: 80rem) {
    :root {
      --container-max-width: 80rem;
    }
  }
  @media (min-width: 96rem) {
    :root {
      --container-max-width: 96rem;
    }
  }
}
@property --tw-font-weight {
  syntax: "*";
  inherits: false;
}
@property --tw-translate-x {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-translate-y {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-translate-z {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-rotate-x {
  syntax: "*";
  inherits: false;
}
@property --tw-rotate-y {
  syntax: "*";
  inherits: false;
}
@property --tw-rotate-z {
  syntax: "*";
  inherits: false;
}
@property --tw-skew-x {
  syntax: "*";
  inherits: false;
}
@property --tw-skew-y {
  syntax: "*";
  inherits: false;
}
@property --tw-space-y-reverse {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-space-x-reverse {
  syntax: "*";
  inherits: false;
  initial-value: 0;
}
@property --tw-border-style {
  syntax: "*";
  inherits: false;
  initial-value: solid;
}
@property --tw-gradient-position {
  syntax: "*";
  inherits: false;
}
@property --tw-gradient-from {
  syntax: "<color>";
  inherits: false;
  initial-value: #0000;
}
@property --tw-gradient-via {
  syntax: "<color>";
  inherits: false;
  initial-value: #0000;
}
@property --tw-gradient-to {
  syntax: "<color>";
  inherits: false;
  initial-value: #0000;
}
@property --tw-gradient-stops {
  syntax: "*";
  inherits: false;
}
@property --tw-gradient-via-stops {
  syntax: "*";
  inherits: false;
}
@property --tw-gradient-from-position {
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 0%;
}
@property --tw-gradient-via-position {
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 50%;
}
@property --tw-gradient-to-position {
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-leading {
  syntax: "*";
  inherits: false;
}
@property --tw-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-inset-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-inset-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-inset-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-ring-color {
  syntax: "*";
  inherits: false;
}
@property --tw-ring-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-inset-ring-color {
  syntax: "*";
  inherits: false;
}
@property --tw-inset-ring-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-ring-inset {
  syntax: "*";
  inherits: false;
}
@property --tw-ring-offset-width {
  syntax: "<length>";
  inherits: false;
  initial-value: 0px;
}
@property --tw-ring-offset-color {
  syntax: "*";
  inherits: false;
  initial-value: #fff;
}
@property --tw-ring-offset-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-outline-style {
  syntax: "*";
  inherits: false;
  initial-value: solid;
}
@property --tw-blur {
  syntax: "*";
  inherits: false;
}
@property --tw-brightness {
  syntax: "*";
  inherits: false;
}
@property --tw-contrast {
  syntax: "*";
  inherits: false;
}
@property --tw-grayscale {
  syntax: "*";
  inherits: false;
}
@property --tw-hue-rotate {
  syntax: "*";
  inherits: false;
}
@property --tw-invert {
  syntax: "*";
  inherits: false;
}
@property --tw-opacity {
  syntax: "*";
  inherits: false;
}
@property --tw-saturate {
  syntax: "*";
  inherits: false;
}
@property --tw-sepia {
  syntax: "*";
  inherits: false;
}
@property --tw-drop-shadow {
  syntax: "*";
  inherits: false;
}
@property --tw-drop-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-drop-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-drop-shadow-size {
  syntax: "*";
  inherits: false;
}
@property --tw-duration {
  syntax: "*";
  inherits: false;
}
@property --tw-ease {
  syntax: "*";
  inherits: false;
}
@property --tw-content {
  syntax: "*";
  initial-value: "";
  inherits: false;
}
@layer properties {
  @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
    *, ::before, ::after, ::backdrop {
      --tw-font-weight: initial;
      --tw-translate-x: 0;
      --tw-translate-y: 0;
      --tw-translate-z: 0;
      --tw-rotate-x: initial;
      --tw-rotate-y: initial;
      --tw-rotate-z: initial;
      --tw-skew-x: initial;
      --tw-skew-y: initial;
      --tw-space-y-reverse: 0;
      --tw-space-x-reverse: 0;
      --tw-border-style: solid;
      --tw-gradient-position: initial;
      --tw-gradient-from: #0000;
      --tw-gradient-via: #0000;
      --tw-gradient-to: #0000;
      --tw-gradient-stops: initial;
      --tw-gradient-via-stops: initial;
      --tw-gradient-from-position: 0%;
      --tw-gradient-via-position: 50%;
      --tw-gradient-to-position: 100%;
      --tw-leading: initial;
      --tw-shadow: 0 0 #0000;
      --tw-shadow-color: initial;
      --tw-shadow-alpha: 100%;
      --tw-inset-shadow: 0 0 #0000;
      --tw-inset-shadow-color: initial;
      --tw-inset-shadow-alpha: 100%;
      --tw-ring-color: initial;
      --tw-ring-shadow: 0 0 #0000;
      --tw-inset-ring-color: initial;
      --tw-inset-ring-shadow: 0 0 #0000;
      --tw-ring-inset: initial;
      --tw-ring-offset-width: 0px;
      --tw-ring-offset-color: #fff;
      --tw-ring-offset-shadow: 0 0 #0000;
      --tw-outline-style: solid;
      --tw-blur: initial;
      --tw-brightness: initial;
      --tw-contrast: initial;
      --tw-grayscale: initial;
      --tw-hue-rotate: initial;
      --tw-invert: initial;
      --tw-opacity: initial;
      --tw-saturate: initial;
      --tw-sepia: initial;
      --tw-drop-shadow: initial;
      --tw-drop-shadow-color: initial;
      --tw-drop-shadow-alpha: 100%;
      --tw-drop-shadow-size: initial;
      --tw-duration: initial;
      --tw-ease: initial;
      --tw-content: "";
    }
  }
}

/**
 * Auto-generated by scripts/gen_radix_tokens.py from @radix-ui/colors.
 * Do not edit by hand: run `npm run gen:tokens`.
 *
 * Radix step semantics
 *   1  app background          7  element border
 *   2  subtle background       8  hovered border / focus ring
 *   3  element background      9  solid accent
 *   4  hovered element        10  hovered solid accent
 *   5  active element         11  low-contrast text (AA)
 *   6  subtle border          12  high-contrast text
 */

:root {
  color-scheme: light;

  --gray-1: #ffffff;
  --gray-2: #f9f9fb;
  --gray-3: #f0f0f3;
  --gray-4: #e8e8ec;
  --gray-5: #e0e1e6;
  --gray-6: #d9d9e0;
  --gray-7: #cdced6;
  --gray-8: #b9bbc6;
  --gray-9: #8b8d98;
  --gray-10: #80838d;
  --gray-11: #60646c;
  --gray-12: #0a0c10;
  --gray-a1: #00005503;
  --gray-a2: #00005506;
  --gray-a3: #0000330f;
  --gray-a4: #00002d17;
  --gray-a5: #0009321f;
  --gray-a6: #00002f26;
  --gray-a7: #00062e32;
  --gray-a8: #00083046;
  --gray-a9: #00051d74;
  --gray-a10: #00071b7f;
  --gray-a11: #0007149f;
  --gray-a12: #000509e3;

  --accent-1: #fdfdff;
  --accent-2: #f8f8ff;
  --accent-3: #f0f1fe;
  --accent-4: #e6e7ff;
  --accent-5: #dadcff;
  --accent-6: #cbcdff;
  --accent-7: #b8baf8;
  --accent-8: #9b9ef0;
  --accent-9: #4242fa;
  --accent-10: #271ded;
  --accent-11: #4242fa;
  --accent-12: #2c0b8e;
  --accent-a1: #0000ff02;
  --accent-a2: #0000ff07;
  --accent-a3: #0011ee0f;
  --accent-a4: #000bff19;
  --accent-a5: #000eff25;
  --accent-a6: #000aff34;
  --accent-a7: #0008e647;
  --accent-a8: #0008d964;
  --accent-a9: #0000c0a4;
  --accent-a10: #0000b6ae;
  --accent-a11: #0600abac;
  --accent-a12: #000246d8;

  --warm-1: #fffcfe;
  --warm-2: #fef7fb;
  --warm-3: #fee9f5;
  --warm-4: #fbdcef;
  --warm-5: #f6cee7;
  --warm-6: #efbfdd;
  --warm-7: #e7acd0;
  --warm-8: #dd93c2;
  --warm-9: #d6409f;
  --warm-10: #cf3897;
  --warm-11: #c2298a;
  --warm-12: #651249;

  /* Decorative, measured off the reference - see DECORATIVE. */
  --sky-from: #a0d4ee;
  --sky-to: #7dc4e8;
  --sky-subtle: #c5eafc;
  --code-bg: #e8f1fc;

  /* Semantic aliases: change these, not the call sites. */
  --surface: var(--gray-1);
  --surface-subtle: var(--gray-2);
  --surface-raised: var(--gray-3);
  --line: var(--gray-6);
  --line-strong: var(--gray-7);
  --fg-muted: var(--gray-11);
  --fg-strong: var(--gray-12);
  --accent-solid: var(--accent-9);
  --accent-solid-hover: var(--accent-10);
  --accent-text: var(--accent-11);
  --focus-ring: var(--accent-8);
  --on-accent: #ffffff;
}

.dark {
  color-scheme: dark;

  --gray-1: #0d0f12;
  --gray-2: #18191b;
  --gray-3: #212225;
  --gray-4: #272a2d;
  --gray-5: #2e3135;
  --gray-6: #363a3f;
  --gray-7: #43484e;
  --gray-8: #5a6169;
  --gray-9: #696e77;
  --gray-10: #777b84;
  --gray-11: #b0b4ba;
  --gray-12: #e3e6e8;
  --gray-a1: #00000000;
  --gray-a2: #d8f4f609;
  --gray-a3: #ddeaf814;
  --gray-a4: #d3edf81d;
  --gray-a5: #d9edfe25;
  --gray-a6: #d6ebfd30;
  --gray-a7: #d9edff40;
  --gray-a8: #d9edff5d;
  --gray-a9: #dfebfd6d;
  --gray-a10: #e5edfd7b;
  --gray-a11: #f1f7feb5;
  --gray-a12: #fcfdffef;

  --accent-1: #13131e;
  --accent-2: #171625;
  --accent-3: #202248;
  --accent-4: #262a65;
  --accent-5: #303374;
  --accent-6: #3d3e82;
  --accent-7: #4a4a95;
  --accent-8: #5958b1;
  --accent-9: #4242fa;
  --accent-10: #5a5afb;
  --accent-11: #809fff;
  --accent-12: #e6b2ff;
  --accent-a1: #3636fe0e;
  --accent-a2: #564bf916;
  --accent-a3: #525bff3b;
  --accent-a4: #4d58ff5a;
  --accent-a5: #5b62fd6b;
  --accent-a6: #6d6ffd7a;
  --accent-a7: #7777fe8e;
  --accent-a8: #7b7afeac;
  --accent-a9: #6a6afed4;
  --accent-a10: #7d79ffdc;
  --accent-a11: #b1a9ff;
  --accent-a12: #e1e0fffe;

  --warm-1: #191117;
  --warm-2: #21121d;
  --warm-3: #37172f;
  --warm-4: #4b143d;
  --warm-5: #591c47;
  --warm-6: #692955;
  --warm-7: #833869;
  --warm-8: #a84885;
  --warm-9: #d6409f;
  --warm-10: #de51a8;
  --warm-11: #ff8dcc;
  --warm-12: #fdd1ea;

  /* Decorative, measured off the reference - see DECORATIVE. */
  --sky-from: #111b27;
  --sky-to: #265973;
  --sky-subtle: #182939;
  --code-bg: #1a1f23;

  /* Semantic aliases: change these, not the call sites. */
  --surface: var(--gray-1);
  --surface-subtle: var(--gray-2);
  --surface-raised: var(--gray-3);
  --line: var(--gray-6);
  --line-strong: var(--gray-7);
  --fg-muted: var(--gray-11);
  --fg-strong: var(--gray-12);
  --accent-solid: var(--accent-9);
  --accent-solid-hover: var(--accent-10);
  --accent-text: var(--accent-11);
  --focus-ring: var(--accent-8);
  --on-accent: #ffffff;
}
/* ================================================================
   Able-SG visual system
   Palette: Radix Colors (slate grey + iris accent) with the six steps a
   reader actually looks at pinned to values measured off joshwcomeau.com -
   page background, body text, solid accent and section-heading colour. See
   ANCHORS in scripts/gen_radix_tokens.py for the measurements and contrast.
   Every colour below is a token from assets/css/radix-tokens.css, which
   redefines the same names under .dark - so light and dark are one
   stylesheet, not two that drift apart.
   ================================================================ */

/* ========== TYPOGRAPHIC BASE ==========
   Measured off joshwcomeau.com at 1440px on 2026-09-05: one typeface, 18px
   body on a 27px line (1.5), and tracking left alone. hugoplate ships
   letter-spacing: -0.01em on the body, which tightens 18px text that is
   already tight and reads as cramped beside the reference. */
body {
  letter-spacing: normal;
}

/* ========== Smooth scrolling for in-page links ========== */
html {
  scroll-behavior: smooth;
  scroll-padding-top: 70px;
}

/* ========== Focus visibility ==========
   Keyboard focus was whatever the browser defaulted to and disappeared
   entirely on the elements that set outline: none. */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
  border-radius: 4px;
}

/* ========== Motion ==========
   Everything here is decoration; readers who ask for less motion get none. */
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* ========== Draft post badge ========== */
.draft-badge {
  display: inline-block;
  padding: 2px 10px;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--on-accent);
  background: var(--accent-9);
  border-radius: 4px;
  vertical-align: middle;
}

/* ========== READING COLUMN ==========
   Body copy was running 1076px wide at 16px - about 135 characters per line,
   nearly double the 45-75 range readers can track. Cap the measure and centre
   it; full-bleed children (images, code, tables) opt back out below. 43rem is
   the reference's measured 686px column, and a fixed rem beats 68ch because
   ch drifts with whatever font actually loads. The root font-size is 18px
   (html { font-size: var(--text-base) }), so 37.5rem is 675px - measured at
   76 characters per line with Figtree at 18px, which is the top of the range
   readers track without losing the return sweep. */

.content {
  max-width: 37.5rem;
  margin-left: auto;
  margin-right: auto;
}

.content > figure,
.content > .my-gallery,
.content > table,
.content > .table-of-content,
.content > details {
  max-width: none;
}

/* Paragraph rhythm: 18px on 27px, the reference's measure of a readable
   block. The theme's 1.8 spread the same words over a third more height. */
.content p,
.content li {
  line-height: 1.5;
}

/* ========== HEADING HIERARCHY - ranked by size, not by hue ==========
   Every level used to get its own colour (h1 indigo, h2 cyan->violet gradient,
   h3 violet, h4 blue, h5 teal, h6 slate) while the sizes sat only 1.2x apart,
   so the page read as noisy rather than structured - and three of those hues
   failed WCAG AA. Size and weight carry the rank now. Violet was kept on h3 for
   a while, but the About page renders h3-class and h2-class headings side by
   side at the same visual rank, and two colours there read as a mistake rather
   than a hierarchy.

   The reference does colour exactly one level - h2, in a deep indigo - and
   nothing else, so section headings are the one place a hue carries rank here
   too. Sizes and line-heights below are its measured values: h1 40/60, h2
   32/48, h3 24/36, each on a 1.5 line. The root font-size here is 18px, not
   16, so the rem numbers are those pixels divided by 18. */

.content h1,
.content .h1 {
  font-size: 2.222rem;
  line-height: 1.5;
  font-weight: 500;
  letter-spacing: normal;
  color: var(--fg-strong);
}

.content h2,
.content .h2 {
  font-size: 1.778rem;
  line-height: 1.5;
  font-weight: 700;
  letter-spacing: normal;
  color: var(--accent-12);
  margin-top: 1.5em;
}

.content h3,
.content .h3 {
  font-size: 1.333rem;
  line-height: 1.5;
  font-weight: 700;
  letter-spacing: normal;
  color: var(--fg-strong);
  margin-top: 1.5em;
}

.content h4,
.content .h4 {
  font-size: 1.111rem;
  line-height: 1.4;
  font-weight: 600;
  color: var(--fg-strong);
}

/* h5/h6 sit at body size, so case and tracking - not another colour - tell
   them apart from the paragraphs around them. */
.content h5,
.content .h5 {
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--fg-strong);
}

.content h6,
.content .h6 {
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--fg-muted);
}

/* Anchor links beside headings, revealed on hover - the "#" affordance that
   makes a long post linkable without cluttering it. */
.content :is(h2, h3, h4) > a[href^="#"]::before {
  content: "#";
  position: absolute;
  margin-left: -1em;
  color: var(--accent-8);
  opacity: 0;
  transition: opacity 0.15s ease;
}

.content :is(h2, h3, h4):hover > a[href^="#"]::before {
  opacity: 1;
}

/* Non-content heading defaults */
.h2[class] {
  color: var(--fg-strong);
}

/* ========== BOLD & ITALIC ==========
   Bold was violet and italic cyan (3.68:1 - below AA), which put two more
   competing colours inside every paragraph. Weight alone then failed the other
   way round: in dark mode --fg-strong sits a hair above the body colour, so a
   bolded sentence stopped reading as a highlight at all. Bold now takes the
   accent text token, which is the contrast-tuned step of the scale: 7.5:1 on
   the dark page and 6.2:1 on the light one, both clear of AA. Italic stays
   uncoloured so the two never compete. */

.content strong,
.content b {
  color: var(--accent-text);
  font-weight: 700;
}

/* A bolded link keeps the link colour: two accents on one word is noise. */
.content a strong,
.content a b,
.content h1 strong, .content h2 strong, .content h3 strong,
.content h4 strong, .content h5 strong, .content h6 strong {
  color: inherit;
}

.content em,
.content i {
  color: inherit;
  font-style: italic;
}

/* ========== Modern bullet points ========== */

.content ul {
  list-style: none !important;
  padding-left: 0 !important;
}

.content ul > li {
  position: relative;
  padding-left: 1.5em;
}

.content ul > li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.62em;
  width: 7px;
  height: 7px;
  border-radius: 2px;
  background: var(--accent-9);
  transform: rotate(45deg);
}

.content ol > li::marker {
  color: var(--accent-text);
  font-weight: 700;
}

/* ========== Table of Contents ========== */

details.table-of-content {
  background: var(--surface-subtle) !important;
  border: 1px solid var(--line) !important;
  border-radius: 12px !important;
  padding: 1.25rem 1.5rem !important;
  margin-bottom: 2rem;
  position: relative;
}

details.table-of-content summary {
  font-weight: 600;
  color: var(--fg-strong);
  /* The table-of-contents module hard-codes #fff on #555 here and #f7f7f7 /
     #333 on the panel below. Those are the only colours it ships, so they have
     to be answered declaration for declaration. */
  background-color: transparent;
  padding: 0;
  margin-bottom: 0.75rem !important;
  cursor: pointer;
  font-size: 0.95rem;
}

details.table-of-content nav#TableOfContents,
details.table-of-content #TableOfContents {
  background-color: transparent;
  padding: 0;
}

/* Nuke ALL underlines in TOC - target every possible selector */
details.table-of-content a,
details.table-of-content a:link,
details.table-of-content a:visited,
details.table-of-content a:hover,
details.table-of-content a:focus,
details.table-of-content a:active,
details.table-of-content nav a,
#TableOfContents a,
#TableOfContents a:link,
#TableOfContents a:visited,
#TableOfContents a:hover,
#TableOfContents a:active,
.content details.table-of-content a,
.content #TableOfContents a,
.content nav#TableOfContents a,
.prose details.table-of-content a,
.prose #TableOfContents a {
  text-decoration: none !important;
  text-decoration-line: none !important;
  text-underline-offset: unset !important;
  border-bottom: none !important;
  border: none !important;
  box-shadow: none !important;
}

/* h2-level TOC links carry the page's own heading colour. */
#TableOfContents > ol > li > a,
details.table-of-content nav > ol > li > a,
.content #TableOfContents > ol > li > a {
  color: var(--fg-strong) !important;
  font-weight: 600;
  transition: color 0.15s ease;
}

#TableOfContents > ol > li > a:hover,
details.table-of-content nav > ol > li > a:hover,
.content #TableOfContents > ol > li > a:hover {
  color: var(--accent-text) !important;
}

/* h3-level TOC links: the single accent, one step quieter. */
#TableOfContents > ol > li > ol > li > a,
details.table-of-content nav > ol > li > ol > li > a,
.content #TableOfContents > ol > li > ol > li > a {
  color: var(--fg-muted) !important;
  -webkit-text-fill-color: currentColor !important;
  background: none !important;
  font-weight: 400;
  transition: color 0.15s ease;
}

#TableOfContents > ol > li > ol > li > a:hover,
details.table-of-content nav > ol > li > ol > li > a:hover,
.content #TableOfContents > ol > li > ol > li > a:hover {
  color: var(--accent-text) !important;
}

details.table-of-content ol,
details.table-of-content ul {
  padding-left: 1.25rem !important;
}

details.table-of-content li {
  padding: 0.2rem 0;
}

details.table-of-content ul {
  list-style: disc !important;
}

details.table-of-content ul > li::before {
  display: none !important;
}

/* ========== Content links ==========
   Measured on the reference: a prose link is the body text colour at weight
   500 with a solid underline - the accent appears only on hover. Colouring
   every link indigo, as this did, put a second hue in every paragraph and
   left the page reading as a link list; the underline alone is the
   affordance, and it survives being read at a glance. */

.content a:not(.btn):not(.tag-pill) {
  color: var(--fg-strong);
  font-weight: 500;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
  text-decoration-color: var(--accent-a8);
  border-bottom: none;
  transition: color 0.2s ease, text-decoration-color 0.2s ease;
}

.content a:not(.btn):not(.tag-pill):hover {
  color: var(--accent-text);
  text-decoration-color: var(--accent-9);
}

/* ========== Code blocks ==========
   Deliberately dark in both themes: the syntax highlighting is tuned for a
   dark ground, and a code block reads as an inset object either way. */
.content pre:not(.mermaid) {
  background: #1e1e2e !important;
  border: 1px solid #313244;
  border-radius: 10px !important;
  padding: 1.25rem !important;
}

.content pre:not(.mermaid) code {
  color: #cdd6f4 !important;
  background: transparent !important;
}

/* ========== Mermaid diagrams ==========
   Diagrams default to left-to-right (see _partials/mermaid-js.html), which
   makes them wider than the 37.5rem reading measure. They scale down to the
   column rather than scrolling sideways, and whatever ends up too small to read
   opens in the full-screen viewer. */
.content pre.mermaid {
  background: transparent !important;
  border: 1px solid var(--line) !important;
  border-radius: 10px !important;
  padding: 1.25rem !important;
  text-align: center;
}

/* Width is fixed to the frame, height runs free: the viewBox ratio decides how
   tall the diagram ends up, so the whole of it is on screen at once. Pinning
   the natural width instead put a wide LR flowchart in a 675px scroller where
   only its left third was ever visible - the diagram read as truncated. Sizing
   is also written on inline by _partials/mermaid-js.html, because mermaid
   leaves its own `max-width: <natural>px` on the svg, so nothing here may be
   !important. */
.content pre.mermaid svg {
  width: 100%;
  max-width: 100%;
  height: auto;
}

.content > .mermaid-wrap {
  position: relative;
}

.mermaid-expand {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.9rem;
  height: 1.9rem;
  padding: 0;
  line-height: 1;
  color: var(--fg-muted);
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 6px;
  cursor: pointer;
  opacity: 0.65;
  transition: opacity 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

/* Dimmed until wanted, but never hidden: a control nobody can see is a control
   nobody uses, and on touch there is no hover to reveal it. */
.mermaid-wrap:hover .mermaid-expand,
.mermaid-expand:focus-visible {
  opacity: 1;
}

.mermaid-expand:hover {
  color: var(--accent-text);
  border-color: var(--accent-8);
}

/* Icon-only controls. The click handler reads event.target.closest("button"),
   so the glyph must not be the target. */
.mermaid-expand svg,
.mermaid-viewer-controls svg {
  width: 1rem;
  height: 1rem;
  pointer-events: none;
}

/* ---------- Full-screen diagram viewer ---------- */

dialog.mermaid-viewer {
  width: 100vw;
  max-width: 100vw;
  height: 100vh;
  max-height: 100vh;
  padding: 0;
  border: none;
  background: var(--surface);
  color: var(--fg-strong);
  overflow: hidden;
}

dialog.mermaid-viewer::backdrop {
  background: rgb(0 0 0 / 0.6);
}

.mermaid-viewer-canvas {
  position: absolute;
  inset: 0;
  overflow: hidden;
  /* Pinch and drag arrive as pointer events instead of native scrolling. */
  touch-action: none;
  cursor: grab;
}

.mermaid-viewer-canvas.is-dragging {
  cursor: grabbing;
}

.mermaid-viewer-stage {
  position: absolute;
  top: 0;
  left: 0;
  transform-origin: 0 0;
}

/* No `will-change: transform` and no `height: auto`. The first promotes the
   stage to a composited layer that is rasterised once and then stretched, which
   is what made zoomed-in labels blurry; the second fights the explicit pixel
   size the viewer writes on the svg to zoom it. */
.mermaid-viewer-stage svg {
  max-width: none !important;
}

.mermaid-viewer-controls {
  position: absolute;
  top: 1rem;
  right: 1rem;
  display: flex;
  gap: 0.5rem;
  z-index: 2;
}

.mermaid-viewer-controls button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  padding: 0;
  line-height: 1;
  color: var(--fg-strong);
  background: var(--surface-raised);
  border: 1px solid var(--line);
  border-radius: 6px;
  cursor: pointer;
}

.mermaid-viewer-controls button:hover {
  border-color: var(--accent-8);
  color: var(--accent-text);
}

.mermaid-viewer-hint {
  position: absolute;
  bottom: 1rem;
  left: 50%;
  transform: translateX(-50%);
  font-size: 0.75rem;
  color: var(--fg-muted);
}

/* Inline code - the reference's pale blue plate with the body text colour on
   it, not accent-on-accent: an indigo word inside an indigo-tinted box is the
   lowest-contrast thing on the page. --code-bg is measured, see the generator. */
.content :not(pre) > code {
  color: var(--fg-strong) !important;
  background: var(--code-bg) !important;
  padding: 0.15em 0.4em;
  border-radius: 4px;
  font-size: 0.9em;
}

/* ========== Horizontal rules ========== */

.content hr {
  border: none !important;
  border-top: 1px solid var(--line) !important;
  height: 0;
  margin: 3rem 0;
}

/* ========== Selection ========== */

::selection {
  background-color: var(--accent-a5);
  color: inherit;
}

/* ========== Frosted glass navbar - fixed + smart hide (bypasses Tailwind) ========== */

.header {
  position: fixed !important;
  top: 0;
  left: 0;
  right: 0;
  width: 100%;
  backdrop-filter: blur(14px);
  background: color-mix(in srgb, var(--surface) 88%, transparent) !important;
  border-bottom: 1px solid var(--line);
  padding-top: 0.5rem !important;
  padding-bottom: 0.5rem !important;
  transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.3s ease;
  z-index: 50;
}

body {
  padding-top: 52px;
}

.header--hidden {
  transform: translateY(-100%);
}

.header--visible {
  transform: translateY(0);
  box-shadow: 0 2px 16px var(--gray-a4);
}

/* ========== Post cards ========== */

.post-card {
  border-radius: 14px;
  transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}

.post-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 28px -12px var(--gray-a8);
  border-color: var(--accent-8) !important;
}

/* ========== Tag cloud ========== */

/* Same card as the reading rail: surface, hairline and 14px radius. It used
   Tailwind's `rounded` (4px) next to 14px post cards, which is what made it
   read as a detached box rather than part of the page. */
.tag-cloud {
  background: var(--surface-subtle) !important;
  border: 1px solid var(--line);
  border-radius: 14px;
}

.tag-pill {
  display: inline-block;
  margin: 2px;
  padding: 3px 10px;
  border-radius: 20px;
  font-family: "Outfit", sans-serif;
  font-size: 0.72rem;
  letter-spacing: 0.02em;
  text-decoration: none !important;
  border: 1px solid transparent !important;
  transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
  cursor: pointer;
}

/* Four popularity bands, separated by colour and weight only. Sizing them up
   by band broke long hyphenated tags across lines in a ~230px rail, so every
   pill keeps the base size and the ramp runs grey -> quiet accent -> solid
   accent instead. */
.tag-pill.tag-t1 {
  background: var(--gray-a2);
  color: var(--fg-muted);
  font-weight: 400;
}

.tag-pill.tag-t2 {
  background: var(--gray-a4);
  color: var(--fg-strong);
  font-weight: 500;
}

.tag-pill.tag-t3 {
  background: var(--accent-a4);
  color: var(--accent-text);
  font-weight: 600;
  border-color: var(--accent-a6) !important;
}

.tag-pill.tag-t4 {
  background: var(--accent-solid);
  color: var(--on-accent);
  font-weight: 700;
  border-color: var(--accent-solid) !important;
}

.tag-pill.tag-detail {
  background: var(--accent-a3);
  color: var(--accent-text);
  font-weight: 500;
}

.tag-pill:hover {
  background: var(--accent-a5);
  color: var(--accent-12);
  border-color: var(--accent-a8) !important;
}

/* The generic hover lightens the pill, which would invert the solid top band
   into something quieter than its resting state. */
.tag-pill.tag-t4:hover {
  background: var(--accent-10);
  color: var(--on-accent);
  border-color: var(--accent-10) !important;
}

.tag-pill.active {
  background: var(--accent-solid) !important;
  color: var(--on-accent) !important;
  font-weight: 600;
  outline: 2px solid var(--accent-a8);
  outline-offset: 2px;
}

.tag-count {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 7px;
  border-radius: 10px;
  font-size: 0.72rem;
  font-weight: 600;
  background: var(--accent-a4);
  color: var(--accent-text);
}

/* ========== Hero ========== */

.hero-gradient {
  background: linear-gradient(to bottom, var(--sky-subtle), var(--surface));
}

/* Page titles are solid --fg-strong. The gradient fill that used to live here
   painted the glyphs with the background (-webkit-text-fill-color:
   transparent), which is two hues of noise on the loudest element and nothing
   at all for forced-colors mode to substitute. */
/* The title is the first line of the article, not a banner over it: same
   left edge as the paragraph it introduces. Below the reading-rail breakpoint
   it also keeps the measure, because there the body is centred in the column. */
.post-header {
  max-width: 37.5rem;
  margin-left: auto;
  margin-right: auto;
}

/* Once the rail appears the title band spans the article and the rail, so a
   long title uses the full width instead of wrapping in a 600px slot with an
   empty column beside it. */
@media (min-width: 1024px) {
  .post-header {
    max-width: none;
    margin-left: 0;
    margin-right: 0;
  }
}

/* The size has to land on the h1 itself: .hero-title is an inline span, and
   an inline box cannot shrink the block line box its parent sets. The h1 was
   still 60px/75px underneath, which is what spread the two title lines. */
.post-header h1,
.hero-title {
  font-size: 2.222rem;
  line-height: 1.25;
  font-weight: 500;
  letter-spacing: normal;
  color: var(--fg-strong);
}

.post-header h1 {
  padding: 0;
  margin-inline: 0;
}

.hero-glow-btn {
  display: inline-block;
  background: var(--accent-solid);
  color: var(--on-accent);
  padding: 0.75rem 2rem;
  border-radius: 8px;
  font-weight: 600;
  transition: background-color 0.25s ease, transform 0.25s ease, box-shadow 0.25s ease;
  box-shadow: 0 6px 20px -8px var(--accent-a8);
}

.hero-glow-btn:hover {
  background: var(--accent-solid-hover);
  box-shadow: 0 10px 28px -8px var(--accent-a8);
  transform: translateY(-2px);
}

/* The reference's page is white but never flat: a sky sits behind the reading
   column. Ours has no such margin to show it in, so the hero band carries it -
   a soft sky fading into the page, which is the one place colour belongs
   before the reader reaches the words. */
.hero-band {
  background: linear-gradient(to bottom, var(--sky-subtle), var(--surface));
  border-bottom: none;
}

.hero-subtitle {
  color: var(--fg-muted);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  font-size: 0.85rem;
  font-weight: 600;
}

/* The portrait is a cut-out, so the disc behind it is painted here. Filling it
   with flat --surface punched a hole in the hero band - pure white inside a sky
   gradient in light mode, near-black in dark, where it also swallowed the dark
   suit. The disc now carries a soft tint of the band itself and fades back into
   the page, so it reads as a halo rather than a plate.

   The ring steps down the accent scale, 6 to 8 instead of 8 to 10: at full
   strength the indigo was the most saturated thing on the page and drew the eye
   before the face did. */
.profile-ring {
  /* A single soft tone a step off the band, not a gradient of its own: whatever
     the band is doing behind the circle, the disc stays just beside it. Light
     mixes the sky toward the page white; dark mixes it toward --gray-4, the
     other way, so the disc still sits a hair *above* the band and the dark suit
     separates from it instead of dissolving. */
  --avatar-disc: color-mix(in srgb, var(--sky-subtle) 35%, var(--surface));
  border: 3px solid transparent;
  background-image: linear-gradient(var(--avatar-disc), var(--avatar-disc)),
    linear-gradient(135deg, var(--accent-6), var(--accent-8));
  background-origin: border-box;
  background-clip: padding-box, border-box;
  border-radius: 50%;
}

.dark .profile-ring {
  --avatar-disc: color-mix(in srgb, var(--sky-subtle) 70%, var(--gray-4));
}

.credential-chip {
  display: inline-block;
  padding: 4px 12px;
  border-radius: 16px;
  font-size: 0.8rem;
  font-weight: 500;
  background: var(--accent-a3);
  color: var(--accent-text);
  border: 1px solid var(--accent-a6);
  transition: background-color 0.2s ease, transform 0.2s ease;
}

.credential-chip:hover {
  background: var(--accent-a5);
  transform: translateY(-1px);
}

/* ========== Buttons ========== */

.btn-primary,
a.btn-primary {
  background: var(--accent-solid) !important;
  border: 1px solid transparent !important;
  color: var(--on-accent) !important;
  transition: background-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

.btn-primary:hover,
a.btn-primary:hover {
  background: var(--accent-solid-hover) !important;
  box-shadow: 0 8px 24px -10px var(--accent-a8);
  transform: translateY(-2px);
}

.btn-outline-primary {
  border-color: var(--accent-a8) !important;
  color: var(--accent-text) !important;
  transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.btn-outline-primary:hover {
  background: var(--accent-solid) !important;
  color: var(--on-accent) !important;
  border-color: transparent !important;
  transform: translateY(-2px);
}

/* ========== Blockquote ========== */

.content blockquote {
  border-left: 3px solid var(--accent-9) !important;
  background: var(--accent-a2) !important;
  border-radius: 0 8px 8px 0;
  color: var(--fg-strong);
}

/* ========== Card tags ========== */

.card-tags a.tag {
  color: var(--fg-muted) !important;
  text-decoration: none !important;
  border: none !important;
  transition: color 0.15s ease;
  display: inline-block;
  min-height: 24px;
  padding: 2px 4px;
  line-height: 20px;
}

.card-tags a.tag:hover {
  color: var(--accent-text) !important;
}

.card-tags i {
  color: var(--accent-text);
}

.tag-more {
  white-space: nowrap;
}

/* ========== Social icons ========== */

.social-icons li a {
  background: var(--accent-solid) !important;
  color: var(--on-accent) !important;
  transition: background-color 0.2s ease, transform 0.2s ease;
}

.social-icons li a:hover {
  background: var(--accent-solid-hover) !important;
  transform: translateY(-2px);
}

/* ========== Post tags list on single post ========== */

.post-tags {
  list-style: none !important;
  padding-left: 0 !important;
}

.post-tags li::before {
  display: none !important;
}

/* ========== Gallery (My Growth Journey) - compact, preserve ratio ========== */

.gallery {
  display: block !important;
  text-align: center !important;
  font-size: 0 !important;
  padding: 0.5rem 0 !important;
  width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

.gallery::after {
  display: none !important;
}

.gallery .gallery-item,
.gallery.zoomable .gallery-item {
  display: inline-block !important;
  width: fit-content !important;
  margin: 4px !important;
  padding: 0 !important;
  vertical-align: middle !important;
  font-size: 1rem;
  overflow: visible !important;
}

.gallery .gallery-item a {
  display: block !important;
  width: fit-content !important;
  line-height: 0;
}

.gallery .gallery-item img {
  height: 100px !important;
  width: auto !important;
  max-width: calc(50vw - 24px) !important;
  object-fit: contain !important;
  border-radius: 6px;
  border: 1px solid var(--line);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

@media (min-width: 640px) {
  .gallery .gallery-item img {
    height: 120px !important;
    max-width: none !important;
  }
}

@media (min-width: 768px) {
  .gallery .gallery-item img {
    height: 150px !important;
  }
}

@media (min-width: 1024px) {
  .gallery .gallery-item img {
    height: 180px !important;
  }
}

.gallery .gallery-item img:hover {
  transform: scale(1.04);
  box-shadow: 0 6px 20px -8px var(--gray-a8);
}

/* ========== Section headings on list/about pages ==========
   These used to be cyan->violet gradient text, which computed to
   color: rgba(0,0,0,0) and vanished under forced-colors. */

.section-sm h2 {
  color: var(--fg-strong) !important;
  font-weight: 700 !important;
}

.section-sm p {
  color: var(--fg-strong);
}

.section-sm li {
  color: var(--fg-strong);
}

.section-sm .fa-check {
  color: var(--accent-text) !important;
}

.content img {
  margin-top: 0.25rem;
  margin-bottom: 0.25rem;
}

/* ========== Post & card metadata ==========
   Cards carried no date, author or reading time, so a reader could not tell a
   2023 post from a 2026 one - the fastest way to lose trust on AI topics. */

.card-meta,
.post-byline {
  color: var(--fg-muted);
  font-weight: 500;
}

/* ========== Post list ==========
   The homepage is the archive now, so the list itself has to read well:
   a hairline between entries, nothing else. */

.post-list-item + .post-list-item {
  border-top: 1px solid var(--line);
  padding-top: 2rem;
  margin-top: 2rem;
}

/* ========== Theme switcher (light / system / dark) ========== */

.theme-switcher {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 3px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--surface-subtle);
}

.theme-switcher button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border-radius: 999px;
  color: var(--fg-muted);
  background: transparent;
  transition: background-color 0.15s ease, color 0.15s ease;
}

.theme-switcher button:hover {
  color: var(--fg-strong);
  background: var(--gray-a3);
}

.theme-switcher button[aria-checked="true"] {
  color: var(--accent-text);
  background: var(--accent-a4);
}

/* ========== Forced-colors fallback ==========
   Nothing paints text with a background any more, so there is no disappearing
   heading to rescue. What still needs help is state carried by colour alone. */

@media (forced-colors: active) {
  .theme-switcher button[aria-checked="true"] {
    outline: 2px solid CanvasText;
  }
}

/* ========== Icon fonts are not italic ==========
   Font Awesome ships in <i>, which the UA styles italic, and the icon fonts
   carry no italic face - so the browser synthesises one and skews the glyph.
   On the About page that turned the LinkedIn mark standing in for the "in" of
   "Exclusive info" into a leaning smudge. */

i[class*="fa-"],
i.fa,
i.fab,
i.fas,
i.far {
  font-style: normal;
}

/* ========== About: prose + rail ==========
   The page used to be three layouts stacked: a hero on one grid, an article
   whose right column ran out after the QR code, a full-bleed gallery cutting
   the reading column in half, and three alternating bands pasted in from the
   old homepage on a fourth grid. One container and two columns now. */

.about-main .content {
  margin-left: 0;
  max-width: none;
}

.about-rail {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}

@media (min-width: 1024px) {
  .about-rail {
    position: sticky;
    top: 84px;
    align-self: flex-start;
    max-height: calc(100vh - 100px);
    overflow-y: auto;
  }
}

.rail-card {
  background: var(--surface-subtle);
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 1.25rem;
}

.rail-card h3 {
  color: var(--fg-strong);
  font-weight: 600;
}

.rail-qr {
  width: 180px;
  height: auto;
  border-radius: 10px;
  border: 1px solid var(--line);
}

/* The certificates are wide and mismatched; a two-up grid of same-shaped
   boxes reads as one wall of evidence instead of eight ragged strips. */
.journey-rail .gallery {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.5rem;
  padding: 0 !important;
  text-align: left !important;
}

.journey-rail .gallery .gallery-item,
.journey-rail .gallery.zoomable .gallery-item {
  display: block !important;
  width: auto !important;
  margin: 0 !important;
}

.journey-rail .gallery .gallery-item a {
  width: auto !important;
}

.journey-rail .gallery .gallery-item img {
  width: 100% !important;
  height: auto !important;
  max-width: none !important;
  aspect-ratio: 16 / 10;
  object-fit: contain;
  background: var(--surface);
  padding: 4px;
}

/* ========== About: what I write about ========== */

.topic-card {
  height: 100%;
  display: flex;
  flex-direction: column;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 1.5rem;
  transition: border-color 0.25s ease, box-shadow 0.25s ease, transform 0.25s ease;
}

.topic-card:hover {
  border-color: var(--accent-8);
  box-shadow: 0 12px 28px -12px var(--gray-a8);
  transform: translateY(-4px);
}

.topic-card-art {
  width: 100%;
  max-width: 100%;
  height: 280px;
  object-fit: contain;
  margin-bottom: 1.25rem;
}

.topic-card h3 {
  color: var(--fg-strong);
  font-weight: 700;
}

.topic-points {
  list-style: none;
  padding-left: 0;
  margin-top: auto;
}

.topic-points li {
  position: relative;
  padding-left: 1.6rem;
  margin-bottom: 0.6rem;
  font-size: 0.95rem;
  line-height: 1.5;
}

.topic-points i {
  position: absolute;
  left: 0;
  top: 0.3em;
  color: var(--accent-text);
  font-size: 0.85em;
}

/* The body is the flex column the card used to be, so the bullet list still
   sits at the bottom of the card once the art moves beside it. */
.topic-card-body {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-width: 0;
}

/* At tablet width three cards across leave each one a ~200px column - too
   narrow for the art and the bullets both. One card per row, art on one half
   and the text on the other, until lg brings back the three-up grid. */
@media (min-width: 768px) and (max-width: 1023px) {
  .topic-col {
    width: 100%;
    max-width: 100%;
  }
  .topic-card {
    flex-direction: row;
    align-items: center;
    gap: 1.5rem;
  }
  /* Half each, minus its share of the gap, so the two halves plus the gap
     still add up to the card's width instead of overflowing it. */
  .topic-card-art {
    flex: 0 0 calc(50% - 0.75rem);
    width: calc(50% - 0.75rem);
    /* Height-constrained, not width-constrained: at 240px the art drew ~230px
       wide inside a 364px half and the column read as mostly empty. */
    height: 340px;
    margin-bottom: 0;
  }
  .topic-card-body {
    flex: 1 1 0;
  }
  .topic-points {
    margin-top: 0;
  }
}

.topics {
  background: var(--surface-subtle);
  border-block: 1px solid var(--line);
}

/* ========== Post reading rail ========== */

/* Below lg the rail is not a column at all: display:contents dissolves it so
   its two blocks become flex items of the same .row as the article, which lets
   the contents sit above the post and the tags and sharing below it without a
   second copy of the table of contents in the DOM. .row > * does not reach
   them - it is a child combinator on the dissolved element - so they carry the
   gutter padding themselves. */
@media (max-width: 1023px) {
  .post-rail {
    display: contents;
  }
  .post-rail > * {
    box-sizing: border-box;
    width: 100%;
    padding-inline: calc(var(--bs-gutter-x) / 2);
  }
  .post-rail-toc {
    order: -1;
  }
  .post-main {
    order: 0;
  }
  .post-rail-meta {
    order: 1;
  }
}

@media (min-width: 1024px) {
  /* No max-height: a capped rail turns the contents into a second scrollbar
     inside the page, which hides its own tail and makes the reader scroll a
     box to find out what the post contains. The rail runs its full length and
     rails.js pulls the sticky offset negative when it is taller than the
     window, so scrolling walks past the whole list once and then pins it. */
  .post-rail {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    position: sticky;
    top: 84px;
    align-self: flex-start;
  }
  /* Two columns, so the prose starts at the column's edge instead of being
     centred in it - otherwise the measure floats away from the hero title. */
  .post-main .content {
    margin-left: 0;
  }
  .post-rail details.table-of-content {
    width: 100%;
    margin-bottom: 0;
  }
}

.rail-card-title {
  font-size: 1rem;
  font-weight: 600;
  color: var(--fg-strong);
  margin-bottom: 0.75rem;
}

.post-rail .post-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  padding-left: 0;
  margin: 0;
  list-style: none;
}

.post-rail .share-icons {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  padding-left: 0;
  margin: 0;
  list-style: none;
}

/* ========== Page gutters ==========
   The theme gives .container a flat px-4 at every width. Above the lg
   breakpoint the max-width only kicks in at 1280px, so between 1024 and
   1280 the text ran to within 13px of the window edge. Gutters now grow
   with the viewport; above 1280px the centring margins take over. */
@media (min-width: 768px) {
  .container {
    padding-inline: 1.5rem;
  }
}

@media (min-width: 1024px) {
  .container {
    padding-inline: 2.25rem;
  }
}

/* ========== Post card titles ==========
   The card heading inherited the page h4 (35px/44px), which let a long
   title run to four lines and turned the grid into a wall of headlines.
   At 1.2rem every current title fits in two lines, and the clamp holds
   the promise for titles written later. */
.post-card h4 {
  font-size: 1.2rem;
  line-height: 1.35;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* The card title is the one link in the card that matters, so it carries
   the accent rather than the body colour - the date, tags and summary stay
   quiet underneath it. */
.post-card h4 a,
.post-card h4 a:link,
.post-card h4 a:visited {
  color: var(--accent-text);
  transition: color 0.2s ease;
}

.post-card h4 a:hover,
.post-card:hover h4 a {
  color: var(--accent-12);
}

/* ========== Table of contents as a tree ==========
   Nested headings were only indented, so a three-level post read as one
   ragged list. Every level now hangs off a guide line with an elbow into the
   item, which is the shape readers already know from a file tree. The guide
   starts under the summary, so "Table of Contents" reads as the root the
   top-level headings branch from. */
details.table-of-content nav {
  font-size: 0.85rem;
  line-height: 1.45;
}

details.table-of-content nav ol {
  list-style: none !important;
  margin: 0 0 0 0.4rem;
  padding-left: 0.85rem !important;
  border-left: 1px solid var(--line-strong);
}

/* Pull the trunk up under the summary so the tree visibly hangs off its root
   instead of floating below a gap. */
details.table-of-content nav > ol {
  margin-top: -0.55rem;
  padding-top: 0.55rem;
}

details.table-of-content nav ol ol {
  margin-top: 0.15rem;
}

details.table-of-content nav ol > li {
  position: relative;
  padding: 0.15rem 0;
}

details.table-of-content nav ol > li::before {
  content: "";
  position: absolute;
  left: -0.85rem;
  top: 0.85em;
  width: 0.55rem;
  height: 1px;
  background: var(--line-strong);
}

/* The last child's guide line stops at its own elbow instead of running
   past the final item. */
details.table-of-content nav ol > li:last-child::after {
  content: "";
  position: absolute;
  left: calc(-0.85rem - 1px);
  top: calc(0.85em + 1px);
  bottom: 0;
  width: 1px;
  background: var(--surface-subtle);
}

details.table-of-content nav ol ol ol {
  border-left-style: dashed;
}

/* ========== Listing sidebar rail ========== */

/* Below lg the rail stops being a column and drops under the post list, where
   it landed flush against the pagination controls - the tag cloud read as a
   third row of buttons. */
@media (max-width: 1023px) {
  .sidebar-rail {
    margin-top: 3rem;
  }
}

@media (min-width: 1024px) {
  .sidebar-rail {
    position: sticky;
    top: 84px;
    align-self: flex-start;
  }

  /* rails.js pulls this offset negative when the rail is taller than the
     window, so scrolling down walks through the whole list before it pins
     instead of cutting it off at a fixed top offset. */
}

/* ========== Theme-aware images ==========
   Post covers ship as a light original plus a `-dark` variant generated by
   scripts/gen-dark-images.py. Both are in the DOM and both download with the
   page - the inactive one is transparent, not display:none, so it still counts
   as in-viewport for the lazy loader and flipping the theme never waits on a
   fetch. Images with no `-dark` sibling render as a single <img> and skip all
   of this. */

.themed-img {
  position: relative;
  display: block;
}

.themed-img > img {
  display: block;
  width: 100%;
  transition: opacity 0.2s ease;
}

.themed-img > .themed-img-dark {
  position: absolute;
  inset: 0;
  height: 100%;
  /* The light copy keeps whatever margin its context gives it and the wrapper
     collapses to that box; the absolutely positioned copy must not add its own
     on top or it lands a few pixels low. */
  margin: 0;
  opacity: 0;
}

html.dark .themed-img > .themed-img-light {
  opacity: 0;
}

html.dark .themed-img > .themed-img-dark {
  opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
  .themed-img > img {
    transition: none;
  }
}


/* ========== Post card grouping ==========
   posts-card.html groups the cover, date, reading time and tags in
   `.card-media` and the title, summary and button in `.card-body`, so the
   related-posts card can hand each group a column of its own. Everywhere else
   the groups are transparent: `display: contents` drops the wrappers out of the
   layout and `order` restores the reading order the markup used to have -
   cover, title, meta, tags, summary, button. */

.post-card {
  display: flex;
  flex-direction: column;
}

.post-card > .card-media,
.post-card > .card-body {
  display: contents;
}

.post-card .post-card-cover {
  order: 1;
}

.post-card .card-body > h4 {
  order: 2;
}

.post-card .card-media > .card-meta {
  order: 3;
}

.post-card .card-media > .card-tags {
  order: 4;
}

.post-card .card-body > .card-summary {
  order: 5;
}

/* Blockifying the flex items stretched Read More to the full card width, which
   reads as a form button rather than a link out of the card. */
.post-card .card-body > .btn {
  order: 6;
  align-self: flex-start;
}


/* ========== Related posts ==========
   Two related cards sit side by side from lg up, and inside each card the cover
   column faces the text column: picture, date and tags on the left, title and
   summary on the right. Cards without a cover keep the plain block flow.

   The two groups are real boxes here rather than `display: contents`, so each
   column flows on its own and neither is tied to the other's row heights. That
   is what lets the cover be shown whole at its own aspect ratio and the summary
   run unclamped: the meta and the tags under the picture take up the height the
   text column needs, instead of leaving the left column half empty.

   Read More goes: the cover and the title both link to the post already, and
   the button was one more block to balance for nothing.

   The split waits for xl. At lg the two cards are already side by side, so half
   of half a row is a 194px column: the reading time wraps, the tags run to two
   lines and the summary turns into a ribbon. Below xl the card stays stacked. */

@media (min-width: 1280px) {
  .related-posts .post-card:has(.post-card-cover) {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 1.25rem;
    align-items: start;
  }

  .related-posts .post-card:has(.post-card-cover) > .card-media,
  .related-posts .post-card:has(.post-card-cover) > .card-body {
    display: block;
    min-width: 0;
  }

  /* The 3:2 box and the crop belong to the stacked card, where every cover has
     to line up with its neighbour. Alone beside the text the illustration is
     shown whole, so the wide 1.8:1 drawings keep their edges. */
  .related-posts .post-card-cover img,
  .related-posts .post-card-cover .themed-img {
    aspect-ratio: auto !important;
    margin-bottom: 1rem !important;
  }
}

.related-posts .post-card .btn {
  display: none;
}
