@charset "UTF-8";
:root {
  --bg-100: #F5F0E1;
  --bg-200: #F5F0E1;
  --bg-elevated: #F5F0E1;
  --bg-hover: #E0D9C0;
  --gray-100: #E0D9C0;
  --gray-200: #D8D0B8;
  --gray-300: #C8C0A8;
  --gray-400: #B0A888;
  --gray-500: #908870;
  --gray-600: #706850;
  --gray-700: #504838;
  --gray-800: #383020;
  --gray-900: #1A1A1A;
  --gray-1000: #0A0A0A;
  --accent-blue: #1E46A0;
  --accent-blue-hover: #163880;
  --accent-blue-light: #1E46A033;
  --accent-red: #DC2828;
  --accent-red-hover: #C02020;
  --accent-red-light: #DC282826;
  --accent-amber: #FAD20A;
  --accent-amber-hover: #E0BC08;
  --accent-amber-light: #FAD20A26;
  --accent-green: #46a758;
  --accent-green-hover: #3d9a4f;
  --accent-green-light: #46a75826;
  --accent-teal: #12a594;
  --accent-teal-hover: #0e9384;
  --accent-teal-light: #12a59426;
  --accent-purple: #8e4ec6;
  --accent-purple-hover: #7c3aad;
  --accent-purple-light: #8e4ec626;
  --accent-pink: #e93d82;
  --accent-pink-hover: #d6336c;
  --accent-pink-light: #e93d8226;
  --color-fg: var(--gray-1000);
  --color-fg-muted: var(--gray-800);
  --color-fg-subtle: var(--gray-700);
  --color-border: var(--gray-300);
  --color-border-light: var(--gray-200);
  --color-link: var(--accent-blue);
  --color-link-hover: var(--accent-blue-hover);
  --color-success: var(--accent-green);
  --color-warning: var(--accent-amber);
  --color-error: var(--accent-red);
  --color-info: var(--accent-blue);
  --color-code-fg: #DC2828;
  --color-code-bg: var(--gray-200);
  --color-code-block-bg: var(--gray-100);
  --fig-counter: #3F6FD6;
  --fig-space: #F2C200;
  --fig-measure: #DC2828;
}

[data-theme=dark] {
  --bg-100: #121212;
  --bg-200: #1A1A1A;
  --bg-elevated: #1E1E1E;
  --bg-hover: #2A2A2A;
  --gray-100: #1E1E1E;
  --gray-200: #2A2A2A;
  --gray-300: #3A3A3A;
  --gray-400: #4A4A4A;
  --gray-500: #6A6A6A;
  --gray-600: #8A8A8A;
  --gray-700: #A0A0A0;
  --gray-800: #C0C0C0;
  --gray-900: #E0E0E0;
  --gray-1000: #F0F0F0;
  --accent-blue: #5B8DEF;
  --accent-blue-hover: #7BA4F7;
  --accent-blue-light: #5B8DEF33;
  --accent-red: #F06060;
  --accent-red-hover: #F48080;
  --accent-red-light: #F0606026;
  --accent-amber: #FFD84D;
  --accent-amber-hover: #FFE380;
  --accent-amber-light: #FFD84D26;
  --accent-green: #5CC46E;
  --accent-green-hover: #7DD88C;
  --accent-green-light: #5CC46E26;
  --accent-teal: #2DD4BF;
  --accent-teal-hover: #5EE0D0;
  --accent-teal-light: #2DD4BF26;
  --accent-purple: #A87CE0;
  --accent-purple-hover: #C09EF0;
  --accent-purple-light: #A87CE026;
  --accent-pink: #F472B6;
  --accent-pink-hover: #F9A8D4;
  --accent-pink-light: #F472B626;
  --color-fg: var(--gray-1000);
  --color-fg-muted: var(--gray-800);
  --color-fg-subtle: var(--gray-700);
  --color-border: var(--gray-300);
  --color-border-light: var(--gray-200);
  --color-link: var(--accent-blue);
  --color-link-hover: var(--accent-blue-hover);
  --color-success: var(--accent-green);
  --color-warning: var(--accent-amber);
  --color-error: var(--accent-red);
  --color-info: var(--accent-blue);
  --color-code-fg: var(--accent-red);
  --color-code-bg: var(--gray-200);
  --color-code-block-bg: var(--gray-100);
  --fig-counter: #6E9CF0;
  --fig-space: #FFD84D;
  --fig-measure: #F06060;
}

[data-cvd=on] {
  --accent-blue: #0072B2;
  --accent-blue-hover: #005A8C;
  --accent-blue-light: #0072B233;
  --accent-red: #D55E00;
  --accent-red-hover: #B34E00;
  --accent-red-light: #D55E0026;
  --accent-amber: #E69F00;
  --accent-amber-hover: #C98A00;
  --accent-amber-light: #E69F0026;
  --accent-green: #009E73;
  --accent-green-hover: #00815F;
  --accent-green-light: #009E7326;
  --color-code-fg: #B34E00;
  --fig-counter: #0072B2;
  --fig-space: #E69F00;
  --fig-measure: #D55E00;
}

[data-cvd=on][data-theme=dark] {
  --accent-blue: #56B4E9;
  --accent-blue-hover: #7AC6F0;
  --accent-blue-light: #56B4E933;
  --accent-red: #F07A3F;
  --accent-red-hover: #F5966A;
  --accent-red-light: #F07A3F26;
  --accent-amber: #F0B000;
  --accent-amber-hover: #F5C640;
  --accent-amber-light: #F0B00026;
  --accent-green: #33C494;
  --accent-green-hover: #5AD3AC;
  --accent-green-light: #33C49426;
  --color-code-fg: #F07A3F;
  --fig-counter: #56B4E9;
  --fig-space: #F0B000;
  --fig-measure: #F07A3F;
}

:root {
  --font-sans: "Pretendard Variable", Pretendard, -apple-system,
    BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-mono: "SF Mono", Monaco, "Cascadia Code",
    "Roboto Mono", Consolas, "Courier New", monospace;
  --font-reading: var(--font-sans);
  --text-h1: 3rem;
  --text-h2: 2.5rem;
  --text-h3: 2rem;
  --text-h4: 1.5rem;
  --text-h5: 1.25rem;
  --text-h6: 1rem;
  --text-lg: 1.125rem;
  --text-base: 1rem;
  --text-sm: 0.875rem;
  --text-xs: 0.75rem;
  --font-normal: 400;
  --font-medium: 500;
  --font-semibold: 600;
  --font-bold: 700;
  --leading-tight: 1.2;
  --leading-snug: 1.375;
  --leading-normal: 1.7;
  --leading-relaxed: 1.7;
  --tracking-tighter: -0.04em;
  --tracking-tight: -0.02em;
  --tracking-normal: 0;
  --tracking-wide: 0.025em;
}
@media (max-width: 768px) {
  :root {
    --text-h1: 2.25rem;
    --text-h2: 1.875rem;
    --text-h3: 1.5rem;
    --text-h4: 1.25rem;
  }
}

:root {
  --space-0: 0;
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --space-20: 5rem;
  --space-24: 6rem;
  --tap-min: 44px;
  --container-xs: 540px;
  --container-sm: 640px;
  --container-md: 768px;
  --container-lg: 1024px;
  --container-xl: 1200px;
  --container-content: 720px;
}

:root {
  --radius-sm: 4px;
  --radius-md: 6px;
  --radius-lg: 8px;
  --radius-xl: 12px;
  --radius-full: 9999px;
  --radius-control: 4px;
  --shadow-sm: none;
  --shadow-md: none;
  --shadow-lg: none;
  --shadow-border: 0 0 0 2px var(--color-fg);
  --ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
  --ease-decelerate: cubic-bezier(0, 0, 0.2, 1);
  --ease-accelerate: cubic-bezier(0.4, 0, 1, 1);
  --ease-sharp: cubic-bezier(0.4, 0, 0.6, 1);
  --duration-shortest: 150ms;
  --duration-shorter: 200ms;
  --duration-short: 250ms;
  --duration-standard: 300ms;
  --duration-complex: 375ms;
  --duration-entering: 225ms;
  --duration-leaving: 195ms;
  --duration-fast: var(--duration-shortest);
  --duration-normal: var(--duration-shorter);
  --duration-slow: var(--duration-standard);
  --ease-default: var(--ease-standard);
  --ease-in: var(--ease-accelerate);
  --ease-out: var(--ease-decelerate);
  --ease-in-out: var(--ease-standard);
}

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

/* Reset styles */
*,
*::before,
*::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  scroll-behavior: smooth;
}

body {
  background-color: var(--bg-elevated);
  color: var(--color-fg);
  line-height: 1;
  min-height: 100vh;
  overflow-wrap: break-word;
  word-break: break-word;
}

.site-main {
  min-height: calc(100vh - 8rem);
}

.site-main--padded {
  padding-top: var(--space-8);
  padding-bottom: var(--space-10);
}

/* HTML5 display-role reset */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
  display: block;
}

ol, ul {
  list-style: none;
}

blockquote, q {
  quotes: none;
}

blockquote::before, blockquote::after,
q::before, q::after {
  content: "";
  content: none;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

a {
  color: inherit;
  text-decoration: none;
}

img {
  display: block;
  max-width: 100%;
}

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

::selection {
  background-color: var(--accent-amber);
  color: #0A0A0A;
}

body {
  font-family: var(--font-sans);
  font-size: var(--text-base);
  line-height: var(--leading-normal);
  color: var(--color-fg);
}

h1, h2, h3, h4, h5, h6 {
  font-weight: var(--font-bold);
  line-height: var(--leading-tight);
  letter-spacing: var(--tracking-tight);
  color: var(--color-fg);
}

code, pre, kbd, samp {
  font-family: var(--font-mono);
}

.switch-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  user-select: none;
}
.switch-row__label {
  font-size: var(--text-sm);
  font-weight: var(--font-medium);
  color: var(--color-fg);
}

.switch {
  position: relative;
  flex-shrink: 0;
  width: 48px;
  height: 26px;
  padding: 0;
  background-color: var(--bg-hover);
  border: 2px solid var(--color-fg);
  border-radius: var(--radius-full);
  cursor: pointer;
  transition: background-color var(--duration-fast) var(--ease-default);
}
.switch--on {
  background-color: var(--accent-blue);
}
.switch--on .switch__slider {
  transform: translateX(22px);
  background-color: var(--bg-elevated);
}
.switch:focus-visible {
  outline: 2px solid var(--accent-blue);
  outline-offset: 2px;
}
.switch__slider {
  position: absolute;
  top: 2px;
  left: 2px;
  width: 18px;
  height: 18px;
  border-radius: var(--radius-full);
  background-color: var(--color-fg-subtle);
  transition: transform var(--duration-fast) var(--ease-default), background-color var(--duration-fast) var(--ease-default);
  pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
  .switch,
  .switch__slider {
    transition: none;
  }
}
.container {
  width: 100%;
  max-width: var(--container-xl);
  margin: 0 auto;
  padding: 0 var(--space-5);
}
@media (max-width: 768px) {
  .container {
    padding: 0 var(--space-4);
  }
}
.container--content {
  max-width: var(--container-content);
}
.container--full {
  max-width: 100%;
}

.row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-4);
}
.row--center {
  justify-content: center;
}
.row--end {
  justify-content: flex-end;
}

.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4);
  font-size: var(--text-sm);
  font-weight: var(--font-semibold);
  line-height: var(--leading-normal);
  border-radius: var(--radius-control);
  overflow: hidden;
  position: relative;
  cursor: pointer;
  transition: background-color var(--duration-fast) var(--ease-default), border-color var(--duration-fast) var(--ease-default), color var(--duration-fast) var(--ease-default);
}
.button:disabled {
  opacity: 0.6;
  cursor: default;
}
.button__label {
  position: relative;
  z-index: 1;
  display: inline-block;
  transform: translateY(0.06em);
}
.button__paper {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 0;
  display: block;
  width: 100%;
  height: 100%;
  pointer-events: none;
}
.button.is-paper:hover .button__paper {
  filter: brightness(1.08);
}
.button--primary {
  background-color: var(--accent-blue);
  color: #fff;
  border: 1px solid var(--accent-blue);
}
.button--primary:hover {
  background-color: var(--accent-blue-hover);
  border-color: var(--accent-blue-hover);
}
.button--primary:active {
  background-color: var(--accent-blue-hover);
  border-color: var(--accent-blue-hover);
}
[data-theme=dark] .button--primary {
  color: #0a0a0a;
}
.button--secondary {
  background-color: transparent;
  color: var(--color-fg);
  border: 1px solid currentColor;
}
.button--secondary:hover {
  background-color: var(--bg-hover);
}
.button--ghost {
  background-color: transparent;
  color: var(--color-fg-muted);
  border: 1px solid transparent;
}
.button--ghost:hover {
  background-color: var(--bg-hover);
  color: var(--color-fg);
}
.button--sm {
  padding: var(--space-1) var(--space-3);
  font-size: var(--text-xs);
}
.button--lg {
  padding: var(--space-3) var(--space-6);
  font-size: var(--text-base);
}

[data-paper-surface] {
  position: relative;
  isolation: isolate;
  overflow: hidden;
}

.paper-surface__canvas {
  position: absolute;
  inset: 0;
  z-index: -1;
  display: block;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.skip-link {
  position: fixed;
  right: max(var(--space-4), env(safe-area-inset-right));
  bottom: max(var(--space-4), env(safe-area-inset-bottom));
  z-index: 1100;
  background-color: var(--bg-elevated);
  border: 2px solid currentColor;
  border-radius: var(--radius-full);
  color: var(--accent-blue);
  text-decoration: none;
  white-space: nowrap;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06), 0 10px 30px rgba(0, 0, 0, 0.12);
  opacity: 0;
  pointer-events: none;
  transform: translateY(8px);
  transition: opacity var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out), background-color var(--duration-fast) var(--ease-default), border-color var(--duration-fast) var(--ease-default), color var(--duration-fast) var(--ease-default);
}
.skip-link--visible, .skip-link:focus {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0);
}
.skip-link:focus {
  background-color: var(--accent-amber);
  color: #0A0A0A;
  outline: 3px solid var(--accent-amber);
  outline-offset: 0;
}
[data-theme=dark] .skip-link {
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3), 0 10px 30px rgba(0, 0, 0, 0.45);
}
@media (forced-colors: active) {
  .skip-link:focus {
    background-color: Highlight;
    color: HighlightText;
    outline-color: Highlight;
  }
}

@media (prefers-reduced-motion: reduce) {
  .skip-link {
    transition: none;
    transform: none;
  }
}
#main:focus,
#post-body:focus {
  outline: none;
}

.tag {
  display: inline-flex;
  align-items: center;
  padding: var(--space-1) var(--space-2);
  font-size: var(--text-xs);
  font-weight: var(--font-medium);
  line-height: 1;
  color: var(--color-fg-muted);
  background-color: var(--gray-200);
  border-radius: var(--radius-full);
  transition: color var(--duration-fast) var(--ease-default), background-color var(--duration-fast) var(--ease-default);
}
.tag:hover {
  color: var(--color-fg);
  background-color: var(--gray-300);
}
.tag--blue {
  color: var(--accent-blue);
  background-color: var(--accent-blue-light);
}
.tag--green {
  color: var(--accent-green);
  background-color: var(--accent-green-light);
}
.tag--amber {
  color: var(--accent-amber);
  background-color: var(--accent-amber-light);
}
.tag--red {
  color: var(--accent-red);
  background-color: var(--accent-red-light);
}
.tag--purple {
  color: var(--accent-purple);
  background-color: var(--accent-purple-light);
}

