@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/space-grotesk-vietnamese-400-normal.B7xT_GF5.woff2)format("woff2"),url(/_astro/space-grotesk-vietnamese-400-normal.BIWiOVfw.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/space-grotesk-latin-ext-400-normal.CfP_5XZW.woff2)format("woff2"),url(/_astro/space-grotesk-latin-ext-400-normal.DRPE3kg4.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/space-grotesk-latin-400-normal.CJ-V5oYT.woff2)format("woff2"),url(/_astro/space-grotesk-latin-400-normal.BnQMeOim.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/space-grotesk-vietnamese-500-normal.BmEvtly_.woff2)format("woff2"),url(/_astro/space-grotesk-vietnamese-500-normal.BTqKIpxg.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/space-grotesk-latin-ext-500-normal.DUe3BAxM.woff2)format("woff2"),url(/_astro/space-grotesk-latin-ext-500-normal.3dgZTiw9.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/space-grotesk-latin-500-normal.lFbtlQH6.woff2)format("woff2"),url(/_astro/space-grotesk-latin-500-normal.CNSSEhBt.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/space-grotesk-vietnamese-700-normal.DMty7AZE.woff2)format("woff2"),url(/_astro/space-grotesk-vietnamese-700-normal.Duxec5Rn.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/space-grotesk-latin-ext-700-normal.BQnZhY3m.woff2)format("woff2"),url(/_astro/space-grotesk-latin-ext-700-normal.HVCqSBdx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/space-grotesk-latin-700-normal.RjhwGPKo.woff2)format("woff2"),url(/_astro/space-grotesk-latin-700-normal.CwsQ-cCU.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root,[data-theme=dark]{--bg:#0b0e14;--bg2:#11151d;--ink:#d7dae0;--ink-strong:#f2f4f7;--muted:#7d8593;--accent:#3ecf8e;--accent-soft:#3ecf8e47;--accent-border:#3ecf8e73;--line:#d7dae01a;--glow:#3ecf8e0d;--sans:"Space Grotesk", "PingFang SC", "HarmonyOS Sans SC", "Noto Sans SC", "Microsoft YaHei", "Source Han Sans SC", sans-serif}[data-theme=light]{--bg:#f7f8fa;--bg2:#eef0f4;--ink:#2b3038;--ink-strong:#14171c;--muted:#6b7280;--accent:#0f8a5f;--accent-soft:#0f8a5f29;--accent-border:#0f8a5f80;--line:#14171c1a;--glow:#0f8a5f0d}*{box-sizing:border-box;margin:0;padding:0}html{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}::selection{background:var(--accent-soft);color:var(--ink-strong)}a{color:inherit}.header-right{align-items:center;gap:22px;display:flex}.site-nav{align-items:baseline}.theme-toggle{width:30px;height:30px;color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:999px;justify-content:center;align-items:center;transition:color .2s,border-color .2s;display:inline-flex;position:relative}.theme-toggle:hover{color:var(--accent);border-color:var(--accent)}.theme-toggle svg{transition:opacity .45s,transform .55s cubic-bezier(.4,0,.2,1);position:absolute}[data-theme=dark] .ic-sun{opacity:1;transform:rotate(0)scale(1)}[data-theme=dark] .ic-moon{opacity:0;transform:rotate(90deg)scale(.4)}[data-theme=light] .ic-sun{opacity:0;transform:rotate(-90deg)scale(.4)}[data-theme=light] .ic-moon,html:not([data-theme]) .ic-sun{opacity:1;transform:rotate(0)scale(1)}html:not([data-theme]) .ic-moon{opacity:0;transform:rotate(90deg)scale(.4)}html.theme-anim,html.theme-anim body{transition:background-color .4s,color .4s}html.theme-anim *,html.theme-anim :before,html.theme-anim :after{transition:background-color .4s,border-color .4s,color .4s,fill .4s,stroke .4s,opacity .4s,transform .4s!important}@media (prefers-reduced-motion:reduce){.theme-toggle svg,html.theme-anim *,html.theme-anim :before,html.theme-anim :after{transition:none!important}}.sb-top{justify-content:space-between;align-items:center;gap:12px;display:flex}.sb-top .theme-toggle{padding:2px 11px;font-size:12px}.sb-m-right{align-items:center;gap:10px;display:inline-flex}.site-header{justify-content:space-between;align-items:baseline;max-width:860px;margin:0 auto;padding:28px 24px 0;display:flex}.brand{letter-spacing:.08em;color:var(--ink-strong);font-size:19px;font-weight:500;text-decoration:none}.site-nav{gap:26px;display:flex}.site-nav a{color:var(--muted);letter-spacing:.12em;font-size:14px;text-decoration:none}.site-nav a:hover,.site-nav a.on{color:var(--accent)}.home{max-width:860px;margin:0 auto;padding:72px 24px 64px}.home-kicker{color:var(--muted);letter-spacing:.3em;text-transform:uppercase;font-size:12px}.gallery{margin-top:26px}.gallery-item{border-bottom:1px solid var(--line);align-items:flex-start;gap:26px;padding:30px 0 26px;display:flex}.gallery-item:first-child{border-top:1px solid var(--line)}.gallery-cover{aspect-ratio:853/1280;border:1px solid var(--line);border-radius:4px;flex-shrink:0;width:132px;transition:border-color .2s;display:block;overflow:hidden}.gallery-item:hover .gallery-cover{border-color:var(--accent)}.gallery-cover img{object-fit:cover;width:100%;height:100%;display:block}.gallery-info{min-width:0;padding-top:4px}.title-row{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.gallery-title{letter-spacing:.3em;color:var(--ink-strong);font-size:34px;font-weight:700;text-decoration:none}.gallery-title:hover{color:var(--accent)}.gallery-meta{color:var(--muted);letter-spacing:.04em;margin-top:12px;font-size:13.5px}.gallery-synopsis{color:var(--ink);max-width:560px;margin-top:12px;font-size:15px;line-height:1.9}.book-actions{gap:28px;margin-top:18px;display:flex}.book-actions a{color:var(--accent);letter-spacing:.08em;font-size:14px;text-decoration:none}.book-actions a:hover{text-underline-offset:4px;text-decoration:underline}.shelf-section{margin-top:64px}.shelf-label{color:var(--muted);letter-spacing:.3em;text-transform:uppercase;border-bottom:1px solid var(--line);padding-bottom:14px;font-size:12px}.world-links{grid-template-columns:1fr 1fr;gap:18px;margin-top:22px;display:grid}.world-link{background:var(--bg2);border:1px solid var(--line);border-radius:6px;padding:22px 24px;text-decoration:none;transition:border-color .15s;display:block}.world-link:hover{border-color:var(--accent)}.world-link h2{letter-spacing:.1em;color:var(--ink-strong);font-size:19px;font-weight:700}.world-link p{color:var(--muted);margin-top:8px;font-size:13.5px;line-height:1.8}.home-foot{border-top:1px solid var(--line);color:var(--muted);letter-spacing:.04em;margin-top:72px;padding-top:22px;font-size:13px;line-height:2}.home-foot a{color:var(--accent);text-decoration:none}.home-foot a:hover{text-underline-offset:4px;text-decoration:underline}.bookpage{max-width:640px;margin:0 auto;padding:64px 24px 72px}.book-row{flex-wrap:wrap;align-items:baseline;gap:16px;display:flex}.book-title{letter-spacing:.3em;color:var(--ink-strong);margin-right:-.3em;font-size:36px;font-weight:700}.badge-done{color:var(--accent);border:1px solid var(--accent-border);letter-spacing:.18em;white-space:nowrap;border-radius:999px;padding:3px 12px;font-size:12px}.book-sub{color:var(--muted);max-width:560px;margin-top:14px;font-size:15px;line-height:1.95}.toc{border-top:1px solid var(--line);margin-top:40px}.act{padding:26px 0 6px}.act-name{color:var(--muted);letter-spacing:.14em;font-size:12.5px}.act-name .era{letter-spacing:.02em;opacity:.75;margin-left:12px}.act ol{margin-top:10px;list-style:none}.act li+li{margin-top:2px}.act a{align-items:baseline;gap:16px;padding:7px 0;font-size:17px;text-decoration:none;display:flex}.act a:hover .ch-title{color:var(--accent)}.ch-no{color:var(--accent);font-variant-numeric:tabular-nums;min-width:2em;font-size:13px}.ai-note{color:var(--muted);letter-spacing:.03em;margin-top:14px;font-size:12.5px}.support{background:var(--bg2);border:1px solid var(--line);border-radius:6px;margin-top:56px;padding:26px 28px}.support h2{letter-spacing:.12em;color:var(--ink-strong);font-size:16px}.support p{color:var(--muted);margin-top:10px;font-size:14.5px;line-height:1.95}.support p a{color:var(--accent);text-decoration:none}.support p a:hover{text-underline-offset:4px;text-decoration:underline}.support.compact{margin-top:40px}.read{grid-template-columns:250px minmax(0,1fr);gap:48px;max-width:1080px;margin:0 auto;padding:0 24px;display:grid}.sidebar{padding-top:40px}.sidebar-inner{max-height:calc(100vh - 64px);position:sticky;top:32px;overflow-y:auto}.sidebar .brand{font-size:17px;display:inline-block}.sidebar .to-book{color:var(--muted);letter-spacing:.1em;margin-top:18px;font-size:13.5px;text-decoration:none;display:block}.sidebar .to-book:hover{color:var(--accent)}.sb-act{margin-top:20px}.sb-act-name{color:var(--muted);letter-spacing:.14em;font-size:11.5px}.sb-act ol{margin-top:6px;list-style:none}.sb-act a{color:var(--muted);gap:10px;padding:4px 0;font-size:13.5px;line-height:1.6;text-decoration:none;display:flex}.sb-act a:hover{color:var(--ink)}.sb-act a.on{color:var(--accent)}.sb-act a.on .ch-no{font-weight:700}.sb-support{border-top:1px solid var(--line);color:var(--muted);margin-top:26px;padding-top:18px;font-size:12.5px;line-height:1.9}.sb-support a{color:var(--accent);text-decoration:none}.sb-support a:hover{text-decoration:underline}.chapter{min-width:0;padding:40px 0 96px}.ch-head{margin-top:24px}.ch-eyebrow{color:var(--accent);letter-spacing:.22em;font-size:12px}.ch-h1{letter-spacing:.08em;color:var(--ink-strong);margin-top:10px;font-size:32px;font-weight:700}.ch-meta{color:var(--muted);letter-spacing:.03em;margin-top:12px;font-size:13px}.ai-note{color:var(--muted);letter-spacing:.02em;align-items:center;gap:10px;margin-top:14px;font-size:12.5px;display:flex}.beta-badge{border:1px solid var(--accent);color:var(--accent);letter-spacing:.14em;text-transform:uppercase;border-radius:999px;padding:2px 10px;font-size:10.5px;font-weight:600;line-height:1.6;display:inline-block}.prose{margin-top:48px;font-size:18.5px;line-height:2}.prose p{margin-bottom:1.1em}.prose h3{letter-spacing:.08em;color:var(--ink-strong);margin:2em 0 1em;font-size:19px;font-weight:700}.prose blockquote{border-left:2px solid var(--accent);color:var(--ink);background:linear-gradient(90deg, var(--glow), transparent 70%);margin:1.7em 0;padding:4px 0 4px 20px}.prose ul{margin:1.2em 0 1.2em 1.2em}.prose li{margin-bottom:.5em}.prose strong{color:var(--ink-strong);font-weight:700}.prose hr{text-align:center;border:none;margin:2.4em auto;overflow:visible}.prose hr:after{content:"* * *";color:var(--muted);letter-spacing:.6em;margin-left:.6em;font-size:14px}.ch-nav{border-top:1px solid var(--line);justify-content:space-between;gap:24px;margin-top:72px;padding-top:28px;font-size:14.5px;display:flex}.ch-nav a{color:var(--muted);max-width:46%;text-decoration:none}.ch-nav a:hover{color:var(--accent)}.ch-nav a+a{text-align:right;margin-left:auto}.sb-mobile{display:none}.codexpage{max-width:720px;margin:0 auto;padding:56px 24px 80px}.page-title{letter-spacing:.24em;color:var(--ink-strong);margin-right:-.24em;font-size:32px;font-weight:700}.page-sub{color:var(--muted);margin-top:12px;font-size:14.5px;line-height:1.9}.codex-group{margin-top:52px}.codex-group>h2{letter-spacing:.18em;color:var(--accent);border-bottom:1px solid var(--line);padding-bottom:10px;font-size:14px;font-weight:700}.codex-group>h2 span{color:var(--muted);letter-spacing:.06em;margin-left:12px;font-size:12px;font-weight:400}.codex-item{border-bottom:1px solid var(--line)}.codex-item summary{cursor:pointer;align-items:baseline;gap:16px;padding:16px 2px;list-style:none;display:flex}.codex-item summary:hover .codex-name{color:var(--accent)}.codex-item summary::-webkit-details-marker{display:none}.codex-no{color:var(--accent);font-variant-numeric:tabular-nums;min-width:2.2em;font-size:12px}.codex-name{letter-spacing:.05em;color:var(--ink-strong);font-size:16.5px;font-weight:700}.codex-gist{text-align:right;color:var(--muted);max-width:44%;margin-left:auto;font-size:12.5px}.codex-arrow{color:var(--muted);font-size:12px;transition:transform .15s}.codex-item[open] .codex-arrow{transform:rotate(90deg)}.codex-body{padding:2px 2px 20px 46px}.codex-role{color:var(--accent);letter-spacing:.06em;font-size:13px}.codex-lore{color:var(--ink);margin-top:8px;font-size:15px;line-height:1.95}.worldpage{max-width:680px;margin:0 auto;padding:56px 24px 80px}.world-chips{flex-wrap:wrap;gap:8px;margin-top:28px;display:flex}.world-chips a{color:var(--muted);border:1px solid var(--line);letter-spacing:.1em;border-radius:999px;padding:5px 15px;font-size:13px;text-decoration:none}.world-chips a:hover{color:var(--accent);border-color:var(--accent)}.world-sec{margin-top:64px;scroll-margin-top:24px}.world-eyebrow{color:var(--accent);letter-spacing:.24em;text-transform:uppercase;font-size:11.5px}.world-sec h2{letter-spacing:.12em;color:var(--ink-strong);margin-top:8px;font-size:25px;font-weight:700}.world-sec .prose{margin-top:28px;font-size:16.5px}@media (width<=1023px){.read{padding:0 20px;display:block}.sidebar{display:none}.sb-mobile{padding-top:24px;display:block}.sb-mobile details{border-bottom:1px solid var(--line)}.sb-mobile summary{cursor:pointer;color:var(--muted);letter-spacing:.08em;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;font-size:13.5px;list-style:none;display:flex}.sb-mobile summary>span:first-child{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.sb-m-right{flex-shrink:0}.sb-mobile summary::-webkit-details-marker{display:none}.sb-mobile .sb-acts{padding:4px 0 16px}.sb-mobile .sb-act{margin-top:12px}.chapter{padding-top:8px}.prose{font-size:17.5px}}html[lang=en] .gallery-title{letter-spacing:.04em;margin-right:0}html[lang=en] .book-title{letter-spacing:.02em}html[lang=en] .ch-h1{letter-spacing:.01em}html[lang=en] .page-title{letter-spacing:.06em}html[lang=en] .home-kicker{letter-spacing:.22em;margin-right:0}html[lang=en] .site-nav a{letter-spacing:.04em}html[lang=en] .sb-act-name{letter-spacing:.05em}@media (width<=640px){.site-header{padding:22px 18px 0}.brand{letter-spacing:.03em;font-size:17px}.header-right{gap:12px}.site-nav{gap:15px}.site-nav a{letter-spacing:.03em;font-size:13px}html[lang=en] .site-nav{gap:11px}html[lang=en] .site-nav a{letter-spacing:.01em;font-size:12.5px}html[lang=en] .gallery-title{font-size:23px}html[lang=en] .title-row{gap:12px}html[lang=en] .badge-done{letter-spacing:.08em;padding:3px 9px;font-size:10px}.home{padding-top:52px}.gallery-item{gap:18px}.gallery-cover{width:98px}.gallery-title{font-size:26px}.gallery-synopsis{font-size:14px}.book-title{font-size:30px}.world-links{grid-template-columns:1fr}.codex-gist{display:none}.page-title,.ch-h1{font-size:26px}}
