/* About page styling */
.about-section {
  margin-bottom: 2rem;
}

.section-header {
  margin-bottom: 1rem;
}

.section-content {
  transition: all 0.3s ease;
}

.section-content.prose {
  margin: 0;
}

.section-content.prose h1,
.section-content.prose h2,
.section-content.prose h3,
.section-content.prose h4,
.section-content.prose h5,
.section-content.prose h6 {
  margin: 0.5rem 0;
}

/* Bar styling for section headers */
.about-section .bar-thin {
  display: block;
  width: 100%;
  height: 1px;
  background-color: var(--foreground);
  margin-top: 0;
  opacity: 0.5;
}

/* Skills grid styling */
.skills-grid {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}

.skill-category h3 {
  color: var(--accent);
  font-weight: 600;
  margin-bottom: 0.5rem;
}

.skill-items {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.skill-item {
  padding-left: 1rem;
  border-left: 2px solid color-mix(in srgb, var(--foreground) 20%, transparent);
}

/* Timeline styling */
.timeline {
  position: relative;
  padding-left: 2rem;
}

.timeline::before {
  content: '';
  position: absolute;
  left: 1rem;
  top: 0;
  bottom: 0;
  width: 2px;
  background: var(--foreground);
}

.timeline-item {
  position: relative;
  margin-bottom: 2rem;
}

.timeline-marker {
  position: absolute;
  left: -1.5rem;
  top: 0.5rem;
  width: 1rem;
  height: 1rem;
  background: var(--foreground);
  border-radius: 50%;
  border: 3px solid var(--background);
}

.timeline-content {
  padding-left: 1rem;
}

.timeline-header {
  margin-bottom: 0.5rem;
}

.timeline-year {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--accent);
  margin-bottom: 0.25rem;
}

.timeline-title {
  font-size: 1.125rem;
  font-weight: 700;
  margin-bottom: 0.25rem;
}

.timeline-subtitle {
  font-size: 1rem;
  font-weight: 500;
  color: color-mix(in srgb, var(--foreground) 80%, transparent);
  margin-bottom: 0.5rem;
}

.timeline-description {
  font-size: 0.875rem;
  line-height: 1.5;
  color: color-mix(in srgb, var(--foreground) 90%, transparent);
} .button-container {
  display: table;
  margin-left: auto;
  margin-right: auto;
}

button,
.button,
a.button {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 8px 18px;
  text-decoration: none;
  text-align: center;
  font: inherit;
  font-weight: bold;
  appearance: none;
  cursor: pointer;
  outline: none;
}

button.outline,
.button.outline,
a.button.outline {
  background: transparent;
  box-shadow: none;
  padding: 8px 18px;
}

button.outline :hover,
.button.outline :hover,
a.button.outline :hover {
  transform: none;
  box-shadow: none;
}

button.link,
.button.link,
a.button.link {
  background: none;
  font-size: var(--font-size);
}

button.small,
.button.small,
a.button.small {
  font-size: calc(var(--font-size) * 0.8);
}

button.wide,
.button.wide,
a.button.wide {
  min-width: 200px;
  padding: 14px 24px;
}

a.button.inline {
  background: none;
  color: var(--accent);
  padding: initial;
  margin: initial;
  border: initial;
  font-weight: initial;
  text-decoration: none;
}

a.button.inline:active,
a.button.inline:hover {
  background: none;
}

a.read-more,
a.read-more:hover,
a.read-more:active {
  display: inline-flex;
  border: none;
  background: none;
  box-shadow: none;
  padding: 0;
  max-width: 100%;
  text-decoration: none;
}
:root {
  --code-border: color-mix(in srgb, var(--foreground) 10%, transparent);
}

pre:not(.chroma) {
  padding: 10px;
}

pre.chroma {
  margin: 0;
  padding: 10px 0;
  color: var(--foreground);
}

pre code {
  color: var(--foreground);
  border: none;
}

code {
  color: var(--accent);
  text-size-adjust: 100%;
  -ms-text-size-adjust: 100%;
  -moz-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}

.highlight {
  position: relative;
  margin: 20px 0;
  border: 1px solid var(--code-border);
}

.highlight pre {
  border: none;
}

.code-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: color-mix(in srgb, var(--foreground) 5%, transparent);
  border-bottom: 1px solid var(--code-border);
  color: var(--comment);
  text-transform:uppercase;
  font-size: calc(var(--font-size) * 0.8);
  padding: 6px 10px;
  line-height: 1;
}

.copy-button {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 3px 8px;
  text-decoration: none;
  text-align: center;
  font-size: 13px;
  font-weight: 500;
  border: 1px solid color-mix(in srgb, var(--accent) 15%, transparent);
  appearance: none;
  cursor: pointer;
  outline: none;
}

.code-title .copy-button {
  z-index: 1;
  background: color-mix(in srgb, var(--foreground) 5%, var(--background));
}

.code-title:hover .copy-button {
  display: inline-block;
}

.code-title .copy-button:hover {
  background: color-mix(in srgb, var(--accent) 10%, var(--background));
}

.collapsable-code {
  position: relative;
  width: 100%;
  margin: 20px 0;
  border: 1px solid var(--accent);

  .highlight {
    margin: 0;
  }
}

.collapsable-code__title {
  display: inline-flex;
  align-items: center;
  flex: 1;
  color: var(--accent);
  padding: 3px 10px;
  font-size: calc(var(--font-size) * 0.9);
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
}