.theme-toggle {
  background: transparent;
  border: none;
  cursor: pointer;
  padding: var(--space-2);
  margin: 0 calc(var(--space-2) * -1);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-fg-muted);
  transition: color var(--duration-fast) var(--ease-out);
  border-radius: var(--radius-full);
}
.theme-toggle:hover, .theme-toggle:focus-visible {
  color: var(--color-fg);
  outline: none;
}
.theme-toggle__icon {
  display: block;
  width: 14px;
  height: 14px;
}
.theme-toggle__icon--sun {
  display: none;
}
.theme-toggle__icon--moon {
  display: block;
}

html[data-theme=dark] .theme-toggle__icon--sun {
  display: block;
}
html[data-theme=dark] .theme-toggle__icon--moon {
  display: none;
}

.readability-toggle {
  background: transparent;
  border: none;
  cursor: pointer;
  padding: var(--space-2);
  margin: 0 calc(var(--space-2) * -1);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-fg-muted);
  transition: color var(--duration-fast) var(--ease-out);
  border-radius: var(--radius-full);
}
.readability-toggle:hover, .readability-toggle:focus-visible {
  color: var(--color-fg);
  outline: none;
}
.readability-toggle__icon {
  display: block;
  width: 17px;
  height: 17px;
}

.readability-menu {
  position: absolute;
  top: 100%;
  right: 0;
  background-color: var(--bg-elevated);
  border: 2px solid var(--color-fg);
  border-radius: 0;
  padding: var(--space-3);
  z-index: 1001;
  min-width: 220px;
  display: none;
  flex-direction: column;
  gap: var(--space-2);
  margin-top: var(--space-2);
  box-shadow: 0 12px 24px rgba(0, 0, 0, 0.12);
}
.readability-menu--open {
  display: flex;
}
.readability-menu__section {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  border-bottom: 1px solid var(--color-border-light);
  padding-bottom: var(--space-3);
  margin-bottom: var(--space-3);
}
.readability-menu__section:last-child {
  border-bottom: none;
  padding-bottom: 0;
  margin-bottom: 0;
}
.readability-menu__section-title {
  font-size: var(--text-xs);
  font-family: var(--font-mono);
  font-weight: var(--font-bold);
  color: var(--color-fg-muted);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  user-select: none;
}
.readability-menu__row {
  display: flex;
  gap: var(--space-2);
}
.readability-menu__hint {
  margin: var(--space-2) 0 0;
  font-size: var(--text-xs);
  line-height: var(--leading-normal);
  color: var(--color-fg-muted);
}
.readability-menu__btn {
  flex: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-border-light);
  border-radius: var(--radius-control);
  background-color: transparent;
  cursor: pointer;
  text-align: center;
  font-size: var(--text-sm);
  font-weight: var(--font-medium);
  transition: all var(--duration-fast) var(--ease-default);
}
.readability-menu__btn:hover {
  border-color: var(--color-fg);
  background-color: var(--bg-hover);
}
.readability-menu__btn--active {
  border-color: var(--color-fg);
  background-color: var(--color-fg);
  color: var(--bg-elevated);
}
.readability-menu__btn--active:hover {
  background-color: var(--color-fg);
  color: var(--bg-elevated);
}
.readability-menu__btn--size {
  min-height: 2.6rem;
}
.readability-menu__size-glyph {
  display: block;
  line-height: 1;
  font-weight: var(--font-medium);
}
.readability-menu__btn[data-value=a] .readability-menu__size-glyph {
  font-size: 13px;
}
.readability-menu__btn[data-value=b] .readability-menu__size-glyph {
  font-size: 17px;
}
.readability-menu__btn[data-value=c] .readability-menu__size-glyph {
  font-size: 22px;
}
.readability-menu__grid {
  display: flex;
  gap: var(--space-3);
  align-items: center;
  padding: var(--space-1) 0;
}
.readability-menu__color-btn {
  width: 2.25rem;
  height: 2.25rem;
  border-radius: var(--radius-full);
  border: 2px solid var(--color-border-light);
  cursor: pointer;
  transition: all var(--duration-fast) var(--ease-default);
  position: relative;
  padding: 0;
}
.readability-menu__color-btn--default {
  background: linear-gradient(135deg, #F5F0E1 50%, #121212 50%);
}
.readability-menu__color-btn--sepia {
  background-color: #F4ECD8;
}
.readability-menu__color-btn--olive {
  background-color: #EBF2EB;
}
.readability-menu__color-btn:hover {
  transform: scale(1.1);
  border-color: var(--color-fg);
}
.readability-menu__color-btn--active {
  border-color: var(--accent-blue);
  box-shadow: 0 0 0 2px var(--bg-elevated), 0 0 0 4px var(--accent-blue);
}

html[data-readability=b] .markdown,
html[data-readability=b] .post-summary__content {
  --text-base: 1.125rem;
  --leading-relaxed: 1.75;
}

html[data-readability=c] .markdown,
html[data-readability=c] .post-summary__content {
  --text-base: 1.1875rem;
  --leading-relaxed: 1.7;
}
html[data-readability=c] .container--content {
  max-width: 760px;
}

html[data-readability-font=serif] {
  --font-reading: "Georgia", "Nanum Myeongjo", "Apple SD Myeongjo Neo",
    "Source Han Serif KR", "Noto Serif CJK KR", "Batang", serif;
}

html[data-readability-theme=sepia] {
  --bg-100: #F4ECD8;
  --bg-200: #EADCB9;
  --bg-elevated: #F4ECD8;
  --bg-hover: #DFD0A8;
  --color-fg: #3E2A14;
  --color-fg-muted: #5C4329;
  --color-fg-subtle: #755B3F;
  --color-border: #DFD0A8;
  --color-border-light: #EADCB9;
  --color-code-bg: #EADCB9;
  --color-code-block-bg: #DFD0A8;
  --gray-100: #DFD0A8;
  --gray-200: #EADCB9;
  --accent-blue: #163880;
  --accent-blue-hover: #0F275C;
  --accent-red: #A81B1B;
  --accent-red-hover: #801010;
}
html[data-readability-theme=sepia] ::selection {
  background-color: var(--gray-300);
  color: var(--color-fg);
}

html[data-readability-theme=olive] {
  --bg-100: #EBF2EB;
  --bg-200: #DDE8DD;
  --bg-elevated: #EBF2EB;
  --bg-hover: #CBDCCB;
  --color-fg: #243324;
  --color-fg-muted: #4C5E4C;
  --color-fg-subtle: #637863;
  --color-border: #CBDCCB;
  --color-border-light: #DDE8DD;
  --color-code-bg: #DDE8DD;
  --color-code-block-bg: #CBDCCB;
  --gray-100: #CBDCCB;
  --gray-200: #DDE8DD;
  --accent-blue: #1B4EA8;
  --accent-red: #B82525;
}
html[data-readability-theme=olive] ::selection {
  background-color: var(--gray-300);
  color: var(--color-fg);
}

html[data-readability-theme=softdark] {
  --bg-100: #121212;
  --bg-200: #1C1C1E;
  --bg-elevated: #1E1E20;
  --bg-hover: #2C2C2E;
  --color-fg: #CCCCCC;
  --color-fg-muted: #999999;
  --color-fg-subtle: #808080;
  --color-border: #2C2C2E;
  --color-border-light: #1C1C1E;
  --color-code-bg: #1C1C1E;
  --color-code-block-bg: #2C2C2E;
  --gray-100: #2C2C2E;
  --gray-200: #1C1C1E;
  --accent-blue: #7BA4F7;
  --accent-red: #F48080;
}
html[data-readability-theme=softdark] ::selection {
  background-color: var(--accent-amber);
  color: #0A0A0A;
}

.reading-progress {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  z-index: 1090;
  background: transparent;
  pointer-events: none;
  opacity: 0;
  transition: opacity var(--duration-fast) var(--ease-out);
}
.reading-progress.is-active {
  opacity: 1;
}
.reading-progress__bar {
  height: 100%;
  width: 100%;
  transform: scaleX(0);
  transform-origin: left center;
  background-color: var(--accent-blue);
  transition: transform 80ms linear;
  will-change: transform;
}
.reading-progress__remaining {
  position: absolute;
  top: var(--space-2);
  right: var(--space-4);
  padding: 2px var(--space-2);
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  line-height: 1.4;
  color: var(--color-fg-muted);
  background-color: var(--bg-elevated);
  border: 1px solid var(--color-border-light);
  white-space: nowrap;
  opacity: 0;
  transition: opacity var(--duration-fast) var(--ease-out);
  pointer-events: none;
}
.reading-progress__remaining.is-visible {
  opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
  .reading-progress {
    transition: none;
  }
  .reading-progress__bar {
    transition: none;
  }
}
.post-search {
  --beat-chips: var(--duration-shorter);
  --beat-bar-in: var(--duration-entering);
  --beat-bar-out: var(--duration-leaving);
  margin-bottom: var(--space-4);
}
.post-search__row {
  display: flex;
  flex-wrap: wrap;
  margin-top: calc(var(--space-4) - 3px);
  align-items: flex-start;
  column-gap: var(--space-2);
  row-gap: var(--space-4);
}
.post-search__bar {
  display: flex;
  align-items: center;
  flex: 0 0 auto;
  box-sizing: border-box;
  width: var(--tap-min);
  height: var(--tap-min);
  margin-top: 3px;
  overflow: hidden;
  overflow: clip;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-full);
  background-color: var(--bg-elevated);
  position: relative;
  z-index: 1;
  transition: width var(--beat-bar-out) var(--ease-accelerate), border-color var(--duration-shortest) var(--ease-standard);
}
.post-search__bar:hover, .post-search__bar:focus-within {
  border-color: var(--accent-blue);
}
.post-search__toggle {
  position: relative;
  display: block;
  flex: 0 0 auto;
  width: calc(var(--tap-min) - 2px);
  height: calc(var(--tap-min) - 2px);
  padding: 0;
  appearance: none;
  -webkit-appearance: none;
  border: none;
  background: transparent;
  color: var(--color-fg);
  cursor: pointer;
  transition: color var(--duration-shortest) var(--ease-standard);
}
.post-search__toggle:hover, .post-search__toggle:focus-visible {
  color: var(--accent-blue);
}
.post-search__icon {
  display: block;
  position: absolute;
  top: 50%;
  left: 50%;
  width: 20px;
  height: 20px;
  margin: -10px 0 0 -10px;
}
.post-search__input {
  flex: 1 1 0;
  min-width: 0;
  height: 100%;
  padding: 0;
  border: none;
  background: transparent;
  color: var(--color-fg);
  font-family: var(--font-sans);
  font-size: var(--text-base);
  opacity: 0;
  visibility: hidden;
  transition: opacity var(--duration-leaving) var(--ease-accelerate), visibility 0s linear var(--duration-leaving);
}
.post-search__input::placeholder {
  color: var(--color-fg-subtle);
}
.post-search__input:focus {
  outline: none;
}
.post-search__filters {
  flex: 1 1 0;
  min-width: 0;
  transition: transform var(--beat-chips) var(--ease-standard);
}
.post-search__filters .category-counts {
  margin-block: 0;
}
@media screen and (max-width: 768px) {
  .post-search__filters .category-counts {
    margin-left: 0;
    padding-left: 0;
  }
}
.post-search--rows .post-search__filters {
  flex-basis: 100%;
}
.post-search--rows .post-search__input {
  visibility: visible;
  transition: opacity var(--duration-entering) var(--ease-decelerate), visibility 0s;
}
.post-search--open .post-search__bar {
  width: 100%;
  transition: width var(--beat-bar-in) var(--ease-decelerate), border-color var(--duration-shortest) var(--ease-standard);
}
.post-search--open .post-search__input {
  opacity: 1;
  padding-right: var(--space-4);
}
.post-search--busy .post-search__toggle {
  pointer-events: none;
}
.post-search--measuring .post-search__filters {
  transition: none !important;
}
@media (prefers-reduced-motion: reduce) {
  .post-search__bar, .post-search__input, .post-search__filters, .post-search--rows .post-search__input, .post-search--rows .post-search__filters, .post-search--open .post-search__bar, .post-search--open .post-search__input {
    transition: none;
  }
}
.post-search__status {
  margin: var(--space-4) 0 0;
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  color: var(--color-fg-subtle);
}
.post-search__status:empty {
  display: none;
}
.post-search__results {
  display: flex;
  flex-direction: column;
}
.post-search__hit {
  display: flex;
  gap: var(--space-4);
  align-items: flex-start;
  padding: var(--space-5) 0;
  border-bottom: 1px solid var(--color-border-light);
  text-decoration: none;
  color: var(--color-fg);
}
.post-search__hit:hover .post-search__hit-title {
  color: var(--accent-blue);
}
.post-search__thumb {
  flex-shrink: 0;
  width: 96px;
  height: auto;
  aspect-ratio: 16/9;
  object-fit: cover;
  background-color: var(--gray-100);
}
.post-search__hit-body {
  min-width: 0;
}
.post-search__hit-title {
  display: block;
  font-size: var(--text-h5);
  font-weight: var(--font-semibold);
  line-height: var(--leading-snug);
  transition: color var(--duration-shortest) var(--ease-standard);
}
.post-search__hit-excerpt {
  margin: var(--space-2) 0 0;
  font-size: var(--text-sm);
  line-height: var(--leading-relaxed);
  color: var(--color-fg-muted);
}
.post-search mark {
  background-color: var(--accent-amber);
  color: #121212;
  padding: 0 1px;
}

.search-form {
  display: flex;
}
.search-form__input {
  flex-grow: 1;
  border: 1px solid var(--color-border);
  background-color: var(--gray-100);
  color: var(--color-fg);
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-control);
  font-size: var(--text-sm);
}
.search-form__input::placeholder {
  color: var(--color-fg-subtle);
}
.search-form__button {
  padding: var(--space-2) var(--space-4);
  background-color: var(--color-fg);
  color: var(--bg-100);
  border: none;
  border-radius: var(--radius-control);
  cursor: pointer;
  font-size: var(--text-sm);
  font-weight: var(--font-medium);
  transition: background-color var(--duration-fast) var(--ease-default);
}
.search-form__button:hover {
  background-color: var(--gray-900);
}

.markdown {
  counter-reset: sidenote;
}

.sidenote-wrap {
  position: relative;
  counter-increment: sidenote;
}

.sidenote-ref {
  cursor: help;
  appearance: none;
  background: none;
  border: none;
  padding: 0;
  margin: 0;
  font: inherit;
  color: inherit;
  line-height: inherit;
  vertical-align: baseline;
}
.sidenote-ref:focus-visible {
  outline: 2px solid var(--accent-blue);
  outline-offset: 2px;
  border-radius: 2px;
}
.sidenote-ref::after {
  content: counter(sidenote);
  vertical-align: super;
  font-size: 0.68em;
  font-family: var(--font-mono);
  font-weight: var(--font-medium);
  color: var(--accent-blue);
  padding: 0 1px;
  line-height: 0;
}
.sidenote-ref:hover::after {
  text-decoration: underline;
}

