/* Self-hosted fonts (SIL Open Font License 1.1, see readme.txt). */
@font-face { font-family: Fraunces; font-style: normal; font-weight: 100 900; font-display: swap; src: url("../fonts/fraunces-vietnamese-standard-normal.woff2") format("woff2"); unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; }
@font-face { font-family: Fraunces; font-style: normal; font-weight: 100 900; font-display: swap; src: url("../fonts/fraunces-latin-ext-standard-normal.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: Fraunces; font-style: normal; font-weight: 100 900; font-display: swap; src: url("../fonts/fraunces-latin-standard-normal.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: Fraunces; font-style: italic; font-weight: 100 900; font-display: swap; src: url("../fonts/fraunces-vietnamese-standard-italic.woff2") format("woff2"); unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; }
@font-face { font-family: Fraunces; font-style: italic; font-weight: 100 900; font-display: swap; src: url("../fonts/fraunces-latin-ext-standard-italic.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: Fraunces; font-style: italic; font-weight: 100 900; font-display: swap; src: url("../fonts/fraunces-latin-standard-italic.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "DM Sans"; font-style: normal; font-weight: 100 1000; font-display: swap; src: url("../fonts/dm-sans-latin-ext-standard-normal.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "DM Sans"; font-style: normal; font-weight: 100 1000; font-display: swap; src: url("../fonts/dm-sans-latin-standard-normal.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "DM Sans"; font-style: italic; font-weight: 100 1000; font-display: swap; src: url("../fonts/dm-sans-latin-standard-italic.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Cormorant Garamond"; font-style: normal; font-weight: 300; font-display: swap; src: url("../fonts/cormorant-garamond-latin-300-normal.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212, U+FEFF, U+FFFD; }
@font-face { font-family: "Cormorant Garamond"; font-style: normal; font-weight: 300; font-display: swap; src: url("../fonts/cormorant-garamond-latin-ext-300-normal.woff2") format("woff2"); unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Cormorant Garamond"; font-style: normal; font-weight: 300; font-display: swap; src: url("../fonts/cormorant-garamond-vietnamese-300-normal.woff2") format("woff2"); unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; }
@font-face { font-family: "Cormorant Garamond"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/cormorant-garamond-latin-500-normal.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212, U+FEFF, U+FFFD; }
@font-face { font-family: "Cormorant Garamond"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/cormorant-garamond-latin-ext-500-normal.woff2") format("woff2"); unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Cormorant Garamond"; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/cormorant-garamond-vietnamese-500-normal.woff2") format("woff2"); unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; }
@font-face { font-family: "Cormorant Garamond"; font-style: italic; font-weight: 400; font-display: swap; src: url("../fonts/cormorant-garamond-latin-400-italic.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212, U+FEFF, U+FFFD; }
@font-face { font-family: "Plus Jakarta Sans"; font-style: normal; font-weight: 600; font-display: swap; src: url("../fonts/plus-jakarta-sans-latin-600-normal.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212, U+FEFF, U+FFFD; }
@font-face { font-family: "Plus Jakarta Sans"; font-style: normal; font-weight: 700; font-display: swap; src: url("../fonts/plus-jakarta-sans-latin-700-normal.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212, U+FEFF, U+FFFD; }
@font-face { font-family: "Plus Jakarta Sans"; font-style: normal; font-weight: 700; font-display: swap; src: url("../fonts/plus-jakarta-sans-latin-ext-700-normal.woff2") format("woff2"); unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Plus Jakarta Sans"; font-style: normal; font-weight: 700; font-display: swap; src: url("../fonts/plus-jakarta-sans-vietnamese-700-normal.woff2") format("woff2"); unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; }
@font-face { font-family: Inter; font-style: normal; font-weight: 100 900; font-display: swap; src: url("../fonts/inter-latin.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: Inter; font-style: normal; font-weight: 100 900; font-display: swap; src: url("../fonts/inter-vietnamese.woff2") format("woff2"); unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; }
@font-face { font-family: Caveat; font-style: normal; font-weight: 500; font-display: swap; src: url("../fonts/caveat-latin-500-normal.woff2") format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212, U+FEFF, U+FFFD; }

/* Base / reset – token-driven, no raw colours. */
*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--bg-page);
  color: var(--text-body);
  font-family: var(--font-body);
  font-size: var(--fs-body);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  overflow-wrap: break-word;
}

img, svg, video { max-width: 100%; height: auto; }
iframe, embed, object { max-width: 100%; }
img { vertical-align: middle; }

h1, h2, h3, h4, h5, h6 {
  margin: 0 0 .5em;
  color: var(--text-heading);
  font-family: var(--font-heading);
  font-weight: var(--heading-weight);
  letter-spacing: var(--heading-tracking);
  line-height: 1.15;
}
h1 { font-size: var(--fs-h1); }
h2 { font-size: var(--fs-h2); }
h3 { font-size: var(--fs-h3); }
h4 { font-size: var(--fs-h4); }
h5, h6 { font-size: 1rem; }

p { margin: 0 0 1em; }

a { color: var(--text-link); text-decoration: none; transition: color .2s ease; }
a:hover { color: var(--color-primary-hover); }

:focus-visible { outline: 2px solid var(--border-focus); outline-offset: 2px; }
/* Text fields match :focus-visible on every click, so they get a soft ring instead of the outline box.
   :where() keeps it at zero specificity: components restyle it (underline fields, fields in a wrapper). */
:where(input:not([type="checkbox"], [type="radio"], [type="range"], [type="submit"], [type="button"], [type="reset"], [type="file"], [type="image"]), select, textarea):focus { outline: 0; border-color: var(--border-focus); box-shadow: 0 0 0 3px var(--ui-focus-ring); }

button, input, select, textarea { font: inherit; color: inherit; }

table { border-collapse: collapse; width: 100%; }

.container {
  width: min(var(--container-width), calc(100% - 48px));
  margin-inline: auto;
}

.screen-reader-text {
  position: absolute !important;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.skip-link:focus {
  position: fixed;
  top: 8px;
  left: 8px;
  z-index: 1000;
  width: auto;
  height: auto;
  clip: auto;
  padding: 10px 16px;
  background: var(--bg-card);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-md);
}

/* WordPress core classes (editor alignment, captions, galleries, sticky posts, post author comments). */
/*rtl:begin:ignore*/
.alignleft { float: left; margin: 6px 24px 16px 0; }
.alignright { float: right; margin: 6px 0 16px 24px; }
/*rtl:end:ignore*/
.aligncenter { display: block; margin-right: auto; margin-left: auto; }
.alignleft, .alignright, .aligncenter { max-width: 100%; }
.wp-caption { max-width: 100%; margin-bottom: 24px; }
.wp-caption img { display: block; max-width: 100%; height: auto; }
.wp-caption-text, .gallery-caption, .wp-element-caption { margin-top: 8px; font-size: 14px; line-height: 1.5; color: var(--text-secondary); }
.gallery { display: grid; grid-template-columns: repeat(var(--gallery-cols, 3), minmax(0, 1fr)); gap: 16px; margin-bottom: 24px; }
.gallery-columns-1 { --gallery-cols: 1; }
.gallery-columns-2 { --gallery-cols: 2; }
.gallery-columns-4 { --gallery-cols: 4; }
.gallery-columns-5 { --gallery-cols: 5; }
.gallery-columns-6 { --gallery-cols: 6; }
.gallery-columns-7 { --gallery-cols: 7; }
.gallery-columns-8 { --gallery-cols: 8; }
.gallery-columns-9 { --gallery-cols: 9; }
.gallery-item { margin: 0; }
.gallery-item img { display: block; width: 100%; height: auto; border-radius: var(--radius-sm); }
.sticky { position: relative; }
.bypostauthor > .comment-body .comment-author { font-weight: 600; }

/* Post content basics (classic editor markup, Theme Unit Test). Component styles override these. */
.entry-content { display: flow-root; }
.entry-content h1, .entry-content h4, .entry-content h5, .entry-content h6 { margin: 1.4em 0 .5em; }
.entry-content h2, .entry-content h3 { margin: 1.3em 0 .5em; }
.entry-content > :first-child { margin-top: 0; }
.entry-content ul, .entry-content ol { margin: 0 0 1.25em; padding-inline-start: 1.75em; }
.entry-content li > ul, .entry-content li > ol { margin-bottom: 0; }
.entry-content blockquote { margin: 1.5em 0; padding: 4px 0 4px 22px; border-left: 3px solid var(--color-primary); color: var(--text-heading); font-family: var(--font-heading); font-size: 1.25em; line-height: 1.45; }
.entry-content blockquote p { margin-bottom: .5em; }
.entry-content blockquote cite { display: block; margin-top: 6px; color: var(--text-secondary); font-family: var(--font-body); font-size: 14px; font-style: normal; }
.entry-content address, .entry-content table { margin: 0 0 1.25em; }
.entry-content table { border: 1px solid var(--border-default); }
.entry-content th, .entry-content td { padding: 10px 12px; border: 1px solid var(--border-default); vertical-align: top; }
.entry-content dt { color: var(--text-heading); font-weight: 600; }
.entry-content dd { margin: 0 0 .75em 1.5em; }
.entry-content hr:not(.wp-block-separator) { height: 0; margin: 2em 0; border: 0; border-top: 1px solid var(--border-default); }
.entry-content th { color: var(--text-heading); font-weight: 600; text-align: left; }
.entry-content img { border-radius: var(--radius-sm); }
.entry-content iframe, .entry-content video, .entry-content embed, .entry-content object { max-width: 100%; }
.entry-content pre { max-width: 100%; margin: 0 0 1.25em; padding: 16px 18px; overflow-x: auto; border: 1px solid var(--border-default); border-radius: var(--radius-md); background: var(--bg-subtle); color: var(--text-heading); font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 14px; line-height: 1.6; white-space: pre; overflow-wrap: normal; }
.entry-content :not(pre) > code, .entry-content kbd, .entry-content tt, .entry-content var, .entry-content samp { padding: .1em .35em; border-radius: var(--radius-xs); background: var(--bg-subtle); color: var(--text-heading); font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .875em; }
.entry-content pre code { padding: 0; background: none; font: inherit; }
.entry-content abbr[title], .entry-content acronym[title] { text-decoration: underline dotted; cursor: help; }
.entry-content mark, .entry-content ins { padding: 0 .15em; background: var(--color-accent-light); color: inherit; text-decoration: none; }
.entry-content sub, .entry-content sup { font-size: 75%; line-height: 0; }
.entry-content big { font-size: 1.2em; }
.page-links { clear: both; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 1.5em 0 0; font-weight: 600; color: var(--text-heading); }
.page-links a, .page-links > .post-page-numbers { display: inline-grid; place-items: center; min-width: 34px; height: 34px; padding: 0 8px; border: 1px solid var(--border-default); border-radius: var(--radius-sm); background: var(--bg-card); font-weight: 500; text-decoration: none; }
.page-links > .post-page-numbers.current { border-color: var(--color-primary); background: var(--color-primary); color: var(--color-primary-fg); }
.post-password-form { display: grid; gap: 12px; max-width: 520px; }
.post-password-form p { margin: 0; }
.post-password-form label { display: grid; gap: 6px; }
.post-password-form input[type="password"] { min-height: 46px; padding: 8px 14px; border: 1px solid var(--border-strong); border-radius: var(--btn-radius); background: var(--bg-input); }
.post-password-form input[type="submit"] { min-height: 46px; padding: 8px 22px; border: 0; border-radius: var(--btn-radius); background: var(--color-primary); color: var(--color-primary-fg); font-weight: 600; cursor: pointer; }

@media (max-width: 600px) {
  .alignleft, .alignright { float: none; margin-right: 0; margin-left: 0; }
  .gallery { --gallery-cols: 2; }
  .entry-content th, .entry-content td { padding: 8px 6px; overflow-wrap: anywhere; }
}

@media (max-width: 768px) { .container { width: calc(100% - 32px); } }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
