/* === normalize.css === */

/* normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */

/* Document
   ========================================================================== */

/**
 * 1. Correct the line height in all browsers.
 * 2. Prevent adjustments of font size after orientation changes in iOS.
 */

 html {
  line-height: 1.15; /* 1 */
  -webkit-text-size-adjust: 100%; /* 2 */
}

/* Sections
   ========================================================================== */

/**
 * Remove the margin in all browsers.
 */

body {
  margin: 0;
}

/**
 * Render the `main` element consistently in IE.
 */

main {
  display: block;
}

/**
 * Correct the font size and margin on `h1` elements within `section` and
 * `article` contexts in Chrome, Firefox, and Safari.
 */

h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

/* Grouping content
   ========================================================================== */

/**
 * 1. Add the correct box sizing in Firefox.
 * 2. Show the overflow in Edge and IE.
 */

hr {
  box-sizing: content-box; /* 1 */
  height: 0; /* 1 */
  overflow: visible; /* 2 */
}

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */

pre {
  font-family: monospace, monospace; /* 1 */
  font-size: 1em; /* 2 */
}

/* Text-level semantics
   ========================================================================== */

/**
 * Remove the gray background on active links in IE 10.
 */

a {
  background-color: transparent;
}

/**
 * 1. Remove the bottom border in Chrome 57-
 * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
 */

abbr[title] {
  border-bottom: none; /* 1 */
  text-decoration: underline; /* 2 */
  text-decoration: underline dotted; /* 2 */
}

/**
 * Add the correct font weight in Chrome, Edge, and Safari.
 */

b,
strong {
  font-weight: bolder;
}

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */

code,
kbd,
samp {
  font-family: monospace, monospace; /* 1 */
  font-size: 1em; /* 2 */
}

/**
 * Add the correct font size in all browsers.
 */

small {
  font-size: 80%;
}

/**
 * Prevent `sub` and `sup` elements from affecting the line height in
 * all browsers.
 */

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/* Embedded content
   ========================================================================== */

/**
 * Remove the border on images inside links in IE 10.
 */

img {
  border-style: none;
}

/* Forms
   ========================================================================== */

/**
 * 1. Change the font styles in all browsers.
 * 2. Remove the margin in Firefox and Safari.
 */

button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* 1 */
  font-size: 100%; /* 1 */
  line-height: 1.15; /* 1 */
  margin: 0; /* 2 */
}

/**
 * Show the overflow in IE.
 * 1. Show the overflow in Edge.
 */

button,
input {
  /* 1 */
  overflow: visible;
}

/**
 * Remove the inheritance of text transform in Edge, Firefox, and IE.
 * 1. Remove the inheritance of text transform in Firefox.
 */

button,
select {
  /* 1 */
  text-transform: none;
}

/**
 * Correct the inability to style clickable types in iOS and Safari.
 */

button,
[type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: button;
}

/**
 * Remove the inner border and padding in Firefox.
 */

button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
  border-style: none;
  padding: 0;
}

/**
 * Restore the focus styles unset by the previous rule.
 */

button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
  outline: 1px dotted ButtonText;
}

/**
 * Correct the padding in Firefox.
 */

fieldset {
  padding: 0.35em 0.75em 0.625em;
}

/**
 * 1. Correct the text wrapping in Edge and IE.
 * 2. Correct the color inheritance from `fieldset` elements in IE.
 * 3. Remove the padding so developers are not caught out when they zero out
 *    `fieldset` elements in all browsers.
 */

legend {
  box-sizing: border-box; /* 1 */
  color: inherit; /* 2 */
  display: table; /* 1 */
  max-width: 100%; /* 1 */
  padding: 0; /* 3 */
  white-space: normal; /* 1 */
}

/**
 * Add the correct vertical alignment in Chrome, Firefox, and Opera.
 */

progress {
  vertical-align: baseline;
}

/**
 * Remove the default vertical scrollbar in IE 10+.
 */

textarea {
  overflow: auto;
}

/**
 * 1. Add the correct box sizing in IE 10.
 * 2. Remove the padding in IE 10.
 */

[type="checkbox"],
[type="radio"] {
  box-sizing: border-box; /* 1 */
  padding: 0; /* 2 */
}

/**
 * Correct the cursor style of increment and decrement buttons in Chrome.
 */

[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
  height: auto;
}

/**
 * 1. Correct the odd appearance in Chrome and Safari.
 * 2. Correct the outline style in Safari.
 */

[type="search"] {
  -webkit-appearance: textfield; /* 1 */
  outline-offset: -2px; /* 2 */
}

/**
 * Remove the inner padding in Chrome and Safari on macOS.
 */

[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}

/**
 * 1. Correct the inability to style clickable types in iOS and Safari.
 * 2. Change font properties to `inherit` in Safari.
 */

::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}

/* Interactive
   ========================================================================== */

/*
 * Add the correct display in Edge, IE 10+, and Firefox.
 */

details {
  display: block;
}

/*
 * Add the correct display in all browsers.
 */

summary {
  display: list-item;
}

/* Misc
   ========================================================================== */

/**
 * Add the correct display in IE 10+.
 */

template {
  display: none;
}

/**
 * Add the correct display in IE 10.
 */

[hidden] {
  display: none;
}


/* === skeleton.css === */

/*
* Skeleton V2.0.4
* Copyright 2014, Dave Gamache
* www.getskeleton.com
* Free to use under the MIT license.
* http://www.opensource.org/licenses/mit-license.php
* 12/29/2014
*/
/* Table of contents
––––––––––––––––––––––––––––––––––––––––––––––––––
- Grid
- Base Styles
- Typography
- Links
- Buttons
- Forms
- Lists
- Code
- Tables
- Spacing
- Utilities
- Clearing
- Media Queries
*/
/* Grid
–––––––––––––––––––––––––––––––––––––––––––––––––– */
.container {
  position: relative;
  width: 100%;
  max-width: 640px;
  margin: 0 auto;
  padding: 0 20px;
  box-sizing: border-box;
}

.column,
.columns {
  width: 100%;
  float: left;
  box-sizing: border-box;
}