.sidenote-toggle {
  display: none;
}

.sidenote {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  z-index: 30;
  width: max-content;
  max-width: min(300px, 82vw);
  padding: var(--space-3) var(--space-4);
  background-color: var(--bg-elevated);
  border: 2px solid var(--color-fg);
  color: var(--color-fg-muted);
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
  text-align: left;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-4px);
  transition: opacity var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out), visibility var(--duration-fast) var(--ease-out);
  pointer-events: none;
}
.sidenote::before {
  content: "";
  position: absolute;
  bottom: 100%;
  left: var(--sidenote-arrow-left, 10px);
  border: 6px solid transparent;
  border-bottom-color: var(--color-fg);
}
.sidenote p:last-child {
  margin-bottom: 0;
}

.sidenote-wrap:hover > .sidenote,
.sidenote-toggle:checked ~ .sidenote {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  pointer-events: auto;
}

.series-nav {
  margin: var(--space-6) 0 var(--space-8);
  border: 2px solid var(--color-fg);
  background-color: var(--bg-elevated);
}
.series-nav__summary {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-3);
  padding: var(--space-3) var(--space-4);
  cursor: pointer;
  list-style: none;
  user-select: none;
}
.series-nav__summary::-webkit-details-marker {
  display: none;
}
.series-nav__summary::after {
  content: "▾";
  margin-left: auto;
  font-size: var(--text-sm);
  color: var(--color-fg-subtle);
  transition: transform var(--duration-fast) var(--ease-default);
}
.series-nav[open] .series-nav__summary::after {
  transform: rotate(180deg);
}
.series-nav__label {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  font-weight: var(--font-bold);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  color: var(--accent-blue);
}
.series-nav__name {
  font-weight: var(--font-bold);
  color: var(--color-fg);
}
.series-nav__progress {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  color: var(--color-fg-subtle);
}
.series-nav__list {
  list-style: none;
  margin: 0;
  padding: 0 var(--space-4) var(--space-3);
  border-top: 1px solid var(--color-border-light);
}
.series-nav__item {
  padding: 0;
}
.series-nav__link {
  display: flex;
  gap: var(--space-3);
  align-items: baseline;
  padding: var(--space-2) 0;
  font-size: var(--text-sm);
  line-height: var(--leading-snug);
  color: var(--color-fg-muted);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-default);
}
.series-nav__link:hover {
  color: var(--accent-blue);
}
.series-nav__link.is-current {
  color: var(--color-fg);
  font-weight: var(--font-semibold);
  cursor: default;
}
.series-nav__num {
  flex-shrink: 0;
  width: 1.6em;
  text-align: right;
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--color-fg-subtle);
}
.series-nav__link.is-current .series-nav__num {
  color: var(--accent-blue);
}

.reactions {
  margin: var(--space-10) 0 var(--space-8);
  padding: var(--space-6) 0;
  border-top: 1px solid var(--color-border-light);
  border-bottom: 1px solid var(--color-border-light);
  text-align: center;
}
.reactions__prompt {
  margin: 0 0 var(--space-4);
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  color: var(--color-fg-subtle);
}
.reactions__row {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--space-3);
}

.reaction {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4);
  background-color: var(--bg-elevated);
  border: 2px solid var(--color-border);
  border-radius: var(--radius-control);
  color: var(--color-fg-muted);
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  cursor: pointer;
  transition: border-color var(--duration-fast) var(--ease-default), color var(--duration-fast) var(--ease-default), transform var(--duration-fast) var(--ease-default);
}
.reaction:hover {
  border-color: var(--color-fg);
  color: var(--color-fg);
}
.reaction:focus-visible {
  outline: 2px solid var(--accent-blue);
  outline-offset: 2px;
}
.reaction__icon {
  width: 20px;
  height: 20px;
  display: block;
  flex-shrink: 0;
}
.reaction.is-selected {
  border-color: var(--accent-blue);
  color: var(--accent-blue);
  font-weight: var(--font-medium);
}
.reaction.just-picked {
  animation: reaction-pop var(--duration-normal) var(--ease-out);
}

@keyframes reaction-pop {
  0% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.15);
  }
  100% {
    transform: scale(1);
  }
}
@media (prefers-reduced-motion: reduce) {
  .reaction.just-picked {
    animation: none;
  }
}
.correction {
  margin: 0 0 var(--space-10);
  font-family: var(--font-sans);
  text-align: center;
}
.correction__summary {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4);
  background-color: var(--bg-elevated);
  border: 2px solid var(--color-border);
  border-radius: var(--radius-control);
  color: var(--color-fg-muted);
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  cursor: pointer;
  transition: border-color var(--duration-fast) var(--ease-default), color var(--duration-fast) var(--ease-default), transform var(--duration-fast) var(--ease-default);
  list-style: none;
}
.correction__summary:hover {
  border-color: var(--color-fg);
  color: var(--color-fg);
}
.correction__summary:focus-visible {
  outline: 2px solid var(--accent-blue);
  outline-offset: 2px;
}
.correction__summary::-webkit-details-marker {
  display: none;
}
.correction[open] .correction__summary {
  border-color: var(--accent-blue);
  color: var(--accent-blue);
  font-weight: var(--font-medium);
}
.correction__icon {
  width: 20px;
  height: 20px;
  display: block;
  flex-shrink: 0;
}
.correction__panel {
  max-width: 40rem;
  margin: var(--space-4) auto 0;
  padding: var(--space-5);
  text-align: left;
  background-color: var(--bg-elevated);
  border: 1px solid var(--color-border-light);
  border-radius: var(--radius-md);
}
.correction__desc {
  margin: 0 0 var(--space-5);
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
  color: var(--color-fg-subtle);
}
.correction__label {
  display: block;
  margin-bottom: var(--space-2);
  font-size: var(--text-sm);
  font-weight: var(--font-medium);
  color: var(--color-fg-muted);
}
.correction__textarea, .correction__input {
  width: 100%;
  margin-bottom: var(--space-5);
  padding: var(--space-3) var(--space-4);
  font-family: var(--font-sans);
  font-size: var(--text-base);
  line-height: var(--leading-normal);
  color: var(--color-fg);
  background-color: var(--bg-100);
  border: 2px solid var(--color-border);
  border-radius: var(--radius-control);
  transition: border-color var(--duration-fast) var(--ease-default);
}
.correction__textarea::placeholder, .correction__input::placeholder {
  color: var(--color-fg-subtle);
  opacity: 0.7;
}
.correction__textarea:focus, .correction__input:focus {
  outline: none;
  border-color: var(--accent-blue);
}
.correction__textarea {
  display: block;
  min-height: 7rem;
  resize: vertical;
}
.correction__actions {
  display: flex;
  justify-content: flex-end;
}
@media (max-width: 768px) {
  .correction__actions .correction__submit {
    flex: 1 1 100%;
  }
}
.correction__status {
  margin: var(--space-3) 0 0;
  min-height: 1.2em;
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
  color: var(--color-fg-subtle);
}
.correction__status.is-success {
  color: var(--color-success);
}
.correction__status.is-error {
  color: var(--color-error);
}
.correction__gotcha {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.podcast {
  margin: 0 0 var(--space-8);
  padding: var(--space-4) var(--space-5);
  background-color: color-mix(in srgb, var(--color-fg) 4%, var(--bg-elevated));
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='pcpaper'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.62 0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23pcpaper)'/%3E%3C/svg%3E");
  background-size: 200px 200px;
  background-blend-mode: soft-light;
  border: 2px solid var(--color-border);
  border-radius: var(--radius-control);
}
.podcast__head {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-4);
}
.podcast__mark {
  flex-shrink: 0;
  display: inline-flex;
  color: var(--color-fg);
}
.podcast__meta {
  min-width: 0;
}
.podcast__title {
  margin: 0;
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  color: var(--color-fg);
}
.podcast__audio {
  width: 100%;
}
.podcast__controls {
  display: flex;
  align-items: center;
  gap: var(--space-3);
}
.podcast__play {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  padding: 0;
  background-color: var(--bg-elevated);
  border: 2px solid var(--color-border);
  border-radius: var(--radius-control);
  color: var(--color-fg);
  cursor: pointer;
  transition: border-color var(--duration-fast) var(--ease-default), transform var(--duration-fast) var(--ease-default);
}
.podcast__play:hover {
  border-color: var(--color-fg);
}
.podcast__play:active {
  transform: scale(0.94);
}
.podcast__play svg[hidden] {
  display: none;
}
.podcast__track {
  position: relative;
  flex: 1 1 auto;
  height: 8px;
  background-color: var(--color-border-light);
  cursor: pointer;
}
.podcast__track:focus-visible {
  outline: 2px solid var(--accent-blue);
  outline-offset: 3px;
}
.podcast__progress {
  position: absolute;
  inset: 0 auto 0 0;
  width: 0;
  background-color: var(--accent-blue);
}
.podcast__time {
  flex-shrink: 0;
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--color-fg-subtle);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.podcast__rate {
  flex-shrink: 0;
  min-width: 2.6em;
  padding: var(--space-1) var(--space-2);
  background-color: var(--bg-elevated);
  border: 2px solid var(--color-border);
  border-radius: var(--radius-control);
  color: var(--color-fg-muted);
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  cursor: pointer;
  transition: border-color var(--duration-fast) var(--ease-default), color var(--duration-fast) var(--ease-default);
}
.podcast__rate:hover {
  border-color: var(--color-fg);
  color: var(--color-fg);
}

@media (max-width: 480px) {
  .podcast__title {
    font-size: var(--text-xs);
  }
  .podcast__controls {
    gap: var(--space-2);
  }
}
.newsletter {
  margin: var(--space-12) 0 var(--space-8);
}
.newsletter__inner {
  padding: var(--space-6);
  background-color: var(--bg-elevated);
  border: 2px solid var(--color-fg);
}
.newsletter__brand {
  display: flex;
  align-items: flex-end;
  gap: var(--space-3);
  margin-bottom: var(--space-4);
}
.newsletter__mark {
  display: inline-flex;
  align-items: flex-end;
  gap: 3px;
  flex-shrink: 0;
}
.newsletter__shape {
  display: block;
}
.newsletter__shape--circle {
  width: 16.5px;
  height: 16.5px;
  border-radius: 50%;
  background: var(--accent-red);
}
.newsletter__shape--tri {
  width: 18px;
  height: 16px;
  background: var(--accent-blue);
  clip-path: polygon(50% 0, 100% 100%, 0 100%);
  margin: 0 -1px;
}
.newsletter__shape--square {
  width: 15px;
  height: 15px;
  background: var(--accent-amber);
}
.newsletter__eyebrow {
  font-family: var(--font-sans);
  font-size: var(--text-xs);
  font-weight: var(--font-medium);
  line-height: 1;
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--color-fg-muted);
}
.newsletter__heading {
  margin: 0 0 var(--space-2);
  font-family: var(--font-sans);
  font-size: var(--text-h5);
  font-weight: var(--font-bold);
  line-height: var(--leading-tight);
  color: var(--color-fg);
}
.newsletter__desc {
  margin: 0 0 var(--space-5);
  max-width: 46ch;
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
  color: var(--color-fg-subtle);
}
.newsletter__label {
  display: block;
  margin-bottom: var(--space-2);
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  font-weight: var(--font-medium);
  color: var(--color-fg-muted);
}
.newsletter__row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
}
.newsletter__input {
  flex: 1 1 260px;
  min-width: 0;
  padding: var(--space-3) var(--space-4);
  font-family: var(--font-sans);
  font-size: var(--text-base);
  color: var(--color-fg);
  background-color: var(--bg-100);
  border: 2px solid var(--color-border);
  border-radius: var(--radius-control);
  transition: border-color var(--duration-fast) var(--ease-default);
}
.newsletter__input::placeholder {
  color: var(--color-fg-subtle);
  opacity: 0.7;
}
.newsletter__input:focus {
  outline: none;
  border-color: var(--accent-blue);
}
.newsletter__submit {
  flex: 0 0 auto;
}
@media (max-width: 768px) {
  .newsletter__submit {
    flex: 1 1 100%;
  }
}
.newsletter__status {
  margin: var(--space-3) 0 0;
  min-height: 1.2em;
  font-family: var(--font-sans);
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
  color: var(--color-fg-subtle);
}
.newsletter__status.is-success {
  color: var(--color-success);
}
.newsletter__status.is-error {
  color: var(--color-error);
}
.newsletter__gotcha {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.destijl-confetti {
  position: fixed;
  inset: 0;
  z-index: 2000;
  pointer-events: none;
  overflow: hidden;
  transition: opacity 700ms var(--ease-out);
}
.destijl-confetti.is-out {
  opacity: 0;
}
.destijl-confetti__piece {
  position: absolute;
  top: -48px;
  display: block;
  animation-name: destijl-fall;
  animation-timing-function: var(--ease-standard);
  animation-fill-mode: both;
  will-change: transform;
}
.destijl-confetti__piece.is-red {
  background-color: #d32f2f;
}
.destijl-confetti__piece.is-blue {
  background-color: #1e46a0;
}
.destijl-confetti__piece.is-yellow {
  background-color: #fad20a;
}
.destijl-confetti__piece.is-black {
  background-color: #111;
}
.destijl-confetti__piece.is-frame {
  background-color: #fff;
  border: 3px solid #111;
}

@keyframes destijl-fall {
  0% {
    transform: translateY(-12vh) rotate(0deg);
    opacity: 0;
  }
  8% {
    opacity: 1;
  }
  100% {
    transform: translateY(112vh) rotate(var(--spin, 180deg));
    opacity: 1;
  }
}
.destijl-toast {
  position: fixed;
  left: 50%;
  top: 50%;
  padding: var(--space-4) var(--space-6);
  background-color: var(--color-fg);
  color: var(--bg-100);
  border: 2px solid var(--color-fg);
  font-family: var(--font-sans);
  font-weight: var(--font-bold);
  font-size: var(--text-h5);
  letter-spacing: var(--tracking-wide);
  white-space: nowrap;
  animation: destijl-toast-in 400ms var(--ease-out) both;
}

@keyframes destijl-toast-in {
  from {
    opacity: 0;
    transform: translate(-50%, -42%);
  }
  to {
    opacity: 1;
    transform: translate(-50%, -50%);
  }
}
@media (prefers-reduced-motion: reduce) {
  .destijl-confetti__piece {
    display: none;
  }
}
.toc {
  margin: var(--space-8) 0;
  padding: var(--space-5);
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.42), rgba(255, 255, 255, 0.18)), var(--gray-100);
  border: 1px solid rgba(10, 10, 10, 0.1);
  border-radius: calc(var(--radius-lg) + 2px);
  box-shadow: 0 12px 28px rgba(10, 10, 10, 0.06);
}
.toc__header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  background: none;
  border: none;
  padding: 0;
  margin: 0 0 var(--space-3) 0;
  padding-bottom: var(--space-3);
  border-bottom: 1px solid rgba(10, 10, 10, 0.08);
  font-family: inherit;
  color: inherit;
  cursor: default;
}
.toc__header:focus-visible {
  outline: 2px solid var(--accent-blue);
  outline-offset: 4px;
}
@media (max-width: 768px) {
  .toc__header {
    cursor: pointer;
  }
}
.toc__title {
  font-size: var(--text-base);
  font-weight: var(--font-semibold);
  color: var(--color-fg);
  letter-spacing: var(--tracking-tight);
  text-align: left;
}
.toc__toggle-icon {
  display: none;
  color: var(--color-fg-muted);
  transition: transform var(--duration-fast) var(--ease-default);
}
.toc__toggle-icon svg {
  display: block;
}
@media (max-width: 768px) {
  .toc__toggle-icon {
    display: inline-flex;
    align-items: center;
  }
}
.toc__body {
  color: var(--color-fg-muted);
}
@media (max-width: 768px) {
  .toc.toc--collapsed .toc__body {
    display: none;
  }
  .toc.toc--collapsed .toc__toggle-icon {
    transform: rotate(-90deg);
  }
  .toc.toc--collapsed .toc__header {
    margin-bottom: 0;
    padding-bottom: 0;
    border-bottom: none;
  }
}
.toc #TableOfContents > ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
.toc #TableOfContents ul {
  margin: 0;
  padding-left: 0;
  list-style: none;
}
.toc #TableOfContents li {
  position: relative;
  margin: 0;
}
.toc #TableOfContents > ul > li + li {
  margin-top: 4px;
}
.toc #TableOfContents ul ul {
  margin-top: 4px;
  margin-left: 12px;
  padding-left: 12px;
  border-left: 1px solid rgba(10, 10, 10, 0.1);
}
.toc #TableOfContents a {
  display: block;
  padding: 8px 10px;
  border-radius: 10px;
  color: var(--color-fg-muted);
  font-size: 14px;
  line-height: 1.35;
  text-decoration: none;
  transition: background-color var(--duration-fast) var(--ease-default), color var(--duration-fast) var(--ease-default), transform var(--duration-fast) var(--ease-default);
}
.toc #TableOfContents a:hover {
  background: rgba(10, 10, 10, 0.05);
  color: var(--color-fg);
  transform: translateX(2px);
}
.toc #TableOfContents > ul > li > a {
  font-weight: 600;
  color: var(--color-fg);
}
.toc #TableOfContents ul ul a {
  padding-top: 6px;
  padding-bottom: 6px;
  font-size: 13px;
  color: var(--color-fg-subtle);
}
.toc #TableOfContents ul ul li + li {
  margin-top: 2px;
}
.toc #TableOfContents ul ul ul a {
  font-size: 12px;
}

