/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:"Inter Variable", "Inter", system-ui, -apple-system, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--tracking-tight:-.025em;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--shadow-sm:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-accent:#7c6aff;--color-accent-hover:#9585ff}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.top-3{top:calc(var(--spacing) * 3)}.top-10{top:calc(var(--spacing) * 10)}.isolate{isolation:isolate}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.flex-shrink,.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.bg-accent{background-color:var(--color-accent)}.text-accent-hover{color:var(--color-accent-hover)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:dark;--bg:#0d0d14;--surface:#131323d9;--surface-solid:#13131f;--surface-2:#1a1a30e6;--border:#ffffff12;--border-hover:#7c6aff73;--border-accent:#7c6aff40;--text-1:#eaeaf4;--text-2:#88a;--text-3:#55556e;--accent:#7c6aff;--accent-hover:#9585ff;--accent-text:#9585ff;--accent-dim:#7c6aff26;--accent-glow:#7c6aff40;--green-status:#22c55e;--green-wa:#25d366;--blue-li:#0a66c2;--shadow-sm:0 2px 8px #00000059;--shadow-md:0 4px 24px #00000073;--shadow-lg:0 8px 40px #0000008c;--shadow-glow:0 0 48px #7c6aff33;--blur-glass:16px;--ease:cubic-bezier(.4, 0, .2, 1);--dur-fast:.15s;--dur-base:.2s;--dur-slow:.25s;--dur-reveal:.55s;--lift:translateY(-1px);--lift-card:translateY(-4px);--font-sans:"Inter Variable", "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:ui-monospace, Menlo, Consolas, monospace;--fs-hero:clamp(3.5rem, 10vw, 7rem);--fs-title:clamp(1.75rem, 4vw, 2.5rem);--fs-headline:clamp(1rem, 2.5vw, 1.3rem);--fs-lead:clamp(1rem, 2vw, 1.15rem);--fs-body:.975rem;--fs-sm:.875rem;--fs-meta:.78rem;--fs-chip:.7rem;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--fw-black:800;--tracking-hero:-.04em;--tracking-title:-.025em;--tracking-tight:-.02em;--tracking-label:.12em;--tracking-chip:.01em;--lh-tight:.95;--lh-title:1.15;--lh-body:1.65;--lh-relax:1.75;--container-max:1120px;--container-pad:clamp(1.25rem, 5vw, 2.5rem);--section-pad:clamp(4rem, 10vw, 7rem);--header-h:64px;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:2.5rem;--space-8:3rem;--gap-bento:.875rem;--gap-chip:.35rem;--radius-sm:.4rem;--radius-md:.6rem;--radius-lg:1rem;--radius-pill:9999px}[data-theme=light]{color-scheme:light;--bg:#f6f6fc;--surface:#ffffffd9;--surface-solid:#fff;--surface-2:#f2f2fce6;--border:#00000012;--border-hover:#7c6aff73;--border-accent:#7c6aff33;--text-1:#14142a;--text-2:#55557a;--text-3:#9898b8;--accent:#6054e8;--accent-hover:#7c6aff;--accent-text:#6054e8;--accent-dim:#6054e81a;--accent-glow:#6054e826;--shadow-sm:0 2px 8px #00000014;--shadow-md:0 4px 24px #0000001a;--shadow-lg:0 8px 40px #0000001f;--shadow-glow:0 0 48px #6054e81f}*,:before,:after{box-sizing:border-box;margin:0}html{scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--border) transparent}body{font-family:var(--font-sans);background-color:var(--bg);color:var(--text-1);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color var(--dur-slow) ease,color var(--dur-slow) ease;overflow-x:hidden}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius-pill)}::-webkit-scrollbar-thumb:hover{background:var(--accent-dim)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}::selection{background:var(--accent);color:#fff}a{color:inherit;text-decoration:none}img,video{max-width:100%;height:auto;display:block}.text-1{color:var(--text-1)}.text-2{color:var(--text-2)}.text-3{color:var(--text-3)}.gradient-text{background:linear-gradient(135deg,var(--text-1) 30%,var(--accent-hover) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.glass{background:var(--surface);-webkit-backdrop-filter:blur(var(--blur-glass));border:1px solid var(--border);border-radius:var(--radius-lg);transition:border-color var(--dur-base) var(--ease),box-shadow var(--dur-base) var(--ease),transform var(--dur-base) var(--ease),background var(--dur-base) var(--ease)}.glass:hover{border-color:var(--border-hover);box-shadow:var(--shadow-md),0 0 32px var(--accent-glow);transform:translateY(-2px)}.section{padding-block:var(--section-pad)}section[id],[id=hero]{scroll-margin-top:calc(var(--header-h) + 8px)}.container{width:100%;max-width:var(--container-max);padding-inline:var(--container-pad);margin-inline:auto}.reveal{opacity:1}@media(prefers-reduced-motion:no-preference){.reveal{transition:transform var(--dur-reveal) var(--ease);transform:translateY(16px)}.reveal.visible{transform:none}.reveal[data-delay="1"]{transition-delay:80ms}.reveal[data-delay="2"]{transition-delay:.16s}.reveal[data-delay="3"]{transition-delay:.24s}.reveal[data-delay="4"]{transition-delay:.32s}.reveal[data-delay="5"]{transition-delay:.4s}.reveal[data-delay="6"]{transition-delay:.48s}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.reveal{opacity:1;transition:none;transform:none}}.chip{font-size:var(--fs-chip);font-weight:var(--fw-medium);letter-spacing:var(--tracking-chip);border-radius:var(--radius-pill);background:var(--accent-dim);color:var(--accent-hover);border:1px solid var(--border-accent);white-space:nowrap;align-items:center;padding:.2rem .65rem;display:inline-flex}.section-label{font-size:var(--fs-chip);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--accent);margin-bottom:.75rem}.section-title{font-size:var(--fs-title);font-weight:var(--fw-bold);letter-spacing:var(--tracking-title);color:var(--text-1);line-height:var(--lh-title)}.offline-note{color:var(--text-3);align-items:center;gap:.4rem;margin-top:.6rem;font-size:.8rem;display:inline-flex}.offline-note:before{content:"";background:var(--green-status);border-radius:50%;flex-shrink:0;width:6px;height:6px}.btn{font-size:.9rem;font-weight:var(--fw-semibold);border-radius:var(--radius-md);cursor:pointer;white-space:nowrap;border:1px solid #0000;align-items:center;gap:.5rem;max-width:100%;padding:.625rem 1.375rem;font-family:inherit;text-decoration:none;transition:all .18s;display:inline-flex}@media(pointer:coarse){.btn{padding-block:.75rem}}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 2px 12px var(--accent-glow)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);box-shadow:0 4px 20px var(--accent-glow);transform:var(--lift)}.btn-secondary{color:var(--text-1);border-color:var(--border);background:0 0}.btn-secondary:hover{border-color:var(--border-hover);background:var(--surface);transform:var(--lift)}.form-field{width:100%;color:var(--text-1);background:var(--surface-solid);border:1px solid var(--border);border-radius:var(--radius-md);box-sizing:border-box;outline:none;padding:.7rem .85rem;font-family:inherit;font-size:.9rem;transition:border-color .15s}.form-field:focus{border-color:var(--border-hover)}select.form-field{cursor:pointer}@media(max-width:560px){.form-field{font-size:1rem}}.listing-list{flex-direction:column;gap:1.25rem;display:flex}.markdown-content h2{letter-spacing:-.01em;color:var(--text-1);scroll-margin-top:calc(var(--header-h) + 1.5rem);margin-top:2.5rem;margin-bottom:.75rem;font-size:1.3rem;font-weight:700}.markdown-content h2:first-child{margin-top:0}.markdown-content p{color:var(--text-2);margin-block:.85rem;font-size:.96rem;line-height:1.7}.markdown-content ul,.markdown-content ol{color:var(--text-2);margin-block:.85rem;padding-left:1.4rem;font-size:.96rem;line-height:1.7}.markdown-content li{margin-block:.3rem}.markdown-content code{font-family:var(--font-mono);background:var(--accent-dim);color:var(--accent-hover);border-radius:.3em;padding:.15em .4em;font-size:.85em}.markdown-content pre{background:var(--surface-solid);border:1px solid var(--border);border-radius:var(--radius-md);margin-block:.6rem 1.25rem;padding:1rem 1.1rem;font-size:.85rem;line-height:1.6;position:relative;overflow-x:auto}.markdown-content pre code{color:var(--text-1);font-size:inherit;background:0 0;border-radius:0;padding:0}.markdown-content a{color:var(--accent);text-underline-offset:2px;font-weight:600;text-decoration:underline}.markdown-content a:hover{color:var(--accent-hover)}.markdown-content strong{color:var(--text-1);font-weight:700}.markdown-content .copy-btn{font-size:.72rem;font-weight:600;font-family:var(--font-sans);color:var(--text-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;opacity:0;align-items:center;gap:.35rem;padding:.3rem .6rem;transition:opacity .15s,color .15s,border-color .15s;display:inline-flex;position:absolute;top:.5rem;right:.5rem}.markdown-content pre:hover .copy-btn,.markdown-content .copy-btn:focus-visible{opacity:1}.markdown-content .copy-btn:hover{color:var(--text-1);border-color:var(--border-hover)}.markdown-content .copy-btn[data-copied=true]{color:var(--accent);border-color:var(--border-accent)}@media(pointer:coarse){.markdown-content .copy-btn{opacity:1}}.py-runner{margin-top:.6rem}.py-runner-bar{background:var(--surface-solid);border:1px solid var(--border);border-radius:var(--radius-md) var(--radius-md) 0 0;border-bottom:none;justify-content:space-between;align-items:center;gap:.75rem;padding:.5rem .75rem;display:flex}.py-runner-label{color:var(--text-3);text-transform:uppercase;letter-spacing:.04em;font-size:.76rem;font-weight:600}.py-runner-actions{gap:.5rem;display:inline-flex}.py-runner-run,.py-runner-reset{border-radius:var(--radius-sm);cursor:pointer;padding:.3rem .75rem;font-family:inherit;font-size:.8rem;font-weight:600;transition:all .15s}.py-runner-run{background:var(--accent);color:#fff;border:1px solid var(--accent)}.py-runner-run:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.py-runner-run:disabled{opacity:.6;cursor:wait}.py-runner-reset{color:var(--text-2);border:1px solid var(--border);background:0 0}.py-runner-reset:hover{color:var(--text-1);border-color:var(--border-hover)}.py-runner-output{max-height:320px;overflow:auto;border-radius:0 0 var(--radius-md) var(--radius-md)!important;color:#d8f5d8!important;background:#0d0d14!important;border-top:none!important;margin:0!important}.py-runner-output code{white-space:pre-wrap;word-break:break-word;color:inherit!important;background:0 0!important;padding:0!important}.py-runner-output[data-has-error=true] code{color:#ffb4b4!important}.py-runner-status{color:var(--text-3);min-height:1.1em;margin:.4rem 0 0;font-size:.8rem}.py-runner-status[data-tone=error]{color:#ff8a8a}@media print{.no-print,#scroll-progress,#floating-buttons,.py-runner,nav,header{display:none!important}body{color:#000;background:#fff;font-size:11pt}a:after{content:" (" attr(href) ")";color:#555;font-size:9pt}.glass{-webkit-backdrop-filter:none;backdrop-filter:none;background:#f8f8f8;border:1px solid #ddd}.section{padding-block:1.5rem}.markdown-content pre{white-space:pre-wrap;word-break:break-word;border:1px solid #ccc}.markdown-content .copy-btn{display:none!important}}html:has([data-catalog-root]){scroll-padding-top:calc(var(--header-h) + var(--tb-h,5rem) + 1rem)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}.theme-btn[data-astro-cid-lfoluaxz]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:.5rem;border:1px solid var(--border);background:transparent;color:var(--text-2);cursor:pointer;transition:border-color .2s,color .2s,background .2s;flex-shrink:0}.theme-btn[data-astro-cid-lfoluaxz]:hover{border-color:var(--border-hover);color:var(--text-1);background:var(--surface)}:root[data-theme=dark] .icon-sun[data-astro-cid-lfoluaxz]{display:block}:root[data-theme=dark] .icon-moon[data-astro-cid-lfoluaxz]{display:none}:root[data-theme=light] .icon-sun[data-astro-cid-lfoluaxz]{display:none}:root[data-theme=light] .icon-moon[data-astro-cid-lfoluaxz]{display:block}.icon-sun[data-astro-cid-lfoluaxz]{display:block}.icon-moon[data-astro-cid-lfoluaxz]{display:none}.search-trigger[data-astro-cid-ntpb6bp7]{display:flex;align-items:center;gap:.5rem;height:36px;padding:0 .65rem;border-radius:.5rem;border:1px solid var(--border);background:transparent;color:var(--text-2);cursor:pointer;transition:border-color .2s,color .2s,background .2s;flex-shrink:0}.search-trigger[data-astro-cid-ntpb6bp7]:hover{border-color:var(--border-hover);color:var(--text-1);background:var(--surface)}.search-trigger-label[data-astro-cid-ntpb6bp7]{font-size:.85rem;font-weight:500}.search-trigger-kbd[data-astro-cid-ntpb6bp7]{font-family:var(--font-sans);font-size:.68rem;font-weight:600;letter-spacing:.02em;color:var(--text-3);border:1px solid var(--border);border-radius:.3rem;padding:.1rem .35rem;line-height:1.3}@media(max-width:640px){.search-trigger[data-astro-cid-ntpb6bp7]{width:36px;padding:0;justify-content:center}.search-trigger-label[data-astro-cid-ntpb6bp7],.search-trigger-kbd[data-astro-cid-ntpb6bp7]{display:none}}.search-backdrop[data-astro-cid-ntpb6bp7]{position:fixed;inset:0;z-index:320;display:flex;align-items:flex-start;justify-content:center;padding:4.5rem 1.25rem 1.25rem;background:#05050c99;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);opacity:0;pointer-events:none;transition:opacity .2s ease}.search-backdrop[data-astro-cid-ntpb6bp7].is-open{opacity:1;pointer-events:auto}.search-panel[data-astro-cid-ntpb6bp7]{width:100%;max-width:560px;max-height:min(70svh,640px);display:flex;flex-direction:column;border-color:var(--border-accent);box-shadow:var(--shadow-lg),0 0 70px -10px var(--accent-glow);transform:translateY(-10px) scale(.98);transition:transform .22s cubic-bezier(.4,0,.2,1);overflow:hidden}.search-backdrop[data-astro-cid-ntpb6bp7].is-open .search-panel[data-astro-cid-ntpb6bp7]{transform:translateY(0) scale(1)}.search-input-row[data-astro-cid-ntpb6bp7]{display:flex;align-items:center;gap:.65rem;padding:.9rem 1rem;border-bottom:1px solid var(--border);flex-shrink:0}.search-input-icon[data-astro-cid-ntpb6bp7]{color:var(--text-3);flex-shrink:0}.search-input[data-astro-cid-ntpb6bp7]{flex:1;min-width:0;border:none;background:transparent;color:var(--text-1);font-size:.95rem;font-family:var(--font-sans);outline:none}.search-input[data-astro-cid-ntpb6bp7]::placeholder{color:var(--text-3)}.search-close-btn[data-astro-cid-ntpb6bp7]{width:30px;height:30px;flex-shrink:0;border-radius:.45rem;border:1px solid var(--border);background:transparent;color:var(--text-2);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .15s,border-color .15s}.search-close-btn[data-astro-cid-ntpb6bp7]:hover{color:var(--text-1);border-color:var(--border-hover)}.search-status[data-astro-cid-ntpb6bp7]{margin:0;padding:.9rem 1.1rem;font-size:.85rem;color:var(--text-2);line-height:1.6}.search-status[data-astro-cid-ntpb6bp7]:empty{display:none}.search-results[data-astro-cid-ntpb6bp7]{list-style:none;margin:0;padding:.4rem;overflow-y:auto;flex:1;min-height:0}.search-results[data-astro-cid-ntpb6bp7]:empty{display:none}.search-hint-row[data-astro-cid-ntpb6bp7]{display:flex;gap:1rem;padding:.6rem 1.1rem;border-top:1px solid var(--border);font-size:.72rem;color:var(--text-3);flex-shrink:0}.search-hint-row[data-astro-cid-ntpb6bp7] kbd[data-astro-cid-ntpb6bp7]{font-family:var(--font-sans);border:1px solid var(--border);border-radius:.3rem;padding:.05rem .3rem;margin-right:.15rem}@media(max-width:640px){.search-backdrop[data-astro-cid-ntpb6bp7]{padding:1.25rem}.search-hint-row[data-astro-cid-ntpb6bp7] span[data-astro-cid-ntpb6bp7]:nth-child(1){display:none}}.search-results[data-astro-cid-ntpb6bp7] .search-result{margin:0 0 .2rem}.search-results[data-astro-cid-ntpb6bp7] .search-result:last-child{margin-bottom:0}.search-results[data-astro-cid-ntpb6bp7] .search-result-link{display:flex;flex-direction:column;gap:.25rem;padding:.65rem .75rem;border-radius:.6rem;color:inherit;text-decoration:none}.search-results[data-astro-cid-ntpb6bp7] .search-result.is-active .search-result-link{background:var(--accent-dim)}.search-results[data-astro-cid-ntpb6bp7] .search-result-head{display:flex;align-items:center;gap:.5rem}.search-results[data-astro-cid-ntpb6bp7] .search-result-title{font-size:.9rem;font-weight:600;color:var(--text-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-results[data-astro-cid-ntpb6bp7] .search-result-type{flex-shrink:0;padding:.1rem .5rem;font-size:.65rem}.search-results[data-astro-cid-ntpb6bp7] .search-result-excerpt{margin:0;font-size:.8rem;color:var(--text-2);line-height:1.5;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.search-results[data-astro-cid-ntpb6bp7] .search-result-excerpt mark{background:var(--accent-dim);color:var(--accent-hover);border-radius:.2rem;padding:0 .1rem}header[data-astro-cid-qlfjksao]{position:fixed;top:0;left:0;right:0;z-index:100;transition:background .25s ease,backdrop-filter .25s ease,box-shadow .25s ease,border-color .25s ease;border-bottom:1px solid transparent}header[data-astro-cid-qlfjksao].scrolled{background:var(--surface);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom-color:var(--border);box-shadow:var(--shadow-sm)}.header-inner[data-astro-cid-qlfjksao]{display:flex;align-items:center;justify-content:space-between;height:64px;gap:1.5rem}.logo[data-astro-cid-qlfjksao]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:.5rem;background:var(--accent);flex-shrink:0;transition:box-shadow .2s ease,transform .2s ease}.logo[data-astro-cid-qlfjksao]:hover{box-shadow:0 0 20px var(--accent-glow);transform:scale(1.05)}.logo-text[data-astro-cid-qlfjksao]{font-size:.8rem;font-weight:800;color:#fff;letter-spacing:.02em}.header-inner[data-astro-cid-qlfjksao]>nav[data-astro-cid-qlfjksao]{display:none}@media(min-width:768px){.header-inner[data-astro-cid-qlfjksao]>nav[data-astro-cid-qlfjksao]{display:block}}.nav-list[data-astro-cid-qlfjksao]{display:flex;list-style:none;gap:.25rem;padding:0;margin:0}.nav-link[data-astro-cid-qlfjksao]{display:block;padding:.375rem .75rem;font-size:.875rem;font-weight:500;color:var(--text-2);border-radius:.5rem;transition:color .15s,background .15s;position:relative}.nav-link[data-astro-cid-qlfjksao]:hover,.nav-link[data-astro-cid-qlfjksao].active{color:var(--text-1);background:var(--accent-dim)}.nav-link[data-astro-cid-qlfjksao].active{color:var(--accent)}.header-actions[data-astro-cid-qlfjksao]{display:flex;align-items:center;gap:.75rem}.menu-btn[data-astro-cid-qlfjksao]{display:flex;flex-direction:column;justify-content:center;gap:5px;width:36px;height:36px;padding:.5rem;border:1px solid var(--border);border-radius:.5rem;background:transparent;cursor:pointer;transition:border-color .2s}.menu-btn[data-astro-cid-qlfjksao]:hover{border-color:var(--border-hover)}.bar[data-astro-cid-qlfjksao]{display:block;height:1.5px;width:100%;background:var(--text-2);border-radius:2px;transition:transform .25s ease,opacity .25s ease}.menu-btn[data-astro-cid-qlfjksao][aria-expanded=true] .bar[data-astro-cid-qlfjksao]:nth-child(1){transform:translateY(6.5px) rotate(45deg)}.menu-btn[data-astro-cid-qlfjksao][aria-expanded=true] .bar[data-astro-cid-qlfjksao]:nth-child(2){opacity:0}.menu-btn[data-astro-cid-qlfjksao][aria-expanded=true] .bar[data-astro-cid-qlfjksao]:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}@media(min-width:768px){.menu-btn[data-astro-cid-qlfjksao]{display:none}}.mobile-menu[data-astro-cid-qlfjksao]{display:none;padding:1rem 0;border-top:1px solid var(--border);background:var(--surface);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.mobile-menu[data-astro-cid-qlfjksao].open{display:block;max-height:calc(100svh - 64px);overflow-y:auto;overscroll-behavior:contain}@media(min-width:768px){.mobile-menu[data-astro-cid-qlfjksao]{display:none!important}}.mobile-menu[data-astro-cid-qlfjksao] ul[data-astro-cid-qlfjksao]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column}.mobile-nav-link[data-astro-cid-qlfjksao]{display:block;padding:.75rem clamp(1.25rem,5vw,2.5rem);font-size:1rem;font-weight:500;color:var(--text-2);transition:color .15s,background .15s}.mobile-nav-link[data-astro-cid-qlfjksao]:hover{color:var(--text-1);background:var(--accent-dim)}.footer[data-astro-cid-35ed7um5]{border-top:1px solid var(--border);padding-block:2rem;margin-top:2rem}.footer-inner[data-astro-cid-35ed7um5]{display:flex;flex-direction:column;gap:1.5rem}.footer-top[data-astro-cid-35ed7um5]{display:flex;flex-direction:column;gap:1.25rem}@media(min-width:640px){.footer-top[data-astro-cid-35ed7um5]{flex-direction:row;justify-content:space-between;align-items:flex-start}}.footer-brand[data-astro-cid-35ed7um5]{display:flex;flex-direction:column;gap:.5rem}.footer-logo[data-astro-cid-35ed7um5]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:.4rem;background:var(--accent);color:#fff;font-size:.7rem;font-weight:800;letter-spacing:.02em;transition:box-shadow .2s}.footer-logo[data-astro-cid-35ed7um5]:hover{box-shadow:0 0 16px var(--accent-glow)}.footer-tagline[data-astro-cid-35ed7um5]{font-size:.85rem;color:var(--text-3);max-width:36ch}.footer-nav[data-astro-cid-35ed7um5]{display:flex;flex-wrap:wrap;gap:.25rem 1.25rem}.footer-nav[data-astro-cid-35ed7um5] a[data-astro-cid-35ed7um5]{font-size:.85rem;color:var(--text-2);transition:color .15s}.footer-nav[data-astro-cid-35ed7um5] a[data-astro-cid-35ed7um5]:hover{color:var(--text-1)}.footer-legal[data-astro-cid-35ed7um5]{display:flex;align-items:center;gap:.5rem;font-size:.78rem}.footer-legal[data-astro-cid-35ed7um5] a[data-astro-cid-35ed7um5]{color:var(--text-3);transition:color .15s}.footer-legal[data-astro-cid-35ed7um5] a[data-astro-cid-35ed7um5]:hover{color:var(--text-1)}.footer-legal-sep[data-astro-cid-35ed7um5]{color:var(--text-3)}.footer-bottom[data-astro-cid-35ed7um5]{display:flex;flex-direction:column;gap:.75rem;padding-top:1.25rem;border-top:1px solid var(--border)}@media(min-width:640px){.footer-bottom[data-astro-cid-35ed7um5]{flex-direction:row;justify-content:space-between;align-items:center}}.footer-copy[data-astro-cid-35ed7um5]{font-size:.78rem;color:var(--text-3)}.footer-links[data-astro-cid-35ed7um5]{display:flex;gap:.875rem;align-items:center}.footer-links[data-astro-cid-35ed7um5] a[data-astro-cid-35ed7um5]{color:var(--text-3);transition:color .15s}.footer-links[data-astro-cid-35ed7um5] a[data-astro-cid-35ed7um5]:hover{color:var(--text-1)}