/* For devices larger than 550px */
@media (min-width: 550px) {
  .column,
  .columns {
    margin-left: 4%;
  }

  .column:first-child,
  .columns:first-child {
    margin-left: 0;
  }

  .one.column,
  .one.columns {
    width: 4.66666666667%;
  }

  .two.columns {
    width: 13.3333333333%;
  }

  .three.columns {
    width: 22%;
  }

  .four.columns {
    width: 30.6666666667%;
  }

  .five.columns {
    width: 39.3333333333%;
  }

  .six.columns {
    width: 48%;
  }

  .seven.columns {
    width: 56.6666666667%;
  }

  .eight.columns {
    width: 65.3333333333%;
  }

  .nine.columns {
    width: 74.0%;
  }

  .ten.columns {
    width: 82.6666666667%;
  }

  .eleven.columns {
    width: 91.3333333333%;
  }

  .twelve.columns {
    width: 100%;
    margin-left: 0;
  }

  .one-third.column {
    width: 30.6666666667%;
  }

  .two-thirds.column {
    width: 65.3333333333%;
  }

  .one-half.column {
    width: 48%;
  }

  /* Offsets */
  .offset-by-one.column,
  .offset-by-one.columns {
    margin-left: 8.66666666667%;
  }

  .offset-by-two.column,
  .offset-by-two.columns {
    margin-left: 17.3333333333%;
  }

  .offset-by-three.column,
  .offset-by-three.columns {
    margin-left: 26%;
  }

  .offset-by-four.column,
  .offset-by-four.columns {
    margin-left: 34.6666666667%;
  }

  .offset-by-five.column,
  .offset-by-five.columns {
    margin-left: 43.3333333333%;
  }

  .offset-by-six.column,
  .offset-by-six.columns {
    margin-left: 52%;
  }

  .offset-by-seven.column,
  .offset-by-seven.columns {
    margin-left: 60.6666666667%;
  }

  .offset-by-eight.column,
  .offset-by-eight.columns {
    margin-left: 69.3333333333%;
  }

  .offset-by-nine.column,
  .offset-by-nine.columns {
    margin-left: 78.0%;
  }

  .offset-by-ten.column,
  .offset-by-ten.columns {
    margin-left: 86.6666666667%;
  }

  .offset-by-eleven.column,
  .offset-by-eleven.columns {
    margin-left: 95.3333333333%;
  }

  .offset-by-one-third.column,
  .offset-by-one-third.columns {
    margin-left: 34.6666666667%;
  }

  .offset-by-two-thirds.column,
  .offset-by-two-thirds.columns {
    margin-left: 69.3333333333%;
  }

  .offset-by-one-half.column,
  .offset-by-one-half.columns {
    margin-left: 52%;
  }
}

/* Base Styles
–––––––––––––––––––––––––––––––––––––––––––––––––– */
/* NOTE
html is set to 62.5% so that all the REM measurements throughout Skeleton
are based on 10px sizing. So basically 1.5rem = 15px :) */
html {
  font-size: 62.5%;
}

body {
  font-size: 1.6em;
  /* currently ems cause chrome bug misinterpreting rems on body element */
  line-height: 1.6;
  font-weight: 400;
  font-family: "Inter", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif;
  color: var(--color-text);
}

/* Typography
–––––––––––––––––––––––––––––––––––––––––––––––––– */
h1, h2, h3, h4, h5, h6 {
  margin-top: 0;
  margin-bottom: 1.5rem;
  font-family: 'DM Serif Display', serif;
  font-weight: 400;
}

h1 {
  font-size: 3.4rem;
  line-height: 1.2;
}

h2 {
  font-size: 2.6rem;
  line-height: 1.25;
}

h3 {
  font-size: 2.0rem;
  line-height: 1.3;
}

h4 {
  font-size: 1.6rem;
  line-height: 1.35;
}

h5 {
  font-size: 1.4rem;
  line-height: 1.5;
}

h6 {
  font-size: 1.2rem;
  line-height: 1.6;
  letter-spacing: 0;
}

/* Larger than phablet */
/* @media (min-width: 550px) {
  h1 {
    font-size: 5.0rem;
  }

  h2 {
    font-size: 4.2rem;
  }

  h3 {
    font-size: 3.6rem;
  }

  h4 {
    font-size: 3.0rem;
  }

  h5 {
    font-size: 2.4rem;
  }

  h6 {
    font-size: 1.8rem;
  }
} */

p {
  margin-top: 0;
}

/* Links
–––––––––––––––––––––––––––––––––––––––––––––––––– */
a:not(.icon) {
  color: inherit;
  background-size: 100% 200%;
  transition:
    background-position .2s ease-in-out
}

a:hover:not(.icon),
a:focus:not(.icon) {
  background-position: 0 100%;
  color: var(--color-bg);
}

/* a:hover {
  background-color: #0FA0CE;
  transition: to top 200ms ease-out;

}

.link {
  text-decoration: none;
  color: inherit;
  position: relative;
}

.link:hover {
  color: inherit;
}

.link:after {
  content: "";
  position: absolute;
  z-index: -1;
  top: 80%;
  left: -0.1em;
  right: -0.1em;
  bottom: 0;
  transition: top 200ms cubic-bezier(0, .8, .13, 1);
  background-color: #0FA0CE;
}

.link:hover:after {
  top: 0%;
} */

/* Buttons
–––––––––––––––––––––––––––––––––––––––––––––––––– */
.button,
button,
input[type="submit"],
input[type="reset"],
input[type="button"] {
  display: inline-block;
  height: 38px;
  padding: 0 30px;
  color: var(--color-fg-muted);
  text-align: center;
  font-size: 11px;
  font-weight: 600;
  line-height: 38px;
  letter-spacing: .1rem;
  text-transform: uppercase;
  text-decoration: none;
  white-space: nowrap;
  background-color: transparent;
  border-radius: 4px;
  border: 1px solid var(--color-border);
  cursor: pointer;
  box-sizing: border-box;
}

.button:hover,
button:hover,
input[type="submit"]:hover,
input[type="reset"]:hover,
input[type="button"]:hover,
.button:focus,
button:focus,
input[type="submit"]:focus,
input[type="reset"]:focus,
input[type="button"]:focus {
  color: var(--color-text);
  border-color: var(--color-border-strong);
  outline: 0;
}