@media (max-width: 768px) {
  .toc {
    padding: var(--space-4);
    border-radius: var(--radius-lg);
  }
  .toc__body {
    max-height: 60vh;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }
  .toc #TableOfContents a {
    padding-left: 8px;
    padding-right: 8px;
  }
}
[data-theme=dark] .toc {
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.01)), var(--bg-200);
  border-color: var(--color-border);
  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.3);
}
[data-theme=dark] .toc__header {
  border-bottom-color: var(--color-border-light);
}
[data-theme=dark] .toc #TableOfContents ul ul {
  border-left-color: var(--color-border-light);
}
[data-theme=dark] .toc #TableOfContents a:hover {
  background: rgba(255, 255, 255, 0.06);
}

.breadcrumbs {
  margin-bottom: var(--space-8);
}
.breadcrumbs__list {
  display: flex;
  align-items: center;
  list-style: none;
  padding: 0;
  margin: 0;
  gap: var(--space-2);
}
.breadcrumbs__item {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-sm);
  color: var(--color-fg-subtle);
}
.breadcrumbs__item--current {
  color: var(--color-fg-muted);
}
@media (max-width: 768px) {
  .breadcrumbs__item--current {
    display: none;
  }
}
.breadcrumbs__link {
  color: var(--color-fg-subtle);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-default);
}
.breadcrumbs__link:hover {
  color: var(--color-fg);
}
.breadcrumbs__separator {
  color: var(--gray-500);
  font-size: var(--text-xs);
}

.post-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3);
  font-size: var(--text-sm);
  color: var(--color-fg-subtle);
}
.post-meta time {
  font-size: var(--text-xs);
}
.post-meta__separator {
  color: var(--gray-500);
}
.post-meta__reading-time {
  font-size: var(--text-xs);
  color: var(--color-fg-subtle);
}
.post-meta__badge {
  display: inline-flex;
  align-items: center;
  height: 1.5rem;
  border-radius: 999px;
  border: 1px solid var(--accent-amber);
  background: var(--accent-amber-light);
  color: var(--color-fg);
  font-size: 11px;
  font-weight: 700;
  font-family: var(--font-sans);
  letter-spacing: 0.02em;
  padding-top: 0.244em;
  padding-left: calc(0.5rem + 0.02em / 2 - var(--badge-bearing, 0em));
  padding-right: calc(0.5rem - 0.02em / 2 + var(--badge-bearing, 0em));
}
.post-meta__badge--wip {
  border-color: var(--accent-blue);
  background: var(--accent-blue-light);
  color: var(--accent-blue);
  --badge-bearing: 0.033em;
}
[data-theme=dark] .post-meta__badge--wip {
  color: color-mix(in srgb, var(--accent-blue) 70%, white);
}

.outdated-banner {
  position: sticky;
  top: 0;
  z-index: 40;
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin: 0 0 var(--space-8);
  padding: var(--space-3) var(--space-4);
  background: linear-gradient(var(--accent-amber-light), var(--accent-amber-light)), var(--bg-100);
}
.outdated-banner__text {
  margin: 0;
  font-size: var(--text-sm);
  line-height: var(--leading-snug);
  color: var(--color-fg-muted);
}
@media (max-width: 768px) {
  .outdated-banner {
    align-items: flex-start;
    flex-direction: column;
    gap: var(--space-2);
    top: 56px;
  }
}

.wip-banner {
  position: sticky;
  top: 0;
  z-index: 40;
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin: 0 0 var(--space-8);
  padding: var(--space-3) var(--space-4);
  background: linear-gradient(var(--accent-amber-light), var(--accent-amber-light)), var(--bg-100);
}
.wip-banner__text {
  margin: 0;
  font-size: var(--text-sm);
  line-height: var(--leading-snug);
  color: var(--color-fg-muted);
}
@media (max-width: 768px) {
  .wip-banner {
    align-items: flex-start;
    flex-direction: column;
    gap: var(--space-2);
    top: 56px;
  }
}

.post-header {
  margin-bottom: var(--space-10);
}

.post-title {
  font-size: var(--text-h2);
  font-weight: var(--font-bold);
  font-family: var(--font-reading);
  line-height: var(--leading-snug);
  letter-spacing: var(--tracking-tighter);
  color: var(--color-fg);
  margin-bottom: var(--space-4);
}

.post-tags {
  display: inline-flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: var(--space-2);
  white-space: nowrap;
}

.post-footer {
  margin-top: var(--space-16);
  padding-top: var(--space-10);
  border-top: 2px solid var(--color-border-light);
}

.post-navigation {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-6);
  margin-top: var(--space-8);
}
@media (max-width: 768px) {
  .post-navigation {
    grid-template-columns: 1fr;
    gap: var(--space-4);
  }
}
.post-navigation__card {
  display: flex;
  flex-direction: column;
  padding: var(--space-5);
  background-color: var(--bg-hover);
  text-decoration: none;
  transition: transform var(--duration-fast) var(--ease-default), color var(--duration-fast) var(--ease-default);
}
.post-navigation__card--prev {
  align-items: flex-start;
}
.post-navigation__card--prev:hover {
  color: var(--accent-blue);
  transform: translateY(-2px);
}
.post-navigation__card--next {
  align-items: flex-end;
  text-align: right;
}
.post-navigation__card--next:hover {
  color: var(--accent-blue);
  transform: translateY(-2px);
}
.post-navigation__card--empty {
  background-color: transparent;
  pointer-events: none;
}
@media (max-width: 768px) {
  .post-navigation__card--empty {
    display: none;
  }
}
.post-navigation__label {
  font-size: var(--text-xs);
  font-weight: var(--font-bold);
  color: var(--color-fg-subtle);
  margin-bottom: var(--space-2);
}
.post-navigation__title {
  font-size: var(--text-base);
  font-weight: var(--font-semibold);
  color: var(--color-fg);
  line-height: var(--leading-snug);
}

.share {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin: var(--space-8) 0;
}
.share__label {
  font-size: var(--text-sm);
  font-weight: var(--font-medium);
  color: var(--color-fg-subtle);
}
.share__buttons {
  display: flex;
  gap: var(--space-2);
}
.share__button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: var(--radius-control);
  background-color: var(--gray-200);
  color: var(--color-fg-muted);
  text-decoration: none;
  transition: background-color var(--duration-fast) var(--ease-default), color var(--duration-fast) var(--ease-default);
  cursor: pointer;
  border: none;
  font-size: var(--text-sm);
}
.share__button:hover {
  background-color: var(--gray-300);
  color: var(--color-fg);
}
.share__button svg {
  width: 1rem;
  height: 1rem;
  fill: currentColor;
}

.related-posts {
  margin-top: var(--space-12);
  padding-top: var(--space-8);
  border-top: 1px solid var(--color-border-light);
}
.related-posts__title {
  font-size: var(--text-sm);
  font-weight: var(--font-semibold);
  color: var(--color-fg-subtle);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
  margin-bottom: var(--space-6);
}
.related-posts__list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: var(--space-4);
  list-style: none;
  padding: 0;
  margin: 0;
}
.related-posts__item {
  padding: var(--space-4);
  border: 1px solid var(--color-border-light);
  border-radius: var(--radius-lg);
  transition: border-color var(--duration-fast) var(--ease-default), background-color var(--duration-fast) var(--ease-default);
}
.related-posts__item:hover {
  border-color: var(--color-border);
  background-color: var(--gray-100);
}
.related-posts__link {
  text-decoration: none;
  color: var(--color-fg);
  font-weight: var(--font-medium);
  font-size: var(--text-sm);
  line-height: var(--leading-snug);
  display: block;
  transition: color var(--duration-fast) var(--ease-default);
}
.related-posts__link:hover {
  color: var(--color-link);
}
.related-posts__date {
  display: block;
  margin-top: var(--space-2);
  font-size: var(--text-xs);
  color: var(--color-fg-subtle);
}

.post-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: var(--space-5);
}

.post-nav {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-5);
}
@media screen and (max-width: 768px) {
  .post-nav {
    grid-template-columns: 1fr;
  }
}

.post-card {
  display: flex;
  flex-direction: column;
  background-color: var(--bg-100);
  text-decoration: none;
  color: var(--color-fg);
  overflow: hidden;
  transition: transform var(--duration-fast) var(--ease-default);
}
.post-card:hover {
  transform: translateY(-2px);
}
.post-card:hover .post-card__title {
  color: var(--accent-blue);
}
.post-card__thumb-wrap {
  display: block;
  aspect-ratio: 3/2;
  background-color: var(--gray-100);
  overflow: hidden;
}
.post-card__thumb {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.post-card__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  padding: var(--space-4);
}
.post-card__label {
  font-size: var(--text-xs);
  font-weight: var(--font-bold);
  color: var(--color-fg-subtle);
}
.post-card__title {
  font-size: var(--text-base);
  font-weight: var(--font-semibold);
  line-height: var(--leading-snug);
  transition: color var(--duration-fast) var(--ease-default);
}
.post-card__foot {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}
.post-card__date {
  margin-top: var(--space-1);
  font-size: var(--text-xs);
  color: var(--color-fg-subtle);
}
.post-card__badge {
  margin-top: var(--space-1);
  display: inline-flex;
  align-items: center;
  height: 1.25rem;
  border-radius: 999px;
  border: 1px solid var(--accent-blue);
  background: var(--accent-blue-light);
  color: var(--accent-blue);
  font-family: var(--font-sans);
  font-size: 10px;
  font-weight: 700;
  --badge-bearing: 0.033em;
  letter-spacing: 0.02em;
  padding-top: 0.106em;
  padding-left: calc(0.4rem + 0.02em / 2 - var(--badge-bearing, 0em));
  padding-right: calc(0.4rem - 0.02em / 2 + var(--badge-bearing, 0em));
}
[data-theme=dark] .post-card__badge {
  color: color-mix(in srgb, var(--accent-blue) 70%, white);
}

.category-list {
  list-style: none;
  margin: var(--space-4) 0 0;
  padding: 0;
}
.category-list__item {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-4) 0;
  border-bottom: 1px solid var(--color-border-light);
}
.category-list__item--sub {
  padding-left: var(--space-6);
  border-left: 2px solid var(--color-fg);
  margin-left: var(--space-1);
}
.category-list__item--sub .category-list__link {
  font-size: var(--text-h6);
  font-weight: var(--font-medium);
}
.category-list__link {
  font-size: var(--text-h5);
  font-weight: var(--font-semibold);
  color: var(--color-fg);
  text-decoration: none;
}
.category-list__link:hover {
  color: var(--accent-blue);
}
.category-list__count {
  flex-shrink: 0;
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  color: var(--color-fg-subtle);
}

.category-counts {
  display: flex;
  flex-wrap: nowrap;
  gap: var(--space-2);
  overflow-x: auto;
  overscroll-behavior-x: contain;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  padding-block: 3px;
  margin: calc(var(--space-4) - 3px) 0 calc(var(--space-6) - 3px);
}
.category-counts::-webkit-scrollbar {
  display: none;
}
@media screen and (max-width: 768px) {
  .category-counts {
    margin-inline: calc(-1 * var(--space-4));
    padding-inline: var(--space-4);
  }
}
.category-counts__chip {
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
  white-space: nowrap;
  min-height: var(--tap-min);
  gap: var(--space-2);
  padding: var(--space-1) var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-full);
  color: var(--color-fg);
  text-decoration: none;
  appearance: none;
  background: transparent;
  font: inherit;
  cursor: pointer;
  transition: border-color var(--duration-shortest) var(--ease-standard), color var(--duration-shortest) var(--ease-standard), background-color var(--duration-shortest) var(--ease-standard);
}
.category-counts__chip:hover, .category-counts__chip:focus-visible {
  border-color: var(--accent-blue);
  color: var(--accent-blue);
}
.category-counts__chip[aria-pressed=true] {
  border-color: var(--accent-blue);
  background: var(--accent-blue-light);
  color: var(--accent-blue);
}
.category-counts__icon {
  display: inline-flex;
  flex-shrink: 0;
  width: 1.125rem;
  height: 1.125rem;
}
.category-counts__icon-svg {
  width: 100%;
  height: 100%;
  display: block;
}
.category-counts__block {
  transform-box: fill-box;
  transform-origin: center;
}
@media (prefers-reduced-motion: no-preference) {
  .category-counts__chip:hover .category-counts__block, .category-counts__chip:focus-visible .category-counts__block {
    animation: category-block-pop var(--duration-complex) var(--ease-standard) both;
  }
  .category-counts__chip:hover .category-counts__block:nth-child(2), .category-counts__chip:focus-visible .category-counts__block:nth-child(2) {
    animation-delay: 0.06s;
  }
  .category-counts__chip:hover .category-counts__block:nth-child(3), .category-counts__chip:focus-visible .category-counts__block:nth-child(3) {
    animation-delay: 0.12s;
  }
}
.category-counts__name {
  font-size: var(--text-sm);
  font-weight: var(--font-medium);
}
.category-counts__num {
  font-size: var(--text-sm);
  color: var(--color-fg-subtle);
}
.category-counts__chip:hover .category-counts__num, .category-counts__chip:focus-visible .category-counts__num, .category-counts__chip[aria-pressed=true] .category-counts__num {
  color: var(--accent-blue);
}

