:root{--font-display:"Geist", system-ui, -apple-system, "Segoe UI", sans-serif;--font-sans:"Geist", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--paper:oklch(0.985 0.006 80);--paper-2:oklch(0.965 0.008 80);--paper-3:oklch(0.935 0.01 80);--ink:oklch(0.18 0.01 60);--ink-2:oklch(0.34 0.01 60);--ink-3:oklch(0.52 0.01 60);--rule:oklch(0.88 0.008 70);--rule-2:oklch(0.78 0.01 70);--accent:oklch(0.36 0.1 255);--accent-2:oklch(0.52 0.11 255);--accent-ink:oklch(0.98 0.01 255);--cat-skills:oklch(0.7 0.13 230);--cat-experience:oklch(0.62 0.13 255);--cat-projects:oklch(0.7 0.13 65);--cat-certifications:oklch(0.68 0.13 320);--cat-education:oklch(0.64 0.13 290);--cat-profdev:oklch(0.72 0.13 160);--cat-blog:oklch(0.7 0.13 100);--cat-contact:oklch(0.7 0.13 40);--cat-writing:var(--cat-blog);--cat-positive:var(--status-ok);--status-ok:oklch(0.68 0.13 145);--status-warn:oklch(0.76 0.13 85);--status-error:oklch(0.62 0.15 25);--status-info:var(--accent);--status-neutral:oklch(0.65 0.02 60);--r-xs:3px;--r-sm:6px;--r-md:10px;--r-lg:16px;--r-xl:24px;--sh-1:0 1px 0 oklch(0 0 0 / 0.04), 0 1px 2px oklch(0 0 0 / 0.04);--sh-2:0 1px 0 oklch(0 0 0 / 0.04), 0 8px 24px -10px oklch(0 0 0 / 0.1);--sh-3:0 2px 0 oklch(0 0 0 / 0.04), 0 24px 60px -20px oklch(0 0 0 / 0.16);--s-1:0.25rem;--s-2:0.5rem;--s-3:0.75rem;--s-4:1rem;--s-5:1.5rem;--s-6:2rem;--s-7:3rem;--s-8:4rem;--s-9:6rem;--s-10:8rem;--ease:cubic-bezier(0.2, 0.7, 0.1, 1);--dur-fast:140ms;--dur:240ms;--dur-slow:520ms;--container:1320px;--grain-opacity:0.045}html.dark{--paper:oklch(0.155 0.01 265);--paper-2:oklch(0.195 0.012 265);--paper-3:oklch(0.235 0.012 265);--ink:oklch(0.97 0.01 90);--ink-2:oklch(0.82 0.01 90);--ink-3:oklch(0.64 0.01 90);--rule:oklch(0.3 0.012 265);--rule-2:oklch(0.4 0.012 265);--accent:oklch(0.62 0.13 255);--accent-2:oklch(0.74 0.12 255);--accent-ink:oklch(0.12 0.02 255);--cat-skills:oklch(0.76 0.12 230);--cat-experience:oklch(0.74 0.12 255);--cat-projects:oklch(0.78 0.12 65);--cat-certifications:oklch(0.76 0.12 320);--cat-education:oklch(0.72 0.12 290);--cat-profdev:oklch(0.8 0.12 160);--cat-blog:oklch(0.78 0.12 100);--cat-contact:oklch(0.78 0.12 40);--cat-writing:var(--cat-blog);--cat-positive:var(--status-ok);--status-ok:oklch(0.78 0.12 145);--status-warn:oklch(0.84 0.12 85);--status-error:oklch(0.72 0.14 25);--status-info:var(--accent);--status-neutral:oklch(0.72 0.02 60);--sh-1:0 1px 0 oklch(1 0 0 / 0.04), 0 1px 2px oklch(0 0 0 / 0.4);--sh-2:0 1px 0 oklch(1 0 0 / 0.04), 0 12px 30px -12px oklch(0 0 0 / 0.5);--sh-3:0 2px 0 oklch(1 0 0 / 0.05), 0 28px 70px -22px oklch(0 0 0 / 0.7);--grain-opacity:0.06}body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:1;opacity:var(--grain-opacity);background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");mix-blend-mode:overlay}.reveal{opacity:0;transform:translateY(16px);transition:opacity .7s var(--ease),transform .7s var(--ease)}.reveal.in{opacity:1;transform:none}@keyframes pulse{0%,100%{box-shadow:0 0 0 3px color-mix(in oklab,var(--cat-positive) 25%,transparent)}50%{box-shadow:0 0 0 8px color-mix(in oklab,var(--cat-positive) 8%,transparent)}}*,::before,::after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}::before,::after{--tw-content:''}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-sans);font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--font-mono);font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}input:where([type=text]),input:where(:not([type])),input:where([type=email]),input:where([type=url]),input:where([type=password]),input:where([type=number]),input:where([type=date]),input:where([type=datetime-local]),input:where([type=month]),input:where([type=search]),input:where([type=tel]),input:where([type=time]),input:where([type=week]),select:where([multiple]),textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding-top:.5rem;padding-right:.75rem;padding-bottom:.5rem;padding-left:.75rem;font-size:1rem;line-height:1.5rem;--tw-shadow:0 0 #0000}input:where([type=text]):focus,input:where(:not([type])):focus,input:where([type=email]):focus,input:where([type=url]):focus,input:where([type=password]):focus,input:where([type=number]):focus,input:where([type=date]):focus,input:where([type=datetime-local]):focus,input:where([type=month]):focus,input:where([type=search]):focus,input:where([type=tel]):focus,input:where([type=time]):focus,input:where([type=week]):focus,select:where([multiple]):focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}select:where([multiple]),select:where([size]:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}input:where([type=checkbox]),input:where([type=radio]){-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow:0 0 #0000}input:where([type=checkbox]){border-radius:0}input:where([type=radio]){border-radius:100%}input:where([type=checkbox]):focus,input:where([type=radio]):focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}input:where([type=checkbox]):checked,input:where([type=radio]):checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}input:where([type=checkbox]):checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media(forced-colors:active){input:where([type=checkbox]):checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}input:where([type=radio]):checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media(forced-colors:active){input:where([type=radio]):checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}input:where([type=checkbox]):checked:hover,input:where([type=checkbox]):checked:focus,input:where([type=radio]):checked:hover,input:where([type=radio]):checked:focus{border-color:transparent;background-color:currentColor}input:where([type=checkbox]):indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media(forced-colors:active){input:where([type=checkbox]):indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}input:where([type=checkbox]):indeterminate:hover,input:where([type=checkbox]):indeterminate:focus{border-color:transparent;background-color:currentColor}input:where([type=file]){background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}input:where([type=file]):focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}html{font-size:16px}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}:is(h1,h2,h3,h4,h5,h6)[id]{scroll-margin-top:5rem}body{font-family:var(--font-sans);font-weight:400;color:var(--ink-2);background:var(--paper);line-height:1.6;font-feature-settings:"ss01","cv11";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:600;color:var(--ink);letter-spacing:-.025em;line-height:1.05;margin:0}h1 em,h2 em,.display-xl em,.display-lg em{font-style:normal;font-weight:400;color:var(--accent)}h1,.h1{font-size:2.6873856rem}@media(min-width:768px){h1,.h1{font-size:2.9859839999999997rem}}h2,.h2{font-size:2.239488rem}@media(min-width:768px){h2,.h2{font-size:2.48832rem}}h3,.h3{font-size:1.86624rem}@media(min-width:768px){h3,.h3{font-size:2.0736rem}}h4,.h4{font-size:1.728rem}h5,.h5{font-size:1.44rem}h6,.h6{font-size:1.2rem}b,strong{font-weight:600}code::after{content:var(--tw-content);border-style:none}blockquote>p{margin-top:0!important;margin-bottom:0!important}a{color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:var(--rule-2);transition:color var(--dur-fast)var(--ease),text-decoration-color var(--dur-fast)var(--ease)}a:hover{color:var(--accent);text-decoration-color:var(--accent)}a.card,.card a,a.exp-item,a.article-card,a.brand,a.btn,a.nav-link,a.nav-dropdown-link,a.pill,a.taxonomy-link,.social-icons a,.share-icons a,.footer-col a,.hero-cta a,.toc a,aside a,nav[aria-label=Pagination] a{text-decoration:none}a.card:hover,a.exp-item:hover,a.article-card:hover{text-decoration:none}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:2rem;padding-left:2rem}@media(min-width:540px){.container{max-width:540px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1200px){.container{max-width:1200px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}main{min-height:70vh}.section{padding:clamp(3.5rem,8vw,7rem)0;border-top:1px solid var(--rule)}.section-sm{padding:clamp(2rem,4vw,3.5rem)0;border-top:1px solid var(--rule)}.container{max-width:var(--container);margin:0 auto;padding:0 clamp(1rem,2.5vw,2rem);position:relative;z-index:2}.section-head{display:grid;grid-template-columns:1fr;gap:1.5rem;margin-bottom:clamp(2rem,4vw,3rem)}@media(min-width:900px){.section-head{grid-template-columns:minmax(0,1fr)minmax(0,1fr);align-items:end}}.section-head .left{display:flex;flex-direction:column;gap:.75rem}.section-head .display-lg{white-space:nowrap}.section-head .right p{font-family:var(--font-sans);color:var(--ink-2);max-width:44ch;font-size:.98rem}.section-index{display:inline-flex;align-items:baseline;gap:.6rem;font-family:var(--font-mono);font-size:.78rem;color:var(--ink-3);letter-spacing:.1em;text-transform:uppercase}.section-index .num{color:var(--accent);font-weight:600}.display-xl{font-size:clamp(2.8rem,6vw,5.4rem);letter-spacing:-.035em;font-weight:600}.display-lg{font-size:clamp(2.2rem,4.6vw,3.8rem);letter-spacing:-.03em;font-weight:600}.display-md{font-size:clamp(1.75rem,3.4vw,2.6rem);letter-spacing:-.025em;font-weight:600}.display-sm{font-size:clamp(1.35rem,2.4vw,1.85rem);letter-spacing:-.02em;font-weight:600}.eyebrow{font-family:var(--font-mono);text-transform:uppercase;font-size:.72rem;letter-spacing:.14em;color:var(--ink-3);font-weight:500}.eyebrow .dot{display:inline-block;width:6px;height:6px;border-radius:999px;background:var(--accent);margin-right:.5rem;vertical-align:middle;box-shadow:0 0 0 3px color-mix(in oklab,var(--accent) 20%,transparent)}.meta{font-family:var(--font-mono);font-size:.78rem;letter-spacing:.02em;color:var(--ink-3)}.card{position:relative;padding:1.5rem 1.5rem 1.6rem;background:var(--paper-2);border:1px solid var(--rule);border-radius:var(--r-md);transition:transform var(--dur)var(--ease),border-color var(--dur)var(--ease),box-shadow var(--dur)var(--ease),background var(--dur)var(--ease);overflow:hidden;display:flex;flex-direction:column;gap:.75rem}.card::before{content:"";position:absolute;top:0;left:0;width:28px;height:2px;background:var(--card-accent,var(--accent));transition:width var(--dur)var(--ease)}.card:hover{transform:translateY(-2px);border-color:var(--rule-2);box-shadow:var(--sh-2)}.card:hover::before{width:64px}.card .card-top{display:flex;align-items:center;justify-content:space-between;font-family:var(--font-mono);font-size:.72rem;color:var(--ink-3);letter-spacing:.1em;text-transform:uppercase}.card .card-top .idx{color:var(--ink-3)}.card .card-top .slug{color:var(--card-accent,var(--accent))}.card h3{font-size:1.5rem;line-height:1.15;letter-spacing:-.01em}.card .card-desc{font-size:.95rem;color:var(--ink-2);line-height:1.55}.card .card-foot{margin-top:auto;padding-top:.75rem;border-top:1px dashed var(--rule);display:flex;justify-content:space-between;align-items:center;white-space:nowrap;font-family:var(--font-mono);font-size:.72rem;color:var(--ink-3);letter-spacing:.08em;text-transform:uppercase}.cat-skills{--card-accent:var(--accent-2)}.cat-projects{--card-accent:var(--cat-projects)}.cat-certifications{--card-accent:var(--cat-certifications)}.cat-blog,.cat-writing{--card-accent:var(--cat-blog)}.cat-contact{--card-accent:var(--cat-contact)}.pill{font-family:var(--font-mono);font-size:.7rem;padding:.25rem .55rem;border-radius:999px;background:var(--paper-3);color:var(--ink-2);letter-spacing:.02em}.pill.on-accent{background:color-mix(in oklab,var(--accent) 18%,transparent);color:var(--ink)}.callout{display:grid;grid-template-columns:auto 1fr;gap:.75rem;padding:.95rem 1.1rem;border:1px solid var(--rule);border-radius:var(--r-md);background:var(--paper-2)}.callout i.lead-icon{color:var(--accent);font-size:1.1rem;margin-top:2px}.callout.tone-positive{border-color:color-mix(in oklab,var(--status-ok) 50%,var(--rule));background:color-mix(in oklab,var(--status-ok) 5%,var(--paper-2))}.callout.tone-positive i.lead-icon{color:var(--status-ok)}.callout.tone-warn{border-color:color-mix(in oklab,var(--status-warn) 50%,var(--rule));background:color-mix(in oklab,var(--status-warn) 6%,var(--paper-2))}.callout.tone-warn i.lead-icon{color:var(--status-warn)}.callout.tone-error{border-color:color-mix(in oklab,var(--status-error) 50%,var(--rule));background:color-mix(in oklab,var(--status-error) 5%,var(--paper-2))}.callout.tone-error i.lead-icon{color:var(--status-error)}.status-card{margin-top:2rem;display:grid;grid-template-columns:auto 1fr;gap:0 1rem;align-items:center;padding:.9rem 1.1rem;border:1px solid var(--rule);border-radius:var(--r-md);background:var(--paper-2)}.status-led{width:10px;height:10px;border-radius:999px;background:var(--cat-positive);box-shadow:0 0 0 4px color-mix(in oklab,var(--cat-positive) 25%,transparent);animation:pulse 2.4s var(--ease)infinite;grid-row:1/span 2}.status-title{font-family:var(--font-sans);font-weight:600;font-size:.92rem;color:var(--ink)}.status-text{font-family:var(--font-mono);font-size:.78rem;color:var(--ink-3)}.grid-3{display:grid;gap:1rem;grid-template-columns:1fr}@media(min-width:700px){.grid-3{grid-template-columns:repeat(2,1fr)}}@media(min-width:1060px){.grid-3{grid-template-columns:repeat(3,1fr)}}.grid-2{display:grid;gap:1rem;grid-template-columns:1fr}@media(min-width:700px){.grid-2{grid-template-columns:repeat(2,1fr)}}.exp-item{display:grid;grid-template-columns:1fr;gap:.5rem 1.5rem;padding:1.75rem 0;border-top:1px solid var(--rule);position:relative;transition:background var(--dur)var(--ease)}.exp-item:hover{background:color-mix(in oklab,var(--paper-2) 60%,transparent)}@media(min-width:800px){.exp-item{grid-template-columns:180px 1fr auto;padding-inline:.5rem}}.exp-item .when{font-family:var(--font-mono);font-size:.78rem;color:var(--ink-3);letter-spacing:.05em}.exp-item .title{color:var(--ink);font-family:var(--font-display);font-size:1.6rem;line-height:1.15;margin:0 0 .25rem}.exp-item .company{font-size:.95rem;color:var(--ink-2);display:inline-flex;gap:.45rem;align-items:center}.exp-item .company::before{content:"";width:6px;height:6px;border-radius:999px;background:color-mix(in oklab,var(--accent) 15%,transparent)}.exp-item .desc{margin-top:.6rem;color:var(--ink-2);font-size:.97rem;max-width:70ch}.exp-item .pill-row{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.7rem}.exp-item .arrow{align-self:start;margin-top:.3rem;width:38px;height:38px;border-radius:999px;display:grid;place-items:center;color:var(--ink);border:1px solid var(--rule);transition:all var(--dur)var(--ease)}.exp-item:hover .arrow{background:var(--ink);color:var(--paper);transform:rotate(-45deg);border-color:var(--ink)}.article-card{display:grid;grid-template-columns:1fr;gap:1rem;text-decoration:none;color:inherit;padding:1rem 0 1.5rem;border-bottom:1px solid var(--rule)}@media(min-width:780px){.article-card{grid-template-columns:280px 1fr;gap:2rem}}.article-thumb{aspect-ratio:16/9;border-radius:var(--r-md);overflow:hidden;background:repeating-linear-gradient(135deg,transparent 0 10px,color-mix(in oklab,var(--ink) 6%,transparent) 10px 11px),var(--paper-2);border:1px solid var(--rule);display:grid;place-items:center;color:var(--ink-3);font-family:var(--font-mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;transition:transform var(--dur)var(--ease)}.article-card:hover .article-thumb{transform:scale(1.01)}.article-meta-row{display:flex;align-items:center;gap:1rem;font-family:var(--font-mono);font-size:.72rem;color:var(--ink-3);letter-spacing:.08em;text-transform:uppercase}.article-title{font-family:var(--font-display);font-size:clamp(1.5rem,2.4vw,2rem);line-height:1.1;color:var(--ink);margin:.35rem 0 .5rem}.article-summary{color:var(--ink-2);font-size:.98rem;line-height:1.55;max-width:62ch}.article-footer-row{margin-top:.9rem;display:flex;justify-content:space-between;align-items:center}.article-footer-row .btn{flex-shrink:0}.article-tags{display:flex;gap:.35rem;flex-wrap:wrap}.field{display:flex;flex-direction:column;gap:.4rem}.field label{font-family:var(--font-mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-3)}.field input,.field textarea,.field select{font-family:var(--font-sans);font-size:.95rem;padding:.75rem .9rem;border-radius:var(--r-sm);border:1px solid var(--rule);background:var(--paper);color:var(--ink);transition:border-color var(--dur-fast)var(--ease),box-shadow var(--dur-fast)var(--ease)}.field input:focus,.field textarea:focus,.field select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in oklab,var(--accent) 22%,transparent)}.social-icons{display:flex;gap:.4rem}.social-icons a{width:34px;height:34px;border-radius:var(--r-sm);display:grid;place-items:center;background:var(--paper-3);color:var(--ink);border:1px solid var(--rule);text-decoration:none;transition:all var(--dur-fast)var(--ease)}.social-icons a:hover{background:var(--ink);color:var(--paper);border-color:var(--ink);transform:translateY(-2px)}.social-icons a svg{height:1.25rem;width:1.25rem}.social-icons li{display:inline-block}.swiper-pagination-bullet{background:var(--paper-3);margin-left:.375rem!important;margin-right:.375rem!important;height:.625rem!important;width:.625rem!important;opacity:1!important}.swiper-pagination-bullet-active{background:var(--accent);height:1rem!important;width:1rem!important}.content{color:var(--tw-prose-body);max-width:65ch}.content :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.content :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.content :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.content :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.content :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.content :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.content :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.content :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.content :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.content :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.content :where(ol[type=As]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.content :where(ol[type=as]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.content :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.content :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.content :where(ol[type=Is]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.content :where(ol[type=is]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.content :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.content :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.content :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.content :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.content :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.content :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.content :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.content :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *))::before{content:open-quote}.content :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *))::after{content:close-quote}.content :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.content :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.content :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.content :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.content :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.content :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.content :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.content :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.content :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.content :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.content :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.content :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.content :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.content :where(code):not(:where([class~=not-prose],[class~=not-prose] *))::before{content:"`"}.content :where(code):not(:where([class~=not-prose],[class~=not-prose] *))::after{content:"`"}.content :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.content :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.content :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.content :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.content :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.content :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.content :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.content :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.content :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:initial;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.content :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *))::before{content:none}.content :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *))::after{content:none}.content :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.content :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.content :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.content :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.content :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.content :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.content :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.content :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.content :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.content :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.content :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.content{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:rgb(17 24 39 / 10%);--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:rgb(255 255 255 / 10%);--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgb(0 0 0 / 50%);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.content :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.content :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.content :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.content :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.content :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.content :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.content :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.content :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.content :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.content :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.content :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.content :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.content :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.content :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.content :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.content :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.content :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.content :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.content :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.content :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.content :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.content :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.content :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.content :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.content{max-width:none}.content :is(:where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *))){margin-bottom:.3em;margin-top:.6em}.content :is(:where(h1):not(:where([class~=not-prose],[class~=not-prose] *))){font-size:2.6873856rem}@media(min-width:768px){.content :is(:where(h1):not(:where([class~=not-prose],[class~=not-prose] *))){font-size:2.9859839999999997rem}}.content :is(:where(h2):not(:where([class~=not-prose],[class~=not-prose] *))){font-size:2.239488rem}@media(min-width:768px){.content :is(:where(h2):not(:where([class~=not-prose],[class~=not-prose] *))){font-size:2.48832rem}}.content :is(:where(h3):not(:where([class~=not-prose],[class~=not-prose] *))){font-size:1.86624rem}@media(min-width:768px){.content :is(:where(h3):not(:where([class~=not-prose],[class~=not-prose] *))){font-size:2.0736rem}}.content :is(:where(img):not(:where([class~=not-prose],[class~=not-prose] *))){max-width:100%;border-radius:.25rem;border-radius:var(--r-sm)}.content :where(h1,h2,h3,h4,h5,h6){color:var(--ink)}.content :where(hr){border-color:var(--rule)}.content :where(p){font-size:1.0625rem;color:var(--ink-2);line-height:1.65}.content :where(p.lead){font-size:1.25rem;color:var(--ink);font-weight:300;max-width:56ch}.content :where(blockquote){margin:0;padding:1.2rem 1.5rem;border-left:2px solid var(--accent);background:color-mix(in oklab,var(--accent) 6%,transparent);border-radius:0 var(--r-md)var(--r-md)0;font-family:var(--font-display);font-size:1.25rem;line-height:1.4;font-weight:400;letter-spacing:-.01em;color:var(--ink);font-style:normal}.content :where(blockquote cite){display:block;font-family:var(--font-mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.14em;color:var(--ink-3);font-style:normal;margin-top:.75rem}.content :where(pre){font-family:var(--font-mono);background:var(--paper-3);border:1px solid var(--rule);border-radius:var(--r-md);padding:1.1rem 1.2rem;font-size:.82rem;line-height:1.55;color:var(--ink-2);overflow:auto;margin:0}.content :where(code){padding:.1em .3em;color:var(--ink-2)}.content :where(strong){color:var(--ink)}.content :where(a){color:var(--ink);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--rule-2)}.content :where(a):hover{color:var(--accent);text-decoration-color:var(--accent)}.content :where(li){color:var(--ink-2)}.content :where(table){position:relative;overflow:hidden;border-radius:.5rem;border-radius:var(--r-lg)}.content :where(table)::before{content:"";position:absolute;left:0;top:0;height:100%;width:100%;border-radius:inherit;border:1px solid var(--rule)}.content :where(thead){border-color:var(--rule);background:var(--paper-2)}.content :where(th){position:relative;z-index:10;padding-left:1rem;padding-right:1rem;padding-top:18px;padding-bottom:18px;color:var(--ink)}.content :where(tr){border-color:var(--rule)}.content :where(td){position:relative;z-index:10;padding-left:.75rem;padding-right:.75rem;padding-top:18px;padding-bottom:18px;color:var(--ink-2)}.content .btn{text-decoration:none!important}.toc .label{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:.75rem}.toc a:hover,.toc a.active{color:var(--ink);border-left-color:var(--accent)}.icon-btn{width:36px;height:36px;border-radius:var(--r-sm);display:grid;place-items:center;color:var(--ink-2);background:0 0;border:1px solid var(--rule);cursor:pointer;transition:all var(--dur-fast)var(--ease)}.icon-btn:hover{color:var(--ink);background:var(--paper-2);border-color:var(--rule-2)}.hero{position:relative;padding:clamp(3rem,8vw,7rem)0 clamp(3rem,6vw,5rem);overflow:hidden}.hero-grid{display:grid;gap:clamp(1.5rem,4vw,4rem);grid-template-columns:1fr}@media(min-width:960px){.hero-grid{grid-template-columns:minmax(0,1.35fr)minmax(0,1fr);align-items:end}}.hero-eyebrow-row{display:flex;align-items:center;gap:1rem;margin-bottom:1.25rem}.hero-eyebrow-row .index{font-family:var(--font-mono);font-size:.72rem;color:var(--ink-3);letter-spacing:.1em}.hero-eyebrow-row .sep{flex:1;height:1px;background:var(--rule)}.hero h1 .sig{color:var(--accent);font-weight:400;position:relative}.hero h1 .sig::after{content:"";position:absolute;left:0;right:0;bottom:.04em;height:.08em;background:var(--accent);opacity:.2}.hero-sub{font-family:var(--font-sans);font-size:clamp(1.05rem,1.6vw,1.35rem);color:var(--ink-2);max-width:52ch;margin-top:1.5rem;font-weight:300}.hero-meta{margin-top:2rem;display:flex;flex-wrap:wrap;gap:1rem 2rem}.hero-meta>div{display:flex;flex-direction:column;gap:.2rem}.hero-meta .k{font-family:var(--font-mono);font-size:.7rem;color:var(--ink-3);text-transform:uppercase;letter-spacing:.12em}.hero-meta .v{font-family:var(--font-sans);font-size:.95rem;color:var(--ink);font-weight:500}.hero-cta{margin-top:2.25rem;display:flex;gap:.75rem;flex-wrap:wrap}.hero-aside{position:relative}.portrait{position:relative;aspect-ratio:1;border-radius:var(--r-lg);overflow:hidden;background:var(--paper-2);border:1px solid var(--rule);box-shadow:var(--sh-3)}.portrait-placeholder{position:absolute;inset:0;display:grid;place-items:center}.portrait img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.mobile-nav-overlay{position:fixed;inset:0;z-index:100;visibility:hidden;opacity:0;transition:visibility var(--dur)var(--ease),opacity var(--dur)var(--ease)}.mobile-nav-overlay::before{content:"";position:absolute;inset:0;background:color-mix(in oklab,var(--ink) 40%,transparent)}.mobile-nav-overlay.is-open{visibility:visible;opacity:1}.mobile-nav-overlay.is-open .mobile-nav-panel{transform:translateY(0)}.mobile-nav-panel{position:absolute;inset:0;width:100%;background:var(--paper);padding:clamp(5rem,12vw,7rem)clamp(1.5rem,5vw,3rem)2rem;overflow-y:auto;transform:translateY(-100%);transition:transform var(--dur)var(--ease);display:flex;flex-direction:column}.mobile-nav-close{position:absolute;top:clamp(1rem,3vw,1.5rem);right:clamp(1.5rem,5vw,3rem);z-index:1}.mobile-nav-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.25rem}.mobile-nav-item{border-bottom:1px solid var(--rule)}.mobile-nav-link{display:block;padding:1rem .5rem;font-family:var(--font-display);font-size:1.125rem;font-weight:500;color:var(--ink);text-decoration:none;letter-spacing:-.01em;transition:color var(--dur-fast)var(--ease)}.mobile-nav-link:hover,.mobile-nav-link.active{color:var(--accent)}.mobile-nav-sublink:hover,.mobile-nav-sublink.active{color:var(--accent)}.mobile-nav-cta{margin-top:auto;padding-top:2rem}.header{position:sticky;top:0;z-index:50;backdrop-filter:saturate(140%)blur(14px);background:color-mix(in oklab,var(--paper) 82%,transparent);border-bottom:1px solid var(--rule);padding:0}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.9rem}.navbar-brand{display:inline-flex;align-items:center;gap:.6rem;text-decoration:none;color:var(--ink);font-weight:600;font-family:var(--font-sans);font-size:.95rem;letter-spacing:-.005em}.navbar-brand image{max-height:100%;max-width:100%}.brand-mark{width:30px;height:30px;border-radius:7px;background:var(--ink);color:var(--paper);font-family:var(--font-display);display:grid;place-items:center;font-size:1rem;font-weight:600;line-height:1;position:relative;overflow:hidden;flex-shrink:0}.brand-mark::after{content:"";position:absolute;inset:0;background:linear-gradient(135deg,transparent 40%,var(--accent) 120%);mix-blend-mode:screen;opacity:.9}.brand-mark span{position:relative;z-index:2}.navbar-brand small{font-family:var(--font-mono);color:var(--ink-3);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase}.navbar-nav{text-align:center}@media(min-width:1200px){.navbar-nav{text-align:left}}.nav-link{font-family:var(--font-sans);font-size:.88rem;font-weight:500;padding:.5rem .85rem;color:var(--ink-2);text-decoration:none;border-radius:var(--r-sm);transition:color var(--dur-fast)var(--ease),background var(--dur-fast)var(--ease);display:block;cursor:pointer}.nav-link:hover{color:var(--ink);background:var(--paper-2)}.nav-link.active{color:var(--ink)}.nav-link.active::after{content:"";display:block;margin-top:4px;height:2px;width:14px;background:var(--accent);border-radius:2px}@media(min-width:1200px){.nav-link{display:inline-block;padding:.5rem .85rem}}.nav-dropdown.active .nav-dropdown-list{display:block}.theme-switcher{display:inline-flex}.site-footer{margin-top:0;padding:clamp(3rem,6vw,5rem)0 2rem;border-top:1px solid var(--rule);background:var(--paper-2);position:relative;z-index:2}.footer-grid{display:grid;gap:2rem;grid-template-columns:1fr}@media(min-width:800px){.footer-grid{grid-template-columns:2fr 1fr 1fr 1fr}}.footer-wordmark{font-family:var(--font-display);font-size:clamp(2.8rem,6vw,5.4rem);line-height:.95;color:var(--ink);margin-bottom:1.25rem;letter-spacing:-.045em;font-weight:600}.footer-wordmark em{font-style:normal;font-weight:400;color:var(--accent)}.footer-col h5{font-family:var(--font-mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.14em;color:var(--ink-3);font-weight:500;margin-bottom:.8rem}.footer-col ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.45rem}.footer-col a{text-decoration:none;color:var(--ink-2);font-size:.95rem;transition:color var(--dur-fast)var(--ease)}.footer-col a:hover{color:var(--ink)}.footer-bottom{margin-top:3rem;padding-top:1.2rem;border-top:1px solid var(--rule);display:flex;flex-direction:column;align-items:stretch;font-family:var(--font-mono);font-size:.72rem;color:var(--ink-3);letter-spacing:.08em;text-transform:uppercase;gap:1rem}.footer-bottom-row{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem;width:100%}.footer-disclaimer{margin:.75rem 0 0;font-family:var(--font-sans);font-size:.72rem;color:var(--ink-3);line-height:1.5;letter-spacing:0;text-transform:none;max-width:100%}.btn{display:inline-flex;align-items:center;gap:.55rem;white-space:nowrap;font-family:var(--font-sans);font-weight:500;font-size:.9rem;padding:.7rem 1.05rem;border-radius:var(--r-sm);border:1px solid transparent;cursor:pointer;text-decoration:none;transition:transform var(--dur-fast)var(--ease),background var(--dur-fast)var(--ease),color var(--dur-fast)var(--ease),border-color var(--dur-fast)var(--ease),box-shadow var(--dur-fast)var(--ease);position:relative}.btn i{font-size:.85em}.btn-primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.btn-primary:hover{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-ghost{background:0 0;color:var(--ink);border-color:var(--rule-2)}.btn-ghost:hover{border-color:var(--ink);background:var(--paper-2)}.btn-link{padding:.4rem 0;border-color:transparent;color:var(--ink);border-bottom:1px solid var(--rule-2);border-radius:0}.btn-link:hover{color:var(--accent);border-color:var(--accent)}.btn-sm{font-size:.82rem;padding:.45rem .75rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.bottom-2\.5{bottom:.625rem}.left-1\/2{left:50%}.right-2\.5{right:.625rem}.top-1\/2{top:50%}.z-10{z-index:10}.z-50{z-index:50}.col-span-1{grid-column:span 1/span 1}.col-start-1{grid-column-start:1}.m-0{margin:0}.m-3{margin:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-8{margin-top:2rem;margin-bottom:2rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-12{height:3rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-full{height:100%}.min-h-full{min-height:100%}.w-10{width:2.5rem}.w-12{width:3rem}.w-4{width:1rem}.w-full{width:100%}.min-w-0{min-width:0}.max-w-3xl{max-width:48rem}.max-w-lg{max-width:32rem}.max-w-none{max-width:none}.max-w-xl{max-width:36rem}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-2{row-gap:.5rem}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.hyphens-auto{hyphens:auto}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-t{border-top-width:1px}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.py-0{padding-top:0;padding-bottom:0}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pb-10{padding-bottom:2.5rem}.pb-4{padding-bottom:1rem}.pt-5{padding-top:1.25rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:16px}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow-xl{--tw-shadow:0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.duration-150{transition-duration:150ms}.duration-200{transition-duration:200ms}.rounded{border-radius:var(--r-sm)}.rounded-lg{border-radius:var(--r-lg)}.shadow-xl{box-shadow:var(--sh-3)}.search-wrapper{position:relative;z-index:1}.search-wrapper svg{display:inline-block;background-color:initial}.search-wrapper-header{padding:14px;position:relative}.search-wrapper-header input{border:1px solid #ddd;width:100%;border-radius:4px;height:52px;padding:0 15px 0 40px;transition:.25s}.search-wrapper-header input:focus{border-color:var(--color-primary);box-shadow:none;outline:none}.search-wrapper-header label{position:absolute;left:28px;top:calc(50% - 13px)}.search-wrapper-header label .search-reset{display:none;transition:.1s}.search-wrapper-header label .search-reset:hover{cursor:pointer;color:#fb5c5c}.search-result-empty{display:block;text-align:center;padding:32px 0;cursor:text;-webkit-user-select:none;-moz-user-select:none;user-select:none}.search-result mark{padding:0;border-radius:2px}.search-result:not(:empty)+.search-result-empty{display:none}.search-not-found{text-align:center}.search-not-found svg{margin-bottom:16px}.search-not-found p{margin-bottom:0}.search-result-item{position:relative;display:block;padding:16px;border-radius:4px;border:1px solid #eee;background-color:#fff;transition:0s;margin-bottom:4px;display:flex;align-items:flex-start}.search-result-item div:empty,.search-result-item .search-result-item-description:empty{display:none}.search-result-item-image{flex-shrink:0}.search-result-item-image:empty{display:none}.search-result-item-body{flex-grow:1}.search-result-item>div>img{border-radius:4px;max-height:400px;width:100%;-o-object-fit:cover;object-fit:cover}.search-page .search-result-item>div>img{-o-object-fit:cover;object-fit:cover;max-height:250px;width:100%}.search-result-item:focus,.search-result-item.search-item-selected,.search-result-item:hover{background-color:var(--color-primary)}.search-result-item:focus *,.search-result-item.search-item-selected *,.search-result-item:hover *{color:#fff}.search-result-item:focus mark,.search-result-item.search-item-selected mark,.search-result-item:hover mark{background-color:#fef08a;color:#060606}.search-result-item [data-result-item] u{color:var(--color-primary)}.search-result-item .hidden{display:none}.search-result-group-title{padding:0 12px;display:inline-block;margin-bottom:5px;margin-top:15px;font-size:18px}.search-result-item-title{transition:0s;font-size:18px;color:#000;margin-bottom:0;line-height:1.35;font-weight:700}.search-result-item-title::before{position:absolute;bottom:0;left:0;right:0;top:0;z-index:10;content:""}.search-result-item-content{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;margin:6px 0}.search-result-item-description{font-size:90%;margin-top:6px;margin-bottom:4px}.search-result-item-content:empty{display:none}.search-result-item-taxonomies{display:flex;flex-wrap:wrap;font-size:13px;align-items:center}.search-result-item-taxonomies>div{margin-right:12px;color:#999}.search-result-item-taxonomies>div svg{margin-right:4px}.search-wrapper-footer{color:#999;font-size:12px;padding:8px 14px;-webkit-user-select:none;-moz-user-select:none;user-select:none;line-height:1;display:flex;align-items:center}.search-wrapper-footer kbd{color:#777;background-color:#eee;font-size:12px;border-radius:3px;margin-right:3px;padding:2px 4px;line-height:1;text-align:center;display:inline-block}.search-wrapper-footer span:not(:last-child){margin-right:16px}.search-wrapper-footer span:last-child{margin-left:auto}.search-wrapper-footer .search-result-info:empty{display:none}.search-wrapper-footer .search-result-info{margin-left:-3px}.search-wrapper-footer .search-result-info em{color:#000;font-style:normal;padding:0 3px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.search-modal{position:fixed;height:100%;width:100%;inset:0;z-index:9999;opacity:0;visibility:hidden}.search-modal.show{opacity:1;visibility:visible}.search-modal-overlay{position:fixed;height:100%;width:100%;top:0;left:0;background-color:rgba(0,0,0,.5)}.search-modal .search-wrapper{width:660px;max-width:96%;margin:100px auto;border-radius:4px;background-color:#fff}.search-modal .search-wrapper-body{max-height:calc(100vh - 350px);padding:14px;overflow-y:auto;background-color:#f5f6f7;box-shadow:inset 0 2px 18px #ddd;border-radius:4px}.search-modal .search-result-group:first-child .search-result-group-title:not(:empty){margin-top:-15px}.search-modal .search-result-item a>div{margin-right:16px}.search-modal .search-result-item-image{margin-right:15px}.search-modal .search-result-item-image img{width:100px;height:100px;-o-object-fit:cover;object-fit:cover}@media(max-width:576px){.search-modal .search-result-item-image img{width:60px;height:60px}.search-wrapper-footer{display:none}}.dark .search-modal .search-wrapper{background-color:#1c1c1c}.dark .search-modal .search-wrapper-header input{color:#fff;background-color:#222;border-color:#535353}.dark .search-modal .search-wrapper-header input:focus{border-color:#fff}.dark .search-modal .search-wrapper-body{background-color:#222;box-shadow:none}.dark .search-modal .search-result-item{border-color:#3e3e3e;background-color:#1c1c1c}.dark .search-modal .search-result-item:focus,.dark .search-modal .search-result-item.search-item-selected,.dark .search-modal .search-result-item:hover{background-color:#060606}.dark .search-modal .search-result-item .search-result-item-title{color:#fff}.dark .search-wrapper-footer kbd{background-color:#3e3e3e;color:#ccc}.dark .search-wrapper-footer .search-result-info em{color:#fff}.search-page .search-wrapper{padding:100px 0}.search-page .search-wrapper-header,.search-page .search-wrapper-footer{width:660px;max-width:96%;margin:0 auto}.search-page .search-wrapper-footer{padding-top:0;padding-bottom:0;margin-bottom:60px}.search-page .search-wrapper-body{padding:0 16px}.search-page .search-result-group{display:flex;flex-wrap:wrap}.search-page .search-result-item{margin-right:-15px;margin-left:-15px}.search-page .search-result-group>p,.search-page .search-result-item{padding-right:15px!important;padding-left:15px!important}.search-page .search-result-group>p{width:100%}.search-page .search-result-item{flex:none;width:calc(100% - (4 * 4px));display:block;padding-top:15px!important;padding-bottom:15px!important;margin:0 8px 16px}.search-page .search-result-item .search-result-item-image{margin-bottom:10px}.search-page .search-result-group-title{font-size:22px;font-weight:700}.search-page .search-result-info{display:block;text-align:center}.search-page .search-wrapper-header input{padding:0 20px}@media(min-width:576px){.search-page .search-result-item{width:calc(50% - (4 * 4px))}}@media(max-width:576px){.search-wrapper .search-wrapper-footer span:not(.search-result-info){display:none}}@media(min-width:768px){.search-page .search-result-item{width:calc(33.3333333333% - (4 * 4px))}}@media(min-width:992px){.search-page .search-result-item{width:calc(25% - (4 * 4px))}}.dark .search-page .search-wrapper-header input{color:#fff;background-color:#222;border-color:#535353}.dark .search-page .search-wrapper-header input:focus{border-color:#fff}.dark .search-page .search-result-item{border-color:#3e3e3e;background-color:#1c1c1c}.dark .search-page .search-result-item:focus,.dark .search-page .search-result-item.search-item-selected,.dark .search-page .search-result-item:hover{background-color:#060606}.dark .search-page .search-result-item-title{color:#fff}.share-title{display:inline-block;margin-right:.3em}.share-link{border-radius:.25rem;transition:25ms ease-out;height:2.5em;width:2.5em;line-height:2.5em;text-align:center;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;text-decoration:none;color:#fff;margin:.5em;display:inline-block;vertical-align:middle}.share-icon{fill:#fff;stroke:none;display:block;height:100%}.share-icon svg{width:1em;height:100%;margin:auto}.share-twitter{background-color:#000}.share-twitter:hover{background-color:#0c0c0c}.share-pinterest{background-color:#bd081c}.share-pinterest:hover{background-color:#8c0615}.share-facebook{background-color:#3b5998}.share-facebook:hover{background-color:#2d4373}.share-tumblr{background-color:#35465c}.share-tumblr:hover{background-color:#222d3c}.share-reddit{background-color:#5f99cf}.share-reddit:hover{background-color:#3a80c1}.share-google{background-color:#dd4b39}.share-google:hover{background-color:#c23321}.share-linkedin{background-color:#0077b5}.share-linkedin:hover{background-color:#046293}.share-email{background-color:#777}.share-email:hover{background-color:#5e5e5e}.share-whatsapp{background-color:#25d366}.share-whatsapp:hover{background-color:#1da851}.share-hackernews{background-color:#f60}.share-hackernews:hover{background-color:#fb6200}.share-vk{background-color:#507299}.share-vk:hover{background-color:#43648c}.share-facebook{background-color:#3b5998}.share-facebook:hover{background-color:#2d4373}.share-twitter{background-color:#55acee}.share-twitter:hover{background-color:#2795e9}.share-google{background-color:#dd4b39}.share-google:hover{background-color:#c23321}.share-email{background-color:#777}.share-email:hover{background-color:#5e5e5e}.share-reddit{background-color:#5f99cf}.share-reddit:hover{background-color:#3a80c1}.share-whatsapp{background-color:#25d366}.share-whatsapp:hover{background-color:#1da851}.share-telegram{background-color:#54a9eb}.share-telegram:hover{background-color:#4b97d1}.img{max-width:100%;height:auto}/*!* Justified gallery style*/.gallery{display:flex;flex-wrap:wrap;margin-left:-10px;margin-right:-10px}.gallery .gallery-item{margin:0 10px;margin-bottom:20px;overflow:hidden;max-width:calc(100% - 20px)}.gallery .gallery-item img{-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;vertical-align:middle;transition:.3s}.gallery.zoomable .gallery-item:hover img{transform:scale(1.05);cursor:zoom-in}.gallery::after{content:"";flex-grow:99999;min-width:calc(100vw/3)}@media(max-width:460px){.gallery{flex-direction:column}.gallery .gallery-item{width:calc(100% - 20px)!important}}.gallery-slider .swiper-slide img{width:100%}.gallery-slider .swiper-button-prev,.gallery-slider .swiper-button-next{color:#fff;opacity:0;transition:.3s}.gallery-slider:hover .swiper-button-prev,.gallery-slider:hover .swiper-button-next{opacity:1}.gallery-slider:hover .swiper-button-prev{left:30px}.gallery-slider:hover .swiper-button-next{right:30px}.img{max-width:100%;height:auto}.logo-light{display:initial}.logo-dark{display:none}.dark .logo-light{display:none}.dark .logo-dark{display:initial}.content img{max-width:100%;margin-bottom:1.5rem;height:auto;display:inline-block}.content img.glightbox{cursor:pointer}.content img.img-center{display:block;margin-left:auto;margin-right:auto}.content img.img-left{display:block;margin-left:0;margin-right:auto}.content img.img-right{display:block;margin-left:auto;margin-right:0}.content img.img-float-left{float:left;margin-right:1.5rem}.content img.img-float-right{float:right;margin-left:1.5rem}.content figure{display:inline-block;margin-bottom:1.5rem}.content figure img{margin-bottom:.7rem}.content figure.img-center{display:block;text-align:center}.content figure.img-left{display:block;text-align:left}.content figure.img-right{display:block;text-align:right}.content figure.img-float-left{float:left;margin-right:1.5rem}.content figure.img-float-right{float:right;margin-left:1.5rem}.table-of-content{cursor:pointer;margin:1rem 0 1.5rem}.table-of-content summary{-webkit-user-select:none;-moz-user-select:none;user-select:none;font-size:18px;color:#fff;background-color:#555;padding:5px 20px;margin-bottom:0!important}.table-of-content ul li::before{display:none}.table-of-content #TableOfContents{padding:10px;background-color:#f7f7f7}.table-of-content #TableOfContents li,.table-of-content #TableOfContents a{color:#333!important}.table-of-content #TableOfContents a{text-decoration:none}.table-of-content #TableOfContents a:hover{text-decoration:underline}.content .table-of-content ul li,.content .table-of-content ol li{margin-bottom:6px!important}.dark #TableOfContents{background-color:#333}.dark #TableOfContents li,.dark #TableOfContents a{color:#fff!important}.tab-nav{list-style:none;padding:0;margin:0!important;list-style-type:none!important;display:flex;border-bottom:1px solid #aaa;overflow-x:auto}.tab-nav::-webkit-scrollbar{width:2px}.tab-nav-item{padding:.5rem 1rem!important;cursor:pointer;opacity:.8;margin:0!important;white-space:nowrap}.tab-nav-item::before{display:none!important}.tab-nav-item.active{border-bottom:3px solid #aaa;opacity:1}.tab-content .tab-content-panel{display:none;padding:1rem .5rem}.tab-content .tab-content-panel p{margin-bottom:0!important}.tab-content .tab-content-panel.active{display:block}.accordion{border:1px solid #ccc}.accordion-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;font-size:1.1rem;width:100%;font-weight:700;text-align:left}.accordion-icon{width:.78em;height:.78em;transform:rotate(-90deg);transition:transform .2s ease}.accordion-content{overflow:hidden;max-height:0;transition:max-height .3s ease-in-out,padding .3s ease-in-out;padding:0 1rem}.accordion-content p{margin-bottom:16px}.accordion.active .accordion-content{padding:0 1rem}.accordion.active .accordion-icon{transform:rotate(0)}.accordion.active .accordion-content{max-height:-moz-max-content;max-height:max-content}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:none;height:100%;width:100%;overflow:auto}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:none;height:100%;width:100%;background-color:rgba(0,0,0,.4)}.modal-content{position:relative;top:50%;z-index:50;transform:translateY(-50%);background-color:#fff;border-radius:.5rem;padding:2rem;max-width:90%;margin:0 auto}.modal-close{position:absolute;top:.5rem;right:.5rem;height:2rem;width:2rem;background-color:#f2f2f2;color:#000;border-radius:50%;text-align:center;line-height:2rem}.notice{margin-bottom:1.5rem;border:1px solid #e5e7eb;padding:1.5rem}.notice-head{display:flex;align-items:center}.notice-head svg{margin-right:.75rem}.notice-head p{font-size:1.25rem;font-weight:600;color:#1f2937;margin:0;line-height:1}.notice-body{margin-top:.75rem}.notice-body p{margin:0}.notice.note{color:#1b83e2;border-color:initial}.notice.tip{color:#40d294;border-color:initial}.notice.info{color:#e3a72c;border-color:initial}.notice.warning{color:#db2c23;border-color:initial}.dark .notice-head p{color:#d1d5db}.table-of-content{border-radius:var(--r-md);overflow:hidden;border:1px solid var(--rule)}.table-of-content summary{background:var(--paper-2);color:var(--ink);font-family:var(--font-mono);font-size:.85rem;padding:.75rem 1rem}.table-of-content #TableOfContents{background:var(--paper);padding:.75rem 1rem}.table-of-content #TableOfContents li,.table-of-content #TableOfContents a{color:var(--ink-2)}.table-of-content #TableOfContents a{text-decoration:none;transition:color var(--dur-fast)var(--ease)}.table-of-content #TableOfContents a:hover{color:var(--accent);text-decoration:none}.share-icons{display:flex;gap:.4rem}.share-icons .share-link{height:2.25rem;width:2.25rem;line-height:2.25rem;margin:0;border-radius:var(--r-sm);background:var(--paper-3);border:1px solid var(--rule);transition:all var(--dur-fast)var(--ease)}.share-icons .share-link:hover{background:var(--ink);border-color:var(--ink);transform:translateY(-2px)}.share-icons .share-icon svg{fill:var(--ink);transition:fill var(--dur-fast)var(--ease)}.share-icons .share-link:hover .share-icon svg{fill:var(--paper)}.notice{border-radius:var(--r-lg)}.tab{border:1px solid var(--rule);border-radius:var(--r-lg);overflow:hidden}.tab-nav{border-color:var(--rule);background:var(--paper-2);padding-left:1rem}.tab-nav-item{color:var(--ink);padding-left:1.5rem!important;padding-right:1.5rem!important;padding-top:1rem!important;padding-bottom:1rem!important;font-size:1.125rem!important;line-height:1.75rem!important;font-weight:700!important}.tab-nav-item.active{border-color:var(--accent)}.tab-content{margin-top:1rem;margin-bottom:1rem;padding-left:1rem;padding-right:1rem}.tab-content-panel{padding-left:1rem!important;padding-right:1rem!important;padding-top:0!important}.accordion{border:1px solid var(--rule);background:var(--paper-2);margin-bottom:1.5rem;overflow:hidden;border-radius:var(--r-lg)}.accordion-header{color:var(--ink)}.cookie-box{border-radius:var(--r-lg)!important}.search-wrapper .search-wrapper-content{background:var(--paper)}.search-wrapper input{background:var(--paper-2);color:var(--ink);border-color:var(--rule)}.search-wrapper input:focus{border-color:var(--accent);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.search-wrapper kbd{background:var(--paper-2)}.search-wrapper .search-wrapper-body{background:var(--paper-2);box-shadow:var(--sh-2)}.search-wrapper.search-page .search-wrapper-body{background:0 0}.search-wrapper .search-result-info em{color:var(--ink);font-weight:600}.search-wrapper .search-result-item{background:var(--paper);border-color:var(--rule);padding:1rem}.search-wrapper .search-result-item .search-title{color:var(--ink)}.search-wrapper .search-result-item u{color:var(--accent);text-decoration:none}.search-wrapper .search-result-item .search-result-item-title{text-decoration:none}.search-wrapper .search-result-item:focus,.search-wrapper .search-result-item.search-item-selected,.search-wrapper .search-result-item:hover{background:color-mix(in oklab,var(--accent) 10%,transparent)}.search-wrapper .search-result-item:focus *,.search-wrapper .search-result-item.search-item-selected *,.search-wrapper .search-result-item:hover *{color:inherit}.search-wrapper .search-result-item:focus .search-title,.search-wrapper .search-result-item:focus .search-result-item-title,.search-wrapper .search-result-item.search-item-selected .search-title,.search-wrapper .search-result-item.search-item-selected .search-result-item-title,.search-wrapper .search-result-item:hover .search-title,.search-wrapper .search-result-item:hover .search-result-item-title{color:var(--ink)}.search-wrapper .search-result-item:focus .search-result-item-content,.search-wrapper .search-result-item:focus .search-result-item-description,.search-wrapper .search-result-item.search-item-selected .search-result-item-content,.search-wrapper .search-result-item.search-item-selected .search-result-item-description,.search-wrapper .search-result-item:hover .search-result-item-content,.search-wrapper .search-result-item:hover .search-result-item-description{color:var(--ink-2)}.search-wrapper .search-result-item:focus .search-result-item-taxonomies>div,.search-wrapper .search-result-item.search-item-selected .search-result-item-taxonomies>div,.search-wrapper .search-result-item:hover .search-result-item-taxonomies>div{color:var(--ink-3)}.search-wrapper .search-result-item:focus u,.search-wrapper .search-result-item.search-item-selected u,.search-wrapper .search-result-item:hover u{color:var(--accent);text-decoration:none}.search-wrapper .search-result-item:focus mark,.search-wrapper .search-result-item.search-item-selected mark,.search-wrapper .search-result-item:hover mark{background-color:color-mix(in oklab,var(--accent) 25%,transparent);color:var(--ink)}.dark .search-modal .search-wrapper{background-color:var(--paper)}.dark .search-modal .search-wrapper-body{background-color:var(--paper-2);box-shadow:none}.dark .search-modal .search-result-item{border-color:var(--rule);background-color:var(--paper)}.dark .search-modal .search-result-item:focus,.dark .search-modal .search-result-item.search-item-selected,.dark .search-modal .search-result-item:hover{background-color:color-mix(in oklab,var(--accent) 10%,transparent)}.dark .search-modal .search-result-item .search-result-item-title{color:var(--ink)}.dark .search-wrapper-footer kbd{background-color:var(--paper-3);color:var(--ink-2)}.dark .search-wrapper-footer .search-result-info em{color:var(--ink)}.dark .search-page .search-result-item{border-color:var(--rule);background-color:var(--paper)}.dark .search-page .search-result-item:focus,.dark .search-page .search-result-item.search-item-selected,.dark .search-page .search-result-item:hover{background-color:color-mix(in oklab,var(--accent) 10%,transparent)}.dark .search-page .search-result-item-title{color:var(--ink)}.gallery-slider{margin-left:0!important}.content a,.feature-content a,.links a,.cookie-box a{color:var(--ink);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--rule-2)}.no-links a{text-decoration-line:none}.tooltip{position:absolute;bottom:100%;left:50%;z-index:10;margin-bottom:.5rem;display:none;width:100%;--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y));white-space:normal;font-size:.75rem;line-height:1rem}.search-result-item .tooltip{display:none}.group:hover .tooltip{display:block}.tooltip{background:var(--ink);color:var(--paper);border:1px solid var(--ink);border-radius:var(--r-sm);padding:.5rem}blockquote{margin:0;padding:1.2rem 1.5rem;border-left:2px solid var(--accent);background:color-mix(in oklab,var(--accent) 6%,transparent);border-radius:0 var(--r-md)var(--r-md)0;position:relative}blockquote::before{content:"\f10e";font-family:"font awesome 6 free";font-weight:900;position:absolute;right:1rem;top:.5rem;font-size:1.5rem;color:var(--ink-3);opacity:.2}blockquote ::before,blockquote ::after{quotes:none}.highlight pre,.highlight code{background:0 0;color:var(--ink-2)}.highlight .k,.highlight .kc,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt,.highlight .nb,.highlight .bp{color:var(--accent);font-weight:600}.highlight .s,.highlight .sa,.highlight .sb,.highlight .sc,.highlight .dl,.highlight .sd,.highlight .s2,.highlight .se,.highlight .sh,.highlight .si,.highlight .sx,.highlight .sr,.highlight .s1,.highlight .ss{color:var(--status-ok)}.highlight .c,.highlight .ch,.highlight .cm,.highlight .c1,.highlight .cs,.highlight .cp,.highlight .cpf{color:var(--ink-3);font-style:italic}.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .il,.highlight .mo{color:var(--accent)}.highlight .nf,.highlight .fm{color:var(--ink);font-weight:600}.highlight .o,.highlight .ow{color:var(--accent)}.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:var(--ink)}.highlight .nc,.highlight .no,.highlight .nd,.highlight .ni,.highlight .ne,.highlight .nn,.highlight .nt{color:var(--ink);font-weight:600}.highlight .ln{color:var(--ink-3);-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-block-wrapper{position:relative}.code-block-wrapper .highlight{position:relative;border-radius:var(--r-md)}.code-block-wrapper .highlight pre{font-family:var(--font-mono);background:var(--paper-3);border:1px solid var(--rule);border-radius:var(--r-md);padding:1.1rem 1.2rem;font-size:.82rem;line-height:1.55;color:var(--ink-2);overflow-x:auto;margin:0}.code-block-wrapper .highlight pre>code{display:inline-block}.copy-code-button{position:absolute;right:.5rem;top:.5rem;width:30px;height:30px;border-radius:var(--r-sm);display:grid;place-items:center;color:var(--ink-3);background:color-mix(in oklab,var(--paper-2) 80%,transparent);backdrop-filter:blur(4px);border:1px solid var(--rule);cursor:pointer;transition:all var(--dur-fast)var(--ease);z-index:10;font-size:.8rem;opacity:0;padding:0}.copy-code-button:hover{color:var(--ink);background:var(--paper-2);border-color:var(--rule-2)}.copy-code-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.copy-code-button:active{transform:scale(.92)}.copy-code-button.success{color:var(--status-ok);border-color:var(--status-ok)}.copy-code-button.error{color:var(--status-error);border-color:var(--status-error)}.code-block-wrapper:hover .copy-code-button,.code-block-wrapper .copy-code-button:focus-visible{opacity:1}.article-toc{border-left:1px solid var(--rule);padding-left:1.25rem}.article-toc .toc-label{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:.75rem}.article-toc .toc-links #TableOfContents ol,.article-toc .toc-links #TableOfContents ul{list-style:none;padding:0;margin:0}.article-toc .toc-links #TableOfContents ol li,.article-toc .toc-links #TableOfContents ul li{margin:0}.article-toc .toc-links #TableOfContents ol a,.article-toc .toc-links #TableOfContents ul a{display:block;padding:.35rem 0;color:var(--ink-2);text-decoration:none;border-left:2px solid transparent;margin-left:-1.25rem;padding-left:calc(1.25rem - 2px);transition:all var(--dur-fast)var(--ease);font-size:.88rem}.article-toc .toc-links #TableOfContents ol a:hover,.article-toc .toc-links #TableOfContents ul a:hover{color:var(--ink);border-left-color:var(--accent)}.article-toc .toc-links #TableOfContents ol ol,.article-toc .toc-links #TableOfContents ol ul,.article-toc .toc-links #TableOfContents ul ol,.article-toc .toc-links #TableOfContents ul ul{padding-left:1rem}.article-toc .toc-links #TableOfContents ol ol a,.article-toc .toc-links #TableOfContents ol ul a,.article-toc .toc-links #TableOfContents ul ol a,.article-toc .toc-links #TableOfContents ul ul a{font-size:.84rem;color:var(--ink-3)}.article-toc .toc-links #TableOfContents ol ol a:hover,.article-toc .toc-links #TableOfContents ol ul a:hover,.article-toc .toc-links #TableOfContents ul ol a:hover,.article-toc .toc-links #TableOfContents ul ul a:hover{color:var(--ink)}nav[aria-label=Pagination] a:hover{background:var(--paper-2);border-radius:var(--r-sm)}.github-repo-card{display:inline-flex;align-items:center;gap:.6rem;padding:.65rem 1rem;border:1px solid var(--rule);border-radius:var(--r-md);background:var(--paper-2);color:var(--ink);text-decoration:none;font-family:var(--font-sans);font-size:.9rem;font-weight:500;transition:all var(--dur-fast)var(--ease)}.github-repo-card:hover{background:var(--paper-3);border-color:var(--rule-2);transform:translateY(-1px);box-shadow:var(--sh-1)}.github-repo-card .fa-github{font-size:1.25rem;color:var(--ink)}.github-repo-card .github-repo-external{font-size:.65rem;color:var(--ink-3);margin-left:auto}body.nav-open{overflow:hidden}.hover\:cursor-zoom-in:hover{cursor:zoom-in}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--sh-2)}.dark\:opacity-0:is(.dark *){opacity:0}.dark\:opacity-100:is(.dark *){opacity:1}@media(min-width:540px){.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:mt-0{margin-top:0}.sm\:flex{display:flex}.sm\:w-48{width:12rem}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:max-w-lg{max-width:32rem}.sm\:flex-row{flex-direction:row}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media(min-width:768px){.md\:bottom-10{bottom:2.5rem}.md\:right-10{right:2.5rem}.md\:col-span-2{grid-column:span 2/span 2}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:p-6{padding:1.5rem}.md\:py-8{padding-top:2rem;padding-bottom:2rem}}@media(min-width:1200px){.lg\:order-last{order:9999}.lg\:ml-0{margin-left:0}.lg\:mt-0{margin-top:0}.lg\:flex{display:flex}.lg\:inline-flex{display:inline-flex}.lg\:hidden{display:none}.lg\:grid-cols-\[1fr_320px\]{grid-template-columns:1fr 320px}.lg\:items-center{align-items:center}.lg\:space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}}@media(min-width:1280px){.xl\:col-span-1{grid-column:span 1/span 1}.xl\:col-span-2{grid-column:span 2/span 2}.xl\:col-span-3{grid-column:span 3/span 3}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}}