.button.button-primary,
button.button-primary,
input[type="submit"].button-primary,
input[type="reset"].button-primary,
input[type="button"].button-primary {
  color: var(--color-bg);
  background-color: var(--color-text);
  border-color: var(--color-text);
}

.button.button-primary:hover,
button.button-primary:hover,
input[type="submit"].button-primary:hover,
input[type="reset"].button-primary:hover,
input[type="button"].button-primary:hover,
.button.button-primary:focus,
button.button-primary:focus,
input[type="submit"].button-primary:focus,
input[type="reset"].button-primary:focus,
input[type="button"].button-primary:focus {
  color: var(--color-bg);
  background-color: var(--color-accent);
  border-color: var(--color-accent);
}

/* Forms
–––––––––––––––––––––––––––––––––––––––––––––––––– */
input[type="email"],
input[type="number"],
input[type="search"],
input[type="text"],
input[type="tel"],
input[type="url"],
input[type="password"],
textarea,
select {
  height: 38px;
  padding: 6px 10px;
  /* The 6px vertically centers text on FF, ignored by Webkit */
  background-color: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: 4px;
  box-shadow: none;
  box-sizing: border-box;
}

/* Removes awkward default styles on some inputs for iOS */
input[type="email"],
input[type="number"],
input[type="search"],
input[type="text"],
input[type="tel"],
input[type="url"],
input[type="password"],
textarea {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}

textarea {
  min-height: 65px;
  padding-top: 6px;
  padding-bottom: 6px;
}

input[type="email"]:focus,
input[type="number"]:focus,
input[type="search"]:focus,
input[type="text"]:focus,
input[type="tel"]:focus,
input[type="url"]:focus,
input[type="password"]:focus,
textarea:focus,
select:focus {
  outline: 0;
}

label,
legend {
  display: block;
  margin-bottom: .5rem;
  font-weight: 600;
}

fieldset {
  padding: 0;
  border-width: 0;
}

input[type="checkbox"],
input[type="radio"] {
  display: inline;
}

label>.label-body {
  display: inline-block;
  margin-left: .5rem;
  font-weight: normal;
}

/* Lists
–––––––––––––––––––––––––––––––––––––––––––––––––– */
ul {
  list-style: circle outside;
  margin-left: 2rem;
}

ol {
  list-style: decimal outside;
  margin-left: 2rem;
}

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

ul ul,
ul ol,
ol ol,
ol ul {
  margin: 1.5rem 0 1.5rem 3rem;
  font-size: 90%;
}

li {
  margin-bottom: 1rem;
}

/* Code
–––––––––––––––––––––––––––––––––––––––––––––––––– */
/* code {
  padding: .2rem .5rem;
  margin: 0 .2rem;
  font-size: 90%;
  white-space: nowrap;
  background: #F1F1F1;
  border: 1px solid #E1E1E1;
  border-radius: 4px;
}

pre>code {
  display: block;
  padding: 1rem 1.5rem;
  white-space: pre;
} */
/* Tables
–––––––––––––––––––––––––––––––––––––––––––––––––– */
th,
td {
  padding: 12px 15px;
  text-align: left;
  border-bottom: 1px solid var(--color-border);
}

th:first-child,
td:first-child {
  padding-left: 0;
}

th:last-child,
td:last-child {
  padding-right: 0;
}

/* Spacing
–––––––––––––––––––––––––––––––––––––––––––––––––– */
button,
.button {
  margin-bottom: 1rem;
}

input,
textarea,
select,
fieldset {
  margin-bottom: 1.5rem;
}

/* pre,
blockquote,
dl,
figure,
table,
p,
ul,
ol,
form {
  margin-bottom: 2.5rem;
} */

/* Utilities
–––––––––––––––––––––––––––––––––––––––––––––––––– */
.u-full-width {
  width: 100%;
  box-sizing: border-box;
}

.u-max-full-width {
  max-width: 100%;
  box-sizing: border-box;
}

.u-pull-right {
  float: right;
}

.u-pull-left {
  float: left;
}

/* Misc
–––––––––––––––––––––––––––––––––––––––––––––––––– */
hr {
  margin-top: 3rem;
  margin-bottom: 3.5rem;
  border-width: 0;
  border-top: 1px solid var(--color-border);
}

/* Clearing
–––––––––––––––––––––––––––––––––––––––––––––––––– */
/* Self Clearing Goodness */
.container:after,
.row:after,
.u-cf {
  content: "";
  display: table;
  clear: both;
}

/* Media Queries
–––––––––––––––––––––––––––––––––––––––––––––––––– */
/*
Note: The best way to structure the use of media queries is to create the queries
near the relevant code. For example, if you wanted to change the styles for buttons
on small devices, paste the mobile query code up in the buttons section and style it
there.
*/
/* Larger than mobile */
@media (min-width: 400px) {}

/* Larger than phablet (also point when grid becomes active) */
@media (min-width: 550px) {}

/* Larger than tablet */
@media (min-width: 750px) {}

/* Larger than desktop */
@media (min-width: 1000px) {}

/* Larger than Desktop HD */
@media (min-width: 1200px) {}


/* === custom.css === */

/* dm-serif-display-regular - latin */
@font-face {
  font-family: 'DM Serif Display';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local('DM Serif Display Regular'), local('DMSerifDisplay-Regular'),
       url('../fonts/dm-serif-display-v4-latin-regular.woff2') format('woff2');
}

/* inter-regular - latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/inter-v2-latin-regular.woff2') format('woff2');
}

html {
  overflow: auto;
  transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out;
}

/* Accent-driven rules (previously injected by tcolor.ejs) */
a:not(.icon) {
  text-decoration-color: var(--color-accent);
  background-image: linear-gradient(
    to bottom,
    rgba(0, 0, 0, 0) 50%,
    var(--color-accent) 50%
  );
}

blockquote {
  border-left: 8px solid var(--color-accent);
}

.nanobar .bar {
  background: var(--color-accent);
}

#reading-progress .bar {
  background: var(--color-accent);
}

