@font-face{font-family: "Twemoji Country Flags";unicode-range: U+1F1E6-1F1FF,U+1F3F4,U+E0062-E0063,U+E0065,U+E0067,U+E006C,U+E006E,U+E0073-E0074,U+E0077,U+E007F;src: url("flags.woff2") format("woff2"),url("https://cdn.jsdelivr.net/npm/country-flag-emoji-polyfill@0.1/dist/TwemojiCountryFlags.woff2") format("woff2");font-display: swap}:root{--accent: #6d4aff;--accent-2: #e04fd0;--violet: var(--accent);--pink: var(--accent-2);--coral: #ff5c7a;--amber: #ffab1a;--mint: #10b981;--sky: #1d9bf0;--bg: #fff;--surface: #fff;--ink: #15171f;--muted: #5f6678;--line: #e4e7ee;--soft: #f6f7fb;--r: 10px;--pill: 999px;--fs: 16px;--lh: 1.75;--post-w: 720px;--bar: linear-gradient(90deg,var(--violet),var(--pink),var(--coral),var(--amber),var(--mint),var(--sky));--shadow: 0 1px 2px rgba(21,23,31,.05),0 10px 28px -14px rgba(21,23,31,.22);--shadow-up: 0 2px 4px rgba(21,23,31,.06),0 20px 38px -16px color-mix(in srgb,var(--accent) 45%,transparent);--font: "Twemoji Country Flags",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji";--mono: "Twemoji Country Flags",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace,"Segoe UI Emoji","Noto Color Emoji";color-scheme: light}:root[data-theme="dark"]{color-scheme: dark;--bg: #0e1016;--surface: #171a23;--ink: #e9ebf3;--muted: #a0a7bb;--line: #2b3040;--soft: #1e2230;--violet: color-mix(in srgb,var(--accent) 58%,#fff);--pink: color-mix(in srgb,var(--accent-2) 58%,#fff);--shadow: 0 1px 2px rgba(0,0,0,.5),0 12px 30px -14px rgba(0,0,0,.7);--shadow-up: 0 2px 4px rgba(0,0,0,.5),0 20px 38px -16px color-mix(in srgb,var(--accent) 55%,transparent)}*,*::before,*::after{box-sizing: border-box}html{-webkit-text-size-adjust: 100%;scroll-behavior: smooth;font-size: var(--fs)}body{margin: 0;background: var(--bg);color: var(--ink);font: 400 1rem/var(--lh) var(--font);-webkit-font-smoothing: antialiased}img,video,iframe{max-width: 100%;display: block}a{color: var(--violet);text-underline-offset: 3px;transition: color .2s}a:hover{color: color-mix(in srgb,var(--violet) 78%,var(--ink))}h1,h2,h3,h4{line-height: 1.25;letter-spacing: -.015em;font-weight: 800;margin: 1.7em 0 .5em}h1{font-size: clamp(1.9rem,6vw,2.8rem);margin-top: 0}h2{font-size: clamp(1.4rem,4vw,1.75rem)}h3{font-size: 1.2rem}h4{font-size: 1.05rem}p{margin: 0 0 1em}code{font: .88em var(--mono);background: var(--soft);border: 1px solid var(--line);border-radius: 6px;padding: .1em .4em}hr{border: 0;border-top: 1px solid var(--line);margin: 2em 0}[hidden]{display: none !important}:focus-visible{outline: 3px solid var(--violet);outline-offset: 2px;border-radius: 6px}.muted{color: var(--muted)}.lead{font-size: 1.12rem;color: var(--muted);max-width: 60ch}.sr-only{position: absolute;width: 1px;height: 1px;margin: -1px;padding: 0;overflow: hidden;clip: rect(0 0 0 0);white-space: nowrap;border: 0}.skip{position: absolute;left: 12px;top: -60px;z-index: 100;background: var(--surface);border: 1px solid var(--line);border-radius: var(--pill);padding: 8px 16px;transition: top .2s}.skip:focus{top: 12px}.ic{width: 1em;height: 1em;flex: none;vertical-align: -.125em}.meta-item{display: inline-flex;align-items: center;gap: .4em}.announce{background: linear-gradient(120deg,var(--accent),var(--accent-2));color: #fff;font-size: .9rem;font-weight: 600}.announce-inner{max-width: var(--wrap,1040px);margin: 0 auto;padding: 8px 16px;display: flex;align-items: center;gap: 10px}.announce a{color: #fff;text-decoration: underline}.announce-close{margin-left: auto;display: grid;place-items: center;padding: 4px;border: 0;border-radius: 50%;background: transparent;color: #fff;cursor: pointer}.announce-close:hover{background: rgba(255,255,255,.2)}.site-header{position: sticky;top: 0;z-index: 50;background: color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter: blur(10px);border-bottom: 1px solid var(--line)}.site-header.no-sticky{position: static}.site-header::before{content: "";display: block;height: 4px;background: var(--bar)}.nav-inner{max-width: 1040px;margin: 0 auto;padding: 10px 16px;display: flex;align-items: center;flex-wrap: nowrap;gap: 12px}.brand{display: inline-flex;align-items: center;gap: 10px;flex-shrink: 0;margin-right: auto;color: var(--ink);font-weight: 800;font-size: 1.1rem;text-decoration: none;letter-spacing: -.02em}.brand-mark{width: 26px;height: 26px;flex: none;transition: transform .5s cubic-bezier(.2,.8,.2,1)}span.brand-mark{width: 22px;height: 22px;border-radius: 8px;background: conic-gradient(var(--violet),var(--pink),var(--amber),var(--mint),var(--sky),var(--violet))}.brand:hover .brand-mark{transform: rotate(90deg) scale(1.08)}.brand-logo{height: 28px;width: auto;border-radius: 6px}.nav-tools{display: flex;align-items: center;gap: 8px;flex: none}.nav-toggle,.theme-toggle{display: inline-flex;flex-direction: column;align-items: center;justify-content: center;gap: 4px;width: 42px;height: 42px;padding: 0;border: 1px solid var(--line);border-radius: var(--r);background: var(--surface);color: var(--ink);cursor: pointer;transition: box-shadow .2s,border-color .2s,color .2s}.nav-toggle{padding: 0 11px}.nav-toggle:hover,.theme-toggle:hover{box-shadow: var(--shadow);border-color: var(--violet);color: var(--violet)}.nav-toggle span{display: block;width: 100%;height: 2px;border-radius: 2px;background: currentColor;transition: transform .25s,opacity .2s}.site-header.open .nav-toggle span:nth-child(1){transform: translateY(6px) rotate(45deg)}.site-header.open .nav-toggle span:nth-child(2){opacity: 0}.site-header.open .nav-toggle span:nth-child(3){transform: translateY(-6px) rotate(-45deg)}.theme-toggle .ic{width: 20px;height: 20px}.theme-toggle .ic-sun{display: none}:root[data-theme="dark"] .theme-toggle .ic-moon{display: none}:root[data-theme="dark"] .theme-toggle .ic-sun{display: block}.site-nav{display: none;position: absolute;left: 0;right: 0;top: 100%;flex-direction: column;gap: 12px;padding: 12px 16px 18px;background: var(--surface);border-bottom: 1px solid var(--line);box-shadow: var(--shadow)}.site-header.open .site-nav{display: flex;animation: drop .22s ease-out}.nav-list{list-style: none;margin: 0;padding: 0;display: flex;flex-direction: column;gap: 4px}.nav-link{display: block;padding: .55rem 1rem;border-radius: var(--pill);color: var(--ink);text-decoration: none;font-weight: 600;white-space: nowrap;transition: background .2s,color .2s,transform .2s}.nav-link:hover{background: var(--soft);transform: translateY(-1px);color: var(--ink)}.nav-link.active{background: color-mix(in srgb,var(--violet) 14%,var(--surface));color: var(--violet)}.pill{display: inline-flex;align-items: center;justify-content: center;gap: .45rem;padding: .5rem 1.1rem;border-radius: var(--pill);border: 1px solid var(--line);background: var(--surface);color: var(--ink);font-weight: 600;font-size: .92rem;text-decoration: none;white-space: nowrap;transition: transform .2s,box-shadow .2s,border-color .2s}.pill:hover{transform: translateY(-2px);box-shadow: var(--shadow);border-color: var(--violet);color: var(--violet)}.pill-search{background: var(--ink);color: var(--bg);border-color: var(--ink)}.pill-search:hover{background: var(--violet);color: #fff;border-color: var(--violet)}.social-list{list-style: none;margin: 0;padding: 0;display: flex;flex-wrap: wrap;gap: 8px}.social-link{display: grid;place-items: center;width: 38px;height: 38px;border: 1px solid var(--line);border-radius: 50%;color: var(--ink);transition: transform .2s,color .2s,border-color .2s}.social-link .ic{width: 18px;height: 18px}.social-link:hover{transform: translateY(-2px);color: var(--violet);border-color: var(--violet)}@media (min-width: 768px){.site-header:not(.is-collapsed) .nav-toggle{display: none}.site-header:not(.is-collapsed) .site-nav{display: flex;position: static;flex-direction: row;align-items: center;gap: 10px;padding: 0;border: 0;box-shadow: none;background: none;animation: none}.site-header:not(.is-collapsed) .nav-list{flex-direction: row;flex-wrap: nowrap}}@keyframes drop{from{opacity: 0;transform: translateY(-8px)}to{opacity: 1;transform: none}}.wrap{max-width: 1040px;margin: 0 auto;padding: 16px 12px 40px}.is-list .wrap,.is-list .nav-inner,.is-list .foot-inner{max-width: var(--wrap,1040px)}.container{background: var(--surface);border: 1px solid var(--line);border-radius: var(--r);box-shadow: var(--shadow);padding: 22px 18px}@media (min-width: 768px){.wrap{padding: 24px 16px 56px}.container{padding: 40px}}.breadcrumb{margin: 4px 4px 14px;font-size: .88rem}.breadcrumb ol{list-style: none;margin: 0;padding: 0;display: flex;flex-wrap: wrap;gap: 4px 6px;color: var(--muted)}.breadcrumb li{display: inline-flex;align-items: center;gap: 6px}.breadcrumb .sep{width: 14px;height: 14px;color: var(--muted);opacity: .6}.breadcrumb a{color: var(--muted);text-decoration: none}.breadcrumb a:hover{color: var(--violet);text-decoration: underline}.breadcrumb [aria-current]{color: var(--ink);font-weight: 600}.t0{--c: #5b3df5}.t1{--c: #c2255c}.t2{--c: #a8530a}.t3{--c: #047857}.t4{--c: #0b62b8}.t5{--c: #a21caf}:root[data-theme="dark"] .t0{--c: #aa9cff}:root[data-theme="dark"] .t1{--c: #ff8fb3}:root[data-theme="dark"] .t2{--c: #ffc46b}:root[data-theme="dark"] .t3{--c: #5fe0b0}:root[data-theme="dark"] .t4{--c: #6fb8ff}:root[data-theme="dark"] .t5{--c: #e59bf0}.tag{display: inline-flex;align-items: center;gap: 6px;padding: .15rem .8rem;border-radius: var(--pill);border: 1px solid color-mix(in srgb,var(--c,var(--ink)) 42%,transparent);background: color-mix(in srgb,var(--c,var(--ink)) 17%,var(--surface));color: var(--c,var(--ink));font-size: .8rem;font-weight: 700;text-decoration: none;transition: transform .2s,box-shadow .2s}a.tag:hover{transform: scale(1.06);box-shadow: var(--shadow);color: var(--c,var(--ink))}.tag.on{background: var(--ink);color: var(--bg);border-color: var(--ink)}.tag-count{opacity: .7;font-weight: 600}.chips{display: flex;flex-wrap: wrap;gap: 8px;margin: 18px 0 8px}.btn{display: inline-flex;align-items: center;justify-content: center;gap: 8px;padding: .65rem 1.4rem;border: 0;border-radius: var(--pill);font: 700 .95rem var(--font);color: #fff;background: linear-gradient(120deg,var(--accent),var(--accent-2));text-decoration: none;cursor: pointer;box-shadow: 0 8px 18px -8px color-mix(in srgb,var(--accent) 70%,transparent);transition: transform .2s,box-shadow .2s,filter .2s}.btn:hover{transform: translateY(-2px);filter: saturate(1.15);color: #fff;box-shadow: 0 12px 22px -8px color-mix(in srgb,var(--accent) 80%,transparent)}.btn-ghost{background: var(--surface);color: var(--ink);border: 1px solid var(--line);box-shadow: none}.btn-ghost:hover{color: var(--violet);border: 1px solid var(--violet);box-shadow: var(--shadow)}.btn-sm{padding: .4rem 1rem;font-size: .85rem}.hero{padding: 8px 0 28px}.hero h1{font-size: clamp(2.2rem,8vw,3.6rem)}.sec-head{display: flex;align-items: center;justify-content: space-between;gap: 12px;flex-wrap: wrap;margin: 12px 0 18px}.sec-head h2{margin: 0}.cards{--gap: 16px;list-style: none;margin: 0;padding: 0;display: flex;flex-wrap: wrap;gap: var(--gap)}.card{position: relative;flex: 0 0 100%;min-width: 0;display: flex;border: 1px solid color-mix(in srgb,var(--c,var(--violet)) 14%,var(--line));border-radius: var(--r);background: color-mix(in srgb,var(--c,var(--violet)) 2.5%,var(--surface));box-shadow: var(--shadow);overflow: hidden;transition: transform .25s,box-shadow .25s,border-color .25s;animation: rise .5s both;animation-delay: calc(var(--i,0) * 60ms)}@media (min-width: 640px){.cards-grid .card,.cards-compact .card{flex-basis: calc((100% - (min(var(--cols,3),2) - 1) * var(--gap)) / min(var(--cols,3),2) - .5px)}}@media (min-width: 1024px){.cards-grid .card,.cards-compact .card{flex-basis: calc((100% - (var(--cols,3) - 1) * var(--gap)) / var(--cols,3) - .5px)}}.card:hover{transform: translateY(-4px);box-shadow: var(--shadow-up);border-color: color-mix(in srgb,var(--c,var(--violet)) 40%,var(--surface))}.card::after{content: "";position: absolute;inset: 0;pointer-events: none;opacity: 0;transition: opacity .25s;background: radial-gradient(260px circle at var(--mx,50%) var(--my,50%),color-mix(in srgb,var(--accent) 14%,transparent),transparent 60%)}.card:hover::after{opacity: 1}.card-link{display: flex;flex-direction: column;flex: 1;min-width: 0;color: inherit;text-decoration: none}.card-img{aspect-ratio: 16 / 9;overflow: hidden;border-bottom: 1px solid var(--line);background: var(--soft)}.ratio-43 .card-img{aspect-ratio: 4 / 3}.ratio-11 .card-img{aspect-ratio: 1 / 1}.ratio-auto .card-img{aspect-ratio: auto}.ratio-auto .card-img img{height: auto}.ratio-auto .card-ph{aspect-ratio: 16 / 9}.card-img img{width: 100%;height: 100%;object-fit: cover;transition: transform .5s}.card:hover .card-img img{transform: scale(1.06)}.card-ph{display: flex;align-items: center;justify-content: center;background: linear-gradient(135deg,color-mix(in srgb,var(--c) 11%,var(--surface)),color-mix(in srgb,var(--c) 4%,var(--surface)));color: color-mix(in srgb,var(--c) 42%,var(--surface));font-size: 3rem;font-weight: 800}.card-body{display: flex;flex-direction: column;align-items: flex-start;gap: 6px;padding: 16px;flex: 1;min-width: 0}.card-tags{display: flex;align-items: center;gap: 6px}.pin-badge{display: inline-grid;place-items: center;width: 24px;height: 24px;border-radius: 50%;background: color-mix(in srgb,var(--amber) 25%,var(--surface));color: #b45309}:root[data-theme="dark"] .pin-badge{color: #ffc46b}.card-body h3{margin: 4px 0 0;font-size: 1.1rem;overflow-wrap: anywhere}.card-body p{margin: 0;color: var(--muted);font-size: .93rem;line-height: 1.55}.card-foot{margin-top: auto;padding-top: 10px;display: flex;flex-wrap: wrap;gap: 6px 14px;color: var(--muted);font-size: .82rem}@media (min-width: 640px){.cards-list .card-link{flex-direction: row}.cards-list .card-img{flex: 0 0 36%;max-width: 340px;aspect-ratio: auto;border-bottom: 0;border-right: 1px solid var(--line)}.cards-list .card-img img{height: 100%}}.cards-list .card,.cards-featured .card{flex-basis: 100%}.cards-featured{margin-bottom: 18px}.cards-featured .card-body h3{font-size: 1.5rem}.cards-featured .card-body{padding: 22px}.cards-compact .card-body{padding: 12px 14px;gap: 4px}.cards-compact .card-body h3{font-size: 1rem;margin: 0}.cards-compact .card-body p{display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;overflow: hidden}.cards-masonry{display: block;column-count: 1;column-gap: var(--gap)}@media (min-width: 640px){.cards-masonry{column-count: min(var(--cols,3),2)}}@media (min-width: 1024px){.cards-masonry{column-count: var(--cols,3)}}.cards-masonry .card{display: flex;width: 100%;margin: 0 0 var(--gap);break-inside: avoid}.cards-masonry.is-masonry{display: flex;flex-wrap: nowrap;align-items: flex-start;column-count: auto}.mas-col{flex: 1 1 0;min-width: 0;list-style: none}.mas-col>ul{list-style: none;margin: 0;padding: 0;display: flex;flex-direction: column;gap: var(--gap)}.mas-col .card{flex: none;width: 100%;margin: 0}.load-more{display: flex;justify-content: center;margin: 28px 0 0}.empty{padding: 28px;text-align: center;color: var(--muted);border: 1px dashed var(--line);border-radius: var(--r)}.more{margin-top: 48px}@keyframes rise{from{opacity: 0;transform: translateY(14px)}to{opacity: 1;transform: none}}.post{max-width: var(--post-w,720px);margin: 0 auto;min-width: 0}.post-layout{display: block}.post-head{margin-bottom: 28px}.meta-row{display: flex;flex-wrap: wrap;align-items: center;gap: 6px 16px;margin-bottom: 14px;color: var(--muted);font-size: .88rem}.cover{margin: 24px 0 0}.cover img,.img img{width: 100%;height: auto;border: 1px solid var(--line);border-radius: var(--r);box-shadow: var(--shadow)}.img img{cursor: zoom-in}.notion>:first-child{margin-top: 0}.notion a{font-weight: 600}.notion [id]{scroll-margin-top: 90px}.toc{margin: 1.3em 0;padding: 14px 18px;border: 1px solid var(--line);border-radius: var(--r);background: var(--soft)}.toc-title{display: flex;align-items: center;gap: 8px;margin: 0 0 6px;font-weight: 800}.toc ul{list-style: none;margin: 0;padding: 0}.toc li{margin: 0}.toc a{display: inline-block;padding: 2px 0;color: var(--ink);font-weight: 500;text-decoration: none;transition: color .2s,transform .2s}.toc a:hover{color: var(--violet);transform: translateX(3px)}.toc-l2{padding-left: 1.1rem}.toc-l3{padding-left: 2.2rem}.toc-side{display: none}.toc-side ul{list-style: none;margin: 0;padding: 0;border-left: 2px solid var(--line)}.toc-side li{margin: 0;padding: 0}.toc-side a{display: block;padding: 4px 0 4px 12px;margin-left: -2px;border-left: 2px solid transparent;color: var(--muted);font-size: .86rem;line-height: 1.4;text-decoration: none;transition: color .2s,border-color .2s}.toc-side a:hover{color: var(--violet)}.toc-side a.active{color: var(--violet);border-left-color: var(--violet);font-weight: 700}.toc-side .toc-l2{padding-left: 0}.toc-side .toc-l3{padding-left: 0}.toc-side .toc-l2 a{padding-left: 24px}.toc-side .toc-l3 a{padding-left: 36px}@media (min-width: 768px){.post-layout.has-toc{display: flex;align-items: flex-start;justify-content: center;gap: 28px}.has-toc>.post{flex: 1 1 0;margin: 0}.toc-side{display: block;flex: 0 0 190px;position: sticky;top: 96px;max-height: calc(100vh - 120px);overflow: auto;align-self: flex-start}}@media (min-width: 1024px){.toc-side{flex-basis: 240px}}.audio{margin: 1.3em 0}.audio audio{width: 100%}.audio figcaption{color: var(--muted);font-size: .88rem;margin-top: 6px}.nb-gap{height: .6em;margin: 0}.nb-kids{margin-left: 1.2rem}.notion ul,.notion ol{padding-left: 1.5rem;margin: 0 0 1em}.notion li{margin: .2em 0}.notion ul.todo{list-style: none;padding-left: 0}.todo-item{display: flex;gap: 10px;align-items: flex-start}.chk{flex: none;display: grid;place-items: center;width: 18px;height: 18px;margin-top: .38em;border: 1.5px solid var(--muted);border-radius: 6px;background: var(--surface);transition: background .2s,border-color .2s}.chk .ic{width: 12px;height: 12px;color: #fff;stroke-width: 3;opacity: 0}.todo-item.done .chk{background: var(--mint);border-color: var(--mint)}.todo-item.done .chk .ic{opacity: 1}.todo-item.done>div{color: var(--muted);text-decoration: line-through}blockquote{margin: 1.4em 0;padding: .4em 1.1em;border-left: 4px solid var(--violet);background: var(--soft);border-radius: 0 var(--r) var(--r) 0;font-size: 1.05rem}.callout{display: flex;gap: 12px;margin: 1.3em 0;padding: 16px;border: 1px solid var(--line);border-radius: var(--r);background: var(--soft)}.callout-ico{flex: none;font-size: 1.3rem;line-height: 1.5}.callout-ico .ic{width: 1.3rem;height: 1.3rem;color: var(--violet);vertical-align: top;margin-top: .15rem}.callout-ico img{width: 1.3em;height: 1.3em}.callout-body{min-width: 0}.callout-body>p:last-child{margin-bottom: 0}.code{position: relative;margin: 1.3em 0;border: 1px solid var(--line);border-radius: var(--r);background: var(--soft);overflow: hidden}.code figcaption{padding: 6px 14px;border-bottom: 1px solid var(--line);color: var(--muted);font: .75rem var(--mono)}.code pre{margin: 0;padding: 14px;overflow-x: auto;font: .88rem/1.6 var(--mono)}.code code{background: none;border: 0;padding: 0;font: inherit}.copy{position: absolute;top: 5px;right: 8px;display: inline-flex;align-items: center;gap: 6px;padding: 3px 12px;border: 1px solid var(--line);border-radius: var(--pill);background: var(--surface);color: var(--ink);font: 600 .75rem var(--font);cursor: pointer;transition: border-color .2s,color .2s}.copy:hover{border-color: var(--violet);color: var(--violet)}.img{margin: 1.5em 0}.img figcaption{margin-top: 8px;color: var(--muted);font-size: .88rem;text-align: center}.video{position: relative;aspect-ratio: 16 / 9;margin: 1.5em 0;border: 1px solid var(--line);border-radius: var(--r);overflow: hidden}.video iframe{position: absolute;inset: 0;width: 100%;height: 100%;border: 0}.bookmark{display: flex;align-items: center;justify-content: space-between;gap: 12px;margin: 1.2em 0;padding: 14px 16px;border: 1px solid var(--line);border-radius: var(--r);color: var(--ink);text-decoration: none;transition: transform .2s,box-shadow .2s,border-color .2s}.bk-text{display: flex;flex-direction: column;min-width: 0}.bk-ic{width: 18px;height: 18px;color: var(--muted);transition: transform .2s,color .2s}.bookmark:hover .bk-ic{color: var(--violet);transform: translateX(3px)}.bookmark:hover{transform: translateY(-2px);box-shadow: var(--shadow);border-color: var(--violet);color: var(--ink)}.bk-title{font-weight: 700}.bk-url{color: var(--muted);font-size: .85rem;overflow-wrap: anywhere}.tbl{margin: 1.3em 0;overflow-x: auto;border: 1px solid var(--line);border-radius: var(--r)}.tbl table{width: 100%;border-collapse: collapse;font-size: .95rem}.tbl th,.tbl td{padding: 10px 14px;border: 1px solid var(--line);text-align: left;vertical-align: top}.tbl tr:first-child>*,.tbl tr>:first-child{border-top: 0;border-left: 0}.tbl th{background: var(--soft);font-weight: 700}.toggle{margin: .8em 0;border: 1px solid var(--line);border-radius: var(--r);padding: 4px 14px;transition: box-shadow .2s}.toggle[open]{box-shadow: var(--shadow)}.toggle>summary{display: flex;align-items: center;gap: 8px;cursor: pointer;font-weight: 600;padding: 8px 0;list-style: none}.toggle>summary::-webkit-details-marker{display: none}.toggle>summary::before{content: "";flex: none;width: 16px;height: 16px;background: currentColor;transition: transform .2s;-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E") center / contain no-repeat;mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E") center / contain no-repeat}.toggle[open]>summary::before{transform: rotate(90deg)}.toggle>summary h2,.toggle>summary h3,.toggle>summary h4{display: inline;margin: 0}.cols{display: flex;flex-direction: column;gap: 0 24px}.col{flex: 1;min-width: 0}@media (min-width: 768px){.cols{flex-direction: row}}.eq{font-family: var(--mono);background: var(--soft);border-radius: 6px;padding: 0 .3em}div.eq{padding: 12px 16px;margin: 1em 0;border-radius: var(--r);overflow-x: auto}.anchor{margin-left: .4em;opacity: 0;color: var(--muted);font-size: .7em;text-decoration: none;vertical-align: middle;transition: opacity .2s,color .2s}h2:hover>.anchor,h3:hover>.anchor,h4:hover>.anchor,.anchor:focus-visible{opacity: 1}.anchor:hover{color: var(--violet)}@media (hover: none){.anchor{display: none}}.embed{margin: 1.5em 0;border: 1px solid var(--line);border-radius: var(--r);overflow: hidden}.embed iframe{display: block;width: 100%;min-height: 200px;border: 0}.embed-tally{border: 0;overflow: visible}.embed-link{margin: -.6em 0 1.2em;font-size: .88rem}.embed-link a{display: inline-flex;align-items: center;gap: 6px;font-weight: 600}.embed-cap{margin: -.8em 0 1.4em;color: var(--muted);font-size: .88rem;text-align: center}.math-block{margin: 1em 0;padding: 6px 0;overflow-x: auto;text-align: center}.katex{font-size: 1.08em}.hljs{color: var(--ink);background: none}.hljs-comment,.hljs-quote{color: #8b92a5;font-style: italic}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-doctag,.hljs-meta .hljs-keyword{color: #6d4aff;font-weight: 600}.hljs-string,.hljs-regexp,.hljs-addition,.hljs-meta .hljs-string{color: #047857}.hljs-number,.hljs-symbol,.hljs-bullet,.hljs-variable,.hljs-template-variable{color: #b45309}.hljs-title,.hljs-section,.hljs-function .hljs-title,.hljs-selector-id,.hljs-selector-class{color: #0b62b8}.hljs-attr,.hljs-attribute,.hljs-name,.hljs-tag,.hljs-built_in,.hljs-type,.hljs-class .hljs-title{color: #c2255c}.hljs-deletion{color: #c2255c;background: rgba(194,37,92,.12)}.hljs-meta{color: #8b92a5}.hljs-emphasis{font-style: italic}.hljs-strong{font-weight: 700}:root[data-theme="dark"] .hljs-keyword,:root[data-theme="dark"] .hljs-selector-tag,:root[data-theme="dark"] .hljs-literal{color: #b6a6ff}:root[data-theme="dark"] .hljs-string,:root[data-theme="dark"] .hljs-regexp,:root[data-theme="dark"] .hljs-addition{color: #6ee7b7}:root[data-theme="dark"] .hljs-number,:root[data-theme="dark"] .hljs-symbol,:root[data-theme="dark"] .hljs-bullet,:root[data-theme="dark"] .hljs-variable{color: #fbbf77}:root[data-theme="dark"] .hljs-title,:root[data-theme="dark"] .hljs-section,:root[data-theme="dark"] .hljs-selector-id,:root[data-theme="dark"] .hljs-selector-class{color: #7cc4ff}:root[data-theme="dark"] .hljs-attr,:root[data-theme="dark"] .hljs-attribute,:root[data-theme="dark"] .hljs-name,:root[data-theme="dark"] .hljs-tag,:root[data-theme="dark"] .hljs-built_in,:root[data-theme="dark"] .hljs-type{color: #ff9fc0}:root[data-theme="dark"] .hljs-comment,:root[data-theme="dark"] .hljs-quote,:root[data-theme="dark"] .hljs-meta{color: #7d859c}.post-actions{display: flex;flex-wrap: wrap;align-items: center;gap: 8px;margin: 36px 0 0;padding-top: 20px;border-top: 1px solid var(--line)}.post-actions-label{margin-right: 4px;font-weight: 800}.share-btn{display: inline-flex;align-items: center;gap: 7px;padding: .4rem .95rem;border: 1px solid var(--line);border-radius: var(--pill);background: var(--surface);color: var(--ink);font: 600 .85rem var(--font);text-decoration: none;cursor: pointer;transition: transform .2s,border-color .2s,color .2s,box-shadow .2s}.share-btn:hover{transform: translateY(-2px);border-color: var(--violet);color: var(--violet);box-shadow: var(--shadow)}.share-btn.ok{border-color: var(--mint);color: var(--mint)}.author-box{display: flex;align-items: center;gap: 14px;margin: 28px 0 0;padding: 16px;border: 1px solid var(--line);border-radius: var(--r);background: var(--soft)}.author-box img,.author-ph{width: 64px;height: 64px;flex: none;border-radius: 50%;object-fit: cover}.author-ph{display: grid;place-items: center;background: linear-gradient(135deg,var(--accent),var(--accent-2));color: #fff;font-size: 1.5rem;font-weight: 800}.author-name{margin: 0;font-weight: 800}.author-bio{margin: 2px 0 0;color: var(--muted);font-size: .93rem}.post-footer-html{margin-top: 24px}.box{padding: 14px 16px;border: 1px solid var(--line);border-radius: var(--r);background: var(--soft)}.comments{margin-top: 40px}.print-source,.print-footer{display: none}.pager{display: flex;flex-wrap: wrap;gap: 12px;max-width: var(--post-w,720px);margin: 44px auto 0}.pager-link{flex: 1 1 240px;display: flex;flex-direction: column;gap: 4px;padding: 14px 16px;border: 1px solid var(--line);border-radius: var(--r);color: var(--ink);text-decoration: none;transition: transform .25s,box-shadow .25s,border-color .25s}.pager-link:hover{transform: translateY(-3px);box-shadow: var(--shadow-up);border-color: color-mix(in srgb,var(--violet) 40%,var(--surface));color: var(--ink)}.pager-link.next{align-items: flex-end;text-align: right;margin-left: auto}.pager-label{display: inline-flex;align-items: center;gap: 6px;color: var(--muted);font-size: .82rem;font-weight: 700}.pager-title{font-weight: 700;line-height: 1.4}.to-top{position: fixed;right: max(16px,env(safe-area-inset-right));bottom: max(16px,env(safe-area-inset-bottom));z-index: 60;display: grid;place-items: center;width: 48px;height: 48px;padding: 0;border: 0;border-radius: 50%;background: var(--surface);color: var(--ink);box-shadow: var(--shadow);cursor: pointer;opacity: 0;visibility: hidden;transform: translateY(12px) scale(.9);transition: opacity .25s,transform .25s,visibility 0s .25s,color .2s,box-shadow .2s}.to-top.show{opacity: 1;visibility: visible;transform: none;transition-delay: 0s}.to-top.show:hover{color: var(--violet);box-shadow: var(--shadow-up);transform: translateY(-3px)}.to-top .ic{position: relative;width: 20px;height: 20px;stroke-width: 2.4}.to-top .ring{position: absolute;inset: 0;width: 100%;height: 100%;transform: rotate(-90deg)}.ring circle{fill: none;stroke-width: 3}.ring-bg{stroke: var(--line)}.ring-fg{stroke: var(--violet);stroke-linecap: round;stroke-dasharray: 125.66;stroke-dashoffset: 125.66;transition: stroke-dashoffset .12s linear}.wa-fab{position: fixed;left: max(16px,env(safe-area-inset-left));bottom: max(16px,env(safe-area-inset-bottom));z-index: 60;display: grid;place-items: center;width: 52px;height: 52px;border-radius: 50%;background: #25d366;color: #fff;box-shadow: 0 10px 24px -10px rgba(37,211,102,.8);transition: transform .2s}.wa-fab:hover{transform: scale(1.08);color: #fff}.wa-fab .ic{width: 26px;height: 26px}.cookie{position: fixed;left: 12px;right: 12px;bottom: 12px;z-index: 70;max-width: 560px;margin: 0 auto;padding: 14px 16px;display: flex;flex-wrap: wrap;gap: 10px 16px;align-items: center;border: 1px solid var(--line);border-radius: var(--r);background: var(--surface);box-shadow: var(--shadow-up)}.cookie p{flex: 1 1 240px;margin: 0;font-size: .9rem}.cookie-actions{display: flex;gap: 8px}.install-btn{display: inline-flex;align-items: center;gap: 8px;padding: .45rem 1.1rem;border: 1px solid var(--line);border-radius: var(--pill);background: var(--surface);color: var(--ink);font: 700 .88rem var(--font);cursor: pointer;transition: transform .2s,border-color .2s,color .2s}.install-btn:hover{transform: translateY(-2px);border-color: var(--violet);color: var(--violet)}.toast{position: fixed;left: 50%;bottom: 16px;z-index: 80;display: flex;align-items: center;gap: 12px;padding: 10px 14px;border-radius: var(--pill);background: var(--ink);color: var(--bg);font-size: .9rem;font-weight: 600;box-shadow: var(--shadow-up);transform: translateX(-50%)}.toast button{padding: .25rem .8rem;border: 0;border-radius: var(--pill);background: var(--bg);color: var(--ink);font: 700 .82rem var(--font);cursor: pointer}.lightbox{width: 100%;height: 100%;max-width: 100vw;max-height: 100vh;padding: 0;border: 0;background: transparent;color: #fff}.lightbox:not([open]){display: none}.lightbox::backdrop{background: rgba(8,10,16,.9);backdrop-filter: blur(4px)}.lb-stage{position: fixed;inset: 0;display: flex;padding: 56px 16px 80px;overflow: auto}.lb-stage img{margin: auto;max-width: 100%;max-height: 100%;border-radius: var(--r);cursor: zoom-in;background: #fff}.lb-stage img.zoom{max-width: none;max-height: none;cursor: zoom-out}.lb-bar{position: fixed;left: 0;right: 0;bottom: 0;display: flex;align-items: center;justify-content: center;gap: 14px;padding: 14px 16px;background: linear-gradient(transparent,rgba(0,0,0,.6))}.lb-cap{flex: 1;max-width: 70ch;text-align: center;font-size: .9rem}.lb-btn{display: grid;place-items: center;width: 42px;height: 42px;flex: none;border: 1px solid rgba(255,255,255,.3);border-radius: 50%;background: rgba(255,255,255,.1);color: #fff;cursor: pointer;transition: background .2s}.lb-btn:hover{background: rgba(255,255,255,.25)}.lb-btn .ic{width: 20px;height: 20px}.lb-close{position: fixed;top: 12px;right: 12px}.nc-gray{color: #787774}.nc-brown{color: #9f6b53}.nc-orange{color: #d9730d}.nc-yellow{color: #a3750a}.nc-green{color: #0f7b6c}.nc-blue{color: #0b6e99}.nc-purple{color: #6940a5}.nc-pink{color: #ad1a72}.nc-red{color: #e03e3e}.nc-gray_background{background: #f1f1ef}.nc-brown_background{background: #f4eeee}.nc-orange_background{background: #fbecdd}.nc-yellow_background{background: #fbf3db}.nc-green_background{background: #edf3ec}.nc-blue_background{background: #e7f3f8}.nc-purple_background{background: #f6f3f9}.nc-pink_background{background: #faf1f5}.nc-red_background{background: #fdebec}:root[data-theme="dark"] .nc-gray{color: #9b9a97}:root[data-theme="dark"] .nc-brown{color: #c9967c}:root[data-theme="dark"] .nc-orange{color: #f0a05a}:root[data-theme="dark"] .nc-yellow{color: #e7c04a}:root[data-theme="dark"] .nc-green{color: #4fc3a8}:root[data-theme="dark"] .nc-blue{color: #5cb7e6}:root[data-theme="dark"] .nc-purple{color: #b794f4}:root[data-theme="dark"] .nc-pink{color: #f08cc5}:root[data-theme="dark"] .nc-red{color: #ff7b7b}:root[data-theme="dark"] .nc-gray_background{background: rgba(155,155,155,.18)}:root[data-theme="dark"] .nc-brown_background{background: rgba(176,115,83,.22)}:root[data-theme="dark"] .nc-orange_background{background: rgba(217,115,13,.22)}:root[data-theme="dark"] .nc-yellow_background{background: rgba(223,171,1,.2)}:root[data-theme="dark"] .nc-green_background{background: rgba(15,123,108,.25)}:root[data-theme="dark"] .nc-blue_background{background: rgba(11,110,153,.28)}:root[data-theme="dark"] .nc-purple_background{background: rgba(105,64,165,.3)}:root[data-theme="dark"] .nc-pink_background{background: rgba(173,26,114,.25)}:root[data-theme="dark"] .nc-red_background{background: rgba(224,62,62,.25)}span[class*="_background"]{padding: 0 .25em;border-radius: 4px}.notion p[class*="_background"],.callout[class*="_background"]{padding: .5em .8em;border-radius: var(--r)}.search-form{display: flex;gap: 8px;margin: 18px 0 8px}.search-form input{flex: 1;min-width: 0;padding: .7rem 1.2rem;border: 1px solid var(--line);border-radius: var(--pill);background: var(--surface);color: var(--ink);font: 500 1rem var(--font);transition: border-color .2s,box-shadow .2s}.search-form input:focus{outline: 0;border-color: var(--violet);box-shadow: 0 0 0 4px color-mix(in srgb,var(--violet) 18%,transparent)}#search-results{margin-top: 20px}.notfound{text-align: center;padding: 24px 0}.nf-code{margin: 0;font-size: clamp(5rem,22vw,9rem);font-weight: 800;line-height: 1;letter-spacing: -.05em;background: linear-gradient(120deg,var(--violet),var(--pink),var(--amber));-webkit-background-clip: text;background-clip: text;color: transparent}.notfound .lead{margin: 0 auto 1.4em}.nf-actions{display: flex;flex-wrap: wrap;justify-content: center;gap: 10px}.site-footer{border-top: 1px solid var(--line);background: var(--surface)}.foot-inner{max-width: 1040px;margin: 0 auto;padding: 28px 16px 36px;display: flex;flex-direction: column;gap: 16px}.foot-brand p{margin: 4px 0 0;color: var(--muted);font-size: .92rem;max-width: 52ch}.foot-links{list-style: none;margin: 0;padding: 0;display: flex;flex-wrap: wrap;gap: 8px}.foot-links a{display: inline-flex;align-items: center;gap: 6px;padding: .25rem .9rem;border: 1px solid var(--line);border-radius: var(--pill);color: var(--ink);font-size: .88rem;font-weight: 600;text-decoration: none;transition: transform .2s,border-color .2s,color .2s}.foot-links a:hover{transform: translateY(-2px);border-color: var(--violet);color: var(--violet)}.foot-tools{margin: 0}.foot-note{margin: 0;color: var(--muted);font-size: .82rem}.heart{display: inline-flex;vertical-align: -.15em;color: #ff3b6b;transform-origin: center;animation: heartbeat 1.4s ease-in-out infinite}.heart .ic{width: 1.15em;height: 1.15em;fill: currentColor}@keyframes heartbeat{0%,100%{transform: scale(1)}14%{transform: scale(1.3)}28%{transform: scale(1)}42%{transform: scale(1.2)}70%{transform: scale(1)}}@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation: none !important;transition: none !important;scroll-behavior: auto !important}}@media print{:root,:root[data-theme]{--bg: #fff;--surface: #fff;--ink: #000;--muted: #333;--line: #bbb;--soft: #f3f3f3;--shadow: none;--shadow-up: none}body{background: #fff;color: #000;font-size: 11pt;line-height: 1.5}.site-header,.site-footer,.to-top,.wa-fab,.cookie,.announce,.breadcrumb,.pager,.more,.post-actions,.comments,.toc-side,.skip,.anchor,.copy,.install-btn,.theme-toggle,.load-more,.toast,.embed-link,.author-box,.post-footer-html{display: none !important}.container{border: 0;box-shadow: none;padding: 0;background: #fff}.wrap{max-width: none;padding: 0}.post-layout.has-toc{display: block}.post{max-width: none}h1{font-size: 22pt}h2{font-size: 16pt}h3{font-size: 13pt}h1,h2,h3,h4{break-after: avoid}figure,img,.tbl,blockquote,.callout,.code,tr{break-inside: avoid}img{max-width: 100%;box-shadow: none !important}pre{white-space: pre-wrap;word-break: break-word}a{color: #000;text-decoration: underline}.toggle{border: 0;box-shadow: none;padding: 0}.toggle>summary::before{display: none}.card,.tag{box-shadow: none;animation: none}.print-footer{display: block;position: fixed;bottom: 0;left: 0;right: 0;text-align: center;font-size: 9pt;color: #555}}