.collapsable-code__language {
  color: var(--accent);
  border: 1px solid var(--accent);
  border-bottom: none;
  text-transform: uppercase;
  padding: 3px 10px;
}

.collapsable-code summary {
  color: var(--accent);
  padding: 0 10px;
  cursor: pointer;
}

.collapsable-code summary:hover {
  background: color-mix(in srgb, var(--accent) 10%, transparent);
}

.collapsable-code pre {
  margin-top: 0;
}

.collapsable-code pre::first-line {
  line-height: 0;
}
/* Custom styles to match src design */

/* Body layout */
body {
  margin: 0;
  padding: 0;
  min-height: 100vh;
}

/* Main content layout */
.main-content {
  flex: auto;
  min-width: 0;
  margin-top: 2rem;
  display: flex;
  flex-direction: column;
  margin-left: 1rem;
  margin-right: 1rem;
}

@media (min-width: 1024px) {
  .main-content {
    margin-left: auto;
    margin-right: auto;
    padding-left: 2rem;
    padding-right: 2rem;
  }
}

/* Typography improvements */
.text {
  color: var(--foreground);
}

/* Hover effects */
.hover\:text:hover {
  color: var(--accent);
}

/* Bar styles for headings */
.bar {
  display: block;
  width: 100%;
  height: 2px;
  background-color: var(--foreground);
  margin-top: 0.5rem;
}

.bar-accent {
  display: block;
  width: 100%;
  height: 2px;
  background-color: var(--foreground);
  margin-top: 0.5rem;
}

.bar-thin {
  display: block;
  width: 100%;
  height: 1px;
  background-color: var(--foreground);
  margin-top: 0.5rem;
}

/* Thinner horizontal rules for markdown --- */
hr {
  border: none;
  height: 0.5px;
  background-color: var(--foreground);
  opacity: 0.5;
  margin: 2rem 0;
}

/* Container styles */
.container {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 1rem;
}

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

/* Wrap and column styles */
.wrap {
  display: flex;
  flex-wrap: wrap;
}

.col-10 {
  flex: 0 0 83.333333%;
  max-width: 83.333333%;
}

.col-offset-1 {
  margin-left: 8.333333%;
}

/* Responsive utilities */
@media (max-width: 768px) {
  .col-10 {
    flex: 0 0 100%;
    max-width: 100%;
  }
  
  .col-offset-1 {
    margin-left: 0;
  }
}

/* Mobile Menu Styles */
.mobile-menu {
  position: relative;
  display: none; /* Hidden by default, shown on mobile */
}

.mobile-menu__trigger {
  background: none;
  border: none;
  cursor: pointer;
  padding: 8px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 40px;
  height: 40px;
}

.hamburger {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  width: 20px;
  height: 16px;
}

.hamburger__line {
  width: 100%;
  height: 2px;
  background-color: var(--foreground);
  transition: all 0.3s ease;
  transform-origin: center;
}

.hamburger__x {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 20px;
  height: 16px;
  color: var(--foreground);
  font-size: 18px;
  font-weight: normal;
}

.mobile-menu__dropdown {
  position: absolute;
  top: 100%;
  right: 0;
  background-color: var(--background);
  border: 1px solid var(--foreground);
  border-radius: 4px;
  min-width: 200px;
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-10px);
  transition: all 0.3s ease;
  z-index: 1000;
}

.mobile-menu__dropdown.open {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.mobile-menu__list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.mobile-menu__list > li {
  margin: 0;
}

.mobile-menu__link {
  display: block;
  padding: 12px 16px;
  color: var(--foreground);
  text-decoration: none;
  transition: background-color 0.2s ease;
  border-bottom: 1px solid rgba(var(--foreground-rgb), 0.1);
}

.mobile-menu__link:hover {
  background-color: rgba(var(--foreground-rgb), 0.05);
  color: var(--accent);
}

.mobile-menu__divider {
  padding: 8px 16px;
}

.mobile-menu__divider hr {
  margin: 0;
  opacity: 0.3;
}

/* Show mobile menu on mobile devices */
@media (max-width: 768px) {
  .header__nav {
    display: none;
  }
  
  .mobile-menu {
    display: block;
  }
}

/* Ensure only the main navigation is visible on desktop */
@media (min-width: 769px) {
  .header__mobile-nav {
    display: none;
  }
}

/* Homepage text justification */
.index-content {
  text-align: justify;
} /* Local font fallbacks for fast loading */
/* These fonts are already installed on most systems and look very similar to IBM Plex */

/* For systems that have IBM Plex fonts installed locally */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local('IBM Plex Sans'), local('IBMPlexSans');
}

@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local('IBM Plex Mono'), local('IBMPlexMono');
}
.footer {
  padding: 40px 0;
  flex-grow: 0;
  opacity: 0.65;
}

.footer__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 0;
  max-width: 100%;
}

.footer a {
  color: inherit;
}

.footer .copyright {
  display: flex;
  flex-flow: row wrap;
  flex: 1;
  align-items: center;
  justify-content: center;
}

.footer .copyright--user {
  margin: auto;
  text-align: center;
}

.footer .copyright > *:first-child:not(:only-child) {
  margin-right: 10px;
}

.footer .copyright span {
  white-space: nowrap;
}

@media (max-width: 900px) {
  .footer__inner {
    flex-direction: column;
  }
}
.header {
  display: flex;
  flex-direction: column;
  position: relative;
  margin-bottom: 0rem;
}

.header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1rem;
}

.header__logo {
  display: flex;
  flex: 1;
}