.button.button-primary:hover,
button.button-primary:hover,
input[type="submit"].button-primary:hover,
input[type="reset"].button-primary:hover,
input[type="button"].button-primary:hover,
.button.button-primary:focus,
button.button-primary:focus,
input[type="submit"].button-primary:focus,
input[type="reset"].button-primary:focus,
input[type="button"].button-primary:focus {
  background-color: var(--color-accent);
  border-color: var(--color-accent);
}

input[type="email"]:focus,
input[type="number"]:focus,
input[type="search"]:focus,
input[type="text"]:focus,
input[type="tel"]:focus,
input[type="url"]:focus,
input[type="password"]:focus,
textarea:focus,
select:focus {
  border: 1px solid var(--color-accent);
}

/*
  Theme base colors
  - Use <html>.darkmode set early in <head> to avoid white flash on navigation.
  - Keep body.darkmode support for existing selectors.
*/
html,
body {
  background: var(--color-bg);
  color: var(--color-text);
}

html.darkmode {
  background: var(--color-bg);
  color-scheme: dark;
}

html.darkmode body,
body.darkmode {
  background: var(--color-bg);
  color: var(--color-text);
}

img {
  max-width: 100%;
  -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.6);
  -moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.6);
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.6);
  margin-bottom: 1%;
}

@media (min-width: 550px) {
  /*
  Side by side gallery
  use with </> alignment
  e.g.
  [_gallery >](imgages/test.jpg)
  */
  img[alt~="_gallery"] {
    max-width: 49.5%;
  }

  /* Aligned to the right */
  img[alt$=">"] {
    float: right;
  }

  /* Aligned to the left */
  img[alt$="<"] {
    float: left;
  }

  /* Centered image */
  img[alt$="><"] {
    display: block;
    margin: auto;
    float: none !important;
  }
}

.center {
  text-align: center;
}

.left {
  margin-left: 0;
}

.lit {
  font-size: 1.5rem;
  font-weight: 300;
}

.little-svg {
  fill: var(--color-bg);
}

.ml-0 {
  margin-left: 0.7rem;
}

.ml {
  margin-left: 2rem;
}

.ml-1 {
  margin-left: 5rem;
}

.bottom {
  margin-block-start: 0px;
  margin-block-end: 0px;
  margin-bottom: 0px;
}

.mb-1 {
  margin-bottom: 0px;
}

.mb-2 {
  margin-bottom: 5px;
}

.mb-3 {
  margin-bottom: 20px;
}

.mr {
  margin-right: 32px;
}

.mt-0 {
  margin-top: 0px;
}

.mt-2 {
  margin-top: 3rem;
}

.mt-3 {
  margin-top: 4rem;
}

.mx-auto {
  margin: auto;
}

.mode {
  position: absolute;
  display: block;
  cursor: pointer;
  -webkit-touch-callout: none; /* iOS Safari */
    -webkit-user-select: none; /* Safari */
     -khtml-user-select: none; /* Konqueror HTML */
       -moz-user-select: none; /* Old versions of Firefox */
        -ms-user-select: none; /* Internet Explorer/Edge */
            user-select: none; /* Non-prefixed version, currently
                                  supported by Chrome, Edge, Opera and Firefox */
}

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

.text-right {
  text-align: right;
}

.tag-link {
  margin-right: 10px;
}

.about {
  width: 150px;
  height: 150px;
  border-radius: 50%;
}

li p code {
  background-color: var(--color-surface);
  border-radius: 5px;
  padding: 0px 2px;
  font-size: 85%;
}

/* blockquote */
blockquote {
  font-family: 'Inter';
  background-color: rgba(148, 148, 149, 0.08) ;
  margin: 1.5em 0px;
  padding: 1.1em 20px 1px 20px;
  font-style: italic;
}

blockquote footer {
  font-family: 'Inter';
  font-size: 16px;
  padding-bottom: 10px;
  margin-top: -10px;
}

blockquote footer cite:before {
  content: "—";
  padding: 0 0.5em;
}

/* Scroll bar */
::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

::-webkit-scrollbar-thumb {
  background: rgb(128 128 128 / 70%);
}
::-webkit-scrollbar-thumb:window-inactive {
  background: rgb(128 128 128 / 20%);
}

::-webkit-scrollbar-thumb:active { 
  background-color: rgb(128 128 128 / 100%);
}

/* Footer */
a.footer-link:hover,
a.footer-link:focus {
  cursor: pointer;
}

.svg-hov {
  transition: all .2s ease-in-out;
}
.svg-hov:hover {
  transform: translateY(-3px);
  transition: all .2s ease-in-out;

}

.hexo {
  fill: #03adfc;
  vertical-align: middle;
  padding-bottom: 4px;
}

.nanobar {
  left: 0;
}

body {
  padding: 5px;
  overflow-y: scroll;
  overflow-x: hidden;
  transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out;
}

body.darkmode {
  background: var(--color-bg);
  color: var(--color-text);
}

.trans {
  animation: transitionPlay 0.7s;
}

@keyframes transitionPlay {
  from {
    opacity: 0;
    transform: translateY(20px);
  }

  to {
    opacity: 1;
    transform: none;
  }
}

.hidden {
  display: none;
}

#comments {
  text-align: center;
}

#madewith {
  text-align: center;
}

.posisi {
  text-align: center;
}



@media (min-width: 550px) {
  .posisi {
    text-align: right;
  }

  #comments {
    text-align: left;
  }

  #madewith {
    text-align: left;
  }

}


/* =========================================================
   Isso comments: make it match the site (light + dark)
   ========================================================= */

/* Theme tokens for Isso */
#isso-thread{
  --isso-bg: rgba(0,0,0,0.015);
  --isso-card-bg: rgba(0,0,0,0.02);
  --isso-fg: rgba(20,20,25,0.92);
  --isso-muted: rgba(20,20,25,0.62);
  --isso-border: rgba(20,20,25,0.18);
  --isso-border-strong: rgba(20,20,25,0.28);
  --isso-focus: color-mix(in srgb, var(--color-accent) 55%, transparent);
  --isso-radius: var(--radius-ui);
  --isso-radius-sm: var(--radius-ui);
  color: var(--isso-fg);
}