.post-summary--filtered {
  display: none;
}

@keyframes category-block-pop {
  0% {
    transform: scale(0.5);
  }
  60% {
    transform: scale(1.12);
  }
  100% {
    transform: scale(1);
  }
}
.page-header__count {
  margin-top: var(--space-2);
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  color: var(--color-fg-subtle);
}

.post-hero {
  margin: var(--space-6) 0 var(--space-8);
}
.post-hero__img {
  display: block;
  width: 100%;
  height: auto;
}

.blog-pagination {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin: var(--space-12) 0;
  padding-top: var(--space-8);
  border-top: 1px solid var(--color-border-light);
}
.blog-pagination__prev, .blog-pagination__next {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4);
  font-size: var(--text-sm);
  font-weight: var(--font-medium);
  color: var(--color-fg-muted);
  text-decoration: none;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-control);
  transition: all var(--duration-fast) var(--ease-default);
}
.blog-pagination__prev:hover, .blog-pagination__next:hover {
  color: var(--color-fg);
  border-color: var(--color-fg);
}
.blog-pagination__info {
  font-size: var(--text-sm);
  color: var(--color-fg-subtle);
  font-family: var(--font-mono);
}

.callout {
  margin: var(--space-6) 0;
  padding: var(--space-4) var(--space-5);
  border-radius: var(--radius-lg);
  border: 1px solid;
  font-size: var(--text-sm);
  line-height: var(--leading-relaxed);
}
.callout__icon {
  display: inline-block;
  margin-right: var(--space-2);
  font-size: var(--text-base);
}
.callout__title {
  font-weight: var(--font-semibold);
  margin-bottom: var(--space-2);
}
.callout p {
  margin: 0;
}
.callout p + p {
  margin-top: var(--space-2);
}
.callout--note {
  background-color: var(--accent-blue-light);
  border-color: var(--accent-blue);
  color: var(--gray-900);
}
.callout--warning {
  background-color: var(--accent-amber-light);
  border-color: var(--accent-amber);
  color: var(--gray-900);
}
.callout--tip {
  background-color: var(--accent-green-light);
  border-color: var(--accent-green);
  color: var(--gray-900);
}
.callout--danger {
  background-color: var(--accent-red-light);
  border-color: var(--accent-red);
  color: var(--gray-900);
}

.code-block {
  margin: var(--space-8) 0;
  border: 1px solid var(--color-border-light);
  border-radius: var(--radius-lg);
  overflow: hidden;
}
.code-block__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-2) var(--space-4);
  background-color: var(--gray-200);
  border-bottom: 1px solid var(--color-border-light);
}
.code-block__filename {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--color-fg-muted);
}
.code-block__lang {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--color-fg-subtle);
  text-transform: uppercase;
}
.code-block__copy {
  display: inline-flex;
  align-items: center;
  padding: var(--space-1) var(--space-2);
  font-size: var(--text-xs);
  font-family: var(--font-mono);
  color: var(--color-fg-subtle);
  background: transparent;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: all var(--duration-fast) var(--ease-default);
}
.code-block__copy:hover {
  color: var(--color-fg);
  border-color: var(--color-fg);
}
.code-block pre {
  margin: 0;
  border: none;
  border-radius: 0;
}

.details {
  margin: var(--space-6) 0;
  border: 1px solid var(--color-border-light);
  border-radius: var(--radius-lg);
  overflow: hidden;
}
.details__summary {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-4) var(--space-5);
  font-weight: var(--font-semibold);
  font-size: var(--text-sm);
  color: var(--color-fg);
  cursor: pointer;
  user-select: none;
  background-color: var(--gray-100);
  transition: background-color var(--duration-fast) var(--ease-default);
  list-style: none;
}
.details__summary::-webkit-details-marker {
  display: none;
}
.details__summary::before {
  content: "▶";
  font-size: 0.625rem;
  color: var(--color-fg-subtle);
  transition: transform var(--duration-fast) var(--ease-default);
}
.details__summary:hover {
  background-color: var(--gray-200);
}
.details[open] > .details__summary::before {
  transform: rotate(90deg);
}
.details__content {
  padding: var(--space-5);
  font-size: var(--text-sm);
  line-height: var(--leading-relaxed);
  color: var(--color-fg-muted);
  border-top: 1px solid var(--color-border-light);
}

.columns {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-6);
  margin: var(--space-6) 0;
}
@media screen and (max-width: 768px) {
  .columns {
    grid-template-columns: 1fr;
  }
}

.column {
  min-width: 0;
}

.jh-sandpack {
  margin: 2rem 0;
}

.jh-sandpack__preview {
  display: block;
  width: 100%;
  min-height: var(--jh-sandpack-height, 480px);
  height: var(--jh-sandpack-height, 480px);
  border: 1px solid rgba(0, 0, 0, 0.12);
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
}

.jh-sandpack__error {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  padding: 1rem;
  background: #fff4f4;
  color: #8a1c1c;
  font-size: 0.9rem;
}

.main-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: nowrap;
  padding: var(--space-3) var(--space-4);
  width: 90%;
  box-sizing: border-box;
  border-radius: var(--radius-lg);
  border: 2px solid var(--color-fg);
  margin: var(--space-4) auto 0;
  background-color: var(--bg-elevated);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='mhpaper'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3CfeComponentTransfer%3E%3CfeFuncA type='linear' slope='0.2'/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23mhpaper)'/%3E%3C/svg%3E");
  background-size: 200px 200px;
  backdrop-filter: none;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05), 0 10px 30px rgba(0, 0, 0, 0.09);
  position: relative;
  top: 0;
  left: 0;
  transform: none;
  z-index: 1000;
  white-space: nowrap;
  overflow: visible;
}
[data-theme=dark] .main-header {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='mhpaperd'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3CfeComponentTransfer%3E%3CfeFuncA type='linear' slope='0.08'/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23mhpaperd)'/%3E%3C/svg%3E");
}
@media (max-width: 768px) {
  .main-header {
    padding: var(--space-2) var(--space-3);
    width: 92%;
    margin-top: var(--space-3);
  }
}
[data-theme=dark] .main-header {
  box-shadow: 0 2px 8px rgba(255, 255, 255, 0.08), 0 10px 30px rgba(255, 255, 255, 0.12);
}
.main-header__logo {
  display: inline-block;
  flex-shrink: 0;
  white-space: nowrap;
  font-weight: var(--font-bold);
  font-size: var(--text-base);
  color: var(--color-fg);
  text-decoration: none;
  position: relative;
}
.main-header__logo:hover {
  color: var(--color-fg);
}
.main-header__logo .mh-shapes {
  display: none;
}
.main-header__logo--anim .mh-word {
  display: inline-block;
  transition: transform 1.05s var(--ease-sharp), opacity 0.6s var(--ease-sharp);
  will-change: transform, opacity;
}
.main-header__logo--anim .mh-shapes {
  display: inline-flex;
  align-items: flex-end;
  gap: 0.5px;
  position: absolute;
  left: -2px;
  top: 50%;
  margin-top: -0.5em;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.6s var(--ease-sharp);
  will-change: opacity;
}
.main-header__logo--anim .mh-shape {
  display: block;
  transform: translateX(-28px) rotate(0deg);
  transition: transform 1.05s var(--ease-sharp);
  will-change: transform;
}
.main-header__logo--anim .mh-shape--circle {
  width: 16.5px;
  height: 16.5px;
  border-radius: 50%;
  background: var(--accent-red);
}
.main-header__logo--anim .mh-shape--square {
  width: 15px;
  height: 15px;
  background: var(--accent-amber);
}
.main-header__logo--anim .mh-shape--tri {
  width: 18px;
  height: 16px;
  background: var(--accent-blue);
  clip-path: polygon(50% 0, 100% 100%, 0 100%);
  margin-left: -1.5px;
  margin-right: 1px;
}
@media (prefers-reduced-motion: no-preference) {
  .main-header__logo--anim:focus-visible .mh-shapes, .main-header__logo--anim.is-anim .mh-shapes {
    transition-delay: 0.35s;
    opacity: 1;
  }
  .main-header__logo--anim:focus-visible .mh-word, .main-header__logo--anim.is-anim .mh-word {
    transform: translateX(104px);
    opacity: 0;
  }
  .main-header__logo--anim:focus-visible .mh-shape, .main-header__logo--anim.is-anim .mh-shape {
    transform: translateX(0) rotate(360deg);
  }
}
@media (prefers-reduced-motion: no-preference) and (hover: hover) {
  .main-header__logo--anim:hover .mh-shapes {
    transition-delay: 0.35s;
    opacity: 1;
  }
  .main-header__logo--anim:hover .mh-word {
    transform: translateX(104px);
    opacity: 0;
  }
  .main-header__logo--anim:hover .mh-shape {
    transform: translateX(0) rotate(360deg);
  }
}
@media (hover: none) {
  .main-header__logo--anim {
    -webkit-touch-callout: none;
    user-select: none;
  }
}
@media (prefers-reduced-motion: reduce) {
  .main-header__logo--anim .mh-shapes {
    display: none;
  }
}
.main-header__nav .search-form {
  margin-left: 20px;
}

.top-app-bar {
  --top-app-bar-height: 56px;
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1050;
  box-sizing: border-box;
  height: var(--top-app-bar-height);
  align-items: center;
  gap: var(--space-2);
  padding-inline: calc(16px - (var(--tap-min) - 17px) / 2) calc(16px - (var(--tap-min) - 14.5454545455px) / 2);
  background: var(--bg-elevated);
  border-bottom: 2px solid var(--color-fg);
  transform: translateY(-100%);
  visibility: hidden;
  transition: transform var(--duration-leaving) var(--ease-accelerate), visibility 0s linear var(--duration-leaving);
}
@media screen and (max-width: 768px) {
  .top-app-bar {
    display: flex;
  }
}
.top-app-bar.is-visible {
  transform: translateY(0);
  visibility: visible;
  transition: transform var(--duration-entering) var(--ease-decelerate), visibility 0s;
}
.top-app-bar__button {
  position: relative;
  display: block;
  flex: 0 0 auto;
  box-sizing: border-box;
  width: var(--tap-min);
  height: var(--tap-min);
  padding: 0;
  appearance: none;
  -webkit-appearance: none;
  border: none;
  border-radius: var(--radius-control);
  background: transparent;
  color: var(--color-fg);
  text-decoration: none;
  cursor: pointer;
  transition: color var(--duration-shortest) var(--ease-standard);
}
.top-app-bar__button:hover, .top-app-bar__button:focus-visible {
  color: var(--accent-blue);
}
.top-app-bar__icon {
  display: block;
  position: absolute;
  top: 50%;
  left: 50%;
}
.top-app-bar__back .top-app-bar__icon {
  width: 25.5px;
  height: 25.5px;
  margin: -12.75px 0 0 -12.75px;
  stroke-width: 1.8823529412;
}
.top-app-bar__share .top-app-bar__icon {
  width: 17.4545454545px;
  height: 17.4545454545px;
  margin: -8.7272727273px 0 0 -8.7272727273px;
  stroke-width: 2.75;
}
.top-app-bar__share .top-app-bar__icon--copied {
  width: 21.3333333333px;
  height: 21.3333333333px;
  margin: -10.2222222222px 0 0 -10.6666666667px;
  stroke-width: 2.25;
  opacity: 0;
}
.top-app-bar__share.is-copied {
  color: var(--accent-blue);
}
.top-app-bar__share.is-copied .top-app-bar__icon {
  opacity: 0;
}
.top-app-bar__share.is-copied .top-app-bar__icon--copied {
  opacity: 1;
}
.top-app-bar__title {
  flex: 1 1 auto;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-family: var(--font-sans);
  font-size: var(--text-base);
  font-weight: var(--font-semibold);
  color: var(--color-fg);
}
@media (min-resolution: 1.5dppx) {
  .top-app-bar__title {
    position: relative;
    top: 0.5px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .top-app-bar, .top-app-bar.is-visible {
    transition: none;
  }
}

.top-app-bar.is-visible ~ .reading-progress .reading-progress__remaining {
  display: none;
}

.footer {
  padding: var(--space-8) var(--space-4);
  text-align: center;
  margin-top: var(--space-16);
}
.footer__text {
  font-size: var(--text-sm);
  color: var(--color-fg-muted);
}

.main-navbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: relative;
  overflow: visible;
  flex-shrink: 0;
}
@media screen and (max-width: 768px) {
  .main-navbar {
    flex-direction: row;
    align-items: center;
  }
}
.main-navbar__nav {
  display: flex;
  align-items: center;
}
.main-navbar__nav-list {
  display: flex;
  align-items: center;
  list-style: none;
  margin: 0;
  margin-left: var(--space-4);
  padding: 0;
  gap: var(--space-6);
}
@media screen and (max-width: 768px) {
  .main-navbar__nav-list {
    flex-direction: row;
    flex-wrap: nowrap;
    gap: var(--space-4);
    margin-left: var(--space-2);
    width: auto;
  }
}
.main-navbar__nav-item {
  position: relative;
}
.main-navbar__nav-item:hover .main-navbar__submenu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.main-navbar__nav-link {
  display: block;
  font-size: var(--text-sm);
  text-decoration: none;
  color: var(--color-fg-muted);
  transition: color var(--duration-shortest) var(--ease-standard);
}
.main-navbar__nav-link:hover, .main-navbar__nav-link.active {
  color: var(--color-fg);
}
.main-navbar__submenu {
  position: absolute;
  top: 100%;
  left: 0;
  background-color: var(--bg-elevated);
  border: 2px solid var(--color-fg);
  border-radius: 0;
  box-shadow: none;
  min-width: 200px;
  z-index: 1000;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-10px);
  transition: all var(--duration-shorter) var(--ease-sharp);
}
@media screen and (max-width: 768px) {
  .main-navbar__submenu {
    position: static;
    opacity: 1;
    visibility: visible;
    transform: none;
    box-shadow: none;
    border: none;
    border-left: 2px solid var(--color-fg);
    margin-left: var(--space-4);
    padding-left: var(--space-4);
  }
}
.main-navbar__submenu-list {
  list-style: none;
  margin: 0;
  padding: var(--space-2) 0;
}
.main-navbar__submenu-item {
  padding: 0;
}
.main-navbar__submenu-link {
  display: block;
  padding: var(--space-2) var(--space-4);
  text-decoration: none;
  color: var(--color-fg-muted);
  transition: color var(--duration-shortest) var(--ease-standard), background-color var(--duration-shortest) var(--ease-standard);
}
.main-navbar__submenu-link:hover {
  color: var(--color-fg);
  background-color: var(--bg-hover);
}
.main-navbar__toggle {
  display: none;
  background: none;
  border: none;
  font-size: 1.5rem;
  cursor: pointer;
  padding: var(--space-2);
  color: var(--color-fg);
}
@media screen and (max-width: 768px) {
  .main-navbar__toggle {
    display: block;
  }
}
.main-navbar--mobile-open .main-navbar__nav {
  display: flex;
}
@media screen and (max-width: 768px) {
  .main-navbar--mobile-closed .main-navbar__nav {
    display: none;
  }
}