.header__nav {
  display: flex;
  align-items: center;
  gap: 1rem;
}

.logo-link {
  text-decoration: none;
  color: var(--foreground);
  transition: color 0.2s ease;
}

.logo-link:hover {
  color: var(--accent);
}

.logo-text {
  font-size: 1.25rem;
  font-weight: 600;
  letter-spacing: -0.025em;
}

@media print {
  .header {
    display: none;
  }
}

@media (max-width: 768px) {
  .header__nav {
    display: none;
  }
}
:root {
  --background: #111111;
  --foreground: #ffffff;
  --accent: #CC66FF;
  --background-rgb: 17, 17, 17;
  --foreground-rgb: 255, 255, 255;
  --accent-rgb: 204, 102, 255;
  --font-size: 1rem;
  --line-height: 1.54em;
  --radius: 0;
}

html {
  box-sizing: border-box;
}

*,
*::before,
*::after {
  box-sizing: inherit;
  word-break: break-word;
}

body {
  margin: 0;
  padding: 0;
  font-family: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  font-size: var(--font-size);
  line-height: var(--line-height);
  background-color: var(--background);
  color: var(--foreground);
  text-rendering: optimizelegibility;
  -webkit-font-smoothing: antialiased;
  -webkit-overflow-scrolling: touch;
  text-size-adjust: 100%;
}

h1 {
  font-size: calc(var(--font-size) * 1.5);
  letter-spacing: -0.025em;
}

h2 {
  font-size: calc(var(--font-size) * 1.25);
  letter-spacing: -0.025em;
}

h3 {
  font-size: calc(var(--font-size) * 1.15);
  letter-spacing: -0.025em;
}

h4,
h5,
h6 {
  font-size: calc(var(--font-size) * 1);
  letter-spacing: -0.025em;
}

h1,
h2,
h3,
h4,
h5,
h6,
p,
ul,
ol,
img,
figure,
video,
table {
  margin: 25px 0;
}

a {
  color: var(--accent);
  transition: color 0.2s ease;
}

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

/* Project page specific styling */
.projects-page .hello {
  margin-bottom: 1rem;
}

.projects-page h1 {
  margin-bottom: 1rem;
}

.projects-list h2 {
  margin-bottom: 1rem;
  margin-top: 2rem;
  font-size: 1.1rem;
}

.projects-list h2 a {
  color: var(--foreground);
  text-decoration: none;
}

.projects-list h2 a:hover {
  color: var(--accent);
}

button {
  position: relative;
  font: inherit;
  font-weight: bold;
  text-decoration: none;
  text-align: center;
  background: transparent;
  color: var(--accent);
  padding: 5px 18px;
  border: 4px solid var(--accent);
  border-radius: var(--radius);
  transition: background 0.15s linear;
  appearance: none;
  cursor: pointer;
  outline: none;
}

button:hover {
  background: color-mix(in srgb, var(--accent) 15%, transparent);
}

button:focus-visible,
a:focus-visible {
  outline: 1px solid var(--accent);
}

fieldset {
  display: inline-block;
  border: 2px solid var(--foreground);
  border-radius: calc(var(--radius) * 1.6);
  padding: 10px;
}

fieldset *:first-child {
  margin-top: 0;
}

fieldset input,
fieldset select,
fieldset textarea,
fieldset label,
fieldset button {
  margin-top: calc(var(--line-height) * 0.5);
  width: 100%;
}

label {
  display: inline-block;
}

label input {
  margin-top: 0;
}

input,
textarea,
select {
  background: transparent;
  color: var(--foreground);
  border: 1px solid var(--foreground);
  border-radius: var(--radius);
  padding: 10px;
  font: inherit;
  appearance: none;
}

input[type="checkbox"] {
  width: auto;
}

input:focus-visible,
input:active,
textarea:focus-visible,
textarea:active,
select:focus-visible,
select:active {
  border-color: var(--accent);
  outline: 1px solid var(--accent);
  outline-offset: 2px;
}

input:active,
textarea:active,
select:active {
  box-shadow: none;
}

select {
  background-image: linear-gradient(
    45deg,
    transparent 50%,
    var(--foreground) 50%
  ),
    linear-gradient(135deg, var(--foreground) 50%, transparent 50%);
  background-position: calc(100% - 20px), calc(100% - 1em);
  background-size:
    5px 5px,
    5px 5px;
  background-repeat: no-repeat;
  padding-right: 40px;
}

select option {
  background: var(--background);
}

input[type="checkbox"] {
  vertical-align: middle;
  padding: 10px;
  box-shadow: inset 0 0 0 3px var(--background);
}

input[type="checkbox"]:checked {
  background: var(--accent);
}

img {
  display: block;
  max-width: 100%;
  border: 8px solid var(--accent);
  border-radius: var(--radius);
  padding: 8px;
  overflow: hidden;
}

img.left {
  margin-right: auto;
}

img.center {
  margin-left: auto;
  margin-right: auto;
}

img.right {
  margin-left: auto;
}

figure {
  width: fit-content;
}

figure.left {
  margin-right: auto;
}

figure.center {
  margin-left: auto;
  margin-right: auto;
}

figure.right {
  margin-left: auto;
}

figure img,
figure video {
  margin-bottom: 0;
}

figure figcaption {
  background: var(--accent);
  color: var(--background);
  text-align: center;
  font-size: var(--font-size);
  font-weight: normal;
  margin-top: -8px;
  padding: 0 8px;
  border-radius: 0 0 var(--radius) var(--radius);
}