/* Dark mode (support both html.darkmode and body.darkmode) */
html.darkmode #isso-thread,
body.darkmode #isso-thread{
  --isso-bg: rgba(255,255,255,0.03);
  --isso-card-bg: rgba(255,255,255,0.035);
  --isso-fg: rgba(235,235,245,0.92);
  --isso-muted: rgba(235,235,245,0.62);
  --isso-border: rgba(255,255,255,0.14);
  --isso-border-strong: rgba(255,255,255,0.22);
  --isso-focus: color-mix(in srgb, var(--color-accent) 65%, transparent);
  }

/* Make everything inherit your typography */
#isso-thread,
#isso-thread *{
  font-family: inherit;
}

/* General spacing */
#isso-thread{
  margin-top: 2rem;
  text-align: left; /* your theme centers #comments, Isso should stay readable */
}

/* ---------------------------------
   Postbox (composer)
---------------------------------- */
#isso-thread .isso-postbox{
  border: 1px solid var(--isso-border) !important;
  border-radius: var(--isso-radius);
  background: var(--isso-card-bg) !important;
  padding: 14px 14px 12px;
}

#isso-thread .form-wrapper,
#isso-thread .textarea-wrapper{
  margin: 0;
}

#isso-thread .textarea-wrapper{
  margin-bottom: 10px;
}

#isso-thread textarea,
#isso-thread .textarea,
#isso-thread input[type="text"],
#isso-thread input[type="email"],
#isso-thread input[type="url"]{
  width: 100%;
  box-sizing: border-box;
  border-radius: var(--isso-radius-sm);
  border: 1px solid var(--isso-border);
  background: var(--isso-bg);
  color: var(--isso-fg);
  padding: 12px 12px;
  outline: none;
  box-shadow: none;
}

/* Force override of Isso's own stylesheet (it may load after ours) */
#isso-thread .textarea,
#isso-thread textarea,
#isso-thread input[type="text"],
#isso-thread input[type="email"],
#isso-thread input[type="url"]{
  background: var(--isso-bg) !important;
  color: var(--isso-fg) !important;
  border-color: var(--isso-border) !important;
}

#isso-thread textarea,
#isso-thread .textarea{
  min-height: 110px;
}

/* Isso uses a contenteditable <div class="textarea"> (not a <textarea>). */
#isso-thread .textarea{
  padding: 12px 12px;
  line-height: 1.45;
  white-space: pre-wrap;
}


#isso-thread ::placeholder{
  color: var(--isso-muted);
  opacity: 0.75;
}


/* Contenteditable placeholder (Isso renders placeholder via :empty:before) */
#isso-thread .textarea:empty:before{
  color: var(--isso-muted);
  opacity: 0.75;
}

#isso-thread textarea:focus,
#isso-thread .textarea:focus,
#isso-thread input:focus{
  border-color: var(--isso-focus);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-accent) 20%, transparent);
}

/* auth-section: inputs + actions */
#isso-thread .auth-section{
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  margin: 0;
  justify-content: flex-start; /* avoid huge empty gaps */
}

/* Isso uses <p class="input-wrapper"> */
#isso-thread .input-wrapper{
  margin: 0;
  flex: 1 1 180px;
  min-width: 160px;
}

/* Action rows (<p class="post-action">) */
#isso-thread .post-action{
  margin: 0 !important;
  margin-left: 0 !important;
  float: none !important;
  display: inline-flex;
  flex: 0 0 auto;
}

/* Buttons */
#isso-thread input[type="submit"],
#isso-thread input[type="button"],
#isso-thread button{
  border-radius: var(--isso-radius-sm);
  border: 1px solid var(--isso-border-strong);
  background: transparent;
  color: var(--isso-fg);
  padding: 10px 12px;
  cursor: pointer;
  box-shadow: none;
}

#isso-thread input[type="submit"]:hover,
#isso-thread input[type="button"]:hover,
#isso-thread button:hover{
  border-color: var(--isso-focus);
}

#isso-thread input[type="submit"]:active,
#isso-thread input[type="button"]:active,
#isso-thread button:active{
  transform: translateY(1px);
}

/* Notification checkbox row */
#isso-thread .notification-section{
  margin-top: 10px;
  color: var(--isso-muted);
}
#isso-thread .notification-section label{
  display: inline-flex;
  align-items: center;
  gap: 10px;
}

/* ---------------------------------
   Comments list
---------------------------------- */
#isso-thread #isso-root{
  margin-top: 16px;
}

#isso-thread .isso-comment{
  border: 1px solid var(--isso-border);
  border-radius: var(--isso-radius);
  background: var(--isso-card-bg);
  padding: 14px 16px;
  margin: 14px 0;
  box-shadow: none;
}

/* Header meta */
#isso-thread .isso-comment-header{
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}

#isso-thread .isso-author{
  font-weight: 650;
}

#isso-thread .isso-permalink,
#isso-thread .isso-comment-header a,
#isso-thread .isso-comment-header .isso-date{
  color: var(--isso-muted);
  text-decoration: none;
}

#isso-thread .isso-permalink:hover,
#isso-thread .isso-comment-header a:hover{
  color: var(--isso-fg);
  text-decoration: underline;
}

/* Body text */
#isso-thread .isso-text{
  color: var(--isso-fg);
  line-height: 1.55;
}

/* Footer (reply/votes) */
#isso-thread .isso-comment-footer{
  margin-top: 10px;
  color: var(--isso-muted);
}

#isso-thread .isso-comment-footer a{
  color: var(--isso-muted);
  text-decoration: none;
}

#isso-thread .isso-comment-footer a:hover{
  color: var(--isso-fg);
  text-decoration: underline;
}

/* Votes alignment (up/down) */
#isso-thread .isso-votes{
  display: inline-flex;
  gap: 10px;
  align-items: center;
}

/* Avatar */
#isso-thread .isso-avatar img{
  border-radius: 999px;
  border: 1px solid var(--isso-border);
}

/* Replies (follow-ups) */
#isso-thread .isso-follow-up{
  margin-left: 18px;
  padding-left: 12px;
  border-left: 2px solid var(--isso-border);
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce){
  #isso-thread *{
    transition: none !important;
    animation: none !important;
  }
}
/* =========================================================
   Codeblocks (hexo highlight)
   Targets: <pre><code class="highlight lang"><span class="comment">...</span>...</code></pre>
   + Copy button (hover-only on desktop, always visible on touch)
   ========================================================= */