.markdown {
  color: var(--color-fg);
  font-family: var(--font-reading);
  --text-base: 1.0625rem;
  --leading-relaxed: 1.8;
  font-size: var(--text-base);
  line-height: var(--leading-relaxed);
  word-wrap: break-word;
  scrollbar-width: thin;
  scrollbar-color: var(--gray-400) transparent;
}
.markdown::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}
.markdown::-webkit-scrollbar-track {
  background: transparent;
}
.markdown::-webkit-scrollbar-thumb {
  background: var(--gray-400);
  border-radius: var(--radius-full);
}
.markdown::-webkit-scrollbar-thumb:hover {
  background: var(--gray-500);
}
.markdown > * {
  margin-bottom: var(--space-6);
}
.markdown > *:last-child {
  margin-bottom: 0;
}
.markdown h1, .markdown h2, .markdown h3, .markdown h4, .markdown h5, .markdown h6 {
  color: var(--color-fg);
  font-weight: var(--font-bold);
  line-height: var(--leading-snug);
  margin-top: var(--space-10);
  margin-bottom: var(--space-4);
}
@media screen and (max-width: 768px) {
  .markdown h1, .markdown h2, .markdown h3, .markdown h4, .markdown h5, .markdown h6 {
    scroll-margin-top: calc(56px + var(--space-2));
  }
}
.markdown h1 {
  font-size: var(--text-h3);
  letter-spacing: var(--tracking-tight);
  margin-top: 0;
  padding-bottom: var(--space-3);
  border-bottom: 1px solid var(--color-border-light);
}
.markdown h2 {
  font-size: var(--text-h4);
  letter-spacing: var(--tracking-tight);
  padding-bottom: var(--space-3);
  border-bottom: 1px solid var(--color-border-light);
}
.markdown h3 {
  font-size: var(--text-h5);
  font-weight: var(--font-semibold);
}
.markdown h4 {
  font-size: var(--text-base);
  font-weight: var(--font-semibold);
}
.markdown h5 {
  font-size: var(--text-sm);
  font-weight: var(--font-semibold);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wide);
}
.markdown h6 {
  font-size: var(--text-sm);
  font-weight: var(--font-semibold);
  color: var(--color-fg-muted);
}
.markdown p {
  margin-bottom: var(--space-6);
}
.markdown a {
  color: var(--color-link);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color var(--duration-fast) var(--ease-default), border-color var(--duration-fast) var(--ease-default);
}
.markdown a:hover {
  color: var(--color-link-hover);
  border-bottom-color: var(--color-link-hover);
}
.markdown strong, .markdown b {
  font-weight: var(--font-semibold);
  color: var(--color-fg);
}
.markdown em, .markdown i {
  font-style: italic;
}
.markdown blockquote {
  margin: var(--space-8) 0;
  padding: var(--space-4) var(--space-6);
  border-left: 3px solid var(--gray-400);
  background-color: var(--gray-100);
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
  color: var(--color-fg-muted);
}
@media (max-width: 768px) {
  .markdown blockquote {
    margin: var(--space-6) 0;
    padding: var(--space-3) var(--space-4);
  }
}
.markdown blockquote p {
  margin-bottom: var(--space-3);
}
.markdown blockquote p:last-child {
  margin-bottom: 0;
}
.markdown blockquote cite {
  display: block;
  margin-top: var(--space-3);
  font-size: var(--text-sm);
  font-style: normal;
  color: var(--color-fg-subtle);
}
.markdown blockquote cite::before {
  content: "— ";
}
.markdown ul, .markdown ol {
  margin-bottom: var(--space-6);
  padding-left: var(--space-8);
}
.markdown ul li, .markdown ol li {
  margin-bottom: var(--space-2);
  line-height: var(--leading-relaxed);
}
.markdown ul li > ul, .markdown ul li > ol, .markdown ol li > ul, .markdown ol li > ol {
  margin-top: var(--space-2);
  margin-bottom: var(--space-2);
}
.markdown ul {
  list-style-type: disc;
}
.markdown ul ul {
  list-style-type: circle;
}
.markdown ul ul ul {
  list-style-type: square;
}
.markdown ol {
  list-style-type: decimal;
}
.markdown ol ol {
  list-style-type: lower-alpha;
}
.markdown ol ol ol {
  list-style-type: lower-roman;
}
.markdown ul.task-list {
  list-style: none;
  padding-left: 0;
}
.markdown ul.task-list li {
  position: relative;
  padding-left: var(--space-6);
}
.markdown ul.task-list li input[type=checkbox] {
  position: absolute;
  left: 0;
  top: 0.375rem;
  accent-color: var(--accent-blue);
}
.markdown code {
  font-family: var(--font-mono);
  font-size: 0.875em;
  padding: 0.2em 0.4em;
  background-color: var(--color-code-bg);
  border-radius: var(--radius-sm);
  color: var(--color-code-fg);
}
.markdown pre {
  margin: var(--space-8) 0;
  padding: var(--space-6);
  background-color: var(--gray-1000);
  border: 1px solid var(--gray-700);
  border-radius: var(--radius-lg);
  overflow-x: auto;
  line-height: var(--leading-normal);
  scrollbar-width: thin;
  scrollbar-color: var(--gray-400) transparent;
}
@media (max-width: 768px) {
  .markdown pre {
    margin: var(--space-4) calc(var(--space-4) * -1);
    padding: var(--space-4);
    border-left: none;
    border-right: none;
    border-radius: 0;
  }
}
.markdown pre::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}
.markdown pre::-webkit-scrollbar-track {
  background: transparent;
}
.markdown pre::-webkit-scrollbar-thumb {
  background: var(--gray-400);
  border-radius: var(--radius-full);
}
.markdown pre::-webkit-scrollbar-thumb:hover {
  background: var(--gray-500);
}
.markdown pre code {
  padding: 0;
  background-color: transparent;
  border-radius: 0;
  color: #F7F4EA;
  font-size: var(--text-sm);
}
.markdown .highlight {
  position: relative;
}
.markdown .code-copy-btn {
  position: absolute;
  top: var(--space-2);
  right: var(--space-2);
  padding: 2px var(--space-2);
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  line-height: 1.5;
  color: #f8f8f2;
  background-color: rgba(255, 255, 255, 0.12);
  border: 1px solid rgba(255, 255, 255, 0.28);
  border-radius: 0;
  cursor: pointer;
  opacity: 0;
  transition: opacity var(--duration-fast) var(--ease-out), background-color var(--duration-fast) var(--ease-out);
}
.markdown .code-copy-btn:hover {
  background-color: rgba(255, 255, 255, 0.22);
}
.markdown .code-copy-btn.is-copied {
  color: #a6e22e;
  border-color: rgba(166, 226, 46, 0.5);
}
.markdown .highlight:hover .code-copy-btn,
.markdown .code-copy-btn:focus-visible {
  opacity: 1;
}
@media (hover: none) {
  .markdown .code-copy-btn {
    opacity: 0.6;
  }
}
.markdown table {
  width: 100%;
  margin: var(--space-8) 0;
  border-collapse: collapse;
  font-size: var(--text-sm);
  overflow-x: auto;
  display: block;
}
.markdown table thead {
  border-bottom: 1px solid var(--color-border);
}
.markdown table th, .markdown table td {
  padding: var(--space-3) var(--space-4);
  text-align: left;
  border-bottom: 1px solid var(--color-border-light);
}
.markdown table th {
  font-weight: var(--font-semibold);
  color: var(--color-fg);
}
.markdown table tbody tr {
  transition: background-color var(--duration-fast) var(--ease-default);
}
.markdown table tbody tr:hover {
  background-color: var(--gray-100);
}
.markdown hr {
  margin: var(--space-12) 0;
  border: none;
  height: 1px;
  background-color: var(--color-border-light);
}
.markdown img {
  max-width: 100%;
  height: auto;
  display: block;
  margin: var(--space-8) auto;
  border-radius: var(--radius-lg);
  border: 1px solid var(--color-border-light);
}
.markdown figure {
  margin: var(--space-8) 0;
  text-align: center;
}
.markdown figure img {
  margin-bottom: var(--space-2);
}
.markdown figure figcaption {
  font-size: var(--text-sm);
  color: var(--color-fg-subtle);
  font-style: italic;
  margin-top: var(--space-2);
}
.markdown dl {
  margin-bottom: var(--space-6);
}
.markdown dl dt {
  font-weight: var(--font-semibold);
  color: var(--color-fg);
  margin-bottom: var(--space-1);
}
.markdown dl dd {
  margin-left: var(--space-6);
  margin-bottom: var(--space-4);
  color: var(--color-fg-muted);
}
.markdown kbd {
  display: inline-block;
  padding: 0.125rem 0.375rem;
  font-family: var(--font-mono);
  font-size: 0.875em;
  line-height: 1;
  color: var(--color-fg);
  background-color: var(--gray-200);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  box-shadow: inset 0 -1px 0 var(--gray-400);
}
.markdown mark {
  padding: 0.125rem 0.25rem;
  background-color: var(--accent-amber-light);
  color: var(--accent-amber);
  border-radius: 2px;
}
.markdown abbr[title] {
  border-bottom: 1px dotted var(--color-fg-subtle);
  cursor: help;
  text-decoration: none;
}
.markdown .footnotes {
  margin-top: var(--space-12);
  padding-top: var(--space-8);
  border-top: 1px solid var(--color-border-light);
  font-size: var(--text-sm);
  color: var(--color-fg-muted);
}
.markdown .footnotes ol {
  padding-left: var(--space-6);
}
.markdown .footnotes a {
  color: var(--color-fg-muted);
}
.markdown .footnotes a:hover {
  color: var(--color-link);
}
.markdown details {
  margin-bottom: var(--space-6);
  padding: var(--space-4);
  background-color: var(--gray-100);
  border-radius: var(--radius-lg);
  border: 1px solid var(--color-border-light);
}
.markdown details summary {
  font-weight: var(--font-semibold);
  cursor: pointer;
  user-select: none;
  padding: var(--space-2);
  margin: calc(var(--space-2) * -1);
  color: var(--color-fg);
  transition: color var(--duration-fast) var(--ease-default);
}
.markdown details summary:hover {
  color: var(--color-link);
}
.markdown details summary:focus {
  outline: none;
}
.markdown details[open] summary {
  margin-bottom: var(--space-4);
}
@media print {
  .markdown {
    font-size: 12pt;
    line-height: 1.5;
    color: #000;
    background: #fff;
  }
  .markdown h1, .markdown h2, .markdown h3, .markdown h4, .markdown h5, .markdown h6 {
    page-break-after: avoid;
    page-break-inside: avoid;
    color: #000;
  }
  .markdown p, .markdown blockquote, .markdown ul, .markdown ol, .markdown dl, .markdown table, .markdown pre {
    page-break-inside: avoid;
  }
  .markdown a {
    text-decoration: underline;
    color: #000;
  }
  .markdown pre {
    border: 1px solid #ddd;
    background: #f5f5f5;
  }
}

.posts-list {
  margin: var(--space-6) 0 var(--space-8);
  padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-8) var(--space-12);
}
.posts-list.hide-outdated .post-summary--outdated {
  display: none;
}

.container--posts-ruler {
  position: relative;
}

.post-summary {
  padding: 0;
  border-bottom: none;
}
.post-summary__thumb-link {
  display: block;
  position: relative;
  margin-bottom: var(--space-3);
  text-decoration: none;
  padding: 8px;
  border-radius: var(--radius-sm);
  background: var(--bg-hover);
  border: 1px solid var(--color-border);
  overflow: hidden;
}
.post-summary__series-badge {
  position: absolute;
  top: 14px;
  right: 14px;
  z-index: 1;
  padding: 2.94px 8px 1.06px;
  font-family: var(--font-mono);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.01em;
  color: #000;
  background: #fff;
  border-radius: 999px;
  pointer-events: none;
}
.post-summary__thumb {
  display: block;
  width: 100%;
  aspect-ratio: 4/3;
  object-fit: cover;
  border-radius: 2px;
  background: var(--bg-elevated);
  transform: scale(1);
  transition: transform var(--duration-shorter) var(--ease-standard);
}
.post-summary__thumb-link:hover .post-summary__thumb {
  transform: scale(1.02);
}
.post-summary__title {
  margin: 0 0 var(--space-2) 0;
  font-size: var(--text-h4);
  font-weight: var(--font-semibold);
  font-family: var(--font-reading);
  line-height: var(--leading-snug);
  position: relative;
}
.post-summary__title a {
  color: var(--color-fg);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-default);
}
.post-summary__title a:hover {
  color: var(--color-link);
}
.post-summary__title-link {
  display: block;
}
.post-summary__thumb-pin {
  position: absolute;
  top: 14px;
  left: 14px;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  background: #fff;
  border-radius: 999px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
  pointer-events: none;
}
.post-summary__thumb-pin svg {
  display: block;
}
.post-summary__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-bottom: var(--space-3);
}
.post-summary__meta:last-child {
  margin-bottom: 0;
}
.post-summary__meta time {
  font-size: var(--text-sm);
  color: var(--color-fg-subtle);
}
.post-summary__badge {
  display: inline-flex;
  align-items: center;
  height: 1.375rem;
  border-radius: 999px;
  border: 1px solid var(--accent-amber);
  background: var(--accent-amber-light);
  color: var(--color-fg);
  font-size: 10px;
  font-weight: 700;
  font-family: var(--font-sans);
  letter-spacing: 0.03em;
  padding-top: 0.106em;
  padding-left: calc(0.45rem + 0.03em / 2 - var(--badge-bearing, 0em));
  padding-right: calc(0.45rem - 0.03em / 2 + var(--badge-bearing, 0em));
}
.post-summary__badge--wip {
  border-color: var(--accent-blue);
  background: var(--accent-blue-light);
  color: var(--accent-blue);
  --badge-bearing: 0.033em;
}
[data-theme=dark] .post-summary__badge--wip {
  color: color-mix(in srgb, var(--accent-blue) 70%, white);
}
.post-summary__content {
  margin: 0;
  color: var(--color-fg-muted);
  font-family: var(--font-reading);
  font-size: var(--text-base);
  line-height: var(--leading-relaxed);
}
.post-summary__content p {
  margin-bottom: var(--space-4);
}
.post-summary__content p:last-child {
  margin-bottom: 0;
}
.post-summary__content strong, .post-summary__content b {
  font-weight: var(--font-semibold);
  color: var(--color-fg);
}
.post-summary__content code {
  font-family: var(--font-mono);
  font-size: 0.875em;
  padding: 0.2em 0.4em;
  background-color: var(--color-code-bg);
  border-radius: var(--radius-sm);
  color: var(--color-code-fg);
}
.post-summary__link {
  display: inline-flex;
  align-items: center;
  font-size: var(--text-sm);
  font-weight: var(--font-medium);
  color: var(--color-fg-subtle);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-default);
}
.post-summary__link:hover {
  color: var(--color-fg);
}