figure figcaption p:first-child {
  margin-top: 0;
}

ul,
ol {
  margin-left: 4ch;
  padding: 0;
}

ul ul,
ul ol,
ol ul,
ol ol {
  margin-top: 0;
}

li::marker {
  color: var(--accent);
}

ul li,
ol li {
  position: relative;
}

code,
kbd {
  font-family:
    "Fira Code",
    Monaco,
    Consolas,
    "Ubuntu Mono",
    monospace !important;
  font-feature-settings: normal;
  background: color-mix(in srgb, var(--foreground) 5%, transparent);
  border: 1px solid var(--code-border);
  padding: 1px 6px;
  margin: 0 2px;
  font-size: calc(var(--font-size) * 0.95);
}

kbd {
  border-top: 1px solid color-mix(in srgb, var(--accent) 25%, transparent);
  border-left: 1px solid var(--accent);
  border-right: 1px solid var(--accent);
  border-bottom: 4px solid var(--accent);
  border-radius: 4px;
}

code code {
  background: transparent;
  padding: 0;
  margin: 0;
}

pre {
  tab-size: 4;
  background: color-mix(in srgb, var(--foreground) 5%, transparent) !important;
  color: var(--foreground);
  padding: 20px 10px;
  font-size: calc(var(--font-size) * 0.95) !important;
  overflow: auto;
  border-radius: var(--radius);
  border: 1px solid color-mix(in srgb, var(--foreground) 10%, transparent);
}

pre code {
  background: none !important;
  margin: 0;
  padding: 0;
  border: none;
}

sup {
  line-height: 0;
}

abbr {
  position: relative;
  text-decoration-style: wavy;
  text-decoration-color: var(--accent);
  cursor: help;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.25em;
}

mark {
  background: color-mix(in srgb, var(--accent) 45%, transparent);
  color: var(--foreground);
}

blockquote {
  position: relative;
  border-top: 1px solid var(--accent);
  border-bottom: 1px solid var(--accent);
  margin: 0;
  padding: 25px;
}

blockquote::before {
  content: ">";
  display: block;
  position: absolute;
  left: 0;
  color: var(--accent);
}

blockquote p:first-child {
  margin-top: 0;
}

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

table {
  table-layout: auto;
  border-collapse: collapse;
}

table,
th,
td {
  border: 2px solid var(--foreground);
  padding: 10px;
}