:root{
  /* --- Layout --- */
  --radius-ui: 0px;

  /* --- Light palette --- */
  --color-bg:            #F8F7F4;
  --color-surface:       #EFEFEB;
  --color-text:          #222222;
  --color-fg-muted:      rgba(34, 34, 34, 0.62);
  --color-accent:        #0FA0CE;
  --color-accent-dark:   #0B8DB5;
  --color-secondary:     #5A8FA8;
  --color-highlight:     #F0A832;
  --color-border:        #DDDBD6;
  --color-border-strong: #ABABAB;

  /* --- Tech-chip palette (light): vibrant, matched to the rest of the site
         (accent / highlight saturation level). In light mode chips take
         dark text on a vibrant bg, so colors stay punchy. --- */
  --chip-teal:   #0FA0CE;
  --chip-slate:  #5A8FA8;
  --chip-orange: #F0A832;
  --chip-sage:   #6BAB4A;
  --chip-wine:   #C0535E;
  --chip-plum:   #9159AC;
  --chip-grey:   #8A8A8A;
  --chip-text:   #1A1A1A;

  /* --- Code block tokens (light) --- */
  --code-bg:      #EEECEA;
  --code-border:  rgba(0,0,0,.10);
  --code-fg:      #222222;
  --code-muted:   #6B7280;

  --code-keyword: #7c3aed;
  --code-string:  #16a34a;
  --code-number:  #d97706;
  --code-func:    #2563eb;
  --code-const:   #db2777;
}

html.darkmode,
body.darkmode{
  /* --- Dark palette --- */
  --color-bg:            #1E1E24;
  --color-surface:       #28282F;
  --color-text:          #E4E4E4;
  --color-fg-muted:      rgba(228, 228, 228, 0.62);
  --color-accent:        #38B8E0;
  --color-accent-dark:   #0FA0CE;
  --color-secondary:     #4A9EC0;
  --color-highlight:     #E0A83A;
  --color-border:        #3A3A44;
  --color-border-strong: #5A5A6A;

  /* --- Tech-chip palette (dark): darker so light text reads on top.
         Same hue families as light mode, just shifted down for legibility. --- */
  --chip-teal:   #0B7A98;
  --chip-slate:  #3F647A;
  --chip-orange: #A87616;
  --chip-sage:   #4F8A30;
  --chip-wine:   #934050;
  --chip-plum:   #6E417F;
  --chip-grey:   #5F5F5F;
  --chip-text:   #F8F7F4;

  /* --- Code block tokens (dark) --- */
  --code-bg:      #252530;
  --code-border:  rgba(255,255,255,.12);
  --code-fg:      #E4E4E4;
  --code-muted:   rgba(228, 228, 228, 0.55);

  --code-keyword: #a78bfa;
  --code-string:  #4ade80;
  --code-number:  #fbbf24;
  --code-func:    #60a5fa;
  --code-const:   #f472b6;
}

::selection,
::-moz-selection {
  background-color: var(--color-accent);
  color: var(--color-bg);
}

pre.codeblock,
pre > code.highlight{
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  /* Disable ligatures so operators like !=, ->, => render as literal characters
     rather than being merged into glyphs that obscure what the code actually says. */
  font-feature-settings: "liga" 0, "calt" 0;
  font-variant-ligatures: none;
}

pre.codeblock{
  position: relative;
  background: var(--code-bg);
  color: var(--code-fg);
  border: 1px solid var(--code-border);
  border-radius: var(--radius-ui) !important;
  padding: 16px 20px;
  overflow: auto;
  line-height: 1.6;
  font-size: 0.95rem;
  margin: 1.1rem 0;
}

/* If the highlighter uses <pre><code class="highlight ..."> ... </code></pre> */
pre.codeblock > code.highlight{
  display: block;
  white-space: pre;
}

/* token-ish classes produced by the highlighter */
pre.codeblock > code.highlight .comment,
pre.codeblock > code.highlight .quote{
  color: var(--code-muted);
  font-style: italic;
}

pre.codeblock > code.highlight .keyword,
pre.codeblock > code.highlight .selector-tag,
pre.codeblock > code.highlight .built_in{
  color: var(--code-keyword);
}

pre.codeblock > code.highlight .string,
pre.codeblock > code.highlight .title,
pre.codeblock > code.highlight .name{
  color: var(--code-string);
}

pre.codeblock > code.highlight .number,
pre.codeblock > code.highlight .literal{
  color: var(--code-number);
}

pre.codeblock > code.highlight .function,
pre.codeblock > code.highlight .attr,
pre.codeblock > code.highlight .attribute{
  color: var(--code-func);
}

pre.codeblock > code.highlight .symbol,
pre.codeblock > code.highlight .bullet,
pre.codeblock > code.highlight .meta{
  color: var(--code-const);
}

pre.codeblock > code.highlight .strong{ font-weight: 700; }
pre.codeblock > code.highlight .emphasis{ font-style: italic; }

/* ===== Copy button wrapper ===== */
.codewrap{
  position: relative;
}

/* button lives OUTSIDE the scroll container; stays fixed when you scroll horizontally */
.codewrap .code-copy{
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 5;

  display: inline-flex;
  align-items: center;
  justify-content: center;

  width: 34px;
  height: 34px;
  border-radius: var(--radius-ui) !important;

  background: rgba(255,255,255,.75);
  border: 1px solid rgba(0,0,0,.10);
  color: rgba(0,0,0,.70);
  backdrop-filter: blur(10px);

  /* hidden by default on desktop */
  opacity: 0;
  pointer-events: none;
  transition: opacity 120ms ease, transform 120ms ease;
}

html.darkmode .codewrap .code-copy,
body.darkmode .codewrap .code-copy{
  background: rgba(20,20,26,.55);
  border: 1px solid rgba(255,255,255,.14);
  color: rgba(235,235,235,.80);
}

.codewrap:hover .code-copy,
.codewrap:focus-within .code-copy{
  opacity: 1;
  pointer-events: auto;
}