.page-header {
  margin-bottom: var(--space-8);
  padding-bottom: 0;
  border-bottom: none;
}
.page-header__title-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-4);
  margin-bottom: var(--space-4);
}
.page-header h1 {
  font-size: var(--text-h2);
  font-weight: var(--font-bold);
  font-family: var(--font-reading);
  line-height: var(--leading-tight);
  margin: 0;
  color: var(--color-fg);
  letter-spacing: var(--tracking-tighter);
}
.page-header .markdown {
  color: var(--color-fg-muted);
  font-size: var(--text-lg);
  line-height: var(--leading-relaxed);
}
.page-header .markdown p {
  margin: 0;
}

.list-settings {
  position: relative;
  flex-shrink: 0;
}
.list-settings__trigger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  padding: 0;
  background: transparent;
  border: none;
  color: var(--color-fg);
  cursor: pointer;
  transition: opacity var(--duration-fast) var(--ease-default);
}
.list-settings__trigger:hover, .list-settings__trigger[aria-expanded=true] {
  opacity: 0.65;
}
.list-settings__icon {
  display: block;
}
.list-settings__popover {
  position: absolute;
  top: calc(100% + var(--space-2));
  right: 0;
  z-index: 60;
  width: min(280px, 100vw - 32px);
  padding: var(--space-4);
  background: var(--bg-elevated);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.14);
}
.list-settings__popover[hidden] {
  display: none;
}
.list-settings__hint {
  margin: var(--space-3) 0 0;
  font-size: var(--text-xs);
  line-height: var(--leading-snug);
  color: var(--color-fg-subtle);
}

.outdated-toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  user-select: none;
}
.outdated-toggle__label {
  font-size: var(--text-sm);
  font-weight: var(--font-medium);
  color: var(--color-fg);
}
.outdated-toggle__btn {
  position: relative;
  flex-shrink: 0;
  width: 48px;
  height: 26px;
  background-color: var(--accent-blue);
  border: 2px solid var(--color-fg);
  border-radius: 9999px;
  cursor: pointer;
  padding: 0;
  transition: background-color var(--duration-fast) var(--ease-default);
}
.outdated-toggle__btn--off {
  background-color: var(--bg-hover);
}
.outdated-toggle__btn--off .outdated-toggle__slider {
  transform: translateX(0);
  background-color: var(--color-fg-subtle);
}
.outdated-toggle__slider {
  position: absolute;
  top: 2px;
  left: 2px;
  width: 18px;
  height: 18px;
  background-color: var(--bg-100);
  border-radius: 50%;
  transition: transform var(--duration-fast) var(--ease-default), background-color var(--duration-fast) var(--ease-default);
  transform: translateX(22px);
}

.posts-ruler-overlay {
  position: fixed;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 30;
}

.posts-ruler-overlay__lines,
.posts-ruler-overlay__gaps {
  position: absolute;
  inset: 0;
}

.posts-ruler-overlay__line {
  position: absolute;
  background-color: #F43940;
}

.posts-ruler-overlay__line--h {
  left: 0;
  width: 100vw;
  height: 1px;
}

.posts-ruler-overlay__line--v {
  top: 0;
  width: 1px;
  height: 100vh;
}

.posts-ruler-overlay__gap-marker {
  position: absolute;
}

.posts-ruler-overlay__gap-marker--y {
  width: 1px;
  border-left: 1px solid #F43940;
}

.posts-ruler-overlay__gap-marker--x {
  height: 1px;
  border-top: 1px solid #F43940;
}

.posts-ruler-overlay__gap-label {
  position: absolute;
  color: #F43940;
  font-size: 11px;
  line-height: 1;
  font-family: var(--font-mono);
  white-space: nowrap;
}

.post-title-tooltip {
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  z-index: 60;
  max-width: min(520px, 100vw - 40px);
  padding: 8px 10px;
  border: 1px solid rgba(10, 10, 10, 0.2);
  border-radius: 4px;
  background: rgba(10, 10, 10, 0.95);
  color: #f6f2e9;
  font-size: 13px;
  line-height: 1.35;
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  box-shadow: 0 12px 24px rgba(0, 0, 0, 0.18);
  transform: translateY(-2px);
}

.pagination {
  margin: var(--space-12) 0 var(--space-8) 0;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: var(--space-2);
}
.pagination a, .pagination span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 3rem;
  height: 3rem;
  padding: 0 var(--space-3);
  font-size: var(--text-sm);
  font-weight: var(--font-medium);
  text-decoration: none;
  border-radius: var(--radius-md);
  transition: all var(--duration-fast) var(--ease-default);
}
.pagination a {
  color: var(--color-fg-muted);
  background-color: transparent;
  border: 1px solid var(--color-border);
}
.pagination a:hover {
  color: var(--color-fg);
  border-color: var(--color-fg);
}
.pagination .current {
  color: var(--bg-100);
  background-color: var(--color-fg);
  border: 1px solid var(--color-fg);
}
.pagination .disabled {
  color: var(--gray-500);
  background-color: transparent;
  border: 1px solid var(--color-border-light);
  cursor: not-allowed;
}

@media (min-width: 768px) {
  .posts-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 768px) {
  .posts-ruler-overlay {
    display: none;
  }
  .posts-list {
    grid-template-columns: 1fr;
    padding: 0;
    gap: var(--space-8);
  }
  .post-summary {
    padding: 0;
  }
  .post-summary__title {
    font-size: 1.375rem;
  }
  .page-header {
    margin-bottom: var(--space-6);
    padding-bottom: 0;
  }
  .page-header h1 {
    font-size: var(--text-h3);
  }
}
@media (max-width: 576px) {
  .post-summary__title {
    font-size: 1.25rem;
  }
  .page-header {
    margin-bottom: var(--space-5);
    padding-bottom: 0;
  }
  .page-header h1 {
    font-size: var(--text-h4);
  }
}
.jh-chart {
  margin: var(--space-8) 0;
}
.jh-chart__canvas {
  position: relative;
  width: 100%;
}
.jh-chart canvas {
  display: block;
  width: 100% !important;
}
.jh-chart__caption {
  margin-top: var(--space-3);
  font-size: var(--text-sm);
  line-height: var(--leading-snug);
  color: var(--color-fg-subtle);
  text-align: center;
}

.jh-svg {
  margin: var(--space-8) 0;
}
.jh-svg__frame {
  display: flex;
  justify-content: center;
  color: var(--color-fg);
}
.jh-svg__frame svg {
  max-width: 100%;
  height: auto;
}
.jh-svg__caption {
  margin-top: var(--space-3);
  font-size: var(--text-sm);
  line-height: var(--leading-snug);
  color: var(--color-fg-subtle);
  text-align: center;
}

[data-theme=dark] .jh-svg [fill="#1E46A0"] {
  fill: var(--accent-blue);
}
[data-theme=dark] .jh-svg [stroke="#1E46A0"] {
  stroke: var(--accent-blue);
}

.jh-lab {
  margin: var(--space-8) 0;
}
.jh-lab__stage {
  display: flex;
  justify-content: center;
  color: var(--color-fg);
}
.jh-lab__stage svg {
  max-width: 100%;
  height: auto;
}
.jh-lab__controls {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-2);
  margin-top: var(--space-4);
}
.jh-lab__slider {
  width: min(360px, 85%);
  accent-color: var(--accent-blue);
  cursor: pointer;
}
.jh-lab__label {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-sm);
  color: var(--color-fg-subtle);
}
.jh-lab__label .jh-lab__slider {
  width: min(220px, 55vw);
}
.jh-lab__btn {
  appearance: none;
  background: transparent;
  border: 1px solid var(--color-border);
  color: var(--color-fg);
  font: inherit;
  font-size: var(--text-sm);
  padding: var(--space-1) var(--space-4);
  cursor: pointer;
  transition: border-color var(--duration-shortest) var(--ease-standard), color var(--duration-shortest) var(--ease-standard), background-color var(--duration-shortest) var(--ease-standard);
}
.jh-lab__btn:hover, .jh-lab__btn:focus-visible {
  border-color: var(--accent-blue);
  color: var(--accent-blue);
}
.jh-lab__btn[aria-pressed=true] {
  border-color: var(--accent-blue);
  background: var(--accent-blue-light);
  color: var(--accent-blue);
}
.jh-lab__readout {
  margin: 0;
  font-size: var(--text-sm);
  color: var(--color-fg-subtle);
  text-align: center;
}
.jh-lab__caption {
  margin-top: var(--space-3);
  font-size: var(--text-sm);
  line-height: var(--leading-snug);
  color: var(--color-fg-subtle);
  text-align: center;
}

.jh-typelab__stage {
  display: flex;
  justify-content: center;
  padding: var(--space-4) 0;
}
.jh-typelab__sample {
  max-width: 46ch;
  margin: 0;
  padding: var(--space-4);
  font-size: clamp(1.25rem, 4.2vw, 1.7rem);
  color: var(--color-fg);
  text-align: center;
  word-break: keep-all;
  overflow-wrap: anywhere;
  transition: letter-spacing 0.06s var(--ease-standard), line-height 0.06s var(--ease-standard);
}
.jh-typelab__sample--boxes .jh-typelab__ch {
  outline: 1px solid var(--accent-amber);
  background: var(--accent-amber-light);
}
.jh-typelab__sample--boxes .jh-typelab__ch--space {
  outline-color: transparent;
  background: transparent;
}
.jh-typelab__controls {
  width: 100%;
}
.jh-typelab__row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  font-size: var(--text-sm);
  color: var(--color-fg-subtle);
}
.jh-typelab__name {
  flex-shrink: 0;
  width: 2.4em;
  text-align: right;
  font-weight: var(--font-semibold);
  color: var(--color-fg);
}
.jh-typelab__val {
  flex-shrink: 0;
  width: 5em;
  font-variant-numeric: tabular-nums;
  font-size: var(--text-xs);
  color: var(--color-fg-muted);
}
.jh-typelab__toggle {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-sm);
  color: var(--color-fg-subtle);
  cursor: pointer;
  accent-color: var(--accent-blue);
}
.jh-typelab .jh-lab__readout.is-warn {
  color: var(--accent-red);
  font-weight: var(--font-semibold);
}

.jh-clslab__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-4);
  margin-top: var(--space-4);
}
@media (max-width: 560px) {
  .jh-clslab__grid {
    grid-template-columns: 1fr;
  }
}
.jh-clslab__card {
  border: 1px solid var(--color-border);
  border-radius: 2px;
  padding: var(--space-3);
  background: var(--color-bg-subtle, transparent);
}
.jh-clslab__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  margin-bottom: var(--space-2);
}
.jh-clslab__tag {
  font-size: var(--text-xs);
  font-weight: var(--font-bold);
}
.jh-clslab__tag--bad {
  color: var(--fig-measure);
}
.jh-clslab__tag--tuned {
  color: var(--fig-counter);
}
.jh-clslab__delta {
  font-size: var(--text-xs);
  font-variant-numeric: tabular-nums;
  color: var(--color-fg-muted);
}
.jh-clslab__card[data-shift=high] .jh-clslab__delta {
  color: var(--fig-measure);
  font-weight: var(--font-bold);
}
.jh-clslab__card[data-shift=zero] .jh-clslab__delta {
  color: var(--fig-counter);
  font-weight: var(--font-bold);
}
.jh-clslab__vp {
  position: relative;
  overflow: hidden;
  min-height: 232px;
  color: var(--color-fg);
}
.jh-clslab__guide {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 0;
  border-top: 1px dashed var(--fig-counter);
  opacity: 0;
  pointer-events: none;
}
.jh-clslab__sample {
  margin: 0;
  font-size: 1.15rem;
  line-height: 1.3;
  text-align: center;
  word-break: keep-all;
  overflow-wrap: anywhere;
  font-family: "Pretendard Variable", Pretendard, -apple-system, sans-serif;
}
.jh-clslab__card[data-state=fallback][data-kind=bad] .jh-clslab__sample {
  line-height: 2;
}
.jh-clslab__block {
  margin-top: var(--space-3);
  padding: var(--space-3);
  text-align: center;
  font-weight: var(--font-bold);
  font-size: var(--text-sm);
  color: var(--color-fg);
  background: var(--accent-blue-light);
  border: 1.5px solid var(--fig-counter);
  border-radius: 2px;
  will-change: transform;
}
.jh-clslab__controls {
  width: 100%;
}

.jh-riemann__count,
.jh-riemann__error,
.jh-secant__h,
.jh-secant__avg,
.jh-secant__inst,
.jh-divcompare__n,
.jh-divcompare__a,
.jh-divcompare__b,
.jh-tangentsign__slope,
.jh-vectoradd__vx,
.jh-vectoradd__vy,
.jh-vectoradd__sx,
.jh-vectoradd__sy,
.jh-vectoradd__len,
.jh-dotprod__deg,
.jh-dotprod__dot,
.jh-basiscombo__c1,
.jh-basiscombo__c2 {
  font-family: var(--font-mono);
  color: var(--color-fg);
}