th {
  border-style: solid;
  color: var(--foreground);
  text-align: left;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

hr {
  width: 100%;
  border: none;
  background: var(--accent);
  height: 2px;
}

/* One Heading Size */
.headings--one-size h1,
.headings--one-size h2,
.headings--one-size h3,
.headings--one-size h4,
.headings--one-size h5,
.headings--one-size h6 {
  font-size: 1.4rem;
  line-height: 1.3;
  margin: 20px 0;
}

.headings--one-size ~ h1:first-child,
.headings--one-size ~ h2:first-child,
.headings--one-size ~ h3:first-child,
.headings--one-size ~ h4:first-child,
.headings--one-size ~ h5:first-child,
.headings--one-size ~ h6:first-child {
  margin-top: 20px;
}

blockquote.twitter-tweet {
  position: relative;
  background: var(--background);
  font: inherit;
  color: inherit;
  border: 1px solid var(--accent);
  padding-top: 60px;
}

blockquote.twitter-tweet a {
  color: var(--accent);
  text-decoration: underline;
}

blockquote.twitter-tweet::before {
  content: "> From X:";
  position: absolute;
  top: 20px;
  left: 20px;
  color: var(--accent);
  font-weight: bold;
}

.container {
  display: flex;
  flex-direction: column;
  padding: 40px;
  max-width: 864px;
  min-height: 100vh;
  border-right: 1px solid color-mix(in srgb, var(--accent) 10%, transparent);
}

.container.full, .container.center {
  border: none;
  margin: 0 auto;
}

.container.full {
  max-width: 100%;
}

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

.hidden {
  display: none;
}

.__h_video {
  position: relative;
  overflow: visible !important;
  height: auto !important;
  padding-bottom: 0 !important;
}

.__h_video a {
  position: relative;
  display: block;
  width: 100%;
}

.__h_video a img {
  width: 100%;
}

.__h_video a .play {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  margin: auto;
  width: 60px;
  height: 60px;
}

iframe[src*="youtube.com"] {
  border: 8px solid var(--accent) !important;
  padding: 8px !important;
}

@media (max-width: 684px) {
  :root {
    --font-size: 0.95rem;
  }

  .container {
    padding: 20px;
  }
}

@media print {
  .container {
    display: initial;
  }

  .content {
    display: initial;
  }
}

/* Horizontal rule styling */
hr {
  background: var(--foreground);
  border: none;
  height: 1px;
  margin: 2rem 0;
}

/* Publication styling */
.publication-item {
  padding: 0.5rem 0;
  transition: all 0.2s ease;
}

.publication-item h3 {
  margin: 0.25rem 0;
  font-size: 1.1rem;
}

.publication-item h3 a {
  color: var(--foreground);
  text-decoration: none;
}

.publication-item h3 a:hover {
  color: var(--accent);
}

.publication-item .text-xs {
  font-size: 0.9rem;
  line-height: 1.5rem;
}

/* Publication single page styling */
.publication-single {
  max-width: 800px;
  margin: 0 auto;
}

.publication-header {
  padding-bottom: 0rem;
}

/* Citation styling */
.citation pre code {
  font-size: 0.4rem;
  line-height: 1.2;
}
.navigation-menu {
  display: flex;
  align-items: center;
}

.navigation-menu__inner {
  display: flex;
  list-style: none;
  margin: 0;
  padding: 0;
  gap: 1rem;
}

.navigation-menu__inner > li {
  margin: 0;
}

.nav-link {
  color: var(--foreground);
  text-decoration: none;
  transition: color 0.2s ease;
  font-size: 0.875rem;
  letter-spacing: -0.025em;
}

.nav-link:hover {
  color: var(--accent);
}

@media (max-width: 768px) {
  .navigation-menu {
    display: none;
  }
}
.pagination {
  margin-top: 50px;
}

.pagination__title {
  display: flex;
  text-align: center;
  position: relative;
  margin: 100px 0 20px;
}

.pagination__title-h {
  text-align: center;
  margin: 0 auto;
  padding: 5px 10px;
  background: var(--background);
  color: color-mix(in srgb var(--foreground) 30%, transparent);
  font-size: calc(var(--font-size) * 0.8);
  text-transform: uppercase;
  text-decoration: none;
  letter-spacing: 0.1em;
  z-index: 1;
}

.pagination__title hr {
  position: absolute;
  left: 0;
  right: 0;
  width: 100%;
  margin-top: 15px;
  z-index: 0;
}

.pagination__buttons {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-flow: row wrap;
  gap: 10px;
}

.pagination__buttons a {
  display: inline-flex;
  max-width: 100%;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
  text-decoration: none;
}

.button {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: inherit;
  padding: 0;
  appearance: none;
}

.button a {
  display: flex;
  justify-content: center;
  flex: 1;
  padding: 8px 16px;
}

.button__text {
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
}

.next .button__icon {
  margin-left: 8px;
}

.prev .button__icon {
  margin-right: 8px;
}

@media print {
  .pagination {
    display: none;
  }
}
.index-content {
  margin: 25px 0;
}

.framed {
  border: 1px solid var(--accent);
  padding: 20px;
}

.framed *:first-child {
  margin-top: 0;
}

.framed *:last-child {
  margin-bottom: 0;
}

.posts {
  width: 100%;
}

.post {
  width: 100%;
  text-align: left;
  padding: 30px 0;
}

.post:not(:last-of-type) {
  border-bottom: 1px solid color-mix(in srgb, var(--foreground) 10%, transparent);
}

.post-meta {
  font-size: inherit;
  margin-bottom: 10px;
  color: color-mix(in srgb, var(--foreground) 65%, transparent);
}

.post-meta > *:not(:first-child)::before {
  content: "::";
  display: inline-block;
  margin: 0 8px;
}

.post-title {
  position: relative;
  color: var(--accent);
  margin-top: 0 !important;
  margin-bottom: 15px !important;
  padding-bottom: 15px;
  border-bottom: 3px dotted var(--accent);
  text-decoration: none !important;
}

.post-title::after {
  content: "";
  position: absolute;
  bottom: 2px;
  display: block;
  width: 100%;
  border-bottom: 3px dotted var(--accent);
}

.post-title a {
  text-decoration: none;
}

.post-tags {
  display: block;
  margin-bottom: 20px;
  font-size: inherit;
  color: var(--accent);
}

.table-of-contents {
  margin: 40px 0;
}

.post-content {
  margin-top: 25px;
}

.post-cover {
  margin: 25px 0;
}

.post ul {
  list-style: none;
}

.post ul li:not(:empty)::before {
  content: "-";
  position: absolute;
  left: -20px;
  color: var(--accent);
}

.post--regulation h1 {
  justify-content: center;
}

.post--regulation h2 {
  justify-content: center;
  margin-bottom: 10px;
}

.post--regulation h2 + h2 {
  margin-top: -10px;
  margin-bottom: 20px;
}

.hanchor {
  position: absolute;
  color: var(--accent);
  text-decoration: none;
  margin-left: 10px;
  visibility: hidden;
}

h1:hover .hanchor,
h2:hover .hanchor,
h3:hover .hanchor,
h4:hover .hanchor,
h5:hover .hanchor,
h6:hover .hanchor {
  visibility: visible;
}

.footnotes {
  color: color-mix(in srgb, var(--foreground) 50%, transparent);
}

.footnotes hr {
  background: color-mix(in srgb, var(--foreground) 50%, transparent);
}

@media (max-width: 684px) {
  .post-cover {
    padding: 10px;
    border-width: 10px;
  }
}
/* Font configuration - using local system fonts for fast loading */
:root {
  --background: #111111;
  --foreground: #ffffff;
  --accent: #CC66FF;
  --radius: 0;
  --font-size: 1rem;
  --line-height: 1.54em;
  /* System fonts similar to IBM Plex Sans */
  --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
  /* System fonts similar to IBM Plex Mono */
  --font-mono: "SF Mono", "Monaco", "Inconsolata", "Roboto Mono", "Source Code Pro", "Menlo", "Consolas", "DejaVu Sans Mono", monospace;
}

html {
  box-sizing: border-box;
}

*,
*:before,
*:after {
  box-sizing: inherit;
  margin: 0;
  padding: 0;
}

body {
  font-family: var(--font-sans);
  font-size: var(--font-size);
  font-weight: 400;
  line-height: var(--line-height);
  background-color: var(--background);
  color: var(--foreground);
  text-rendering: optimizeLegibility;
  font-variant-ligatures: contextual;
  -webkit-overflow-scrolling: touch;
  -webkit-text-size-adjust: 100%;
  margin: 0;
  padding: 0;
}

h1 {
  font-size: 2.5rem; /* text-6xl equivalent */
  font-weight: 700;
  letter-spacing: -0.025em;
  line-height: 1;
}

h2 {
  font-size: 1.5rem; /* text-2xl equivalent */
  font-weight: 600;
  letter-spacing: -0.025em;
  line-height: 1.4;
}

h3 {
  font-size: 1.25rem; /* text-xl equivalent */
  font-weight: 600;
  letter-spacing: -0.025em;
  line-height: 1.4;
}

h4 {
  font-size: 1.125rem; /* text-lg equivalent */
  font-weight: 600;
  letter-spacing: -0.025em;
  line-height: 1.4;
}

h5,
h6 {
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: -0.025em;
  line-height: 1.4;
}

h1, h2, h3, h4, h5, h6,
p, ul, ol,
img, figure, video,
table {
  margin: 1rem 0;
}

a {
  color: var(--accent);
}

button {
  position: relative;
  font: inherit;
  font-weight: bold;
  text-decoration: none;
  text-align: center;
  background: transparent;
  color: var(--accent);
  padding: 5px 18px;
  border: 4px solid var(--accent);
  border-radius: var(--radius);
  transition: background 0.15s linear;
  appearance: none;
  cursor: pointer;
  outline: none;
}

button:hover {
  background: color-mix(in srgb, var(--accent) 15%, transparent);
}

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

fieldset {
  display: inline-block;
  border: 2px solid var(--foreground);
  border-radius: calc(var(--radius) * 1.6);
  padding: 10px;
}

fieldset *:first-child {
  margin-top: 0;
}

fieldset input,
fieldset select,
fieldset textarea,
fieldset label,
fieldset button {
  margin-top: calc(var(--line-height) * 0.5);
  width: 100%;
}

label {
  display: inline-block;
}

label input {
  margin-top: 0;
}

input,
textarea,
select {
  background: transparent;
  color: var(--foreground);
  border: 1px solid var(--foreground);
  border-radius: var(--radius);
  padding: 10px;
  font: inherit;
  appearance: none;
}

input[type="checkbox"] {
  width: auto;
}

input:focus-visible,
input:active,
textarea:focus-visible,
textarea:active,
select:focus-visible,
select:active {
  border-color: var(--accent);
  outline: 1px solid var(--accent);
  outline-offset: 2px;
}

input:active,
textarea:active,
select:active {
  box-shadow: none;
}

select {
  background-image: linear-gradient(
      45deg,
      transparent 50%,
      var(--foreground) 50%
    ),
    linear-gradient(135deg, var(--foreground) 50%, transparent 50%);
  background-position: calc(100% - 20px), calc(100% - 15px);
  background-size:
    5px 5px,
    5px 5px;
  background-repeat: no-repeat;
  padding-right: 40px;
}

select option {
  background: var(--background);
}

input[type="checkbox"],
input[type="radio"] {
  vertical-align: middle;
  padding: 10px;
  box-shadow: inset 0 0 0 3px var(--background);
}

input[type="radio"] {
  display: inline-block;
  width: 10px !important;
  height: 10px !important;
  border-radius: 20px;
}

input[type="checkbox"]:checked,
input[type="radio"]:checked {
  background: var(--accent);
}

img {
  display: block;
  max-width: 100%;
  border: 8px solid var(--accent);
  border-radius: var(--radius);
  padding: 8px;
  overflow: hidden;
}

figure img,
figure video {
  margin-bottom: 0;
}

figure figcaption {
  background: var(--accent);
  color: var(--background);
  text-align: center;
  font-size: 1em;
  font-weight: normal;
  margin-top: -8px;
  border-radius: 0 0 var(--radius) var(--radius);
}

ul,
ol {
  margin-left: 4ch;
  padding: 0;
}

ul ul,
ul ol,
ol ul,
ol ol {
  margin-top: 0;
}

li::marker {
  color: var(--accent);
}

ul li,
ol li {
  position: relative;
}

code,
kbd {
  font-family: var(--font-mono) !important;
  font-feature-settings: normal;
  background: color-mix(in srgb, var(--foreground) 5%, transparent);
  color: color-mix(in srgb, var(--foreground) 5%, var(--accent));
  padding: 0 6px;
  margin: 0 2px;
  font-size: 0.95em;
}

code {
  border: 1px solid color-mix(in srgb, var(--foreground) 25%, transparent);
}

kbd {
  border-top: 1px solid color-mix(in srgb, var(--accent) 25%, transparent);
  border-left: 1px solid var(--accent);
  border-right: 1px solid var(--accent);
  border-bottom: 4px solid var(--accent);
  border-radius: 4px;
}

code code {
  background: transparent;
  padding: 0;
  margin: 0;
}

pre {
  font-family: var(--font-mono);
  tab-size: 4;
  background: color-mix(in srgb, var(--foreground) 5%, transparent) !important;
  color: color-mix(in srgb, var(--foreground) 5%, var(--accent));
  padding: 20px 10px;
  font-size: 0.95em !important;
  overflow: auto;
  border-radius: var(--radius);
  border: 1px solid color-mix(in srgb, var(--foreground) 25%, transparent);
}

pre code {
  background: none !important;
  margin: 0;
  padding: 0;
  font-size: inherit;
  border: none;
}

sup {
  line-height: 0;
}

abbr {
  position: relative;
  text-decoration-style: wavy;
  text-decoration-color: var(--accent);
  cursor: help;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.25em;
}

mark {
  background: color-mix(in srgb, var(--accent) 45%, transparent);
  color: var(--foreground);
}

blockquote {
  position: relative;
  border-top: 1px solid var(--accent);
  border-bottom: 1px solid var(--accent);
  margin: 0;
  padding: 25px;
}

blockquote:before {
  content: ">";
  display: block;
  position: absolute;
  left: 0;
  color: var(--accent);
}

blockquote p:first-child {
  margin-top: 0;
}

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

table {
  table-layout: auto;
  border-collapse: collapse;
}

table,
th,
td {
  border: 2px solid var(--foreground);
  padding: 10px;
}

th {
  border-style: solid;
  color: var(--foreground);
  text-align: left;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

hr {
  width: 100%;
  border: none;
  background: var(--foreground);
  height: 2px;
}

/* Bold elements */

h1, h2, h3, h4, h5, h6,
b, strong,
th,
button {
  font-weight: 600;
}

/* Project item styling */
.project-item {
  padding: 0.5rem 0;
  transition: all 0.2s ease;
}

/* Projects list spacing */
.projects-list h2 {
  margin-bottom: 0.25rem;
}

.projects-list h2 a {
  text-decoration: none;
  color: var(--foreground);
}

.projects-list h2 a:hover {
  color: var(--accent);
}

/* Timeline styling */
.timeline {
  position: relative;
  padding-left: 2rem;
}

.timeline::before {
  content: '';
  position: absolute;
  left: 1rem;
  top: 0;
  bottom: 0;
  width: 2px;
  background: var(--foreground);
}

.timeline-item {
  position: relative;
  margin-bottom: 2rem;
}

.timeline-marker {
  position: absolute;
  left: -1.5rem;
  top: 0.5rem;
  width: 1rem;
  height: 1rem;
  background: var(--accent);
  border-radius: 50%;
  border: 3px solid var(--background);
}

.timeline-content {
  padding-left: 1rem;
}

.timeline-header {
  margin-bottom: 0.5rem;
}

.timeline-year {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--accent);
  margin-bottom: 0.25rem;
}

.timeline-title {
  font-size: 1.125rem;
  font-weight: 700;
  margin-bottom: 0.25rem;
}

.timeline-subtitle {
  font-size: 1rem;
  font-weight: 500;
  color: color-mix(in srgb, var(--foreground) 80%, transparent);
  margin-bottom: 0.5rem;
}

.timeline-description {
  font-size: 0.875rem;
  line-height: 1.5;
  color: color-mix(in srgb, var(--foreground) 90%, transparent);
}

/* Publication item styling */
.publication-item {
  padding: 0.5rem 0;
  transition: all 0.2s ease;
}

.publication-item h3 {
  margin: 0.25rem 0;
}

.publication-item h3 a {
  color: var(--foreground);
  text-decoration: none;
}

.publication-item h3 a:hover {
  color: var(--accent);
}

.publication-item .text-xs {
  font-size: 0.9rem;
  line-height: 1.5rem;
}

/* Publication single page styling */
.publication-single {
  max-width: 800px;
  margin: 0 auto;
}

.publication-header {
  padding-bottom: 0rem;
}

.publication-meta > div {
  margin-bottom: 0.5rem;
}

.publication-meta strong {
  color: var(--foreground);
  font-weight: 600;
}

.citation pre {
  background: color-mix(in srgb, var(--foreground) 5%, transparent);
  border: 1px solid color-mix(in srgb, var(--foreground) 20%, transparent);
  border-radius: var(--radius);
  padding: 1rem;
  margin: 0;
  font-family: var(--font-mono);
  font-size: 0.5rem;
}

.citation pre code {
  font-size: 0.75rem;
  line-height: 1.0;
  font-family: var(--font-mono);
}
:root {
  --first-tone: var(--accent);
  --second-tone: color-mix(in srgb, var(--accent) 70%, transparent);
  --comment: color-mix(in srgb, var(--foreground) 50%, transparent);
}

/* Background */ .bg { }
/* PreWrapper */ .chroma { overflow:auto; }
/* Other */ .chroma .x {  }
/* Error */ .chroma .err {  }
/* CodeLine */ .chroma .cl {  }
/* LineLink */ .chroma .lnlinks { outline:none;text-decoration:none;color:inherit }
/* LineTableTD */ .chroma .lntd { width:100%;vertical-align:top;padding:0;margin:0;border:0; }
/* LineTableTDNumbers */ .chroma .lntd:first-child { width: auto; }
/* Custom */ .chroma .lntd code { display:grid; }
/* LineTable */ .chroma .lntable { width:100%;border-spacing:0;padding:0;margin:0;border:0; }
/* LineHighlight */ .chroma .hl { background-color:color-mix(in srgb, var(--foreground) 5%, transparent) !important}
/* LineNumbersTable */ .chroma .lnt { color:var(--comment);white-space:pre;-webkit-user-select:none;user-select:none;padding:0 10px; }
/* LineNumbers */ .chroma .ln { color:var(--comment);white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.8em;padding:0 0.4em 0 0; }
/* Line */ .chroma .line { display:flex;padding:0 10px; }
/* Keyword */ .chroma .k { color:var(--second-tone) }
/* KeywordConstant */ .chroma .kc { color:var(--second-tone) }
/* KeywordDeclaration */ .chroma .kd { color:var(--second-tone) }
/* KeywordNamespace */ .chroma .kn { color:var(--second-tone) }
/* KeywordPseudo */ .chroma .kp { color:var(--second-tone) }
/* KeywordReserved */ .chroma .kr { color:var(--second-tone) }
/* KeywordType */ .chroma .kt { color:var(--second-tone) }
/* Name */ .chroma .n { color:var(--first-tone) }
/* NameAttribute */ .chroma .na { color:var(--second-tone) }
/* NameBuiltin */ .chroma .nb { color:var(--first-tone) }
/* NameBuiltinPseudo */ .chroma .bp { color:var(--first-tone) }
/* NameClass */ .chroma .nc { color:var(--foreground) }
/* NameConstant */ .chroma .no { color:var(--first-tone) }
/* NameDecorator */ .chroma .nd { color:var(--first-tone) }
/* NameEntity */ .chroma .ni { color:var(--first-tone) }
/* NameException */ .chroma .ne { color:var(--first-tone) }
/* NameFunction */ .chroma .nf { color:var(--first-tone); }
/* NameFunctionMagic */ .chroma .fm { color:var(--first-tone); }
/* NameLabel */ .chroma .nl { color:var(--first-tone) }
/* NameNamespace */ .chroma .nn { color:var(--first-tone) }
/* NameOther */ .chroma .nx { color:var(--first-tone) }
/* NameProperty */ .chroma .py { color:var(--first-tone) }
/* NameTag */ .chroma .nt { color:var(--first-tone) }
/* NameVariable */ .chroma .nv { color:var(--first-tone) }
/* NameVariableClass */ .chroma .vc { color:var(--first-tone) }
/* NameVariableGlobal */ .chroma .vg { color:var(--first-tone) }
/* NameVariableInstance */ .chroma .vi { color:var(--first-tone) }
/* NameVariableMagic */ .chroma .vm { color:var(--first-tone) }
/* Literal */ .chroma .l {  }
/* LiteralDate */ .chroma .ld {  }
/* LiteralString */ .chroma .s { color:var(--foreground) }
/* LiteralStringAffix */ .chroma .sa { color:var(--foreground) }
/* LiteralStringBacktick */ .chroma .sb { color:var(--foreground) }
/* LiteralStringChar */ .chroma .sc { color:var(--foreground) }
/* LiteralStringDelimiter */ .chroma .dl { color:var(--foreground) }
/* LiteralStringDoc */ .chroma .sd { color:var(--foreground) }
/* LiteralStringDouble */ .chroma .s2 { color:var(--foreground) }
/* LiteralStringEscape */ .chroma .se { color:var(--foreground) }
/* LiteralStringHeredoc */ .chroma .sh { color:var(--foreground) }
/* LiteralStringInterpol */ .chroma .si { color:var(--foreground) }
/* LiteralStringOther */ .chroma .sx { color:var(--foreground) }
/* LiteralStringRegex */ .chroma .sr { color:var(--foreground) }
/* LiteralStringSingle */ .chroma .s1 { color:var(--foreground) }
/* LiteralStringSymbol */ .chroma .ss { color:var(--foreground) }
/* LiteralNumber */ .chroma .m { color:var(--first-tone) }
/* LiteralNumberBin */ .chroma .mb { color:var(--first-tone) }
/* LiteralNumberFloat */ .chroma .mf { color:var(--first-tone) }
/* LiteralNumberHex */ .chroma .mh { color:var(--first-tone) }
/* LiteralNumberInteger */ .chroma .mi { color:var(--first-tone) }
/* LiteralNumberIntegerLong */ .chroma .il { color:var(--first-tone) }
/* LiteralNumberOct */ .chroma .mo { color:var(--first-tone) }
/* Operator */ .chroma .o { color:var(--foreground) }
/* OperatorWord */ .chroma .ow { color:var(--foreground) }
/* Punctuation */ .chroma .p { color:var(--foreground) }
/* Comment */ .chroma .c { color:var(--comment) }
/* CommentHashbang */ .chroma .ch { color:var(--comment) }
/* CommentMultiline */ .chroma .cm { color:var(--comment) }
/* CommentSingle */ .chroma .c1 { color:var(--comment) }
/* CommentSpecial */ .chroma .cs { color:var(--comment) }
/* CommentPreproc */ .chroma .cp { color:var(--comment) }
/* CommentPreprocFile */ .chroma .cpf { color:var(--comment) }
/* Generic */ .chroma .g {  }
/* GenericDeleted */ .chroma .gd { color:var(--first-tone) }
/* GenericEmph */ .chroma .ge {  }
/* GenericError */ .chroma .gr {  }
/* GenericHeading */ .chroma .gh {  }
/* GenericInserted */ .chroma .gi { color:var(--second-tone); }
/* GenericOutput */ .chroma .go {  }
/* GenericPrompt */ .chroma .gp {  }
/* GenericStrong */ .chroma .gs {  }
/* GenericSubheading */ .chroma .gu {  }
/* GenericTraceback */ .chroma .gt {  }
/* GenericUnderline */ .chroma .gl {  }
/* TextWhitespace */ .chroma .w {  }

/* LANGUAGE FIXES */
/* PHP CommentPreproc */ .chroma .language-php .cp { color:var(--foreground) }
.terms h3 {
  font-size: initial;
}

.terms ul {
  list-style: none;
}

.terms ul li a {
  color: var(--accent);
}

.terms ul li:not(:empty)::before {
  content: "-";
  position: absolute;
  left: -20px;
  color: var(--accent);
}
