/*
 * style.css — Custom overrides for pelican-hyde theme.
 * Loaded last so it overrides poole.css, hyde.css, and syntax.css.
 */


/* ==========================================================================
   Typography — Literata (body) + Playfair Display (headings) + Inter (UI)
   ========================================================================== */

html {
  font-family: "Literata", "Georgia", serif;
  font-optical-sizing: auto;
}
body {
  color: #3b3b3b;
  line-height: 1.7;
}

h1, h2, h3, h4, h5, h6 {
  font-family: "Playfair Display", "Georgia", serif;
  font-weight: 700;
  color: #1a1a1a;
  letter-spacing: -0.01em;
}
h1 { font-size: 2rem; line-height: 1.2; }
h2 { font-size: 1.5rem; line-height: 1.3; }
h3 { font-size: 1.2rem; line-height: 1.35; }

.post-title,
.post-title a {
  font-family: "Playfair Display", "Georgia", serif;
  font-weight: 700;
  color: #1a1a1a;
  letter-spacing: -0.02em;
}
.post-title {
  font-size: 2.2rem;
  line-height: 1.15;
  margin-bottom: 0.25rem;
}

.post-date {
  font-family: "Inter", "Helvetica Neue", Arial, sans-serif;
  font-size: 0.8rem;
  font-weight: 400;
  color: #8a8a8a;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

p { margin-bottom: 1.2rem; }

blockquote {
  font-style: italic;
  border-left-width: 3px;
  color: #555;
}

strong {
  color: #1a1a1a;
  font-weight: 600;
}

.sidebar {
  font-family: "Inter", "Helvetica Neue", Arial, sans-serif;
}
.sidebar-about h1 {
  font-family: "Abril Fatface", serif;
}

.read-more {
  font-family: "Inter", "Helvetica Neue", Arial, sans-serif;
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}


/* ==========================================================================
   Code — inline and blocks
   ========================================================================== */

code {
  font-family: "JetBrains Mono", "Fira Code", "Consolas", monospace;
  font-size: 0.82em;
  padding: 0.15em 0.4em;
  background-color: #f4f4f4;
  border: 1px solid #e0e0e0;
  border-radius: 3px;
  color: #c7254e;
}

pre {
  font-family: "JetBrains Mono", "Fira Code", "Consolas", monospace;
  font-size: 0.78rem;
  line-height: 1.55;
  background-color: #1e1e2e;
  color: #cdd6f4;
  border: 1px solid #313244;
  border-radius: 6px;
  padding: 0;
  overflow: hidden;
}
pre code {
  font-size: inherit;
  padding: 0;
  background-color: transparent;
  border: none;
  border-radius: 0;
  color: inherit;
}

.highlight {
  position: relative;
  margin-bottom: 1.5rem;
  border-radius: 6px;
  overflow: hidden;
}
.highlight pre {
  margin-bottom: 0;
  padding: 1rem 1rem 1rem 0;
  overflow-x: auto;
}


/* ==========================================================================
   Line numbers — non-selectable (user-select: none)
   ========================================================================== */

.highlighttable,
.highlight table {
  width: 100%;
  border-collapse: collapse;
  border: none;
  margin: 0;
  padding: 0;
  background-color: #1e1e2e;
  border-radius: 6px;
  overflow: hidden;
}
.highlighttable td,
.highlight table td {
  padding: 0;
  border: none;
  vertical-align: top;
}

.highlighttable .linenos,
.highlight table .linenos,
.linenodiv {
  background-color: #181825;
  padding: 1rem 0;
  text-align: right;
  width: 1%;
  min-width: 2.5rem;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

.linenodiv pre,
.highlighttable .linenos pre,
.highlight table .linenos pre {
  background-color: transparent;
  border: none;
  border-radius: 0;
  color: #585b70;
  font-family: "JetBrains Mono", "Fira Code", "Consolas", monospace;
  font-size: 0.78rem;
  line-height: 1.55;
  margin: 0;
  padding: 0 0.75rem 0 0.5rem;
  text-align: right;
}

.highlighttable .code,
.highlight table .code { width: 99%; }

.highlighttable .code pre,
.highlight table .code pre {
  padding: 1rem;
  margin: 0;
  border: none;
  border-radius: 0;
}

.highlight .lineno,
.highlight .linenodiv a,
.highlight span.linenos {
  color: #585b70;
  display: inline-block;
  padding: 0 0.75rem 0 0.5rem;
  min-width: 2rem;
  text-align: right;
  border-right: 1px solid #313244;
  margin-right: 0.75rem;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}


/* ==========================================================================
   Syntax highlighting — Catppuccin Mocha palette
   ========================================================================== */

.highlight .hll { background-color: #313244; }
.highlight .c   { color: #6c7086; font-style: italic; }
.highlight .err { color: #f38ba8; }
.highlight .k   { color: #cba6f7; }
.highlight .o   { color: #89dceb; }
.highlight .p   { color: #cdd6f4; }
.highlight .cm  { color: #6c7086; font-style: italic; }
.highlight .cp  { color: #f9e2af; }
.highlight .c1  { color: #6c7086; font-style: italic; }
.highlight .cs  { color: #6c7086; font-style: italic; }
.highlight .gd  { color: #f38ba8; background-color: #31222c; }
.highlight .ge  { font-style: italic; }
.highlight .gr  { color: #f38ba8; }
.highlight .gh  { color: #89b4fa; font-weight: 600; }
.highlight .gi  { color: #a6e3a1; background-color: #22312c; }
.highlight .go  { color: #6c7086; }
.highlight .gp  { color: #94e2d5; font-weight: 600; }
.highlight .gs  { font-weight: 700; }
.highlight .gu  { color: #94e2d5; }
.highlight .gt  { color: #f38ba8; }
.highlight .kc  { color: #cba6f7; }
.highlight .kd  { color: #cba6f7; }
.highlight .kn  { color: #cba6f7; }
.highlight .kp  { color: #cba6f7; }
.highlight .kr  { color: #cba6f7; }
.highlight .kt  { color: #f9e2af; }
.highlight .m   { color: #fab387; }
.highlight .mf  { color: #fab387; }
.highlight .mh  { color: #fab387; }
.highlight .mi  { color: #fab387; }
.highlight .mo  { color: #fab387; }
.highlight .il  { color: #fab387; }
.highlight .s   { color: #a6e3a1; }
.highlight .sb  { color: #a6e3a1; }
.highlight .sc  { color: #a6e3a1; }
.highlight .sd  { color: #a6e3a1; font-style: italic; }
.highlight .s2  { color: #a6e3a1; }
.highlight .se  { color: #fab387; }
.highlight .sh  { color: #a6e3a1; }
.highlight .si  { color: #fab387; }
.highlight .sx  { color: #a6e3a1; }
.highlight .sr  { color: #f5c2e7; }
.highlight .s1  { color: #a6e3a1; }
.highlight .ss  { color: #f5c2e7; }
.highlight .na  { color: #89b4fa; }
.highlight .nb  { color: #f9e2af; }
.highlight .nc  { color: #f9e2af; font-weight: 600; }
.highlight .no  { color: #fab387; }
.highlight .nd  { color: #89b4fa; font-weight: 600; }
.highlight .ni  { color: #cdd6f4; }
.highlight .ne  { color: #fab387; }
.highlight .nf  { color: #89b4fa; }
.highlight .nl  { color: #89b4fa; }
.highlight .nn  { color: #f9e2af; }
.highlight .nt  { color: #89b4fa; }
.highlight .nv  { color: #cdd6f4; }
.highlight .bp  { color: #f9e2af; }
.highlight .vc  { color: #cdd6f4; }
.highlight .vg  { color: #cdd6f4; }
.highlight .vi  { color: #cdd6f4; }
.highlight .ow  { color: #89dceb; }
.highlight .w   { color: #585b70; }

.css .o,
.css .o + .nt,
.css .nt + .nt { color: #6c7086; }

.highlight pre code {
  display: block;
  white-space: pre;
  overflow-x: auto;
  word-wrap: normal;
}

/* Remove zebra striping from code tables (inherited from poole.css) */
.highlighttable tbody tr:nth-child(odd) td,
.highlighttable tbody tr:nth-child(odd) th,
.highlight table tbody tr:nth-child(odd) td,
.highlight table tbody tr:nth-child(odd) th {
  background-color: transparent;
}
