@charset "UTF-8";@font-face{font-family:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/libre-franklin-cyrillic-ext-wght-normal-D7ATVUJA.woff2") format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/libre-franklin-cyrillic-wght-normal-NYK2YPTI.woff2") format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/libre-franklin-vietnamese-wght-normal-BUEOZ5GH.woff2") format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/libre-franklin-latin-ext-wght-normal-BED4ZMJF.woff2") format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url("./media/libre-franklin-latin-wght-normal-OV5L34A6.woff2") format("woff2-variations");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}:root{color-scheme:light;--bg: #ffffff;--bg-elevated: #ffffff;--bg-warm: #f2efe9;--surface: #ffffff;--surface-2: #f7f5f1;--surface-3: #ebe7df;--border: #e4e4e4;--border-strong: #8a8a8a;--text: #1e1e1e;--text-2: #3d3d3d;--text-3: #636363;--brand: #1e1e1e;--brand-strong: #000000;--brand-soft: #f2efe9;--brand-contrast: #ffffff;--focus: #2b7ab1;--success: #157033;--success-soft: #f0fff3;--warning: #8f4c1c;--warning-soft: #fef9c3;--danger: #b23a11;--danger-soft: #ffe7d6;--info: #2b6a9b;--info-soft: #f0f9ff;--tint-yellow: #fef3b0;--tint-orange: #ffd9bd;--tint-purple: #efd9f7;--tint-blue: #c9e6fb;--tint-green: #c8eed2;--tint-gray: #ebebeb;--branch-blue: #2b7ab1;--branch-orange: #c24013;--branch-green: #1f7f3f;--branch-purple: #8a4fa8;--branch-yellow: #a87a00;--branch-gray: #6e6e6e;--shadow-sm: 0 1px 2px rgb(30 30 30 / 6%);--shadow: 0 10px 30px rgb(30 30 30 / 10%);--shadow-header: 0 1px 0 #e4e4e4;--code-bg: #f7f7f7;--code-text: #1e1e1e;--hl-keyword: #b23a11;--hl-string: #157033;--hl-comment: #6e6e6e;--hl-number: #2b6a9b;--hl-title: #7d4b96;--hl-type: #8f4c1c;--hl-attr: #1f6b6b;--hl-meta: #8a5a1c;--sd-client: #5a5a5a;--sd-network: #2b6a9b;--sd-compute: #1e1e1e;--sd-data: #157033;--sd-cache: #b23a11;--sd-messaging: #8f6416;--sd-external: #6e6e6e;--sd-risk: #b23a11;--sd-canvas: #ffffff;--sd-grid: #ebebeb;--btn-primary: #1e1e1e;--btn-primary-hover: #3d3d3d;--btn-primary-text: #ffffff;--font-sans: "Libre Franklin Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--font-display: var(--font-sans);--font-mono: ui-monospace, "Cascadia Code", "JetBrains Mono", SFMono-Regular, Menlo, Consolas, monospace;--font-size-display: 3rem;--font-size-h1: clamp(1.875rem, 1.25rem + 2.4vw, 3rem);--font-size-lead: clamp(1.1875rem, 1.1rem + .45vw, 1.375rem);--font-size-h2: 1.25rem;--font-size-stat: 1.375rem;--font-size-h3: 1.0625rem;--font-size-reading: 1.0625rem;--font-size-base: 1rem;--font-size-sm: .875rem;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 28px;--space-8: 32px;--space-9: 36px;--space-10: 40px;--space-11: 44px;--space-12: 48px;--radius-sm: 8px;--radius: 12px;--radius-lg: 16px;--gutter: 16px;--header-h: 56px;--bottom-nav-h: 64px;--content-max: 1200px;--reading-max: 44rem;--tap: 44px}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg: #121212;--bg-elevated: #181818;--bg-warm: #1c1b19;--surface: #1a1a1a;--surface-2: #222222;--surface-3: #2e2e2e;--border: #333333;--border-strong: #8a8a8a;--text: #f2efe9;--text-2: #d4d4d4;--text-3: #a8a8a8;--brand: #f2efe9;--brand-strong: #ffffff;--brand-soft: #2a2825;--brand-contrast: #121212;--focus: #63bbf9;--success: #65dc8d;--success-soft: #0f2a19;--warning: #f2ba41;--warning-soft: #33280f;--danger: #ff8a63;--danger-soft: #3a1a10;--info: #63bbf9;--info-soft: #0f2639;--tint-yellow: #3a3412;--tint-orange: #3d2416;--tint-purple: #32183d;--tint-blue: #143550;--tint-green: #12361f;--tint-gray: #2e2e2e;--branch-blue: #63bbf9;--branch-orange: #ff8a63;--branch-green: #65dc8d;--branch-purple: #e4acff;--branch-yellow: #f2ba41;--branch-gray: #a8a8a8;--shadow-sm: 0 1px 2px rgb(0 0 0 / 30%);--shadow: 0 10px 30px rgb(0 0 0 / 35%);--shadow-header: 0 1px 0 #333333;--code-bg: #0d0d0d;--code-text: #ececec;--hl-keyword: #ff9f80;--hl-string: #8fe0a8;--hl-comment: #a0a0a0;--hl-number: #8ecdfb;--hl-title: #e4acff;--hl-type: #f2c46b;--hl-attr: #7fd6d0;--hl-meta: #e8c48a;--sd-client: #d4d4d4;--sd-network: #8ecdfb;--sd-compute: #f2efe9;--sd-data: #8fe0a8;--sd-cache: #ffad8a;--sd-messaging: #f2c46b;--sd-external: #b0b0b0;--sd-risk: #ff8a63;--sd-canvas: #181818;--sd-grid: #2a2a2a;--btn-primary: #f2efe9;--btn-primary-hover: #ffffff;--btn-primary-text: #121212}}:root[data-theme=dark]{color-scheme:dark;--bg: #121212;--bg-elevated: #181818;--bg-warm: #1c1b19;--surface: #1a1a1a;--surface-2: #222222;--surface-3: #2e2e2e;--border: #333333;--border-strong: #8a8a8a;--text: #f2efe9;--text-2: #d4d4d4;--text-3: #a8a8a8;--brand: #f2efe9;--brand-strong: #ffffff;--brand-soft: #2a2825;--brand-contrast: #121212;--focus: #63bbf9;--success: #65dc8d;--success-soft: #0f2a19;--warning: #f2ba41;--warning-soft: #33280f;--danger: #ff8a63;--danger-soft: #3a1a10;--info: #63bbf9;--info-soft: #0f2639;--tint-yellow: #3a3412;--tint-orange: #3d2416;--tint-purple: #32183d;--tint-blue: #143550;--tint-green: #12361f;--tint-gray: #2e2e2e;--branch-blue: #63bbf9;--branch-orange: #ff8a63;--branch-green: #65dc8d;--branch-purple: #e4acff;--branch-yellow: #f2ba41;--branch-gray: #a8a8a8;--shadow-sm: 0 1px 2px rgb(0 0 0 / 30%);--shadow: 0 10px 30px rgb(0 0 0 / 35%);--shadow-header: 0 1px 0 #333333;--code-bg: #0d0d0d;--code-text: #ececec;--hl-keyword: #ff9f80;--hl-string: #8fe0a8;--hl-comment: #a0a0a0;--hl-number: #8ecdfb;--hl-title: #e4acff;--hl-type: #f2c46b;--hl-attr: #7fd6d0;--hl-meta: #e8c48a;--sd-client: #d4d4d4;--sd-network: #8ecdfb;--sd-compute: #f2efe9;--sd-data: #8fe0a8;--sd-cache: #ffad8a;--sd-messaging: #f2c46b;--sd-external: #b0b0b0;--sd-risk: #ff8a63;--sd-canvas: #181818;--sd-grid: #2a2a2a;--btn-primary: #f2efe9;--btn-primary-hover: #ffffff;--btn-primary-text: #121212}@media(min-width:768px){:root{--gutter: 28px;--header-h: 68px}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 12px)}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--font-size-base);line-height:1.6;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overflow-x:hidden}h1,h2,h3,h4{line-height:1.15;letter-spacing:-.025em;font-weight:750;margin:0;text-wrap:balance}p{margin:0}a{color:var(--brand);text-underline-offset:2px}img,svg{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:6px}:where(summary){cursor:pointer;border-radius:var(--radius-sm);transition:background-color .15s ease}:where(summary):hover{background-color:color-mix(in srgb,var(--text) 6%,transparent)}::selection{background:color-mix(in srgb,var(--focus) 28%,transparent)}.app-main>:not(router-outlet):not(.app-footer){display:block;min-height:calc(100dvh - var(--header-h) - env(safe-area-inset-top))}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.theme-switching *,.theme-switching *:before,.theme-switching *:after{transition:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.page{width:100%;max-width:var(--content-max);margin:0 auto;padding:var(--space-5) var(--gutter) var(--space-8)}.page--reading{max-width:calc(var(--reading-max) + 2 * var(--gutter))}.page-title{font-size:var(--font-size-h1);font-weight:800;letter-spacing:-.035em;line-height:1.05}.page-subtitle{color:var(--text-2);margin-top:var(--space-1)}.section-title{font-size:var(--font-size-sm);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);margin:var(--space-7) 0 var(--space-3)}.eyebrow{font-size:var(--font-size-sm);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-2)}.muted{color:var(--text-3)}.stack{display:flex;flex-direction:column;gap:var(--space-3)}.row{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.card-link{display:block;color:inherit;text-decoration:none;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.card-link:hover{border-color:var(--text)}.card-link:active{transform:scale(.995)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--tap);padding:0 var(--space-5);border-radius:var(--radius-sm);border:1px solid var(--text);background:transparent;color:var(--text);font-weight:600;font-size:var(--font-size-base);letter-spacing:-.01em;text-decoration:none;cursor:pointer;white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,transform .1s ease;-webkit-user-select:none;user-select:none}.btn:hover:not(:disabled){background:color-mix(in srgb,var(--text) 10%,transparent)}.btn:active:not(:disabled){transform:scale(.985)}.btn:disabled{background:var(--surface-3);border-color:var(--border);color:var(--text-3);cursor:not-allowed}.btn svg{width:18px;height:18px;flex:none}.btn--primary{background:var(--btn-primary);border-color:var(--btn-primary);color:var(--btn-primary-text)}.btn--primary:hover:not(:disabled){background:var(--btn-primary-hover);border-color:var(--btn-primary-hover)}.btn--ghost{background:transparent;border-color:transparent}.btn--ghost:hover:not(:disabled){background:var(--surface-2)}.btn--success{background:var(--success-soft);border-color:var(--success);color:var(--success)}.btn--success:hover:not(:disabled){background:color-mix(in srgb,var(--success-soft) 70%,var(--success) 12%)}.btn--warning{background:var(--warning-soft);border-color:var(--warning);color:var(--warning)}.btn--warning:hover:not(:disabled){background:color-mix(in srgb,var(--warning-soft) 70%,var(--warning) 12%)}.btn--block{width:100%}.btn--icon{width:var(--tap);padding:0}.btn--sm{min-height:var(--tap);padding:0 var(--space-4)}.chip{display:inline-flex;align-items:center;gap:var(--space-2);min-height:var(--tap);padding:0 var(--space-4);border-radius:999px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:var(--font-size-base);font-weight:700;cursor:pointer;white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.chip:hover{background:var(--surface-2)}.chip[aria-pressed=true],.chip[aria-checked=true],.chip.chip--active{background:var(--text);border-color:var(--text);color:var(--bg)}.chip[aria-pressed=true]:hover,.chip[aria-checked=true]:hover,.chip.chip--active:hover{background:var(--text-2);border-color:var(--text-2)}.tag{display:inline-flex;align-items:center;padding:2px var(--space-3);border-radius:999px;background:var(--bg-warm);color:var(--text);font-size:var(--font-size-sm);font-weight:600;line-height:1.5;text-decoration:none}a.tag:hover{background:var(--surface-3)}.input{width:100%;min-height:48px;padding:0 var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--text);background:var(--surface);color:var(--text);font-size:var(--font-size-base)}.input::placeholder{color:var(--text-3)}.input:focus{outline:none;border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--focus) 25%,transparent)}select.input{appearance:none;padding-right:var(--space-9);background-image:linear-gradient(45deg,transparent 50%,var(--text-3) 50%),linear-gradient(135deg,var(--text-3) 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px;background-repeat:no-repeat}.scroll-row{position:relative;display:flex;gap:var(--space-2);overflow-x:auto;scrollbar-width:none;padding-bottom:2px;margin:0 calc(-1 * var(--gutter));padding-inline:var(--gutter);scroll-padding-inline:var(--gutter)}.scroll-row::-webkit-scrollbar{display:none}.scroll-row>*{flex:none}@supports (animation-timeline: scroll()){.scroll-row{-webkit-mask-image:linear-gradient(to right,transparent 0,#000 var(--scroll-fade-start),#000 calc(100% - var(--scroll-fade-end)),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 var(--scroll-fade-start),#000 calc(100% - var(--scroll-fade-end)),transparent 100%);animation:scroll-row-fade linear both;animation-timeline:scroll(self inline)}}@property --scroll-fade-start{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --scroll-fade-end{syntax: "<length>"; inherits: false; initial-value: 0px;}@keyframes scroll-row-fade{0%{--scroll-fade-start: 0px;--scroll-fade-end: 40px}8%,92%{--scroll-fade-start: 40px;--scroll-fade-end: 40px}to{--scroll-fade-start: 40px;--scroll-fade-end: 0px}}kbd{font-family:var(--font-mono);font-size:var(--font-size-sm);padding:1px var(--space-2);border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:5px;background:var(--surface);color:var(--text-2)}.prose{color:var(--text);font-size:var(--font-size-reading);line-height:1.7;overflow-wrap:anywhere}.prose>*+*{margin-top:.9em}.prose>:is(p,ul,ol,blockquote,h1,h2,h3,h4,h5){max-width:70ch}.prose h1,.prose h2,.prose h3,.prose h4,.prose h5{margin-top:1.5em;font-size:var(--font-size-h3);font-weight:700}.prose h4{font-size:var(--font-size-base);color:var(--text)}.prose p,.prose ul,.prose ol{margin-bottom:0}.prose ul,.prose ol{padding-left:1.3em}.prose li+li{margin-top:.35em}.prose li>ul,.prose li>ol{margin-top:.35em}.prose strong{font-weight:700}.prose a{color:var(--text);font-weight:600;text-decoration-thickness:1px;text-underline-offset:2px}.prose a:hover{color:var(--text-2)}.prose blockquote{margin-inline:0;padding:var(--space-4) var(--space-5);border-left:3px solid var(--text);background:var(--bg-warm);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--text)}.prose hr{border:0;border-top:1px solid var(--border)}.prose :not(pre)>code{font-family:var(--font-mono);font-size:.875em;padding:.1em .35em;border-radius:5px;background:var(--surface-2);border:1px solid var(--border);overflow-wrap:break-word}.table-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-sm)}.table-scroll table{border-collapse:collapse;width:100%;min-width:480px;font-size:var(--font-size-sm)}.table-scroll th,.table-scroll td{text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);vertical-align:top}.table-scroll th{background:var(--surface-2);font-weight:700}.table-scroll tr:last-child td{border-bottom:0}.code-block{margin:0;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--code-bg);overflow:hidden}.code-block .code-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);min-height:var(--tap);padding:0 0 0 var(--space-3);border-bottom:1px solid var(--border)}.code-block .code-lang{font-size:var(--font-size-sm);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}.code-block .code-copy{min-width:var(--tap);min-height:var(--tap);padding:0 var(--space-3);border:0;border-radius:var(--radius-sm);background:transparent;color:var(--brand);font-size:var(--font-size-sm);font-weight:700;cursor:pointer}.code-block .code-copy:hover{background:var(--surface-3)}.code-block pre{margin:0;padding:var(--space-3) var(--space-4);overflow-x:auto;-webkit-overflow-scrolling:touch}.code-block code{font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:1.6;color:var(--code-text);white-space:pre;tab-size:2}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-doctag{color:var(--hl-keyword)}.hljs-string,.hljs-regexp,.hljs-template-string,.hljs-addition{color:var(--hl-string)}.hljs-comment,.hljs-quote{color:var(--hl-comment);font-style:italic}.hljs-number,.hljs-variable,.hljs-template-variable,.hljs-symbol,.hljs-bullet{color:var(--hl-number)}.hljs-title,.hljs-title.function_,.hljs-section,.hljs-name{color:var(--hl-title)}.hljs-type,.hljs-built_in,.hljs-title.class_,.hljs-params{color:var(--hl-type)}.hljs-attr,.hljs-attribute,.hljs-property,.hljs-selector-class,.hljs-selector-id{color:var(--hl-attr)}.hljs-meta,.hljs-meta .hljs-keyword{color:var(--hl-meta)}.hljs-deletion{color:var(--danger)}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}@media print{.skip-link,.app-header,.bottom-nav,.app-footer,.no-print{display:none!important}body{background:#fff;color:#000}.app-main{padding:0!important}}