@media (hover: none){
  .codewrap .code-copy{
    opacity: 1;
    pointer-events: auto;
  }
}

.codewrap .code-copy:hover{
  transform: translateY(-1px);
}

.codewrap .code-copy .code-copy-icon{
  font-size: 15px;
  line-height: 1;
}

/* optional: give a tiny bit of room so button never covers the first chars */
.codewrap pre.codeblock{
  padding-top: 44px;
}


/* --- Typography sanity: codeblocks + isso comments --- */

/* Code blocks (your HTML: pre > code.highlight ...) */
pre > code.highlight {
  font-size: clamp(14px, 0.25vw + 13px, 16px);
  line-height: 1.55;
}

pre {
  font-size: clamp(14px, 0.25vw + 13px, 16px);
  line-height: 1.55;
}

/* optional: inline code a touch smaller than blocks */
p code, li code, a code {
  font-size: 0.95em;
}

/* Isso comment form: bring it back to the site's scale */
#isso-thread .textarea,
#isso-thread .textarea.placeholder {
  font-size: clamp(15px, 0.2vw + 14px, 16px);
  line-height: 1.55;
}

#isso-thread input[type="text"],
#isso-thread input[type="email"],
#isso-thread input[type="url"] {
  font-size: clamp(14px, 0.15vw + 13px, 15px);
  line-height: 1.4;
}

#isso-thread input[type="submit"],
#isso-thread input[type="button"],
#isso-thread button {
  font-size: clamp(13px, 0.15vw + 12px, 14px);
  line-height: 1.2;
}

/* =========================================================
   Header nav + language toggle (header placement)
   ========================================================= */

.header-nav-toggle{
  text-align: right;
}

.header-nav-toggle .langtoggle{
  display: inline-flex;
  align-items: center;
  gap: 0.8rem;
  /* keep it slightly inside the container so it doesn't "kiss" the edge */
  margin-right: 0.25rem;
}

.header-nav-toggle .langtoggle .langtoggle__btn{
  text-decoration: none !important;
  border-bottom: none !important;
}


 /* =========================================================
Consistency: square UI controls
========================================================= */
 .button,
 button,
 input[type="submit"],
 input[type="reset"],
 input[type="button"],
 input[type="email"],
 input[type="number"],
 input[type="search"],
 input[type="text"],
 input[type="tel"],
 input[type="url"],
 input[type="password"],
 textarea,
 select,
 .pagination a,
 .langtoggle__btn,
 pre,
 code,
 blockquote {
   border-radius: var(--radius-ui) !important;
 }


/* =========================================================
   Codeblocks: unify Prism with theme shell
   Supports:
   - <pre class="language-..."><code class="language-...">...</code></pre> (Prism)
   - <pre class="codeblock"><code class="highlight ...">...</code></pre> (your highlight)
   ========================================================= */

pre[class*="language-"]{
  background: var(--code-bg) !important;
  color: var(--code-fg) !important;
  border: 1px solid var(--code-border) !important;
  border-radius: var(--radius-ui) !important;
  padding: 12px 14px !important;
  overflow: auto !important;
  line-height: 1.55 !important;
  font-size: clamp(14px, 0.25vw + 13px, 16px) !important;
  margin: 1.1rem 0 !important;
}

/* Prism inline code */
:not(pre) > code[class*="language-"]{
  background: rgba(0,0,0,.06);
  border: 1px solid var(--code-border);
  padding: 0.08em 0.28em;
  border-radius: var(--radius-ui);
  white-space: nowrap;
}
html.darkmode :not(pre) > code[class*="language-"],
body.darkmode :not(pre) > code[class*="language-"]{
  background: rgba(255,255,255,.08);
}

/* Inline code everywhere (not only in lists) */
:not(pre) > code{
  background: rgba(0,0,0,.06);
  border: 1px solid rgba(0,0,0,.08);
  padding: 0.08em 0.28em;
  border-radius: var(--radius-ui);
}
html.darkmode :not(pre) > code,
body.darkmode :not(pre) > code{
  background: rgba(255,255,255,.08);
  border-color: rgba(255,255,255,.12);
}


/* =========================================================
   Utility: visually hidden (keeps content in DOM for SEO/accessibility)
   ========================================================= */
.visually-hidden{
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.post-content {
  max-width: 740px;
  margin: 0 auto;
}

/* Post meta line directly under the title: date, reading time, view count.
   No border, no padding-bottom — just a muted byline with generous
   margin-bottom so the first content image gets breathing room. */
.post-meta{
  margin: 0.8rem 0 2.5rem;
  color: var(--color-fg-muted);
  font-size: 1.05rem;
  line-height: 1.5;
}

/* Project-meta block on post pages: tech chips on the left, optional
   "Source" link to the repo on the right. Sits between post-meta and the
   first content image. Same chip + button styles also apply on cards
   (post-meta-block-shared rules below). */
.project-meta{
  margin: -1.5rem 0 1.8rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .5rem 1rem;
}
.project-meta .tech-tags{
  margin: 0;
}
.project-meta .source-btn{
  margin-left: auto;
}

/* Tech-tag chips. Solid filled bg from the --chip-* palette in :root,
   text in --chip-text (auto-inverts per mode). Sharp corners. Applies
   on both archive cards and the post page. */
.tech-tags{
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
}
.tech-chip{
  display: inline-block;
  padding: .35rem .75rem;
  font-size: .9rem;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: .02em;
  background: var(--chip-color, var(--chip-grey));
  color: var(--chip-text);
  border-radius: var(--radius-ui);
}
/* Chips stay put on hover — only the surrounding card itself reacts. */
.archive-grid a.post-card:hover .tech-chip{
  color: var(--chip-text) !important;
}

/* Source-button: mirrors .langtoggle__btn (same height, border, bg, hover
   transform). Light mode keeps full opacity because the warm off-white bg
   needs the button to assert itself; dark mode uses the langtoggle-style
   .65/.95 fade because dark bg already gives the button enough lift. */
.source-btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 34px;
  padding: 0 10px;
  border-radius: 0;
  text-decoration: none !important;
  font-size: 16px;
  line-height: 1;
  user-select: none;
  border: 1px solid rgba(0,0,0,.12);
  background: rgba(0,0,0,.03);
  color: var(--color-text) !important;
  transition: transform .12s ease, background .12s ease, border-color .12s ease, opacity .12s ease;
}
html.darkmode .source-btn,
body.darkmode .source-btn{
  border-color: rgba(255,255,255,.14);
  background: rgba(255,255,255,.05);
  opacity: .65;
}
.source-btn:hover{
  transform: translateY(-1px);
}
html.darkmode .source-btn:hover,
body.darkmode .source-btn:hover{
  opacity: .95;
}
.source-btn svg{
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}
@media (prefers-reduced-motion: reduce) {
  .source-btn { transition: none; }
  .source-btn:hover { transform: none; }
}

