:root{--cs-blue-50: #ECF3FF;--cs-blue-100: #CFE2FF;--cs-blue-200: #9EC5FE;--cs-blue-300: #6EA8FE;--cs-blue-400: #3D8BFD;--cs-blue-500: #0D6EFD;--cs-blue-600: #0A58CA;--cs-blue-700: #084298;--cs-blue-800: #052C65;--cs-blue-900: #031633;--cs-indigo-50: #F3ECFE;--cs-indigo-100: #E0CFFC;--cs-indigo-200: #C29FFA;--cs-indigo-300: #A370F7;--cs-indigo-400: #8540F5;--cs-indigo-500: #6610F2;--cs-indigo-600: #520DC2;--cs-indigo-700: #3D0A91;--cs-indigo-800: #290661;--cs-indigo-900: #140330;--cs-purple-50: #F3F0FA;--cs-purple-100: #E2D9F3;--cs-purple-200: #C5B3E6;--cs-purple-300: #A98EDA;--cs-purple-400: #8C68CD;--cs-purple-500: #6F42C1;--cs-purple-600: #59359A;--cs-purple-700: #432874;--cs-purple-800: #2C1A4D;--cs-purple-900: #160D27;--cs-pink-50: #FCEFF5;--cs-pink-100: #F7D6E6;--cs-pink-200: #EFADCE;--cs-pink-300: #E685B5;--cs-pink-400: #DE5C9D;--cs-pink-500: #D63384;--cs-pink-600: #AB296A;--cs-pink-700: #801F4F;--cs-pink-800: #561435;--cs-pink-900: #2B0A1A;--cs-red-50: #FCEFF0;--cs-red-100: #F8D7DA;--cs-red-200: #F1AEB5;--cs-red-300: #EA868F;--cs-red-400: #E35D6A;--cs-red-500: #DC3545;--cs-red-600: #B02A37;--cs-red-700: #842029;--cs-red-800: #58151C;--cs-red-900: #2C0B0E;--cs-orange-50: #FFF5EC;--cs-orange-100: #FFE5D0;--cs-orange-200: #FECBA1;--cs-orange-300: #FEB272;--cs-orange-400: #FD9843;--cs-orange-500: #FD7E14;--cs-orange-600: #CA6510;--cs-orange-700: #984C0C;--cs-orange-800: #653208;--cs-orange-900: #331904;--cs-yellow-50: #FFFAEB;--cs-yellow-100: #FFF3CD;--cs-yellow-200: #FFE69C;--cs-yellow-300: #FFDA6A;--cs-yellow-400: #FFCD39;--cs-yellow-500: #FFC107;--cs-yellow-600: #CC9A06;--cs-yellow-700: #997404;--cs-yellow-800: #664D03;--cs-yellow-900: #332701;--cs-green-50: #EDF5F1;--cs-green-100: #D1E7DD;--cs-green-200: #A3CFBB;--cs-green-300: #75B798;--cs-green-400: #479F76;--cs-green-500: #198754;--cs-green-600: #146C43;--cs-green-700: #0F5132;--cs-green-800: #0A3622;--cs-green-900: #051B11;--cs-teal-50: #EDFBF7;--cs-teal-100: #D2F4EA;--cs-teal-200: #A6E9D5;--cs-teal-300: #79DFC1;--cs-teal-400: #4DD4AC;--cs-teal-500: #20C997;--cs-teal-600: #1AA179;--cs-teal-700: #13795B;--cs-teal-800: #0D503C;--cs-teal-900: #06281E;--cs-cyan-50: #ECFBFE;--cs-cyan-100: #CFF4FC;--cs-cyan-200: #9EEAF9;--cs-cyan-300: #6EDFF6;--cs-cyan-400: #3DD5F3;--cs-cyan-500: #0DCAF0;--cs-cyan-600: #0AA2C0;--cs-cyan-700: #087990;--cs-cyan-800: #055160;--cs-cyan-900: #032830;--cs-gray-50: #FBFCFD;--cs-gray-100: #F8F9FA;--cs-gray-200: #E9ECEF;--cs-gray-300: #DEE2E6;--cs-gray-400: #CED4DA;--cs-gray-500: #ADB5BD;--cs-gray-600: #6C757D;--cs-gray-700: #495057;--cs-gray-800: #343A40;--cs-gray-900: #212529;--cs-blue-btn-face: #0D6EFD;--cs-blue-btn-edge: #0A58CA;--cs-blue-btn-text: #FFFFFF;--cs-blue-btn-hover: #0C65E9;--cs-indigo-btn-face: #6610F2;--cs-indigo-btn-edge: #520DC2;--cs-indigo-btn-text: #FFFFFF;--cs-indigo-btn-hover: #5E0FDF;--cs-purple-btn-face: #6F42C1;--cs-purple-btn-edge: #59359A;--cs-purple-btn-text: #FFFFFF;--cs-purple-btn-hover: #663DB2;--cs-pink-btn-face: #D63384;--cs-pink-btn-edge: #AB296A;--cs-pink-btn-text: #FFFFFF;--cs-pink-btn-hover: #C52F79;--cs-red-btn-face: #DC3545;--cs-red-btn-edge: #B02A37;--cs-red-btn-text: #FFFFFF;--cs-red-btn-hover: #CA313F;--cs-orange-btn-face: #FD7E14;--cs-orange-btn-edge: #CA6510;--cs-orange-btn-text: #212529;--cs-orange-btn-hover: #FD953E;--cs-yellow-btn-face: #FFC107;--cs-yellow-btn-edge: #CC9A06;--cs-yellow-btn-text: #212529;--cs-yellow-btn-hover: #FFCC34;--cs-green-btn-face: #198754;--cs-green-btn-edge: #146C43;--cs-green-btn-text: #FFFFFF;--cs-green-btn-hover: #177C4D;--cs-teal-btn-face: #20C997;--cs-teal-btn-edge: #1AA179;--cs-teal-btn-text: #212529;--cs-teal-btn-hover: #48D3AA;--cs-cyan-btn-face: #0DCAF0;--cs-cyan-btn-edge: #0AA2C0;--cs-cyan-btn-text: #212529;--cs-cyan-btn-hover: #39D4F3;--cs-text: #212529;--cs-text-2: #495057;--cs-mute: #6C757D;--cs-line: #E9ECEF;--cs-line-2: #DEE2E6;--cs-bg: #FFFFFF;--cs-section: #F8F9FA;--cs-primary: #0D6EFD;--cs-link: #0A58CA;--cs-link-hover: #084298;--cs-soft: #ECF3FF;--cs-subtle: #CFE2FF;--cs-ghost: #4A5A73;--cs-ghost-shade: #36435A;--cs-ghost-cheek: #F4A6C8;--cs-radius-code: 8px;--cs-radius-sm: 10px;--cs-radius-input: 12px;--cs-radius-button: 14px;--cs-radius-tile: 16px;--cs-radius-callout: 18px;--cs-radius-card: 20px;--cs-radius-panel: 28px;--cs-radius-hero: 32px;--cs-radius-pill: 999px;--cs-shadow-depth: 4px;--cs-shadow-depth-sm: 3px;--cs-shadow-depth-xs: 2px;--cs-shadow-card-lift: -2px;--cs-shadow-card: 0 4px 0 #E9ECEF;--cs-shadow-button-lite: 0 4px 0 #DEE2E6;--cs-size-header: 64px;--cs-size-container: 1120px;--cs-size-gutter: 32px;--cs-size-article: 720px;--cs-size-tap: 44px;--cs-size-button: 48px;--cs-size-button-lite: 44px;--cs-size-border: 2px;--cs-size-logo-header: 36px;--cs-size-logo-footer: 28px;--cs-size-focus-ring: 3px;--cs-size-focus-offset: 3px;--cs-font-sans: "Noto Sans TC", "PingFang TC", system-ui, sans-serif;--cs-font-en: "Nunito", "Noto Sans TC", sans-serif;--cs-font-mono: "JetBrains Mono", monospace;--cs-font-latn: "Nunito", "Nunito Fallback", Arial, sans-serif;--cs-font-hant: "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", "Noto Sans CJK TC", sans-serif;--cs-font-hans: "Noto Sans SC", "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;--cs-font-jpan: "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Hiragino Sans", "BIZ UDPGothic", Meiryo, "Yu Gothic", "Noto Sans CJK JP", sans-serif;--cs-font-kore: "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", "Noto Sans CJK KR", sans-serif;--cs-font-code: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas}:root{color-scheme:light;--th-font-sans: "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", system-ui, sans-serif;--th-font-en: "Nunito", "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", system-ui, sans-serif;--th-font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, "Noto Sans TC", "PingFang TC", monospace;--th-surface: #FFFFFF;--th-header-bg: var(--cs-bg);--th-footer-bg: var(--cs-section);--th-card-edge: var(--cs-line);--th-card-edge-hover: var(--cs-blue-200);--th-chip-bg: var(--cs-blue-100);--th-chip-text: var(--cs-blue-800);--th-btn-face: var(--cs-blue-btn-face);--th-btn-edge: var(--cs-blue-btn-edge);--th-btn-text: var(--cs-blue-btn-text);--th-btn-hover: var(--cs-blue-btn-hover);--th-lite-bg: #FFFFFF;--th-lite-text: var(--cs-link);--th-lite-edge: var(--cs-line-2);--th-lite-hover: var(--cs-soft);--th-code-bg: #FFFFFF;--th-code-border: var(--cs-line);--th-code-inline-bg: var(--cs-section);--th-code-lang: var(--cs-text-2);--th-quote-edge: var(--cs-blue-300);--th-mark-bg: var(--cs-yellow-100);--th-mark-text: var(--cs-text);--th-overlay: rgba(15, 21, 32, .55);--th-focus: var(--cs-primary);--th-ghost-outline: transparent}html.dark{color-scheme:dark;--cs-text: #E6EAF0;--cs-text-2: #B4BFCE;--cs-mute: #97A4B8;--cs-line: #253246;--cs-line-2: #34455F;--cs-bg: #0F1520;--cs-section: #141C28;--cs-primary: #3D8BFD;--cs-link: #7DB3FF;--cs-link-hover: #A9CCFF;--cs-soft: #13233A;--cs-subtle: #1C3A66;--cs-shadow-card: 0 4px 0 #253246;--cs-shadow-button-lite: 0 4px 0 #34455F;--th-surface: #172131;--th-header-bg: #0F1520;--th-footer-bg: #141C28;--th-card-edge: #253246;--th-card-edge-hover: #3E5F92;--th-chip-bg: #1C3A66;--th-chip-text: #D2E4FF;--th-btn-face: #0D6EFD;--th-btn-edge: #08367A;--th-btn-text: #FFFFFF;--th-btn-hover: #0C65E9;--th-lite-bg: #172131;--th-lite-text: #7DB3FF;--th-lite-edge: #34455F;--th-lite-hover: #1A2C47;--th-code-bg: #0D1117;--th-code-border: #253246;--th-code-inline-bg: #1B2636;--th-code-lang: #B4BFCE;--th-quote-edge: #3D8BFD;--th-mark-bg: #5A4708;--th-mark-text: #FFF3CD;--th-overlay: rgba(0, 0, 0, .62);--th-focus: #6EA8FE;--th-ghost-outline: #DCE5F2}@font-face{font-family:Nunito;font-style:normal;font-weight:700 900;font-display:swap;src:url(/assets/nunito-latin.CjueodBP.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:JetBrains Mono;font-style:normal;font-weight:400 500;font-display:swap;src:url(/assets/jetbrains-mono-latin.Db4Uuiha.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}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;background:var(--cs-bg)}html,body{overflow-x:clip}body{margin:0;background:var(--cs-bg);color:var(--cs-text);font-family:var(--th-font-sans);font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.site{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.site-main{flex:1 0 auto;outline:none}:where(.site) a{color:var(--cs-link)}:where(.site) a:hover{color:var(--cs-link-hover)}.site :focus-visible{outline:var(--cs-size-focus-ring) solid var(--th-focus);outline-offset:var(--cs-size-focus-offset);border-radius:6px}.wrap{width:100%;max-width:calc(var(--cs-size-container) + var(--cs-size-gutter) * 2);margin:0 auto;padding:0 var(--cs-size-gutter)}@media (max-width: 640px){.site{--cs-size-gutter: 16px}}.en{font-family:var(--th-font-en)}.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-link{position:absolute;left:12px;top:-100px;z-index:100;display:inline-flex;align-items:center;min-height:var(--cs-size-tap);padding:0 16px;border-radius:var(--cs-radius-button);background:var(--th-btn-face);font-weight:700;text-decoration:none}.site a.skip-link,.site a.skip-link:hover{color:var(--th-btn-text)}.skip-link:focus{top:10px}.b3d,.b3d-lite{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:var(--cs-radius-button);font:inherit;font-weight:700;line-height:1.3;text-decoration:none;white-space:nowrap;cursor:pointer;transition:transform .08s,box-shadow .08s,background-color .12s}.b3d{min-height:var(--cs-size-button);padding:0 24px;border:none;background:var(--th-btn-face);box-shadow:0 var(--cs-shadow-depth) 0 var(--th-btn-edge);font-size:16px;letter-spacing:.02em}.site .b3d,.site .b3d:hover{color:var(--th-btn-text)}.b3d:hover{background:var(--th-btn-hover)}.b3d:active{transform:translateY(var(--cs-shadow-depth));box-shadow:0 0 0 var(--th-btn-edge)}.b3d-lite{min-height:var(--cs-size-button-lite);padding:0 20px;border:var(--cs-size-border) solid var(--th-lite-edge);background:var(--th-lite-bg);box-shadow:0 var(--cs-shadow-depth) 0 var(--th-lite-edge);font-size:15px}.site .b3d-lite,.site .b3d-lite:hover{color:var(--th-lite-text)}.b3d-lite:hover{background:var(--th-lite-hover)}.b3d-lite:active{transform:translateY(var(--cs-shadow-depth));box-shadow:0 0 0 var(--th-lite-edge)}.c3d{display:flex;flex-direction:column;background:var(--th-surface);border:var(--cs-size-border) solid var(--th-card-edge);border-radius:var(--cs-radius-card);box-shadow:0 var(--cs-shadow-depth) 0 var(--th-card-edge);color:var(--cs-text);text-decoration:none;transition:transform .12s,box-shadow .12s,border-color .12s}a.c3d:hover,.c3d.is-link:hover,.c3d.is-link:focus-within{border-color:var(--th-card-edge-hover);box-shadow:0 var(--cs-shadow-depth) 0 var(--th-card-edge-hover);transform:translateY(var(--cs-shadow-card-lift))}.site a.c3d,.site a.c3d:hover{color:var(--cs-text)}.chip{display:inline-flex;align-items:center;min-height:28px;padding:0 12px;border-radius:var(--cs-radius-pill);background:var(--th-chip-bg);font-size:13px;font-weight:700;line-height:1.4;white-space:nowrap;text-decoration:none}.site .chip,.site .chip:hover{color:var(--th-chip-text)}a.chip{position:relative;min-height:36px;min-width:var(--cs-size-tap);justify-content:center;padding:0 14px;font-size:14px}a.chip:after{content:"";position:absolute;left:0;right:0;top:50%;height:var(--cs-size-tap);transform:translateY(-50%)}a.chip:hover{text-decoration:underline;text-underline-offset:3px}.ghost{display:block;max-width:100%;height:auto;flex:none;-webkit-user-select:none;user-select:none}html.dark .ghost{filter:drop-shadow(2px 0 0 var(--th-ghost-outline)) drop-shadow(-2px 0 0 var(--th-ghost-outline)) drop-shadow(0 2px 0 var(--th-ghost-outline)) drop-shadow(0 -2px 0 var(--th-ghost-outline))}html.dark .ghost--small{filter:drop-shadow(1px 0 0 var(--th-ghost-outline)) drop-shadow(-1px 0 0 var(--th-ghost-outline)) drop-shadow(0 1px 0 var(--th-ghost-outline)) drop-shadow(0 -1px 0 var(--th-ghost-outline))}.section-title{margin:0;font-size:28px;font-weight:900;line-height:1.35;letter-spacing:.01em}@media (max-width: 640px){.section-title{font-size:24px}}@media (prefers-reduced-motion: reduce){.site *,.site *:before,.site *:after{transition:none!important;animation:none!important}.b3d:active,.b3d-lite:active,a.c3d:hover,.c3d.is-link:hover,.c3d.is-link:focus-within{transform:none}}.site-header{background:var(--th-header-bg);border-bottom:var(--cs-size-border) solid var(--cs-line)}.site-header__inner{display:flex;align-items:center;gap:24px;min-height:var(--cs-size-header)}.brand{display:inline-flex;align-items:center;gap:10px;min-height:var(--cs-size-tap);flex:none;text-decoration:none}.site a.brand,.site a.brand:hover{color:var(--cs-text)}.brand__name{font-size:19px;font-weight:900;letter-spacing:.03em;white-space:nowrap}.brand__en{font-size:14px;font-weight:800;color:var(--cs-text-2);white-space:nowrap}.main-nav{display:flex;align-items:center;gap:4px}.main-nav__link{display:inline-flex;align-items:center;min-height:var(--cs-size-tap);padding:0 14px;border-radius:var(--cs-radius-input);font-size:15px;font-weight:700;text-decoration:none;white-space:nowrap}.site a.main-nav__link{color:var(--cs-text-2)}.site a.main-nav__link:hover{background:var(--cs-section);color:var(--cs-text)}.site a.main-nav__link[aria-current]{background:var(--cs-soft);color:var(--cs-link)}.site-header__tools{display:flex;align-items:center;gap:8px;margin-left:auto}.search-btn{display:inline-flex;align-items:center;gap:10px;min-width:200px;min-height:var(--cs-size-tap);padding:0 10px 0 14px;border:var(--cs-size-border) solid var(--cs-line);border-radius:var(--cs-radius-input);background:var(--cs-section);color:var(--cs-text-2);font:inherit;font-size:15px;cursor:pointer}.search-btn:hover{border-color:var(--cs-line-2);color:var(--cs-text)}.search-btn__label{flex:1;text-align:left}.search-btn kbd,.search-modal kbd{display:inline-flex;align-items:center;min-height:24px;padding:0 7px;border:1px solid var(--cs-line-2);border-radius:6px;background:var(--th-surface);color:var(--cs-text-2);font-family:var(--th-font-en);font-size:12px;font-weight:800}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--cs-size-tap);height:var(--cs-size-tap);padding:0;border:var(--cs-size-border) solid var(--cs-line);border-radius:var(--cs-radius-input);background:var(--th-surface);color:var(--cs-text-2);cursor:pointer}.icon-btn:hover{background:var(--cs-section);color:var(--cs-text)}.theme-toggle .icon-sun{display:none}html.dark .theme-toggle .icon-sun{display:block}html.dark .theme-toggle .icon-moon{display:none}@media (max-width: 760px){.site-header__inner{gap:12px}.search-btn{min-width:0;width:var(--cs-size-tap);padding:0;justify-content:center}.search-btn__label,.search-btn kbd{display:none}}@media (max-width: 480px){.site-header__inner{gap:4px}.brand{gap:8px}.brand__name{font-size:17px}.brand__en{display:none}.main-nav{gap:0}.main-nav__link{padding:0 10px}.site-header__tools{gap:4px}}@media (max-width: 380px){.brand__name{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}.site-footer{margin-top:88px;padding:48px 0 32px;border-top:var(--cs-size-border) solid var(--cs-line);background:var(--th-footer-bg);color:var(--cs-text-2);font-size:15px}.site-footer__top{display:grid;grid-template-columns:minmax(200px,1fr) minmax(0,3fr);gap:32px}.site-footer__brand{display:flex;flex-direction:column;gap:8px}.site-footer__name{display:inline-flex;align-items:center;gap:10px;color:var(--cs-text);font-size:16px;font-weight:900}.site-footer__tagline{margin:0}.site-footer__groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:24px 32px}.footer-group__title{margin:0 0 4px;color:var(--cs-text);font-size:15px;font-weight:900}.footer-group__list{margin:0;padding:0;list-style:none}.footer-group__list a{display:inline-flex;align-items:center;gap:4px;min-height:var(--cs-size-tap);text-decoration:none}.site .footer-group__list a{color:var(--cs-text-2)}.site .footer-group__list a:hover{color:var(--cs-link);text-decoration:underline;text-underline-offset:3px}.footer-group__ext{flex:none;opacity:.8}.site-footer__copy{margin:32px 0 0;padding-top:20px;border-top:1px solid var(--cs-line)}.site .site-footer__copy a{display:inline-flex;align-items:center;min-height:var(--cs-size-tap);color:var(--cs-text-2)}@media (max-width: 760px){.site-footer__top{grid-template-columns:1fr}.site-footer__groups{grid-template-columns:repeat(2,minmax(0,1fr))}}.breadcrumbs{padding-top:12px;font-size:14px}.breadcrumbs ol{display:flex;flex-wrap:wrap;align-items:center;margin:0;padding:0;list-style:none}.breadcrumbs li{display:inline-flex;align-items:center;min-height:var(--cs-size-tap);color:var(--cs-text-2)}.breadcrumbs li:not(:last-child):after{content:"/";padding:0 8px;color:var(--cs-text-2)}.breadcrumbs a{display:inline-flex;align-items:center;min-height:var(--cs-size-tap);text-decoration:none}.site .breadcrumbs a{color:var(--cs-text-2)}.site .breadcrumbs a:hover{color:var(--cs-link);text-decoration:underline;text-underline-offset:3px}.breadcrumbs [aria-current]{color:var(--cs-text);font-weight:700;overflow-wrap:anywhere}.pager{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:16px;margin-top:40px}.pager__btn.is-disabled{visibility:hidden}.pager__jump{display:inline-flex;align-items:center;gap:10px;color:var(--cs-text-2);font-size:15px}.pager__select{min-height:var(--cs-size-tap);padding:0 36px 0 14px;border:var(--cs-size-border) solid var(--th-lite-edge);border-radius:var(--cs-radius-input);background-color:var(--th-lite-bg);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236C757D' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;color:var(--cs-text);font:inherit;font-size:15px;font-weight:700;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.pager__total{white-space:nowrap}.post-tags{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:40px}.post-tags__label{margin-right:4px;color:var(--cs-text-2);font-size:14px;font-weight:700}.post-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:40px}.post-nav__item{gap:6px;padding:18px 22px}.post-nav__item--next{grid-column:2;text-align:right}.post-nav__label{color:var(--cs-link);font-size:14px;font-weight:700}.post-nav__title{font-size:16px;line-height:1.6;overflow-wrap:anywhere}@media (max-width: 640px){.post-nav{grid-template-columns:1fr}.post-nav__item--next{grid-column:auto}}.comments{margin-top:56px}.comments__title{margin-bottom:16px}.comments__frame{min-height:180px;border-radius:var(--cs-radius-tile)}html.dark .comments__frame{padding:12px 16px;background:#fff}.search-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:flex-start;justify-content:center;padding:10vh 16px 16px}.search-modal__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--th-overlay)}.search-modal__box{position:relative;display:flex;flex-direction:column;width:100%;max-width:640px;max-height:76vh;overflow:hidden;border:var(--cs-size-border) solid var(--th-card-edge);border-radius:var(--cs-radius-card);background:var(--th-surface);box-shadow:0 var(--cs-shadow-depth) 0 var(--th-card-edge),0 24px 48px #0f152040}.search-modal__top{display:flex;align-items:center;gap:10px;padding:10px 10px 10px 18px;border-bottom:var(--cs-size-border) solid var(--cs-line);color:var(--cs-text-2)}.search-modal__input{flex:1;min-width:0;min-height:var(--cs-size-tap);padding:0;border:none;background:transparent;color:var(--cs-text);font:inherit;font-size:17px;outline:none}.search-modal__input::placeholder{color:var(--cs-mute);opacity:1}.search-modal__input::-webkit-search-cancel-button{display:none}.search-modal__status{margin:0;padding:12px 20px 4px;color:var(--cs-text-2);font-size:14px}.search-modal__results{flex:1;margin:0;padding:4px 10px 10px;overflow-y:auto;list-style:none;overscroll-behavior:contain}.search-hit a{display:flex;flex-direction:column;gap:2px;min-height:var(--cs-size-tap);padding:10px 12px;border-radius:var(--cs-radius-input);text-decoration:none}.site .search-hit a{color:var(--cs-text)}.search-hit[aria-selected=true] a,.site .search-hit a:hover{background:var(--cs-soft)}.search-hit[aria-selected=true] a{box-shadow:inset 4px 0 0 var(--cs-primary)}.search-hit__title{font-weight:700;line-height:1.5}.search-hit__meta{color:var(--cs-text-2);font-size:13px}.search-hit mark{padding:0 1px;border-radius:3px;background:var(--th-mark-bg);color:var(--th-mark-text)}.search-hit__kind{margin-right:6px}.search-modal__foot{display:flex;justify-content:space-between;gap:12px;padding:10px 20px;border-top:var(--cs-size-border) solid var(--cs-line);color:var(--cs-text-2);font-size:13px}@media (max-width: 640px){.search-modal{padding:8px}.search-modal__box{max-height:calc(100dvh - 16px)}.search-modal__keys{display:none}}.wrap--narrow{max-width:calc(880px + var(--cs-size-gutter) * 2)}.page-head{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-top:8px}.page-head--panel{padding:32px 40px;border-radius:var(--cs-radius-panel);background:var(--cs-soft)}.page-head__title{margin:0;font-size:36px;font-weight:900;line-height:1.35;letter-spacing:.01em;overflow-wrap:anywhere}.page-head__meta{margin:8px 0 0;color:var(--cs-text-2);font-size:15px}.page-head__ghost{width:112px}.page-head__ghost--wave{width:128px}.page-head__meta time{white-space:nowrap}@media (max-width: 640px){.page-head--panel{padding:24px 20px}.page-head__title{font-size:28px}.page-head__ghost{width:80px}}.hero{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:40px;align-items:center;margin-top:24px;padding:48px 56px;border-radius:var(--cs-radius-hero);background:var(--cs-soft)}.hero__text{display:flex;flex-direction:column;align-items:flex-start;gap:18px}.hero__title{margin:0;font-size:48px;font-weight:900;line-height:1.25;letter-spacing:.01em}.hero__lead{margin:0;color:var(--cs-text-2);font-size:18px}.hero__actions{display:flex;flex-wrap:wrap;gap:16px;padding:8px 0 4px}.hero__ghost{justify-self:center;width:360px}@media (max-width: 860px){.hero{grid-template-columns:1fr;gap:16px;padding:32px 24px}.hero__title{font-size:36px}.hero__ghost{grid-row:1;width:200px}}.home-section{margin-top:72px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px}.more-link{display:inline-flex;align-items:center;gap:6px;min-height:var(--cs-size-tap);font-size:15px;font-weight:700;text-decoration:none}.more-link:hover{text-decoration:underline;text-underline-offset:4px}.tool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:20px}.tool-card{gap:12px;padding:14px 14px 20px}.tool-card__art{display:flex;align-items:center;justify-content:center;height:132px;border-radius:var(--cs-radius-tile);background:var(--cs-soft)}.tool-card__art .ghost{width:116px}.tool-card__name{padding:0 6px;font-size:18px;font-weight:900}.tool-card__desc{padding:0 6px;color:var(--cs-text-2);font-size:14px}.about-strip{display:flex;align-items:center;gap:24px;margin-top:72px;padding:28px 36px;border-radius:var(--cs-radius-panel);background:var(--cs-section)}.about-strip__avatar{flex:none;width:72px;height:72px;border:3px solid var(--th-surface);border-radius:50%}.about-strip__text{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.about-strip__title{margin:0;font-size:20px;font-weight:900}.about-strip__desc{margin:0;color:var(--cs-text-2);font-size:15px}.about-strip__ghost{width:104px;margin:-28px 0 -36px}@media (max-width: 760px){.about-strip{flex-wrap:wrap;padding:24px 20px}.about-strip__ghost{display:none}}.post-list{margin-top:24px}.post-card{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:24px;align-items:start;margin:0 0 20px;padding:22px 24px;border:var(--cs-size-border) solid var(--th-card-edge);border-radius:var(--cs-radius-card);background:var(--th-surface);box-shadow:0 var(--cs-shadow-depth) 0 var(--th-card-edge);transition:transform .12s,box-shadow .12s,border-color .12s}.post-card>*{grid-column:1;min-width:0}.post-card:hover,.post-card:focus-within{border-color:var(--th-card-edge-hover);box-shadow:0 var(--cs-shadow-depth) 0 var(--th-card-edge-hover);transform:translateY(var(--cs-shadow-card-lift))}.post-card__title{margin:0;font-size:20px;font-weight:900;line-height:1.5;overflow-wrap:anywhere}.post-card__title a{text-decoration:none}.site .post-card__title a,.site .post-card__title a:hover{color:var(--cs-text)}.post-card__title a:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;border-radius:var(--cs-radius-card)}.post-card__title a:focus-visible{outline:none}.post-card__title a:focus-visible:after{outline:var(--cs-size-focus-ring) solid var(--th-focus);outline-offset:var(--cs-size-focus-offset)}.post-card__meta{display:flex;flex-wrap:wrap;align-items:center;margin:8px 0 0;color:var(--cs-text-2);font-size:14px}.post-card__sep{white-space:pre}.post-card__meta a{position:relative;z-index:1;font-weight:700;text-decoration:none}.post-card__meta a:after{content:"";position:absolute;left:-6px;right:-6px;top:50%;height:var(--cs-size-tap);transform:translateY(-50%)}.post-card__meta a:hover{text-decoration:underline;text-underline-offset:3px}.post-card__excerpt{margin:10px 0 0;color:var(--cs-text-2);font-size:15px;line-height:1.8;overflow-wrap:anywhere}.post-card__cover{grid-column:2;grid-row:1 / span 4;display:block;width:168px;aspect-ratio:16 / 10;overflow:hidden;border-radius:var(--cs-radius-tile);background:var(--cs-section)}.post-card__cover img{display:block;width:100%;height:100%;object-fit:cover}@media (max-width: 640px){.post-card{column-gap:14px;padding:18px}.post-card__title{font-size:18px}.post-card__cover{width:96px;grid-row:1 / span 2}.post-card__excerpt{grid-column:1 / -1}}.post-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:32px;align-items:center;margin-top:8px;padding:40px 48px;border-radius:var(--cs-radius-panel);background:var(--cs-soft)}.post-hero__text{display:flex;flex-direction:column;align-items:flex-start;gap:14px;min-width:0}.post-hero__title{margin:0;font-size:36px;font-weight:900;line-height:1.4;letter-spacing:.01em;overflow-wrap:anywhere}.post-hero__meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:0;color:var(--cs-text-2);font-size:15px}.post-hero__meta time{font-family:var(--th-font-en);font-weight:800}.post-hero__deco{width:240px}@media (max-width: 860px){.post-hero{grid-template-columns:1fr;padding:28px 22px}.post-hero__title{font-size:28px}.post-hero__deco{display:none}}.post-cover{margin:32px auto 0;max-width:var(--cs-size-article);aspect-ratio:16 / 9;overflow:hidden;border-radius:var(--cs-radius-card);background:var(--cs-section)}.post-cover img{display:block;width:100%;height:100%;object-fit:contain}.post-body{max-width:var(--cs-size-article);margin:40px auto 0}.related{margin-top:72px}.related__heading{margin-bottom:24px}.related__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.related__card{gap:10px;padding:20px 22px}.related__date{align-self:flex-start}.related__title{font-size:16px;line-height:1.6;overflow-wrap:anywhere}@media (max-width: 760px){.related__heading{margin-bottom:24px}.related__grid{grid-template-columns:1fr}}.post-aside{margin-top:72px}.post-aside__track{display:none}.post-aside__more{columns:2 300px;column-gap:40px}.side-block{margin:0 0 40px;break-inside:avoid}.side-block__title{margin:0 0 12px;color:var(--cs-text);font-size:17px;font-weight:900;line-height:1.4;letter-spacing:.01em}.side-block__more{display:inline-flex;align-items:center;min-height:var(--cs-size-tap);margin-top:4px;font-size:15px;font-weight:700;text-decoration:none}.side-block__more:hover{text-decoration:underline;text-underline-offset:4px}.post-toc{display:flex;flex-direction:column;padding:16px 10px 12px;border:var(--cs-size-border) solid var(--cs-line);border-radius:var(--cs-radius-card)}.post-toc__title{padding:0 12px;margin-bottom:8px}.post-toc__list{display:flex;flex-direction:column;gap:2px;margin:0;padding:0;list-style:none}.post-toc__link{display:flex;align-items:center;min-height:var(--cs-size-tap);padding:8px 12px;border-radius:var(--cs-radius-sm);font-size:15px;font-weight:700;line-height:1.5;text-decoration:none;overflow-wrap:anywhere}.site a.post-toc__link{color:var(--cs-text)}.post-toc__item--h3 .post-toc__link{padding-left:26px;font-size:14px;font-weight:400}.site .post-toc__item--h3 a.post-toc__link{color:var(--cs-text-2)}.site a.post-toc__link:hover{background:var(--cs-section);color:var(--cs-text)}.site a.post-toc__link[aria-current]{background:var(--cs-soft);box-shadow:inset 4px 0 0 var(--cs-primary);color:var(--cs-link)}@media (forced-colors: active){.site a.post-toc__link[aria-current]:not(:focus-visible){outline:2px solid Highlight;outline-offset:-2px}}.side-related__list,.side-social__list{margin:0;padding:0;list-style:none;border-top:1px solid var(--cs-line)}.side-related__item{position:relative;display:flex;flex-direction:column;justify-content:center;gap:2px;min-height:var(--cs-size-tap);padding:10px 0;border-bottom:1px solid var(--cs-line)}.side-related__link{font-size:15px;font-weight:700;line-height:1.6;text-decoration:none;overflow-wrap:anywhere}.side-related__link:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0}.site a.side-related__link{color:var(--cs-text)}.site a.side-related__link:hover{color:var(--cs-link);text-decoration:underline;text-underline-offset:3px}.side-related__date{color:var(--cs-text-2);font-size:13px;font-weight:800}.side-social__link{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:var(--cs-size-tap);padding:4px 0;border-bottom:1px solid var(--cs-line);text-decoration:none}.site a.side-social__link{color:var(--cs-text)}.side-social__name{font-size:15px;font-weight:800}.site a.side-social__link:hover .side-social__name{color:var(--cs-link);text-decoration:underline;text-underline-offset:3px}.side-social__handle{color:var(--cs-text-2);font-size:14px}.side-author__card{padding:20px 20px 12px;border-radius:var(--cs-radius-card);background:var(--cs-section)}.side-author__head{display:flex;align-items:center;gap:14px}.side-author__avatar{flex:none;width:64px;height:64px;border:3px solid var(--th-surface);border-radius:50%}.side-author__name{display:flex;flex-direction:column;margin:0;font-size:18px;font-weight:900;line-height:1.35}.side-author__local{color:var(--cs-text-2);font-size:14px;font-weight:700}.side-author__bio{margin:12px 0 0;color:var(--cs-text-2);font-size:15px;line-height:1.75}.side-book__card{flex-direction:row;align-items:flex-start;gap:16px;padding:16px}.side-book__cover{flex:none;width:72px;height:auto;border-radius:6px;box-shadow:0 2px 0 var(--th-card-edge)}.side-book__text{display:flex;flex-direction:column;gap:4px;min-width:0}.side-book__name{font-size:16px;font-weight:900;line-height:1.45}.side-book__desc{color:var(--cs-text-2);font-size:14px;line-height:1.7}.side-book__action{display:inline-flex;align-items:center;gap:4px;margin-top:4px;color:var(--cs-link);font-size:14px;font-weight:700}.side-tags__list{display:flex;flex-wrap:wrap;gap:8px}.side-tags__chip[data-count]:before{content:attr(data-count);content:attr(data-count) / "";order:1;margin-left:6px;font-family:var(--th-font-en);font-size:12px;font-weight:800}@media (min-width: 1120px){@supports (grid-template-rows: subgrid){.wrap.page-post{max-width:calc(var(--cs-size-article) + 48px + 288px + var(--cs-size-gutter) * 2)}.post-layout{display:grid;grid-template-columns:minmax(0,var(--cs-size-article)) 288px;grid-template-rows:auto auto auto auto 1fr;column-gap:48px}.post-layout>.post{display:grid;grid-column:1 / -1;grid-row:1 / 5;grid-template-columns:subgrid;grid-template-rows:subgrid}.page-post .post-hero{grid-column:1 / -1;grid-row:1}.page-post .post-cover{grid-column:1;grid-row:2;max-width:none;margin:40px 0 0}.page-post .post-body{display:grid;grid-column:1;grid-row:3 / 5;grid-template-columns:minmax(0,1fr);grid-template-rows:subgrid;max-width:none;margin:40px 0 0}.page-post .related{grid-column:1;grid-row:5;align-self:start}.post-aside{display:grid;grid-column:2;grid-row:2 / 6;grid-template-columns:minmax(0,1fr);grid-template-rows:subgrid;margin:0}.post-aside__track{display:block;grid-row:1 / 3;padding-top:40px}.post-toc{position:sticky;top:24px;max-height:calc(100vh - 48px);overflow-y:auto}.post-aside__more{display:flex;flex-direction:column;gap:40px;grid-row:1 / -1;align-self:start;padding-top:40px;columns:auto}.post-aside--toc .post-aside__more{grid-row:3 / -1}.post-aside__more .side-block{margin:0}}}.list-body{margin-top:8px}.index-body{margin-top:32px}.index-body .category-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:16px;margin:0;padding:0;list-style:none}.index-body .category-card{margin:0}.index-body .category-card__link{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:64px;padding:12px 18px;border:var(--cs-size-border) solid var(--th-card-edge);border-radius:var(--cs-radius-tile);background:var(--th-surface);box-shadow:0 var(--cs-shadow-depth) 0 var(--th-card-edge);color:var(--cs-text);text-decoration:none;transition:transform .12s,box-shadow .12s,border-color .12s}.index-body .category-card__link:hover{border-color:var(--th-card-edge-hover);box-shadow:0 var(--cs-shadow-depth) 0 var(--th-card-edge-hover);color:var(--cs-text);transform:translateY(var(--cs-shadow-card-lift))}.index-body .category-card__name{font-size:17px;font-weight:900;line-height:1.4;overflow-wrap:anywhere}.index-body .category-card__count{flex:none;padding:2px 10px;border-radius:var(--cs-radius-pill);background:var(--th-chip-bg);color:var(--th-chip-text);font-size:13px;font-weight:700}.index-body .tag-cloud{display:flex;flex-wrap:wrap;gap:10px}.index-body .tag-cloud__item{display:inline-flex;align-items:center;gap:8px;min-height:var(--cs-size-tap);padding:0 8px 0 16px;border:var(--cs-size-border) solid var(--th-lite-edge);border-radius:var(--cs-radius-pill);background:var(--th-lite-bg);color:var(--cs-text);font-size:15px;font-weight:700;line-height:1.3;text-decoration:none}.index-body .tag-cloud__item:hover{border-color:var(--th-card-edge-hover);background:var(--th-lite-hover);color:var(--cs-text)}.index-body .tag-cloud__count{min-width:28px;padding:2px 8px;border-radius:var(--cs-radius-pill);background:var(--th-chip-bg);color:var(--th-chip-text);font-size:12px;text-align:center}.index-body .archive-list__year{margin:40px 0 8px;font-size:26px}.index-body .archive-list__month{margin:20px 0 4px;color:var(--cs-text-2);font-size:18px}.index-body .archive-list>:first-child{margin-top:0}.index-body .archive-list__year a,.index-body .archive-list__month a{display:inline-flex;align-items:center;min-height:var(--cs-size-tap);color:inherit;text-decoration:none}.index-body .archive-list__year a:hover,.index-body .archive-list__month a:hover{color:var(--cs-link);text-decoration:underline;text-underline-offset:4px}.index-body .archive-list__items{margin:0;padding:0;list-style:none;border-top:1px solid var(--cs-line)}.index-body .archive-row{display:grid;grid-template-columns:56px minmax(0,1fr) auto;align-items:center;gap:12px;margin:0;padding:2px 0;border-bottom:1px solid var(--cs-line);font-size:16px;line-height:1.6}.index-body .archive-row__date{color:var(--cs-text-2);font-family:var(--th-font-en);font-weight:800;font-size:14px}.index-body .archive-row__title{display:flex;align-items:center;min-height:var(--cs-size-tap);padding:4px 0;font-weight:700;text-decoration:none;overflow-wrap:anywhere}.index-body .archive-row__title:hover{text-decoration:underline;text-underline-offset:3px}.index-body .archive-row__category{color:var(--cs-text-2);font-size:13px}@media (max-width: 640px){.index-body .archive-row{grid-template-columns:48px minmax(0,1fr)}.index-body .archive-row__category{display:none}}.not-found{display:flex;flex-direction:column;align-items:center;gap:16px;max-width:560px;margin:56px auto 0;text-align:center}.not-found__ghost{width:180px}.not-found__title{margin:0;font-size:36px;font-weight:900;line-height:1.35}.not-found__desc{margin:0;color:var(--cs-text-2);font-size:17px}.not-found__search{min-width:260px;margin-top:8px}.not-found__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:16px;margin-top:16px}.prose,.index-body{color:var(--cs-text);font-size:18px;line-height:1.9;overflow-wrap:break-word}@media (max-width: 640px){.prose,.index-body{font-size:17px}}:where(.prose,.index-body) :where(h1,h2,h3,h4,h5,h6){position:relative;margin:2em 0 .7em;color:var(--cs-text);line-height:1.45;letter-spacing:.01em;scroll-margin-top:24px}:where(.prose,.index-body) h1{font-size:30px;font-weight:900}:where(.prose,.index-body) h2{font-size:26px;font-weight:900}:where(.prose,.index-body) h3{margin-top:1.6em;font-size:21px;font-weight:700}:where(.prose,.index-body) h4{margin-top:1.5em;font-size:19px;font-weight:700}:where(.prose,.index-body) :where(h5,h6){margin-top:1.4em;font-size:17px;font-weight:700}@media (max-width: 640px){:where(.prose,.index-body) h1{font-size:26px}:where(.prose,.index-body) h2{font-size:23px}:where(.prose,.index-body) h3{font-size:20px}}.prose>div>div>:first-child,.index-body>div>div>:first-child{margin-top:0}.prose .header-anchor,.prose .headerlink,.index-body .header-anchor{position:absolute;top:0;left:-.9em;width:.9em;color:var(--cs-mute);font-weight:500;text-decoration:none;opacity:0;-webkit-user-select:none;user-select:none;transition:opacity .15s}.prose .header-anchor:before,.prose .headerlink:before,.index-body .header-anchor:before{content:"#"}.prose :is(h1,h2,h3,h4,h5,h6):hover>:is(.header-anchor,.headerlink),.prose :is(.header-anchor,.headerlink):focus-visible,.index-body :is(h1,h2,h3,h4,h5,h6):hover>.header-anchor{opacity:1}:where(.prose,.index-body) p{margin:0 0 1.2em}:where(.prose,.index-body) a{color:var(--cs-link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}:where(.prose,.index-body) a:hover{color:var(--cs-link-hover);text-decoration-thickness:2px}:where(.prose) strong,:where(.prose) b{font-weight:700}:where(.prose) mark{padding:0 2px;border-radius:3px;background:var(--th-mark-bg);color:var(--th-mark-text)}:where(.prose) kbd{display:inline-block;padding:0 6px;border:1px solid var(--cs-line-2);border-bottom-width:3px;border-radius:6px;background:var(--th-surface);font-family:var(--th-font-mono);font-size:.82em;line-height:1.6}:where(.prose) hr{height:0;margin:2.4em 0;border:0;border-top:var(--cs-size-border) solid var(--cs-line)}:where(.prose,.index-body) :where(ul,ol){margin:0 0 1.2em;padding-left:1.5em}:where(.prose,.index-body) li{margin:.35em 0}:where(.prose,.index-body) li>:where(ul,ol){margin:.35em 0 0}:where(.prose,.index-body) li>p{margin-bottom:.6em}:where(.prose,.index-body) li::marker{color:var(--cs-text-2)}:where(.prose) blockquote{margin:0 0 1.4em;padding:14px 22px;border-left:4px solid var(--th-quote-edge);border-radius:0 var(--cs-radius-sm) var(--cs-radius-sm) 0;background:var(--cs-soft);color:var(--cs-text)}:where(.prose) blockquote>:last-child{margin-bottom:0}:where(.prose) :where(img,video,svg,canvas){max-width:100%}:where(.prose) :where(img,video){height:auto}:where(.prose) :where(p,figure)>img,:where(.prose) p>a>img{border-radius:var(--cs-radius-sm);vertical-align:middle}:where(.prose) figure{margin:0 0 1.4em}:where(.prose) figcaption{margin-top:8px;color:var(--cs-text-2);font-size:14px;text-align:center}:where(.prose) iframe{max-width:100%;border-radius:var(--cs-radius-sm)}:where(.prose) iframe:is([src*="youtube.com"],[src*="youtube-nocookie.com"],[src*="youtu.be"],[src*="player.vimeo.com"]){display:block;width:100%;height:auto;aspect-ratio:16 / 9;margin:0 0 1.4em;border:0}:where(.prose) .demo{margin:1.5em 0}:where(.prose) table{display:block;max-width:100%;margin:0 0 1.4em;overflow-x:auto;border-collapse:collapse;font-size:16px;line-height:1.7}:where(.prose) :where(th,td){padding:10px 14px;border:1px solid var(--cs-line-2);text-align:left;vertical-align:top}:where(.prose) th{background:var(--cs-section);font-weight:700}:where(.prose,.index-body) :not(pre)>code{padding:.12em .42em;border:1px solid var(--cs-line);border-radius:6px;background:var(--th-code-inline-bg);color:var(--cs-text);font-family:var(--th-font-mono);font-size:.86em;overflow-wrap:anywhere}:where(.prose) a>code{color:inherit}:where(.prose) pre{margin:0 0 1.4em;padding:16px 20px;overflow-x:auto;border:var(--cs-size-border) solid var(--th-code-border);border-radius:var(--cs-radius-tile);background:var(--th-code-bg);color:var(--cs-text);font-family:var(--th-font-mono);font-size:14.5px;line-height:1.75;-moz-tab-size:2;tab-size:2}:where(.prose) pre code{font-family:inherit;font-size:inherit}.prose div[class*=language-]{position:relative;margin:0 0 1.4em;border:var(--cs-size-border) solid var(--th-code-border);border-radius:var(--cs-radius-tile);background:var(--th-code-bg)}.prose div[class*=language-] pre{margin:0;padding:18px 0;overflow-x:auto;border:0;border-radius:inherit;background:transparent;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;overflow-wrap:normal;-webkit-hyphens:none;hyphens:none}.prose div[class*=language-] code{display:block;width:fit-content;min-width:100%;padding:0 22px;color:var(--cs-text)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}html.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span[style*="--shiki-light:#E36209" i]{color:#b35000}html.dark .vp-code span[style*="--shiki-dark:#6A737D" i]{color:#8b949e}.prose div[class*=language-]>span.lang{position:absolute;top:4px;right:14px;z-index:2;color:var(--th-code-lang);font-family:var(--th-font-mono);font-size:12px;-webkit-user-select:none;user-select:none;transition:opacity .2s}.prose div[class*=language-]>button.copy{position:absolute;top:6px;right:6px;z-index:3;width:var(--cs-size-tap);height:var(--cs-size-tap);padding:0;border:var(--cs-size-border) solid var(--cs-line-2);border-radius:var(--cs-radius-sm);background:var(--th-surface);color:var(--cs-text-2);cursor:pointer;opacity:0;transition:opacity .2s,background-color .2s}.prose div[class*=language-]>button.copy:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-color:currentColor;-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' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='11' height='11' rx='2'/%3E%3Cpath d='M5 15V6a2 2 0 0 1 2-2h9'/%3E%3C/svg%3E") center / 20px 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' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='11' height='11' rx='2'/%3E%3Cpath d='M5 15V6a2 2 0 0 1 2-2h9'/%3E%3C/svg%3E") center / 20px no-repeat}.prose div[class*=language-]>button.copy.copied:before{-webkit-mask-image: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.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E");mask-image: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.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E")}.prose div[class*=language-]>button.copy.copied:after{content:"已複製";position:absolute;top:50%;right:calc(100% + 6px);padding:2px 8px;border-radius:6px;background:var(--th-btn-face);color:var(--th-btn-text);font-size:12px;font-weight:700;white-space:nowrap;transform:translateY(-50%)}.prose div[class*=language-]:hover>button.copy,.prose div[class*=language-]>button.copy:focus-visible,.prose div[class*=language-]>button.copy.copied{opacity:1}.prose div[class*=language-]:hover>button.copy+span.lang,.prose div[class*=language-]>button.copy:focus-visible+span.lang{opacity:0}@media (hover: none){.prose div[class*=language-]>button.copy{opacity:1}.prose div[class*=language-]>span.lang{display:none}}.prose .vp-code .highlighted{display:inline-block;width:calc(100% + 44px);margin:0 -22px;padding:0 22px;background:var(--cs-soft)}.prose .custom-block{margin:0 0 1.4em;padding:14px 20px;border-left:4px solid var(--th-quote-edge);border-radius:0 var(--cs-radius-sm) var(--cs-radius-sm) 0;background:var(--cs-section)}.prose .custom-block.warning,.prose .custom-block.danger{border-left-color:var(--cs-orange-500)}.prose .custom-block-title{margin:0 0 .4em;font-weight:900}.prose .custom-block>:last-child{margin-bottom:0}.prose details>summary{min-height:var(--cs-size-tap);cursor:pointer;font-weight:700}@font-face{font-family:LigatureSymbols;src:url(https://img.casper.tw/demoFile/css/fonts/normal);src:url(https://img.casper.tw/demoFile/css/fonts/normal?#iefix) format("eot"),url(https://img.casper.tw/demoFile/css/fonts/LigatureSymbols-2.05.eot) format("embedded-opentype"),url(https://img.casper.tw/demoFile/css/fonts/LigatureSymbols-2.05.ttf) format("truetype"),url(https://img.casper.tw/demoFile/css/fonts/LigatureSymbols-2.05.woff) format("woff"),url(https://img.casper.tw/demoFile/css/fonts/LigatureSymbols-2.05.svg#LigatureSymbols) format("svg");font-weight:400}[data-v-5ec9fd8a] .lsf{font-family:LigatureSymbols;font-size:300%;-webkit-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;-ms-text-rendering:optimizeLegibility;-o-text-rendering:optimizeLegibility;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;-ms-font-smoothing:antialiased;-o-font-smoothing:antialiased;font-smoothing:antialiased;-webkit-font-feature-settings:"liga" 1,"dlig" 1;-moz-font-feature-settings:"liga=1, dlig=1";-ms-font-feature-settings:"liga" 1,"dlig" 1;-o-font-feature-settings:"liga" 1,"dlig" 1;font-feature-settings:"liga" 1,"dlig" 1}@font-face{font-family:drangon;src:url(https://img.casper.tw/demoFile/css/fonts/normal);src:url(https://img.casper.tw/demoFile/css/fonts/normal?#iefix) format("eot"),url(https://img.casper.tw/demoFile/css/fonts/icomoon.eot) format("embedded-opentype"),url(https://img.casper.tw/demoFile/css/fonts/icomoon.ttf) format("truetype"),url(https://img.casper.tw/demoFile/css/fonts/icomoon.woff) format("woff"),url(https://img.casper.tw/demoFile/css/fonts/icomoon.svg) format("svg");font-weight:400}[data-v-ec8cd0dc] svg text{fill:red;font-size:10px}[data-v-b857564b] svg text{font-size:10px}[data-v-568a2967] .rect{fill:url(#gradient)}@-webkit-keyframes rotate-568a2967{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}[data-v-568a2967] .pos{-webkit-transform:translate(82px,82px)}[data-v-568a2967] .circle1{background-position:center center;background-repeat:no-repeat;fill:none;stroke-width:1;-webkit-transition:all .5s;stroke:url(#gradient);-webkit-animation:rotate-568a2967 1s infinite linear}[data-v-568a2967] svg:hover .circle1{stroke-width:3}[data-v-ac2d8e51] .stroke{stroke-dashoffset:2000;stroke-dasharray:2000}[data-v-ac2d8e51] .ani{-webkit-animation:circle-draw-ac2d8e51 10s linear infinite}@-webkit-keyframes circle-draw-ac2d8e51{80%{stroke-dashoffset:0}}[data-v-c6058f61] .bar{display:inline-block;width:20px;height:75px;margin-right:3px;background-color:#4169e1}[data-v-47db3ce0] .axis path,[data-v-47db3ce0] .axis line{fill:none;stroke:#708090;shape-rendering:cirspEdges}[data-v-47db3ce0] .axis text{font-size:11px;fill:#999}[data-v-1b6f8ae6] path{stroke:#1e90ff;stroke-width:1;fill:none}[data-v-1b6f8ae6] .axis{font-size:11px;fill:gray}[data-v-1b6f8ae6] .x.axis line{stroke:#d3d3d3}[data-v-1b6f8ae6] .x.axis .minor{stroke-opacity:.5}[data-v-1b6f8ae6] .x.axis path{stroke:#fafafa}[data-v-1b6f8ae6] .y.axis line,[data-v-1b6f8ae6] .y.axis path{fill:none;stroke:#d3d3d3}[data-v-2b8d0a3e] path{stroke:#1e90ff;stroke-width:1;fill:none}[data-v-2b8d0a3e] .axis{font-size:11px;fill:gray}[data-v-2b8d0a3e] .x.axis line{stroke:#d3d3d3}[data-v-2b8d0a3e] .x.axis .minor{stroke-opacity:.5}[data-v-2b8d0a3e] .x.axis path{stroke:#fafafa}[data-v-2b8d0a3e] .y.axis line,[data-v-2b8d0a3e] .y.axis path{fill:none;stroke:#d3d3d3}[data-v-2b8d0a3e] .x.axis text{display:none}[data-v-2b8d0a3e] .demo{position:relative}[data-v-2b8d0a3e] #tooltip{position:absolute;max-width:220px;padding:10px;background-color:#fff;border-radius:2px;box-shadow:0 2px 2px #00000029;pointer-events:none;transition:opacity .2s;opacity:1;font-size:11px}[data-v-2b8d0a3e] #tooltip.hidden{opacity:0}[data-v-dbdd7f20] path{stroke:#1e90ff;stroke-width:1;fill:none}[data-v-dbdd7f20] .axis{font-size:11px;fill:gray}[data-v-dbdd7f20] .x.axis line{stroke:#d3d3d3}[data-v-dbdd7f20] .x.axis .minor{stroke-opacity:.5}[data-v-dbdd7f20] .x.axis path{stroke:#fafafa}[data-v-dbdd7f20] .y.axis line,[data-v-dbdd7f20] .y.axis path{fill:none;stroke:#d3d3d3}[data-v-dbdd7f20] .x.axis text{display:none}[data-v-dbdd7f20] .demo{position:relative}[data-v-dbdd7f20] #tooltip{position:absolute;max-width:220px;padding:10px;background-color:#fff;border-radius:2px;box-shadow:0 2px 2px #00000029;pointer-events:none;transition:opacity .2s;opacity:1;font-size:11px}[data-v-dbdd7f20] #tooltip.hidden{opacity:0}[data-v-1d21d9e7] svg{background:#000}[data-v-1d21d9e7] rect{fill:none;pointer-events:all}[data-v-1d21d9e7] circle{fill:none;stroke-width:2px}[data-v-c8bd5dca] path{stroke:#fff}[data-v-db2bd060] .axis path,[data-v-db2bd060] .axis line{fill:none;stroke:#000;shape-rendering:cirspEdges}[data-v-db2bd060] .axis text{font-size:11px}[data-v-717478cb] .player{background-color:#000;width:540px;padding:20px;border-radius:2px}[data-v-717478cb] .player circle{fill:none}[data-v-717478cb] path{stroke:#1e90ff;fill:none}[data-v-717478cb] .visual{float:left}[data-v-717478cb] .playlist{float:right;width:200px;height:300px;overflow-y:auto}[data-v-717478cb] .playlist a{color:#fff;display:block;cursor:pointer}[data-v-717478cb] .playlist a.selected{color:#00bfff}[data-v-717478cb] .controller{clear:both}[data-v-a1de3ca0] .player{background-color:#000;width:540px;padding:20px;border-radius:2px}[data-v-a1de3ca0] .player circle{fill:none}[data-v-a1de3ca0] path{stroke:#1e90ff;fill:none}[data-v-a1de3ca0] .visual{float:left}[data-v-a1de3ca0] .playlist{float:right;width:200px;height:300px;overflow-y:auto}[data-v-a1de3ca0] .playlist a{color:#fff;display:block;cursor:pointer}[data-v-a1de3ca0] .playlist a.selected{color:#00bfff}[data-v-a1de3ca0] .controller{clear:both}[data-v-b8bc33ba] .axis{font-size:11px;fill:gray}[data-v-b8bc33ba] svg{font-size:11px}[data-v-b8bc33ba] .demo{position:relative}[data-v-b8bc33ba] #tooltip{position:absolute;max-width:220px;padding:10px;background-color:#fff;border-radius:2px;box-shadow:0 2px 2px #00000029;pointer-events:none;transition:opacity .2s;opacity:1;font-size:11px}[data-v-b8bc33ba] #tooltip.hidden{opacity:0}[data-v-f78df91c] path{stroke:#fff;fill-rule:evenodd}[data-v-f78df91c] .demo{position:relative}[data-v-f78df91c] #tooltip{position:absolute;max-width:220px;padding:10px;background-color:#fff;border-radius:2px;box-shadow:0 2px 2px #00000029;pointer-events:none;transition:opacity .2s;opacity:1;font-size:11px}[data-v-f78df91c] #tooltip.hidden{opacity:0}[data-v-8342858f] canvas{border:1px rgba(255,255,255,.5) solid}[data-v-146e6fdb] input[type=range]{width:50%}[data-v-146e6fdb] canvas{margin:0 auto;border:1px solid #E80C7A}[data-v-a0317c20] .padding{padding:20px}[data-v-cbd8caec] .naruto{background-image:url(https://img.casper.tw/images/narutoR.png?1372854973);background-color:orange;background-repeat:no-repeat;width:107px;height:207px;background-size:cover;margin:0 auto}[data-v-cbd8caec] .box-wrap{height:350px;border:1px dashed red}[data-v-cbd8caec] .d0116 .table{display:table;width:100%}[data-v-cbd8caec] .d0116 .table-cell{display:table-cell;vertical-align:middle}[data-v-cbd8caec] .vertical-center{position:relative;top:50%;margin:0 auto;transform:translateY(-50%)}[data-v-cbd8caec] .flex-center{display:flex;align-items:center;justify-content:center}[data-v-fadeef9f] .blue{color:#00f}[data-v-fadeef9f] ul.green li ul li{color:green}[data-v-fadeef9f] ul.green li ul li.blue{color:orange}[data-v-fadeef9f] .demo,[data-v-fadeef9f] .demo2{border:1px dashed orange;padding:15px}[data-v-fadeef9f] .demo2 .blue.blue.blue.blue.blue.blue.blue.blue.blue.blue{color:#00f}[data-v-2650f987] .mode{background-color:#eee;color:#333}[data-v-2650f987] .text-mode:after{content:"light"}@media (prefers-color-scheme: dark){[data-v-2650f987] .mode{background-color:#333;color:#eee}[data-v-2650f987] .text-mode:after{content:"dark"}}[data-v-2650f987] .card{--theme-primary: #6222ee;--theme-background: #eee}[data-v-2650f987] .card{margin:0 auto;padding:15px;text-align:center;max-width:320px;border-radius:3px;border:1px solid #777;background-color:var(--theme-background);color:var(--theme-primary)}@media (prefers-color-scheme: dark){[data-v-2650f987] .card{--theme-primary: #bb85fc;--theme-background: #111}}[data-v-5e7e9a40] .d-flex{display:flex;flex-wrap:wrap;align-items:center;justify-content:center}[data-v-5e7e9a40] .box{height:80px;width:80px;margin:3px;display:flex;justify-content:center;align-items:center}[data-v-5e7e9a40] .bg-gray{background-color:#ccc}[data-v-5e7e9a40] .border-2{border:2px solid #00cc99}[data-v-5e7e9a40] .radius{border-radius:24px}[data-v-5e7e9a40] .radius-6-12-24-48{border-radius:6px 12px 24px 48px}[data-v-5e7e9a40] .radius-circle{border-radius:200px}[data-v-5e7e9a40] .radius-oval{border-radius:50%}[data-v-5e7e9a40] .border-4{border:4px solid #00cc99}[data-v-5e7e9a40] .border-dotted{border-style:dotted}[data-v-5e7e9a40] .border-dashed{border-style:dashed}[data-v-5e7e9a40] .border-solid{border-style:solid}[data-v-5e7e9a40] .border-double{border-style:double}[data-v-5e7e9a40] .border-groove{border-style:groove}[data-v-5e7e9a40] .border-ridge{border-style:ridge}[data-v-5e7e9a40] .border-inset{border-style:inset}[data-v-5e7e9a40] .border-outset{border-style:outset}[data-v-5e7e9a40] .border-mix{border-style:dotted dashed solid double}[data-v-5e7e9a40] .demo-navbar{background-color:#fff;box-shadow:0 3px 3px #00000029;padding:0 30px;justify-content:center}[data-v-5e7e9a40] a.demo-item{display:block;padding:10px 15px}[data-v-5e7e9a40] a.demo-item:hover{border-bottom:3px solid #00cc99;text-decoration:none}[data-v-5e7e9a40] .demo-navbar-update{padding:0 27px}[data-v-5e7e9a40] .demo-navbar-update .demo-item{border-bottom:3px solid transparent}[data-v-5e7e9a40] .demo-navbar-update2 a.demo-item:hover{border-bottom:0;box-shadow:0 -3px #0c9 inset}[data-v-5e7e9a40] .left-border{width:0;height:0;margin:0 auto;border-right:orange 20px solid;border-bottom:blue 20px solid}[data-v-5e7e9a40] .arrow{width:0;height:0;margin:0 auto;border-top:red 20px solid;border-right:orange 20px solid;border-bottom:blue 20px solid;border-left:green 20px solid}[data-v-5e7e9a40] .message-box{background:#0c9;color:#fff;padding:10px;border-radius:5px;position:relative}[data-v-5e7e9a40] .message-box:after{content:"";width:0;height:0;position:absolute;left:10px;bottom:-20px;border:transparent 10px solid;border-top-color:#0c9}[data-v-5e7e9a40] .border-multi{border:5px solid red;box-shadow:0 0 0 5px orange,0 0 0 10px #ff0,0 0 0 15px green,0 0 0 20px #00f;margin:25px}[data-v-5e7e9a40] .border-top-left-radius{border-top-left-radius:10px 100px}[data-v-5e7e9a40] .border-2-size{border-radius:15px/100px}[data-v-5e7e9a40] .ink-box{width:150px;height:150px;background:#fff;border:solid black 1px;display:flex;justify-content:center;align-items:center;border-width:2px 3px 2px 5px;border-radius:90% 6% 93% 5%/5% 94% 7% 95%;font-family:Caveat;transform:rotate(2deg)}[data-v-5e7e9a40] .ink-box-double{border:dashed black 2px}[data-v-5e7e9a40] .box-inner{transform:rotate(-2deg)}[data-v-1169e622] .box{height:100px;background-color:#69f0ae}[data-v-1169e622] .form-row>.col,[data-v-1169e622] .form-row>[class*=col-]{padding-right:5px;padding-left:5px}[data-v-1169e622] .form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}[data-v-42b83940] .box{height:100px;background-color:#69f0ae;display:flex;justify-content:center;align-items:center}[data-v-42b83940] .casper{--bg-color: orange}[data-v-42b83940] .ming{--bg-color: skyblue}[data-v-42b83940] .custom-box .box{background-color:var(--bg-color)}[data-v-42b83940] .border .box{border:1px solid #4bc187}[data-v-72a09a42] .box{height:400px!important;width:100%!important}[data-v-72a09a42] .object-cover{object-fit:cover}[data-v-72a09a42] .background-cover{background-position:center center;background-size:cover}[data-v-72a09a42] .object-bottom{object-position:right bottom}[data-v-eb02430c] .demo{padding:30px}[data-v-eb02430c] .box{height:400px!important;width:100%!important;display:flex;justify-content:center;align-items:center;color:#fff;border:1px solid rgba(255,255,255,.15)}[data-v-eb02430c] .object-cover{object-fit:cover}[data-v-eb02430c] .background-cover{background-position:center center;background-size:cover}[data-v-eb02430c] .object-bottom{object-position:right bottom}[data-v-eb02430c] .filter.box{position:relative;overflow:hidden;z-index:1}[data-v-eb02430c] .filter.box:after{content:"";background-position:center center;background-size:cover;position:absolute;top:-30px;bottom:-30px;left:-30px;right:-30px;background-image:url(https://images.unsplash.com/photo-1602251627070-6a9bab4e420e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1355&q=80);filter:blur(5px);z-index:-1}[data-v-eb02430c] .backdrop-blur{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}[data-v-eb02430c] .absolute{position:absolute;color:#fff;text-align:center;left:0;right:0}[data-v-eb02430c] .backdrop-invert{transition:1s all}[data-v-eb02430c] .backdrop-invert:hover{background-color:#00000040;-webkit-backdrop-filter:invert(80%);backdrop-filter:invert(80%)}[data-v-0732277e] .demo-1 a{background-color:red}[data-v-0732277e] .demo-1 .a-link{background-color:#ff0}[data-v-0732277e] .demo-1 .a-link-color{color:#000}[data-v-0732277e] #a-link{background-color:pink}[data-v-0732277e] .b-link{background:#00f}[data-v-0732277e] .demo-2 [href],[data-v-0732277e] .demo-3 [href="https://www.apple.com/"],[data-v-0732277e] .demo-4 [href*=google],[data-v-0732277e] .demo-5 [href^=https],[data-v-0732277e] .demo-6 [href$="/tw/"]{color:red}[data-v-0732277e] .demo-7 input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid red;width:1rem;height:1rem}[data-v-0732277e] .demo-7 input[type=checkbox]:checked{background:red}[data-v-0732277e] .outline{outline:solid red 2px}[data-v-0732277e] .card-bg{height:200px;background-position:center center;background-size:cover}[data-v-8fc7f42b] .article img{border:orange 1px solid}[data-v-2e291e52] .box{height:100px;width:100px;background-color:var(--casper-color, #00cc99)}[data-v-2e291e52] .local{--casper-color: orange}[data-v-adcdac0f] .box{height:100px;width:100px;display:inline-block;background-color:orange}[data-v-adcdac0f] .rotate{animation-name:rotate-keyframe-adcdac0f;animation-duration:3s;animation-iteration-count:infinite;animation-timing-function:linear}[data-v-adcdac0f] .move{animation-name:move-object-adcdac0f;animation-duration:1.5s;animation-iteration-count:infinite;animation-timing-function:linear}@keyframes rotate-keyframe-adcdac0f{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes move-object-adcdac0f{0%{transform:translate(0)}to{transform:translate(200%)}}@keyframes rotate-keyframe{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes move-object{0%{transform:translate(0)}to{transform:translate(200%)}}.row[data-v-eda1f9b9]{display:grid;gap:.5rem .75rem}@media (min-width: 992px){.row[data-v-eda1f9b9]{grid-template-columns:repeat(2,minmax(0,1fr))}}.col label[data-v-eda1f9b9]{display:block}.form-select[data-v-eda1f9b9]{width:100%}.my-3[data-v-eda1f9b9]{margin-block:1rem}