.jh-waitlab__phone {
  position: relative;
  width: min(320px, 86vw);
  aspect-ratio: 433/882;
  margin: 0 auto;
}
.jh-waitlab__frame {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.jh-waitlab__frame-body {
  fill: #1c1c1e;
}
.jh-waitlab__frame-inner {
  fill: none;
  stroke: #4a4a4e;
  stroke-width: 1;
}
.jh-waitlab__frame-btn {
  fill: #2c2c2e;
}
.jh-waitlab__screen {
  position: absolute;
  left: 4.907%;
  top: 2.183%;
  width: 89.954%;
  height: 95.635%;
  border-radius: 14.31%/6.61%;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  background: var(--bg-elevated);
  text-align: left;
}
.jh-waitlab__island {
  position: absolute;
  top: 1.9%;
  left: 50%;
  transform: translateX(-50%);
  width: 31%;
  height: 3.9%;
  border-radius: 9999px;
  background: #111;
  z-index: 2;
}
.jh-waitlab__bar {
  display: flex;
  justify-content: center;
  padding: 11.5% var(--space-4) var(--space-2);
  border-bottom: 1px solid var(--color-border-light);
}
.jh-waitlab__bar-title {
  font-size: var(--text-xs);
  font-weight: var(--font-semibold);
  color: var(--color-fg-subtle);
  letter-spacing: 0.06em;
}
.jh-waitlab__body {
  position: relative;
  flex: 1;
  overflow: hidden;
}
.jh-waitlab__feed {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}
.jh-waitlab__feed--skeleton {
  position: absolute;
  inset: 0;
  visibility: hidden;
}
.jh-waitlab__screen[data-state=skeleton] .jh-waitlab__feed--skeleton {
  visibility: visible;
}
.jh-waitlab__screen[data-state=skeleton] .jh-waitlab__feed--content, .jh-waitlab__screen[data-state=spinner] .jh-waitlab__feed--content, .jh-waitlab__screen[data-state=idle] .jh-waitlab__feed--content {
  visibility: hidden;
}
.jh-waitlab__card {
  display: flex;
  gap: var(--space-3);
  padding: var(--space-4);
}
.jh-waitlab__card + .jh-waitlab__card {
  border-top: 1px solid var(--color-border-light);
}
.jh-waitlab__poster {
  flex-shrink: 0;
  width: 56px;
  height: 84px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.jh-waitlab__poster--v1 {
  background: linear-gradient(90deg, transparent 0 12%, #111 12% 22%, transparent 22% 78%, #111 78% 88%, transparent 88%), #F6D200;
}
.jh-waitlab__poster--v2 {
  background: linear-gradient(90deg, transparent 0 12%, #F6D200 12% 22%, transparent 22% 78%, #F6D200 78% 88%, transparent 88%), #141414;
}
.jh-waitlab__poster--v3 {
  background: repeating-linear-gradient(135deg, #d6d3ce 0 8px, #c6c2bc 8px 16px);
}
.jh-waitlab__poster-mark {
  font-size: var(--text-lg);
  font-weight: var(--font-semibold);
  color: #6B7280;
}
.jh-waitlab__lines {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
  flex: 1;
}
.jh-waitlab__score {
  display: flex;
  align-items: center;
  gap: var(--space-1);
  font-size: 0.7rem;
}
.jh-waitlab__icon {
  width: 12px;
  height: 12px;
  flex-shrink: 0;
}
.jh-waitlab__icon + .jh-waitlab__pct {
  margin-right: var(--space-2);
}
.jh-waitlab__pct {
  font-family: var(--font-mono);
  font-weight: var(--font-semibold);
  color: var(--color-fg);
}
.jh-waitlab__title {
  font-size: var(--text-sm);
  font-weight: var(--font-semibold);
  color: var(--color-fg);
  line-height: var(--leading-snug);
}
.jh-waitlab__meta {
  font-size: 0.75rem;
  color: var(--color-fg-subtle);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.jh-waitlab__bone {
  position: relative;
  overflow: hidden;
  background: color-mix(in srgb, var(--color-fg) 10%, transparent);
}
.jh-waitlab__bone::after {
  content: "";
  position: absolute;
  inset: 0;
  transform: translateX(-100%);
  background: linear-gradient(90deg, transparent 15%, var(--bg-elevated) 50%, transparent 85%);
  opacity: 0.85;
  animation: jh-waitlab-shimmer 1.6s linear infinite;
}
.jh-waitlab__bone--poster {
  flex-shrink: 0;
  width: 56px;
  height: 84px;
}
.jh-waitlab__bone--score {
  width: 34%;
  height: 0.7em;
}
.jh-waitlab__bone--title {
  width: 48%;
  height: 0.95em;
}
.jh-waitlab__bone--meta {
  width: 60%;
  height: 0.65em;
}
.jh-waitlab__bone--meta-long {
  width: 82%;
}
.jh-waitlab__spinner {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  visibility: hidden;
}
.jh-waitlab__screen[data-state=spinner] .jh-waitlab__spinner {
  visibility: visible;
}
.jh-waitlab__ring {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 4px solid var(--accent-blue);
  border-top-color: color-mix(in srgb, var(--color-fg) 12%, transparent);
  animation: jh-waitlab-spin 0.9s linear infinite;
}
.jh-waitlab__idle {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  visibility: hidden;
}
.jh-waitlab__screen[data-state=idle] .jh-waitlab__idle {
  visibility: visible;
}
.jh-waitlab__idle-hint {
  margin: 0;
  font-size: var(--text-xs);
  line-height: var(--leading-snug);
  color: var(--color-fg-muted);
  text-align: center;
}
.jh-waitlab__start {
  border-radius: var(--radius-control);
  padding: var(--space-2) var(--space-5);
  font-weight: var(--font-semibold);
}
.jh-waitlab__row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  flex-wrap: wrap;
}
.jh-waitlab__modes {
  display: inline-flex;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-control);
  overflow: hidden;
}
.jh-waitlab__seg {
  appearance: none;
  background: transparent;
  border: none;
  color: var(--color-fg-subtle);
  font: inherit;
  font-size: var(--text-sm);
  padding: var(--space-1) var(--space-4);
  cursor: pointer;
  transition: background-color var(--duration-shortest) var(--ease-standard), color var(--duration-shortest) var(--ease-standard);
}
.jh-waitlab__seg + .jh-waitlab__seg {
  border-left: 1px solid var(--color-border);
}
.jh-waitlab__seg:hover, .jh-waitlab__seg:focus-visible {
  color: var(--accent-blue);
}
.jh-waitlab__seg[aria-pressed=true] {
  background: var(--accent-blue);
  color: var(--bg-elevated);
}
.jh-waitlab__tabbar {
  display: flex;
  justify-content: space-around;
  align-items: center;
  padding: var(--space-3) 0 18px;
  border-top: 1px solid var(--color-border-light);
}
.jh-waitlab__tab {
  width: 16px;
  height: 16px;
  border: 2px solid var(--color-border);
}
.jh-waitlab__tab--on {
  border-color: var(--accent-blue);
  background: var(--accent-blue-light);
}
.jh-waitlab__home {
  position: absolute;
  bottom: 7px;
  left: 50%;
  transform: translateX(-50%);
  width: 36%;
  height: 4px;
  border-radius: 9999px;
  background: color-mix(in srgb, var(--color-fg) 60%, transparent);
}
.jh-waitlab__load {
  border-radius: var(--radius-control);
}
.jh-waitlab__load:disabled {
  opacity: 0.5;
  cursor: default;
  border-color: var(--color-border);
  color: var(--color-fg-subtle);
}

@keyframes jh-waitlab-shimmer {
  to {
    transform: translateX(100%);
  }
}
@keyframes jh-waitlab-spin {
  to {
    transform: rotate(360deg);
  }
}
@media (prefers-reduced-motion: reduce) {
  .jh-waitlab__bone::after {
    animation: none;
  }
  .jh-waitlab__ring {
    animation-duration: 2.4s;
  }
}
.jh-gestaltlab__stage {
  width: min(560px, 100%);
}
.jh-gestaltlab__row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
}
.jh-gestaltlab__name {
  font-size: var(--text-sm);
  color: var(--color-fg-subtle);
  min-width: 9.5em;
  text-align: right;
}
.jh-gestaltlab__seg {
  display: inline-flex;
}
.jh-gestaltlab__seg .jh-lab__btn + .jh-lab__btn {
  margin-left: -1px;
}
@media (max-width: 30rem) {
  .jh-gestaltlab__row {
    flex-direction: column;
    gap: var(--space-1);
  }
  .jh-gestaltlab__name {
    min-width: 0;
    text-align: center;
  }
}

.jh-latticelab__grid {
  width: min(560px, 100%);
}
.jh-latticelab__val {
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
  min-width: 3.2em;
  text-align: right;
}

.post-template__title {
  font-size: var(--text-h2);
  font-weight: var(--font-bold);
  margin-bottom: var(--space-6);
  color: var(--color-fg);
  letter-spacing: var(--tracking-tight);
}
.post-template__content {
  font-size: var(--text-base);
  line-height: var(--leading-relaxed);
  color: var(--color-fg-muted);
}

.home-page__welcome {
  font-size: var(--text-h4);
  text-align: center;
  margin-bottom: var(--space-10);
  color: var(--color-fg);
}

.bauhaus-canvas {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  pointer-events: auto;
}
.bauhaus-canvas canvas {
  position: absolute;
  top: 0;
  left: 0;
  display: block;
  width: 100%;
  height: 100%;
  pointer-events: auto;
  cursor: crosshair;
}
.bauhaus-canvas .bauhaus-layer--overlay {
  pointer-events: none;
}

main {
  position: relative;
  z-index: 1;
}

.home-posts:focus-within {
  position: fixed;
  top: 96px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1050;
  width: min(90%, 640px);
  height: auto;
  max-height: min(70vh, 560px);
  overflow-y: auto;
  overscroll-behavior: contain;
  margin: 0;
  padding: var(--space-5);
  clip-path: none;
  white-space: normal;
  background-color: var(--bg-elevated);
  border: 2px solid var(--color-fg);
  border-radius: var(--radius-lg);
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06), 0 10px 30px rgba(0, 0, 0, 0.12);
}
.home-posts:focus-within h2 {
  margin: 0 0 var(--space-3);
  font-size: var(--text-h5);
  font-weight: var(--font-bold);
  color: var(--color-fg);
}
.home-posts:focus-within ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
.home-posts:focus-within li + li {
  margin-top: var(--space-1);
}
.home-posts:focus-within a {
  display: block;
  padding: var(--space-2);
  border-radius: var(--radius-sm);
  color: var(--accent-blue);
  font-size: var(--text-sm);
  text-decoration: none;
}
.home-posts:focus-within a:hover {
  background-color: var(--bg-hover);
}
.home-posts:focus-within a:focus-visible {
  outline: 2px solid var(--accent-blue);
  outline-offset: 2px;
}
.home-posts:focus-within p {
  margin: var(--space-3) 0 0;
  padding-top: var(--space-3);
  border-top: 1px solid var(--color-border-light);
}

[data-theme=dark] .home-posts:focus-within {
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3), 0 10px 30px rgba(0, 0, 0, 0.45);
}

.about-page section {
  padding: var(--space-8) 0;
}

.about-early {
  margin-top: var(--space-5);
}
.about-early__summary {
  cursor: pointer;
  font-size: var(--text-sm);
  color: var(--color-fg-subtle);
  list-style: none;
  user-select: none;
}
.about-early__summary::-webkit-details-marker {
  display: none;
}
.about-early__summary::before {
  content: "+ ";
  font-family: var(--font-mono);
}
.about-early__summary:hover {
  color: var(--accent-blue);
}
.about-early[open] .about-early__summary::before {
  content: "− ";
}
.about-early__list {
  list-style: none;
  padding: 0;
  margin: var(--space-4) 0 0;
}
.about-early__item {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: var(--space-2);
  padding: var(--space-2) 0;
  font-size: var(--text-sm);
}
.about-early__role {
  color: var(--color-fg-muted);
}
.about-early__period {
  color: var(--color-fg-subtle);
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  white-space: nowrap;
}

.about-section__title {
  font-size: 1.25rem;
  font-weight: var(--font-bold);
  margin-bottom: var(--space-4);
  color: var(--color-fg);
}
.about-section__list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.about-section__item {
  padding: var(--space-2) 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}
.about-section__item:first-child {
  padding-top: 0;
}
.about-section__item:last-child {
  border-bottom: none;
}
.about-section__heading {
  font-weight: var(--font-bold);
  font-size: var(--text-base);
  margin: 0;
  color: var(--color-fg);
}
.about-section__subheading {
  color: var(--color-fg-subtle);
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
  margin: 0;
}
.about-section__subheading--italic {
  font-style: italic;
}
.about-section__meta {
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
  color: var(--color-fg-subtle);
  margin: 0;
}
.about-section__description {
  margin-top: 0;
  margin-bottom: 0;
  font-size: var(--text-sm);
  line-height: var(--leading-relaxed);
  color: var(--color-fg-muted);
}
.about-section__icon {
  font-size: 1.2rem;
  display: inline-block;
  margin-right: var(--space-2);
}
.about-section__link {
  color: var(--color-link);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-default);
}
.about-section__link:hover {
  color: var(--color-link-hover);
}
.about-section__details {
  list-style: disc;
  padding-left: var(--space-5);
  margin: 0 0 0 0;
}
.about-section__detail {
  padding-left: 0;
  margin-bottom: var(--space-1);
  font-size: var(--text-sm);
  line-height: var(--leading-relaxed);
  color: var(--color-fg-muted);
}
.about-section__badge {
  display: inline-block;
  align-self: flex-start;
  background: var(--gray-200);
  color: var(--color-fg-muted);
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-sm);
  font-size: var(--text-xs);
  margin-left: 0;
}

.jh-radius-lab {
  --lab-frame-bg: color-mix(in srgb, var(--bg-100) 80%, white 20%);
  --lab-outer-bg: #2f4c7f;
  --lab-inner-bg: #f7f9fc;
  --lab-card-bg: color-mix(in srgb, var(--bg-200) 84%, white 16%);
  margin: var(--space-8) 0;
  border: 1px solid var(--color-border);
  border-radius: 14px;
  padding: var(--space-6);
  background: linear-gradient(145deg, color-mix(in srgb, var(--bg-100) 92%, white 8%), var(--bg-200));
}
.jh-radius-lab__intro {
  margin-bottom: var(--space-5);
}
.jh-radius-lab__intro p {
  margin: 0;
  font-size: var(--text-sm);
  color: var(--color-fg-muted);
}
.jh-radius-lab__intro p + p {
  margin-top: var(--space-2);
}
.jh-radius-lab__controls {
  display: flex;
  justify-content: flex-end;
  margin-bottom: var(--space-5);
}
.jh-radius-lab__toggle {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  border: 1px solid var(--color-border);
  background: var(--lab-card-bg);
  padding: var(--space-2) var(--space-3);
  border-radius: 999px;
  font-size: var(--text-sm);
  color: var(--color-fg);
  cursor: pointer;
  user-select: none;
}
.jh-radius-lab__checkbox {
  width: 1rem;
  height: 1rem;
  margin: 0;
  accent-color: var(--accent-blue);
}
.jh-radius-lab__cases {
  display: flex;
  flex-direction: column;
  gap: var(--space-8);
}
.jh-radius-lab__case {
  border-top: 1px solid var(--color-border-light);
  padding-top: var(--space-5);
}
.jh-radius-lab__case:first-child {
  border-top: 0;
  padding-top: 0;
}
.jh-radius-lab__case-header {
  margin-bottom: var(--space-4);
}
.jh-radius-lab__case-header h3 {
  margin: 0;
  font-size: var(--text-lg);
}
.jh-radius-lab__case-header p {
  margin: var(--space-2) 0 0;
  font-size: var(--text-sm);
  color: var(--color-fg-subtle);
}
.jh-radius-lab__cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-4);
}
@media screen and (max-width: 768px) {
  .jh-radius-lab__cards {
    grid-template-columns: 1fr;
  }
}
.jh-radius-lab__card {
  border: 1px solid var(--color-border);
  background: var(--lab-card-bg);
  padding: var(--space-4);
  border-radius: 12px;
}
.jh-radius-lab__sample {
  border: 1px dashed color-mix(in srgb, var(--color-border) 70%, var(--accent-blue) 30%);
  border-radius: 10px;
  background: var(--lab-frame-bg);
  padding: var(--space-4);
  min-height: 140px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.jh-radius-lab__outer {
  width: min(100%, 220px);
  aspect-ratio: 1.6/1;
  border-radius: var(--outer-radius);
  background: var(--lab-outer-bg);
  padding: var(--inset);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: inset 0 0 0 1px color-mix(in srgb, black 18%, transparent);
}
.jh-radius-lab__inner {
  width: 100%;
  height: 100%;
  border-radius: var(--inner-radius);
  background: radial-gradient(circle at 15% 20%, white, var(--lab-inner-bg) 52%, #d7dce9 100%);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, black 10%, transparent);
}
.jh-radius-lab__blind-label, .jh-radius-lab__answer {
  margin: var(--space-3) 0 0;
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
}
.jh-radius-lab__blind-label {
  color: var(--color-fg);
  font-weight: var(--font-medium);
}
.jh-radius-lab__answer {
  display: none;
  color: var(--color-fg-subtle);
}
.jh-radius-lab.is-revealed .jh-radius-lab__blind-label {
  color: var(--color-fg-subtle);
  font-weight: var(--font-normal);
}
.jh-radius-lab.is-revealed .jh-radius-lab__answer {
  display: block;
}

/*# sourceMappingURL=main.css.map */