/* View counter is hidden by default; JS adds .is-revealed once GoatCounter
   responds with data. Without JS or on a fetch failure, the leading
   separator stays hidden so the meta line never shows a dangling pipe/dot. */
.post-views-wrap{
  display: none;
}
.post-views-wrap.is-revealed{
  display: inline;
  margin-left: 1.5em;
}



/* ===== Print fixes =====
   Fixes Chrome/Firefox printing only the visible viewport when body is absolutely positioned
   (body uses inset + overflow-y: scroll for the site layout).
   For print we must restore normal document flow.
   ======================= */
@media print {
  html, body {
    position: static !important;
    top: auto !important;
    right: auto !important;
    bottom: auto !important;
    left: auto !important;
    inset: auto !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
  }

  body {
    margin: 0 !important;
    padding: 0 !important;
  }

  /* Optional: avoid wasting ink / weird artifacts */
  * {
    animation: none !important;
    transition: none !important;
    box-shadow: none !important;
  }
}


/* === langtoggle.css === */

/* Language toggle (rendered via {% langtoggle %}) */
.langtoggle {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  align-items: center;
  margin: 14px 0 22px;
  padding: 0;
}

.langtoggle__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 34px;
  min-width: 42px;
  padding: 0 10px;
  border-radius: 0;
  text-decoration: none !important;
  font-size: 16px; /* keeps emoji flags crisp */
  line-height: 1;
  user-select: none;
  border: 1px solid rgba(0,0,0,.12);
  background: rgba(0,0,0,.03);
  opacity: .65;
  transition: transform .12s ease, opacity .12s ease, background .12s ease, border-color .12s ease;
}

body.darkmode .langtoggle__btn {
  border-color: rgba(255,255,255,.14);
  background: rgba(255,255,255,.05);
}

.langtoggle__btn:hover {
  opacity: .95;
  transform: translateY(-1px);
}

.langtoggle__btn.is-active,
.langtoggle__btn--active {
  opacity: 1;
  border-color: rgba(0,0,0,.22);
  background: rgba(0,0,0,.08);
  filter: saturate(1.25) contrast(1.05);
}

:root .langtoggle__btn.is-active,
:root .langtoggle__btn--active {
  box-shadow: inset 0 -2px 0 var(--color-accent);
}

body.darkmode .langtoggle__btn.is-active,
.langtoggle__btn--active {
  border-color: rgba(255,255,255,.24);
  background: rgba(255,255,255,.10);
}

@media (prefers-reduced-motion: reduce) {
  .langtoggle__btn { transition: none; }
  .langtoggle__btn:hover { transform: none; }
}

/* Header placement overrides (keep post styling untouched) */
.langtoggle--header {
  margin: 0;
  display: inline-flex;
  vertical-align: middle;
}

/* If someone still has {% langtoggle %} inside post content, hide it to avoid duplicates.
   Header toggle is outside .trans, so it stays visible. */
.trans .langtoggle:not(.langtoggle--header) {
  display: none;
}


@media (max-width: 560px) {
  .langtoggle { gap: 8px; }
  .langtoggle__btn {
    height: 30px;
    min-width: 36px;
    padding: 0 8px;
    font-size: 15px;
  }
}


/* Mobile header: keep nav + language switch on the same row (no horizontal scroll) */
@media (max-width: 560px){
  .header-nav-row{
    display:flex;
    align-items:center;
    gap: 10px 12px;
  }

  /* Neutralize Skeleton's column floats/widths inside this row */
  .header-nav-row > .columns{
    float:none !important;
    width:auto !important;
    margin-left:0 !important;
  }

  /* Let navigation links wrap within their own area, while the toggle stays on the right */
  .header-nav-links{
    flex: 1 1 0;
    min-width: 0;
    display:flex;
    flex-wrap: wrap;
    align-items:center;
    gap: 8px 18px;
    white-space: normal;
    overflow: visible;
  }

  /* Skeleton uses margin-left spacing via .ml – remove it on mobile, we use flex gap instead */
  .header-nav-links a.ml{
    margin-left: 0 !important;
  }

  /* Skeleton's .mt-2 adds top margin to header links; remove it on mobile so the toggle aligns */
  .header-nav-links a.mt-2{
    margin-top: 0 !important;
  }

  .header-nav-toggle{
    flex: 0 0 auto;
    display:flex;
    align-items:center;
    justify-content:flex-end;
    margin: 0;
    padding: 0;
  }

  /* Make the single mobile switch look like the "active" state */
  .langtoggle--header .langtoggle__btn--switch{
    height: 30px;
    /* Keep it compact on mobile (avoid a big empty box) */
    width: 52px;
    min-width: 52px;
    padding: 0;

    opacity: 1;
    border-color: rgba(0,0,0,.22);
    background: rgba(0,0,0,.08);
    filter: saturate(1.25) contrast(1.05);
    box-shadow: inset 0 -2px 0 var(--color-accent);
  }

  body.darkmode .langtoggle--header .langtoggle__btn--switch{
    border-color: rgba(255,255,255,.24);
    background: rgba(255,255,255,.10);
  }
}
/* Mobile header: collapse language toggle into a single switch button */
.langtoggle__btn--switch{ display:none; }
@media (max-width: 560px){
  .langtoggle--header .langtoggle__btn--pair{ display:none !important; }
  .langtoggle--header .langtoggle__btn--switch{ display:inline-flex !important; }
}