.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*){animation:none!important}::view-transition-old(*){animation:none!important}::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}@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{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--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-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--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-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-duration:initial;--tw-ease:initial;--tw-leading:initial;--tw-tracking:initial}::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--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-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--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-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-duration:initial;--tw-ease:initial;--tw-leading:initial;--tw-tracking:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--color-orange-50:#fff7ed;--color-amber-50:#fffbeb;--color-emerald-100:#d0fae5;--color-emerald-200:#a4f4cf;--color-emerald-400:#00d294;--color-emerald-500:#00bb7f;--color-emerald-600:#009767;--color-pink-500:#f6339a;--color-gray-200:#e5e7eb;--color-gray-400:#99a1af;--color-gray-500:#6a7282;--color-gray-600:#4a5565;--color-gray-700:#364153;--color-gray-800:#1e2939;--color-gray-900:#101828;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-normal:0em;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--drop-shadow-md:0 3px 3px #0000001f;--ease-out:cubic-bezier(0, 0, .2, 1);--blur-md:12px;--blur-xl:24px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:"JetBrains Mono", "Fira Code", monospace;--color-primary:var(--ph-primary);--font-heading:"JetBrains Mono", Consolas, monospace;--font-article:"Noto Serif SC", "Source Han Serif SC", "Songti SC", SimSun, serif}@supports (color:lab(0%0 0)){:root,:host{--color-orange-50:lab(97.7008% 1.53735 5.90649);--color-amber-50:lab(98.6252% -.635922 8.42309);--color-emerald-100:lab(94.9004% -17.0769 5.63836);--color-emerald-200:lab(90.2247% -31.039 9.47084);--color-emerald-400:lab(75.0771% -60.7313 19.4147);--color-emerald-500:lab(66.9756% -58.27 19.5419);--color-emerald-600:lab(55.0481% -49.9246 15.93);--color-pink-500:lab(56.9303% 76.8162 -8.07021);--color-gray-200:lab(91.6229% -.159115 -2.26791);--color-gray-400:lab(65.9269% -.832707 -8.17473);--color-gray-500:lab(47.7841% -.393182 -10.0268);--color-gray-600:lab(35.6337% -1.58697 -10.8425);--color-gray-700:lab(27.1134% -.956401 -12.3224);--color-gray-800:lab(16.1051% -1.18239 -11.7533);--color-gray-900:lab(8.11897% .811279 -12.254)}}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::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;-webkit-text-decoration:inherit;-webkit-text-decoration: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}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ph-bg:#fff;--ph-surface:#f3f3f3;--ph-surface-strong:#f8f8f8;--ph-primary:#0066b8;--ph-primary-bright:#007acc;--ph-primary-dark:#005a9e;--ph-primary-soft:#0066b824;--ph-primary-faint:#0066b812;--ph-border:#6161616b;--ph-border-soft:#61616138;--ph-text:#1f1f1f;--ph-body:#333;--ph-muted:#1f1f1fa6;--ph-faint:#1f1f1f73;--ph-amber:#795e26;--ph-amber-soft:#795e261f;--ph-cyan:#16825d;--ph-violet:#af00db;--ph-orange:#a31515;--ph-error:#a1260d;--ph-selection:#007acc3d;--ph-shadow:0 10px 32px #0000001a;--ph-nav:#f3f3f3f5;--vt-bg:var(--ph-bg)}:root.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ph-bg:#1e1e1e;--ph-surface:#252526;--ph-surface-strong:#2d2d30;--ph-primary:#569cd6;--ph-primary-bright:#4fc1ff;--ph-primary-dark:#3794ff;--ph-primary-soft:#569cd62e;--ph-primary-faint:#569cd617;--ph-border:#cccccc47;--ph-border-soft:#cccccc26;--ph-text:#d4d4d4;--ph-body:#ccc;--ph-muted:#d4d4d49e;--ph-faint:#d4d4d46b;--ph-amber:#dcdcaa;--ph-amber-soft:#dcdcaa1c;--ph-cyan:#4ec9b0;--ph-violet:#c586c0;--ph-orange:#ce9178;--ph-error:#f44747;--ph-selection:#264f78b8;--ph-shadow:0 10px 34px #00000047;--ph-nav:#252526f5}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}html{background:var(--ph-bg);min-width:320px;color:var(--ph-text);scrollbar-color:var(--ph-border) var(--ph-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;transition:background-color .35s,color .3s;overflow-x:hidden}body{z-index:0;background:var(--ph-bg);color:var(--ph-text);font-family:var(--font-heading);margin:0;line-height:1.6;transition:color .3s,background-color .3s;position:relative;overflow-x:clip}h1,h2,h3,h4,h5,h6{--tw-font-weight:var(--font-weight-semibold);font-family:JetBrains Mono,Consolas,monospace;font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}a{color:var(--ph-primary);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}a:hover{color:var(--ph-amber)}a:focus-visible{border-radius:var(--radius-sm);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + 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);--tw-ring-color:var(--ph-primary)}@supports (color:color-mix(in lab,red,red)){a:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ph-primary) 50%, transparent)}}a:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-offset-color:var(--ph-bg);--tw-outline-style:none;outline-style:none}a:focus-visible:where(.dark,.dark *){--tw-ring-offset-color:var(--ph-bg)}code,pre,kbd,samp{font-family:JetBrains Mono,Fira Code,monospace}::selection{background:var(--ph-selection);color:var(--ph-text)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--ph-bg)}::-webkit-scrollbar-thumb{background:var(--ph-border);border-radius:0}::view-transition{background-color:var(--vt-bg,var(--ph-bg))}}@layer components{.hero-grid{background-image:linear-gradient(90deg,#ffffff0d 1px,#0000 1px),linear-gradient(#ffffff0d 1px,#0000 1px);background-size:60px 60px}:root.dark .hero-grid{background-image:linear-gradient(90deg,#ffffff08 1px,#0000 1px),linear-gradient(#ffffff08 1px,#0000 1px)}.ripple{pointer-events:none;will-change:transform,opacity;background:#ffffff59;border-radius:50%;animation:.5s ease-out forwards ripple-anim;position:absolute;transform:translate(-50%,-50%) scale(0)}@keyframes ripple-anim{to{opacity:0;transform:translate(-50%,-50%) scale(3)}}:root.dark .ripple{background:#ffffff40}pre{position:relative}pre code{--tw-border-style:none;padding:calc(var(--spacing)*4);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);background-color:#0000;border-style:none;display:block;overflow-x:auto}:root.dark .astro-code{background-color:#1e293b!important}:root.dark .astro-code span{color:var(--shiki-dark)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;-webkit-text-decoration:var(--shiki-dark-text-decoration)!important;-webkit-text-decoration:var(--shiki-dark-text-decoration)!important;-webkit-text-decoration:var(--shiki-dark-text-decoration)!important;text-decoration:var(--shiki-dark-text-decoration)!important}pre.astro-code code{counter-reset:line-counter}pre.astro-code .line{counter-increment:line-counter}pre.astro-code .line:before{content:counter(line-counter);text-align:right;color:#94a3b866;font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;width:2.5ch;margin-right:1.5ch;display:inline-block}:root.dark pre.astro-code .line:before{color:#94a3b859}pre.astro-code .line.focused{background:#ea580c14;box-shadow:inset 2px 0#ea580c80}:root.dark pre.astro-code .line.focused{background:#ea580c1f;box-shadow:inset 2px 0#ea580c80}pre.astro-code .line.diff.add{background:#10b98114;box-shadow:inset 2px 0#10b98180}pre.astro-code .line.diff.add:before{content:"+"counter(line-counter);color:#10b98199}:root.dark pre.astro-code .line.diff.add{background:#10b9811f;box-shadow:inset 2px 0#10b98180}pre.astro-code .line.diff.remove{background:#ef444414;box-shadow:inset 2px 0#ef444480}pre.astro-code .line.diff.remove:before{content:"-"counter(line-counter);color:#ef444499}:root.dark pre.astro-code .line.diff.remove{background:#ef44441f;box-shadow:inset 2px 0#ef444480}pre.astro-code .line.highlighted.error{background:#ef44440f;box-shadow:inset 2px 0#ef444480}:root.dark pre.astro-code .line.highlighted.error{background:#ef44441a}pre.astro-code .line.highlighted.warning{background:#eab3080f;box-shadow:inset 2px 0#eab30880}:root.dark pre.astro-code .line.highlighted.warning{background:#eab3081a}.code-copy-btn{top:calc(var(--spacing)*2);right:calc(var(--spacing)*2);z-index:10;cursor:pointer;border-radius:var(--radius-md);padding:calc(var(--spacing)*1.5);opacity:0;--tw-duration:.2s;border-style:var(--tw-border-style);border-width:1px;border-color:#e5e7eb80;transition-duration:.2s;position:absolute}@supports (color:color-mix(in lab,red,red)){.code-copy-btn{border-color:color-mix(in oklab,var(--color-gray-200) 50%,transparent)}}.code-copy-btn{background-color:#e5e7eb80}@supports (color:color-mix(in lab,red,red)){.code-copy-btn{background-color:color-mix(in oklab,var(--color-gray-200) 50%,transparent)}}.code-copy-btn{color:var(--color-gray-600);--tw-backdrop-blur:blur(var(--blur-md));-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-property:opacity,color,background-color,border-color}:root.dark .code-copy-btn{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){:root.dark .code-copy-btn{border-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}:root.dark .code-copy-btn{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){:root.dark .code-copy-btn{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}:root.dark .code-copy-btn{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){:root.dark .code-copy-btn{color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.code-copy-btn:focus-visible{opacity:1;--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + 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);--tw-ring-color:var(--ph-primary)}@supports (color:color-mix(in lab,red,red)){.code-copy-btn:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ph-primary) 50%, transparent)}}.code-copy-btn:focus-visible{--tw-outline-style:none;outline-style:none}.code-copy-btn:hover{background-color:var(--color-gray-200);color:var(--color-gray-900)}:root.dark .code-copy-btn:hover{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){:root.dark .code-copy-btn:hover{background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}:root.dark .code-copy-btn:hover{color:var(--color-white)}.code-copy-btn.copied{border-color:var(--color-emerald-200);background-color:var(--color-emerald-100);color:var(--color-emerald-600)}:root.dark .code-copy-btn.copied{border-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){:root.dark .code-copy-btn.copied{border-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}:root.dark .code-copy-btn.copied{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){:root.dark .code-copy-btn.copied{background-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}:root.dark .code-copy-btn.copied{color:var(--color-emerald-400)}pre:hover .code-copy-btn{opacity:1}.post-content h2[id],.post-content h3[id],.post-content h4[id]{position:relative}.post-content h2[id] .heading-anchor,.post-content h3[id] .heading-anchor,.post-content h4[id] .heading-anchor{color:#ea580c66;opacity:0;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:.25rem;padding:.15em .3em;font-size:.85em;font-weight:400;line-height:1;transition:opacity .2s;position:absolute;top:50%;left:-1.75rem;transform:translateY(-50%);background:0 0!important;text-decoration:none!important}.post-content h2[id] .heading-anchor:hover,.post-content h3[id] .heading-anchor:hover,.post-content h4[id] .heading-anchor:hover{color:#ea580ccc;opacity:1!important}.post-content h2[id]:hover .heading-anchor,.post-content h3[id]:hover .heading-anchor,.post-content h4[id]:hover .heading-anchor{opacity:1}.anchor-copied-toast{white-space:nowrap;color:#fff;pointer-events:none;opacity:0;background:#ea580ce6;border-radius:.25rem;padding:.15em .5em;font-size:.65rem;font-weight:500;transition:opacity .2s;position:absolute;top:50%;left:-.5rem;transform:translateY(-50%) translate(-100%)}.anchor-copied-toast.visible{opacity:1}.waline-skeleton{pointer-events:none;inset:calc(var(--spacing)*0);gap:calc(var(--spacing)*6);padding:calc(var(--spacing)*4);flex-direction:column;transition:opacity .3s ease-out;display:flex;position:absolute}.waline-skeleton.is-hidden{opacity:0}.skeleton-header{margin-bottom:calc(var(--spacing)*2)}.skeleton-comment{gap:calc(var(--spacing)*4);display:flex}.skeleton-avatar{height:calc(var(--spacing)*10);width:calc(var(--spacing)*10);background:linear-gradient(110deg,#e9e1d599 30%,#faf7f2cc 50%,#e9e1d599 70%)0 0/200% 100%;border-radius:3.40282e38px;flex-shrink:0;animation:1.8s ease-in-out infinite skeleton-shimmer}:root.dark .skeleton-avatar{background:linear-gradient(110deg,#4755694d 30%,#33415566 50%,#4755694d 70%)}.skeleton-body{gap:calc(var(--spacing)*2.5);padding-top:calc(var(--spacing)*1);flex-direction:column;flex:1;display:flex}.skeleton-line{background:linear-gradient(110deg,#e9e1d599 30%,#faf7f2cc 50%,#e9e1d599 70%)0 0/200% 100%;animation:1.8s ease-in-out infinite skeleton-shimmer}:root.dark .skeleton-line{background:linear-gradient(110deg,#4755694d 30%,#33415566 50%,#4755694d 70%)}@keyframes skeleton-shimmer{0%{background-position:200%0}to{background-position:-200%0}}.lightbox-overlay{inset:calc(var(--spacing)*0);z-index:9999;cursor:zoom-out;padding:calc(var(--spacing)*8);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:0;visibility:hidden;background:#000000d9;justify-content:center;align-items:center;transition:opacity .3s,visibility .3s;display:flex;position:fixed}.lightbox-overlay.active{opacity:1;visibility:visible}.lightbox-img{object-fit:contain;cursor:default;border-radius:var(--radius-lg);will-change:transform;max-width:90vw;max-height:90vh;transition:transform .3s;transform:scale(.95);box-shadow:0 20px 60px #00000080}.lightbox-overlay.active .lightbox-img{transform:scale(1)}.lightbox-loading .lightbox-img{opacity:0}.lightbox-loading:after{content:"";border:3px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:2rem;height:2rem;animation:.6s linear infinite lightbox-spin;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes lightbox-spin{to{transform:translate(-50%,-50%) rotate(360deg)}}.lightbox-close{top:calc(var(--spacing)*4);right:calc(var(--spacing)*6);cursor:pointer;padding:calc(var(--spacing)*2);--tw-leading:1;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;color:#ffffffb3;background:0 0;border:0;font-size:2rem;line-height:1;transition-duration:.2s;position:absolute}.lightbox-close:hover{color:#fff}.moonlight-overlay-bg{background:radial-gradient(at 75% 15%,#321e5a59 0,#140f3200 45%),radial-gradient(at 20% 85%,#0f325a4d 0,#050f2800 50%),linear-gradient(#02030a 0,#050818 35%,#060b22 65%,#02040e 100%)}.post-content{letter-spacing:0;word-spacing:normal;text-align:start;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;font-size:1.075rem;font-weight:400;line-height:1.85}.post-content pre,.post-content pre code{overflow-wrap:normal;word-break:normal;-webkit-hyphens:none;hyphens:none}.post-content>p{margin:1.5em 0}.post-content img{cursor:zoom-in;border-radius:var(--radius-lg);opacity:0;background:linear-gradient(110deg,#e9e1d580 30%,#faf7f2b3 50%,#e9e1d580 70%)0 0/200% 100%;min-height:4rem;transition:opacity .4s ease-out}:root.dark .post-content img{background:linear-gradient(110deg,#4755694d 30%,#33415566 50%,#4755694d 70%)0 0/200% 100%}.post-content img:not(.img-loaded){animation:1.8s ease-in-out infinite img-shimmer}.post-content img.img-loaded{opacity:1;min-height:auto}:root.dark .post-content img.img-loaded{--tw-brightness:brightness(90%);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,)}@media (hover:hover){:root.dark .post-content img.img-loaded:hover{--tw-brightness:brightness(100%);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,)}}.post-content img:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + 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);--tw-ring-color:var(--ph-primary);--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-offset-color:var(--ph-bg);--tw-outline-style:none;outline-style:none}.post-content img:focus-visible:where(.dark,.dark *){--tw-ring-offset-color:var(--ph-bg)}.post-nav-bg.img-loaded{opacity:.2}.group:hover .post-nav-bg.img-loaded{opacity:.4}.post-content a:visited:not(:hover){opacity:.8}.post-content mark{color:inherit;padding-inline:calc(var(--spacing)*1);background-color:#ea580c33;border-radius:.25rem}:root.dark .post-content mark{background-color:#ea580c4d}.post-content del{color:#6e675d}:root.dark .post-content del{color:#94a3b8}.post-content kbd{border-style:var(--tw-border-style);border-width:1px;border-color:var(--ph-border-soft);background-color:var(--color-white);padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*.5);font-family:JetBrains Mono,Fira Code,monospace;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-radius:.25rem}:root.dark .post-content kbd{border-color:var(--ph-border-soft);background-color:var(--ph-surface-strong)}.post-content ul:has(input[type=checkbox]){padding-left:0;list-style:none}.post-content li:has(>input[type=checkbox]){align-items:flex-start;gap:.5rem;display:flex}.post-content input[type=checkbox]{accent-color:var(--color-primary);margin-top:.375rem}.post-stamp{font-family:var(--font-article);writing-mode:vertical-rl;letter-spacing:.15em;color:#fff;-webkit-user-select:none;user-select:none;background:radial-gradient(circle at 35% 30%,#d14a24,#b83b1a 70%);border-radius:.4rem;justify-content:center;align-items:center;width:3rem;height:3.25rem;margin:3.5rem .25rem 0 auto;font-size:1.05rem;font-weight:600;display:flex;transform:rotate(-3deg);box-shadow:0 1px 4px #b83b1a59}@keyframes terminal-blink{0%,49%{opacity:1}50%,to{opacity:0}}.terminal-cursor{vertical-align:-.08em;background:var(--ph-primary);width:.55em;height:.95em;margin-left:.22em;animation:1.1s step-end infinite terminal-blink;display:inline-block}.terminal-cursor-small{height:1em;margin-left:.45em}.tmux-nav{z-index:70;border-bottom:1px solid var(--ph-border);background:var(--ph-nav);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);min-height:45px;color:var(--ph-primary);white-space:nowrap;align-items:center;gap:16px;padding:8px 24px;font-size:12.5px;display:flex;position:sticky;top:0}.tmux-nav-primary,.tmux-nav-secondary{display:contents}.tmux-identity{background:var(--ph-primary);color:var(--ph-bg);order:1;padding:2px 10px;font-weight:700;text-decoration:none}.tmux-identity:hover{background:var(--ph-amber);color:var(--ph-bg)}.tmux-identity-short,.tmux-mobile-icon,.theme-icon-dark,:root.dark .theme-icon-light{display:none}:root.dark .theme-icon-dark{display:block}.tmux-cwd{color:var(--ph-muted);text-overflow:ellipsis;order:2;overflow:hidden}.tmux-tabs{order:3;align-items:center;gap:21px;margin-left:auto;display:flex}.tmux-controls{order:5;align-items:center;gap:7px;display:flex}.tmux-tab{color:var(--ph-muted);border-bottom:1px solid #0000;text-decoration:none}.tmux-tab:hover,.tmux-tab.active{color:var(--ph-primary);border-bottom-color:var(--ph-primary)}.tmux-tab-star{display:none}.tmux-tab.active .tmux-tab-star{display:inline}.tmux-control{border:1px solid var(--ph-border);min-height:25px;color:var(--ph-primary);font:inherit;cursor:pointer;background:0 0;border-radius:0;padding:2px 8px}.tmux-terminal-link{box-sizing:border-box;order:4;justify-content:center;align-items:center;width:86px;min-width:86px;text-decoration:none;display:inline-flex}.tmux-control:hover{background:var(--ph-primary-soft);color:var(--ph-amber)}.theme-label-dark{display:none}#theme-toggle-btn{box-sizing:border-box;text-align:center;width:66px;min-width:66px}:root.dark .theme-label-light{display:none}:root.dark .theme-label-dark{display:inline}.site-main{width:100%}.terminal-hero,.terminal-posts-section,.terminal-page,.post-layout-shell{box-sizing:border-box;width:min(100% - 64px,1120px);margin-inline:auto}.terminal-hero{padding:54px 0 18px}.terminal-posts-section{padding:28px 0 68px}.terminal-page{padding-block:54px 68px}.terminal-list-page{min-height:70vh}.terminal-muted{color:var(--ph-muted);font-size:13px}.terminal-command{color:var(--ph-primary);margin:0 0 20px;font-size:15px}.terminal-command>span:first-child{color:var(--ph-amber)}.terminal-hero .terminal-command{margin-top:9px}.terminal-hero-title{color:var(--ph-text);letter-spacing:-.03em;text-shadow:0 0 26px var(--ph-primary-soft);margin:22px 0 17px;font-family:JetBrains Mono,monospace;font-size:clamp(2.75rem,5vw,3.3rem);font-weight:700;line-height:1.2}.terminal-description{max-width:64ch;color:var(--ph-muted);margin:0 0 9px;font-size:15px;line-height:1.9}.terminal-quote{color:var(--ph-faint);margin:0;font-size:13px}.terminal-page-header{margin:0 0 34px}.terminal-page-header.compact{margin-bottom:26px}.terminal-page-header h1{color:var(--ph-text);text-shadow:0 0 22px var(--ph-primary-soft);margin:0 0 5px;font-family:JetBrains Mono,monospace;font-size:clamp(1.75rem,4vw,2.15rem);line-height:1.35}.terminal-page-header h1 small{color:var(--ph-muted);font-size:.44em;font-weight:400}.terminal-page-header h1 strong{color:var(--ph-amber)}.terminal-page-header>p{color:var(--ph-faint);margin:0;font-size:13px}.terminal-frame{border:1px solid var(--ph-border);background:var(--ph-surface);position:relative}@supports (color:color-mix(in lab,red,red)){.terminal-frame{background:color-mix(in srgb,var(--ph-surface) 58%,transparent)}}.terminal-frame{box-shadow:var(--ph-shadow)}.terminal-frame-label{background:var(--ph-bg);color:var(--ph-primary);letter-spacing:.17em;white-space:nowrap;padding:0 9px;font-size:11px;position:absolute;top:-.78em;left:20px}.post-list-frame{margin-top:4px}.terminal-post-list{flex-direction:column;display:flex}.terminal-post-row{border-bottom:1px dashed var(--ph-border-soft);min-height:57px;color:var(--ph-primary);box-sizing:border-box;grid-template-columns:104px 118px minmax(0,1fr) 72px;align-items:baseline;gap:20px;padding:16px 22px;text-decoration:none;display:grid}.terminal-post-row:last-child{border-bottom:0}.terminal-post-row:hover{background:var(--ph-primary-faint);color:var(--ph-text)}.terminal-post-row time{color:var(--ph-primary);font-size:12.5px}.terminal-post-row:first-child time{color:var(--ph-amber)}.terminal-permissions,.terminal-file-size{color:var(--ph-faint);font-size:12px}.terminal-file-size{text-align:right}.terminal-post-title{min-width:0;color:var(--ph-text);text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:500;overflow:hidden}.terminal-badge{background:var(--ph-amber);color:var(--ph-bg);vertical-align:.12em;margin-left:9px;padding:1px 5px;font-size:10px;font-weight:700}.terminal-pagination{color:var(--ph-muted);justify-content:space-between;align-items:center;gap:14px;margin-top:20px;font-size:13px;display:flex}.terminal-pagination-command{color:var(--ph-primary)}.terminal-pagination-command>span:first-child{color:var(--ph-amber)}.terminal-pagination-pages{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:7px;display:flex}.terminal-pagination a{text-decoration:none}.terminal-pagination [aria-disabled=true]{color:var(--ph-faint)}.terminal-page-jump{gap:3px;margin-left:8px;display:flex}.terminal-page-jump a[aria-current=page]{color:var(--ph-amber)}.archive-year{margin-bottom:38px}.archive-year h2,.friend-group h2{color:var(--ph-amber);margin:0 0 8px;font:700 17px/1.5 JetBrains Mono,monospace}.archive-year h2 small,.friend-group h2 small{color:var(--ph-muted);font-size:12px;font-weight:400}.archive-year-posts{flex-direction:column;display:flex}.archive-row{color:var(--ph-text);grid-template-columns:42px 94px minmax(0,1fr);align-items:baseline;gap:8px;padding:8px 4px;text-decoration:none;display:grid}.archive-row:hover{background:var(--ph-primary-faint)}.archive-row time{color:var(--ph-muted);font-size:13px}.archive-row>span:last-child{text-overflow:ellipsis;white-space:nowrap;font-size:15px;overflow:hidden}.archive-branch{color:var(--ph-faint)}.archive-summary{margin-top:12px}.about-profile{align-items:flex-start;gap:40px;margin-bottom:42px;display:flex}.terminal-portrait{border:1px solid var(--ph-border);background:var(--ph-surface);flex:none;margin:0;padding:8px}.terminal-portrait img{object-fit:cover;filter:saturate(.78) contrast(1.03);width:200px;height:200px;display:block}.terminal-portrait figcaption{color:var(--ph-muted);letter-spacing:.18em;justify-content:space-between;padding:8px 3px 1px;font-size:10px;display:flex}.about-heading{flex:1;min-width:0;margin-top:3px}.terminal-properties{margin:20px 0 0;font-size:14px;line-height:2.25}.terminal-properties>div{grid-template-columns:88px minmax(0,1fr);gap:10px;display:grid}.terminal-properties dt{color:var(--ph-amber)}.terminal-properties dd{color:var(--ph-text);margin:0}.terminal-info-grid{grid-template-columns:1fr 1fr;gap:20px;display:grid}.terminal-info-panel{min-width:0;padding:23px 21px}.terminal-info-panel .terminal-properties{margin-top:0}.terminal-info-panel p{color:var(--ph-muted);font-size:13px}.terminal-info-panel pre,.exchange-panel pre{border:1px dashed var(--ph-border);background:var(--ph-primary-faint);color:var(--ph-text);margin:12px 0 0;padding:12px 14px;font:12px/1.7 JetBrains Mono,monospace;overflow-x:auto}.friend-group{margin-bottom:42px}.friend-group h2{margin-bottom:16px;font-size:15px}.friend-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.friend-card{border:1px solid var(--ph-border-soft);min-width:0;color:var(--ph-text);align-items:flex-start;gap:14px;padding:15px 17px;text-decoration:none;display:flex}.friend-card:hover{border-color:var(--ph-border);background:var(--ph-primary-faint)}.friend-avatar-wrap{flex:0 0 44px;width:44px;height:44px;position:relative}.friend-placeholder,.friend-avatar{border:1px solid var(--ph-border);object-fit:cover;box-sizing:border-box;width:44px;height:44px;transition:opacity .3s;position:absolute;inset:0}.friend-placeholder{background:hsl(var(--friend-hue) 42% 40%);color:#fff;place-items:center;font-weight:700;display:grid}.friend-avatar{opacity:0}.friend-avatar.opacity-100{opacity:1}.friend-placeholder.opacity-0{opacity:0}.friend-placeholder.hidden,.friend-avatar.hidden{display:none}.friend-copy{min-width:0}.friend-copy strong{color:var(--ph-text);text-overflow:ellipsis;white-space:nowrap;font-size:14px;display:block;overflow:hidden}.friend-copy>span{color:var(--ph-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:3px;font-family:Ubuntu,system-ui,sans-serif;font-size:12.5px;line-height:1.55;display:-webkit-box;overflow:hidden}.exchange-panel{margin-top:12px;padding:25px 23px}.exchange-panel .terminal-command{margin-bottom:12px}.exchange-panel pre{margin-bottom:16px;font-size:13px}.exchange-panel pre span{color:var(--ph-amber)}.exchange-panel>p:last-child{color:var(--ph-body);margin:0;font-family:Ubuntu,system-ui,sans-serif;font-size:14px;line-height:1.9}.exchange-panel strong{color:var(--ph-amber)}.friend-comments{margin-top:38px;padding:22px}.post-layout-shell{align-items:flex-start;gap:48px;padding-block:52px 68px;display:flex}.post-article{flex:1;min-width:0}.post-layout-shell.without-toc .post-article{width:100%}.post-kicker{color:var(--ph-amber);letter-spacing:.12em;flex-wrap:wrap;align-items:center;gap:7px;margin-bottom:9px;font-size:11.5px;display:flex}.post-meta{flex-wrap:wrap;align-items:center;gap:7px;margin:0;display:flex}.post-meta-item{align-items:center;gap:7px;display:flex}.post-meta-item:not(:last-child):after{content:"·"}.post-meta dd{margin:0}.post-kicker #post-music-player{letter-spacing:normal;margin-left:auto}.post-title{color:var(--ph-text);text-wrap:balance;text-shadow:0 0 24px var(--ph-primary-soft);margin:0 0 30px;font:700 clamp(2rem,4vw,2.35rem)/1.42 JetBrains Mono,monospace}.post-hero-terminal{border:1px solid var(--ph-border);background:var(--ph-surface);margin:0 0 30px;padding:7px;position:relative}.post-hero-terminal>span{z-index:1;background:var(--ph-bg);color:var(--ph-primary);letter-spacing:.16em;padding:0 8px;font-size:10px;position:absolute;top:-10px;left:18px}.post-hero-terminal img{object-fit:cover;width:100%;max-height:470px;display:block}.terminal-prose{color:var(--ph-body);background:0 0;border-radius:0;margin:0;padding:0;font-family:Ubuntu,Noto Sans CJK SC,Microsoft YaHei,system-ui,sans-serif;font-size:16.5px;line-height:2.02}.terminal-prose>:first-child{margin-top:0}.terminal-prose>:last-child{margin-bottom:0}.terminal-prose h2,.terminal-prose h3,.terminal-prose h4{color:var(--ph-primary);scroll-margin-top:82px;font-family:JetBrains Mono,monospace;font-weight:700;line-height:1.45;position:relative}.terminal-prose h2{border:0;margin:42px 0 17px;padding:0;font-size:21px}.terminal-prose h3{margin:32px 0 14px;font-size:18px}.terminal-prose h4{margin:26px 0 12px;font-size:16px}.terminal-prose h2:before{content:"## ";color:var(--ph-faint)}.terminal-prose h3:before{content:"### ";color:var(--ph-faint)}.terminal-prose h4:before{content:"#### ";color:var(--ph-faint)}.terminal-prose p{margin:0 0 17px}.terminal-prose a{color:var(--ph-primary);text-decoration:underline;-webkit-text-decoration-color:var(--ph-border);-webkit-text-decoration-color:var(--ph-border);-webkit-text-decoration-color:var(--ph-border);text-decoration-color:var(--ph-border);text-underline-offset:.18em}.terminal-prose a:hover{color:var(--ph-amber)}.terminal-prose strong{color:var(--ph-text)}.terminal-prose del{color:var(--ph-faint)}.terminal-prose ul,.terminal-prose ol{margin-block:0 18px;padding-left:1.55em}.terminal-prose li::marker{color:var(--ph-primary)}.terminal-prose blockquote{border-left:3px solid var(--ph-amber);background:var(--ph-amber-soft);color:var(--ph-body);margin:20px 0;padding:12px 18px;font-style:normal}.terminal-prose blockquote p:last-child{margin-bottom:0}.terminal-prose :not(pre)>code{background:var(--ph-amber-soft);color:var(--ph-amber);border:0;border-radius:0;padding:2px 7px;font-family:JetBrains Mono,monospace;font-size:.88em;font-weight:400}.terminal-prose pre,.terminal-prose pre.astro-code{border:1px solid var(--ph-border);box-shadow:none;border-radius:0;margin:20px 0;padding:30px 0 0;overflow:hidden;background:var(--ph-primary-faint)!important}.terminal-prose pre:before{content:"CODE";border-bottom:1px dashed var(--ph-border);height:29px;color:var(--ph-muted);letter-spacing:.18em;box-sizing:border-box;padding:5px 14px;font:10px/18px JetBrains Mono,monospace;position:absolute;top:0;left:0;right:0}.terminal-prose pre code{color:var(--ph-text);padding:13px 15px 15px;font:13.5px/1.82 JetBrains Mono,monospace}.terminal-prose .code-copy-btn{z-index:2;color:var(--ph-primary);background:0 0;border:0;border-radius:0;top:3px;right:8px}.terminal-prose .code-copy-btn:hover{background:var(--ph-primary-soft);color:var(--ph-amber)}.terminal-prose img{border:1px solid var(--ph-border);box-shadow:none;border-radius:0}.terminal-prose hr{background:var(--ph-border);border:0;height:1px;margin:34px 0}.terminal-prose table{border-collapse:collapse;width:100%;box-shadow:none;margin:22px 0;font-size:.9em}.terminal-prose th,.terminal-prose td{border:1px solid var(--ph-border-soft);padding:8px 10px}.terminal-prose th{background:var(--ph-primary-soft);color:var(--ph-primary)}.terminal-prose mark{background:var(--ph-amber-soft);color:var(--ph-text)}.terminal-prose kbd{border:1px solid var(--ph-border);background:var(--ph-surface);color:var(--ph-text);box-shadow:none;border-radius:0}.terminal-prose .heading-anchor{color:var(--ph-faint)}.post-end-line,.post-license,.post-taxonomy{border-top:1px dashed var(--ph-border);color:var(--ph-muted);flex-wrap:wrap;justify-content:space-between;gap:10px 18px;margin-top:34px;padding-top:13px;font-size:12px;display:flex}.post-taxonomy{border:0;justify-content:flex-start;margin-top:16px;padding-top:0}.post-license{border:0;margin-top:16px;padding:0}.post-sibling-nav{grid-template-columns:1fr 1fr;gap:14px;margin-top:27px;display:grid}.post-sibling-nav>a{border:1px solid var(--ph-border);min-width:0;color:var(--ph-text);padding:14px 18px;text-decoration:none}.post-sibling-nav>a:hover{background:var(--ph-primary-faint)}.post-sibling-nav small{color:var(--ph-muted);letter-spacing:.17em;margin-bottom:5px;font-size:10px;display:block}.post-sibling-nav span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.post-sibling-nav .next{text-align:right}.post-comments{margin-top:36px;padding:21px}.post-comments .terminal-command{margin-bottom:8px;font-size:13px}.post-toc{flex:0 0 232px;width:232px;max-height:calc(100vh - 90px);position:sticky;top:74px;overflow:hidden}.post-toc-frame{flex-direction:column;max-height:calc(100vh - 90px);padding:17px 18px;display:flex}.post-toc .toc-nav{min-height:0;overflow-y:auto}.toc-nav ul{margin:0;padding:0;list-style:none}.toc-nav li{color:var(--ph-faint);gap:6px;font-size:12px;line-height:1.8;display:flex}.toc-link{min-width:0;color:var(--ph-muted);border:0;padding:3px 0;text-decoration:none;display:block}.toc-link:hover,.toc-link.active{color:var(--ph-amber);border:0;padding-left:0}.toc-link:before{display:none}.toc-progress-label{border-top:1px dashed var(--ph-border);color:var(--ph-faint);margin-top:13px;padding-top:9px;font-size:10px}.mobile-toc-button,.toc-drawer{display:none}.terminal-search-dialog{width:100%;max-width:none;height:100%;max-height:none;color:var(--ph-text);background:0 0;border:0;margin:0;padding:0}.terminal-search-dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0000009e}.terminal-search-panel{border:1px solid var(--ph-primary);background:var(--ph-bg);flex-direction:column;width:min(100% - 32px,680px);max-height:min(80vh,650px);margin:10vh auto 0;display:flex;box-shadow:0 0 45px #00000059}.terminal-search-header{border-bottom:1px dashed var(--ph-border);color:var(--ph-amber);align-items:center;gap:10px;padding:12px 14px;display:flex}.terminal-search-header input{min-width:0;color:var(--ph-text);background:0 0;border:0;outline:0;flex:1;font:15px/1.5 JetBrains Mono,monospace}.terminal-search-header input::placeholder{color:var(--ph-faint)}.terminal-search-header button{color:var(--ph-primary);cursor:pointer;background:0 0;border:0;font:11px JetBrains Mono,monospace}.terminal-search-results{min-height:210px;padding:8px;overflow-y:auto}.terminal-search-results>div{font-family:JetBrains Mono,monospace;color:var(--ph-muted)!important}.search-state-icon{color:var(--ph-amber);text-align:center;margin-bottom:7px;font-size:24px;display:block}.search-result-item{color:var(--ph-text);border:1px solid #0000;text-decoration:none;border-radius:0!important;padding:11px 12px!important}.search-result-item[aria-selected=true]{border-color:var(--ph-border);background:var(--ph-primary-faint)!important}.search-result-item:hover:not([aria-selected=true]){border-color:var(--ph-border-soft);background:0 0!important}.search-result-item>div>span:first-child{color:var(--ph-text)!important}.search-result-item mark{color:var(--ph-amber);font:inherit;background:0 0}.search-result-item>div>span:last-child{color:var(--ph-amber)!important;background:0 0!important;border-radius:0!important}.search-result-item p{color:var(--ph-muted)!important}.terminal-search-footer{border-top:1px dashed var(--ph-border);color:var(--ph-faint);justify-content:space-between;gap:10px;padding:9px 13px;font-size:10px;display:flex}#waline-wrapper{color:var(--ph-body);font-family:Ubuntu,system-ui,sans-serif}#waline .wl-panel,#waline .wl-editor,#waline .wl-input,#waline .wl-btn{border-radius:0!important}#waline .wl-panel{border-color:var(--ph-border)!important;background:0 0!important}#waline .wl-editor,#waline .wl-input{color:var(--ph-text)!important}#waline .wl-btn{border-color:var(--ph-border)!important;color:var(--ph-primary)!important}#waline .wl-btn.primary{background:var(--ph-primary)!important;color:var(--ph-bg)!important}#waline .wl-card{border-top:1px dashed var(--ph-border-soft)}.waline-skeleton{background:var(--ph-bg)}.skeleton-avatar,.skeleton-line{background:var(--ph-primary-soft)!important;border-radius:0!important}#post-music-player{color:var(--ph-muted)}.post-music-info{display:none}@media (min-width:768px){.post-music-info{text-align:right;opacity:0;align-items:flex-end;width:8rem;transition:opacity .3s,transform .3s;display:flex;transform:translate(.5rem)}#post-music-player:hover .post-music-info{opacity:1;transform:none}}.terminal-footer{border-top:1px solid var(--ph-border);background:var(--ph-nav);margin-top:auto}.terminal-footer-inner{width:min(100% - 64px,1120px);color:var(--ph-muted);justify-content:space-between;align-items:center;gap:12px 24px;margin-inline:auto;padding:14px 0;font-size:11px;display:flex}.terminal-footer a{color:inherit;text-decoration:none}.terminal-footer a:hover{color:var(--ph-primary)}.terminal-footer-links{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;display:flex}.terminal-footer-socials{gap:2px;display:flex}.terminal-footer-socials a{border:1px solid #0000;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex}.terminal-footer-socials a:hover{border-color:var(--ph-border);background:var(--ph-primary-soft)}.footer-link-label{display:none}.footer-link-icon{width:16px;height:16px;display:block}.terminal-footer-webring{gap:12px;display:flex}.footer-rss-link,.terminal-footer-webring a{color:var(--ph-amber)}.terminal-error-page{align-content:center;min-height:72vh;display:grid}.terminal-error-frame{text-align:center;padding:44px 28px}.terminal-error-code{color:var(--ph-amber);margin:0;font-size:clamp(2.8rem,9vw,5rem);font-weight:700}.terminal-error-frame h1{color:var(--ph-text);margin:0 0 8px;font-size:1.5rem}.terminal-error-frame>p:not(.terminal-error-code){color:var(--ph-muted)}.terminal-error-actions{justify-content:center;gap:20px;margin-top:24px;display:flex}@media (max-width:1000px){.tmux-nav{gap:11px;padding-inline:16px}.tmux-tabs{gap:13px}.tmux-cwd{max-width:190px}.post-layout-shell{gap:30px}.post-toc{flex-basis:210px;width:210px}}@media (max-width:800px){.tmux-nav{align-items:center;gap:2px;min-height:49px;padding:7px 8px;display:flex;overflow:hidden}.tmux-nav-primary,.tmux-nav-secondary{display:contents}.tmux-identity{order:1;justify-content:center;align-items:center;width:34px;max-width:none;height:34px;padding:0;display:inline-flex}.tmux-identity-full{display:none}.tmux-identity-short,.tmux-mobile-icon{display:inline-flex}.tmux-mobile-icon{justify-content:center;align-items:center;width:16px;height:16px}.tmux-cwd{display:none}.tmux-tabs{order:2;gap:2px;min-width:0;margin:0}.tmux-controls{order:4;gap:2px;margin-left:auto}.tmux-tab-shortcut,.tmux-tab-label,.tmux-control-label,.theme-label-light,.theme-label-dark,:root.dark .theme-label-dark{display:none}.tmux-tab,.tmux-control,.tmux-terminal-link,#theme-toggle-btn{box-sizing:border-box;border:1px solid #0000;justify-content:center;align-items:center;width:34px;min-width:34px;height:34px;min-height:34px;padding:0;display:inline-flex}.tmux-tab.active{border-color:var(--ph-border);background:var(--ph-primary-soft)}.tmux-tab{position:relative}.tmux-tab-star{font-size:8px;line-height:1;position:absolute;top:1px;right:3px}.tmux-terminal-link{order:3}.terminal-hero,.terminal-posts-section,.terminal-page,.post-layout-shell,.terminal-footer-inner{width:min(100% - 32px,1120px)}.post-layout-shell{padding-top:42px;display:block}.post-toc{display:none}.mobile-toc-button{z-index:45;border:1px solid var(--ph-border);background:var(--ph-surface);color:var(--ph-primary);opacity:0;pointer-events:none;border-radius:0;padding:7px 9px;font:11px JetBrains Mono,monospace;transition:opacity .2s,transform .2s;display:block;position:fixed;bottom:142px;right:18px;transform:translateY(8px)}.mobile-toc-button[data-visible]{opacity:1;pointer-events:auto;transform:none}.toc-drawer[open]{z-index:73;border:0;border-top:1px solid var(--ph-primary);background:var(--ph-bg);width:100%;max-width:none;max-height:62vh;color:var(--ph-body);flex-direction:column;margin:0;padding:16px;display:flex;position:fixed;inset:auto 0 0;overflow:hidden}.toc-drawer::backdrop{background:#0000008c}.toc-drawer-header{color:var(--ph-primary);justify-content:space-between;margin-bottom:12px;display:flex}.toc-drawer .toc-nav{min-height:0;overflow-y:auto}.toc-drawer-header button{color:var(--ph-amber);font:inherit;background:0 0;border:0}.toc-drawer .toc-nav li{font-size:13px}.terminal-footer-inner{flex-direction:column;align-items:flex-start}.terminal-footer-links{justify-content:flex-start}}@media (max-width:640px){html{font-size:16px}.terminal-hero{padding:30px 0 12px}.terminal-posts-section{padding-top:22px}.terminal-page{padding-top:42px}.terminal-hero-title{overflow-wrap:anywhere;margin:16px 0 12px;font-size:clamp(1.95rem,11vw,2.45rem)}.terminal-description{font-size:14px}.terminal-command{font-size:13px}.terminal-frame-label{font-size:9px;left:12px}.terminal-post-row{grid-template-columns:92px minmax(0,1fr);gap:10px;min-height:62px;padding:13px 14px}.terminal-permissions,.terminal-file-size{display:none}.terminal-post-row time{font-size:11px}.terminal-post-title{font-size:14px}.terminal-pagination{flex-direction:column;align-items:flex-start}.terminal-pagination-pages{justify-content:flex-start}.terminal-page-jump{display:none}.archive-row{grid-template-columns:34px 58px minmax(0,1fr);gap:5px}.archive-row time{font-size:11px}.archive-row>span:last-child{font-size:13px}.about-profile{flex-direction:column;gap:25px}.terminal-portrait{width:min(100%,218px)}.terminal-portrait img{aspect-ratio:1;width:100%;height:auto}.terminal-properties>div{grid-template-columns:75px minmax(0,1fr);gap:5px}.terminal-info-grid,.friend-grid{grid-template-columns:1fr}.terminal-info-panel{padding-inline:16px}.post-title{font-size:clamp(1.7rem,8vw,2.15rem)}.post-kicker{letter-spacing:.06em;align-items:stretch;gap:12px;margin-bottom:18px}.post-meta{border-block:1px dashed var(--ph-border-soft);grid-template-columns:repeat(2,minmax(0,1fr));gap:0;width:100%;display:grid}.post-meta-item{grid-template-columns:34px minmax(0,1fr);gap:5px;min-width:0;padding:7px 6px;display:grid}.post-meta-item:nth-child(odd){border-right:1px dashed var(--ph-border-soft)}.post-meta-item:nth-child(-n+2){border-bottom:1px dashed var(--ph-border-soft)}.post-meta-item:not(:last-child):after{display:none}.post-meta dt{color:var(--ph-faint);font-size:9px;display:block}.post-meta dd{overflow-wrap:anywhere;min-width:0}.post-kicker #post-music-player{justify-content:space-between;width:100%;margin:0;padding:0 4px}.post-music-info{text-align:left;flex:1;align-items:flex-start;min-width:0;display:flex}.terminal-footer-inner{padding:16px 0 calc(12px + env(safe-area-inset-bottom));gap:12px}.terminal-footer-copy{text-align:center;width:100%;line-height:1.7}.terminal-footer-copy a{white-space:nowrap}.terminal-footer-links{flex-direction:column;align-items:center;gap:8px;width:100%;display:flex}.terminal-footer-socials{justify-content:center;gap:4px;width:100%}.terminal-footer-socials a{width:34px;min-width:34px;height:34px;min-height:34px;padding:0}.terminal-footer-webring{border-top:1px dashed var(--ph-border-soft);justify-content:center;gap:18px;width:100%;padding-top:7px;display:flex}.terminal-footer-webring a{align-items:center;min-height:28px;display:inline-flex}.terminal-prose{max-width:100%;font-size:16px;line-height:1.92}.terminal-prose h2{font-size:19px}.terminal-prose pre code{font-size:12.5px}.post-end-line,.post-license{flex-direction:column}.post-sibling-nav{grid-template-columns:1fr}.post-sibling-nav>span{display:none}.post-comments,.friend-comments{padding:17px 12px}.terminal-search-panel{margin-top:6vh}.terminal-search-footer{flex-direction:column}.terminal-error-actions{flex-direction:column;gap:9px}}}@layer utilities{.pointer-events-none{pointer-events:none}.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}.-inset-0\.5{inset:calc(var(--spacing)*-.5)}.-inset-\[4px\]{inset:-4px}.inset-0{inset:calc(var(--spacing)*0)}.-top-9{top:calc(var(--spacing)*-9)}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.right-0{right:calc(var(--spacing)*0)}.right-6{right:calc(var(--spacing)*6)}.right-7{right:calc(var(--spacing)*7)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-6{bottom:calc(var(--spacing)*6)}.bottom-22{bottom:calc(var(--spacing)*22)}.left-0{left:calc(var(--spacing)*0)}.left-1\/2{left:50%}.isolate{isolation:isolate}.-z-10{z-index:calc(10*-1)}.-z-\[2\]{z-index:calc(2*-1)}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-10000{z-index:10000}.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}}.mx-auto{margin-inline:auto}.mt-5{margin-top:calc(var(--spacing)*5)}.mt-8{margin-top:calc(var(--spacing)*8)}.mr-1{margin-right:calc(var(--spacing)*1)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-10{margin-bottom:calc(var(--spacing)*10)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-9\.5{width:calc(var(--spacing)*9.5);height:calc(var(--spacing)*9.5)}.size-11{width:calc(var(--spacing)*11);height:calc(var(--spacing)*11)}.size-12{width:calc(var(--spacing)*12);height:calc(var(--spacing)*12)}.size-\[30px\]{width:30px;height:30px}.size-full{width:100%;height:100%}.h-0{height:calc(var(--spacing)*0)}.h-0\.75{height:calc(var(--spacing)*.75)}.h-1{height:calc(var(--spacing)*1)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-10{height:calc(var(--spacing)*10)}.h-\[calc\(100\%\+4px\)\]{height:calc(100% + 4px)}.h-\[calc\(100\%\+8px\)\]{height:calc(100% + 8px)}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-0{width:calc(var(--spacing)*0)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-10{width:calc(var(--spacing)*10)}.w-24{width:calc(var(--spacing)*24)}.w-32{width:calc(var(--spacing)*32)}.w-\[calc\(100\%\+4px\)\]{width:calc(100% + 4px)}.w-\[calc\(100\%\+8px\)\]{width:calc(100% + 8px)}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.origin-left{transform-origin:0}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-1{--tw-translate-y:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-4{--tw-translate-y:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-24{--tw-translate-y:calc(var(--spacing) * 24);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-x-0{--tw-scale-x:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.-rotate-90{rotate:-90deg}.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-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-\[var\(--ph-border\)\]{border-color:var(--ph-border)}.border-\[var\(--ph-border-soft\)\]{border-color:var(--ph-border-soft)}.border-gray-200{border-color:var(--color-gray-200)}.border-light-border{border-color:var(--ph-border-soft)}.bg-\[var\(--ph-surface\)\]{background-color:var(--ph-surface)}.bg-accent-emerald\/10{background-color:var(--ph-cyan)}@supports (color:color-mix(in lab,red,red)){.bg-accent-emerald\/10{background-color:color-mix(in oklab,var(--ph-cyan) 10%,transparent)}}.bg-accent-orange\/10{background-color:var(--ph-orange)}@supports (color:color-mix(in lab,red,red)){.bg-accent-orange\/10{background-color:color-mix(in oklab,var(--ph-orange) 10%,transparent)}}.bg-accent-violet\/10{background-color:var(--ph-violet)}@supports (color:color-mix(in lab,red,red)){.bg-accent-violet\/10{background-color:color-mix(in oklab,var(--ph-violet) 10%,transparent)}}.bg-accent\/10{background-color:var(--ph-amber)}@supports (color:color-mix(in lab,red,red)){.bg-accent\/10{background-color:color-mix(in oklab,var(--ph-amber) 10%,transparent)}}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.bg-black\/10{background-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.bg-light-border{background-color:var(--ph-border-soft)}.bg-light-surface{background-color:var(--ph-surface)}.bg-pink-500\/10{background-color:#f6339a1a}@supports (color:color-mix(in lab,red,red)){.bg-pink-500\/10{background-color:color-mix(in oklab,var(--color-pink-500) 10%,transparent)}}.bg-primary,.bg-primary\/5{background-color:var(--ph-primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/5{background-color:color-mix(in oklab,var(--ph-primary) 5%,transparent)}}.bg-primary\/10{background-color:var(--ph-primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--ph-primary) 10%,transparent)}}.bg-transparent{background-color:#0000}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab,red,red)){.bg-white\/80{background-color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.bg-linear-to-br{--tw-gradient-position:to bottom right}@supports (background-image:linear-gradient(in lab,red,red)){.bg-linear-to-br{--tw-gradient-position:to bottom right in oklab}}.bg-linear-to-br{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-tr{--tw-gradient-position:to top right}@supports (background-image:linear-gradient(in lab,red,red)){.bg-linear-to-tr{--tw-gradient-position:to top right in oklab}}.bg-linear-to-tr{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-radial-\[closest-side\]{--tw-gradient-position:closest-side;background-image:radial-gradient(var(--tw-gradient-stops,closest-side))}.from-orange-50\/50{--tw-gradient-from:#fff7ed80}@supports (color:color-mix(in lab,red,red)){.from-orange-50\/50{--tw-gradient-from:color-mix(in oklab, var(--color-orange-50) 50%, transparent)}}.from-orange-50\/50{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary{--tw-gradient-from:var(--ph-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary\/10{--tw-gradient-from:var(--ph-primary)}@supports (color:color-mix(in lab,red,red)){.from-primary\/10{--tw-gradient-from:color-mix(in oklab, var(--ph-primary) 10%, transparent)}}.from-primary\/10{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-amber-50\/30{--tw-gradient-via:#fffbeb4d}@supports (color:color-mix(in lab,red,red)){.via-amber-50\/30{--tw-gradient-via:color-mix(in oklab, var(--color-amber-50) 30%, transparent)}}.via-amber-50\/30{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-primary-light{--tw-gradient-via:var(--ph-primary-bright);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-accent{--tw-gradient-to:var(--ph-amber);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.mask-\[linear-gradient\(to_bottom\,black_60\%\,transparent_100\%\)\]{-webkit-mask-image:linear-gradient(#000 60%,#0000 100%);mask-image:linear-gradient(#000 60%,#0000 100%)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.fill-white{fill:var(--color-white)}.object-cover{object-fit:cover}.p-3{padding:calc(var(--spacing)*3)}.p-5{padding:calc(var(--spacing)*5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-12{padding-block:calc(var(--spacing)*12)}.py-14{padding-block:calc(var(--spacing)*14)}.py-20{padding-block:calc(var(--spacing)*20)}.pt-\[13px\]{padding-top:13px}.pl-0{padding-left:calc(var(--spacing)*0)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-8{padding-left:calc(var(--spacing)*8)}.text-left{text-align:left}.font-heading{font-family:JetBrains Mono,Consolas,monospace}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.whitespace-nowrap{white-space:nowrap}.text-\[var\(--ph-muted\)\]{color:var(--ph-muted)}.text-accent{color:var(--ph-amber)}.text-accent-emerald{color:var(--ph-cyan)}.text-accent-orange{color:var(--ph-orange)}.text-accent-violet{color:var(--ph-violet)}.text-gray-200{color:var(--color-gray-200)}.text-gray-500{color:var(--color-gray-500)}.text-light-border{color:var(--ph-border-soft)}.text-light-muted{color:var(--ph-muted)}.text-light-text{color:var(--ph-text)}.text-pink-500{color:var(--color-pink-500)}.text-primary{color:var(--ph-primary)}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.italic{font-style:italic}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-55{opacity:.55}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-100{opacity:1}.mix-blend-multiply{mix-blend-mode:multiply}.mix-blend-screen{mix-blend-mode:screen}.shadow-\[0_0_8px_var\(--ph-primary\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,var(--ph-primary));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_10px_var\(--ph-primary\)\]{--tw-shadow:0 0 10px var(--tw-shadow-color,var(--ph-primary));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-glass{--tw-shadow:var(--ph-shadow);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + 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)}.ring-primary\/20{--tw-ring-color:var(--ph-primary)}@supports (color:color-mix(in lab,red,red)){.ring-primary\/20{--tw-ring-color:color-mix(in oklab, var(--ph-primary) 20%, transparent)}}.blur-3xl{--tw-blur:blur(var(--blur-3xl));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,)}.drop-shadow-md{--tw-drop-shadow-size:drop-shadow(0 3px 3px var(--tw-drop-shadow-color,#0000001f));--tw-drop-shadow:drop-shadow(var(--drop-shadow-md));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,)}.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-blur-\[1px\]{--tw-backdrop-blur:blur(1px);-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,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-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,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-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))}.transition-\[color\,background-color\,border-color\]{transition-property:color,background-color,border-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[opacity\,transform\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[stroke-dasharray\]{transition-property:stroke-dasharray;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[transform\,opacity\]{transition-property:transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.delay-\[0ms\]{transition-delay:0s}.delay-\[45ms\]{transition-delay:45ms}.delay-\[60ms\]{transition-delay:60ms}.delay-\[90ms\]{transition-delay:90ms}.delay-\[120ms\]{transition-delay:.12s}.delay-\[135ms\]{transition-delay:.135s}.delay-\[180ms\]{transition-delay:.18s}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-250{--tw-duration:.25s;transition-duration:.25s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-\[600ms\]{--tw-duration:.6s;transition-duration:.6s}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.will-change-transform{will-change:transform}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\:text-primary:is(:where(.group):hover *){color:var(--ph-primary)}.hover\:bg-\[var\(--ph-primary-soft\)\]:hover{background-color:var(--ph-primary-soft)}.hover\:bg-primary\/10:hover{background-color:var(--ph-primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/10:hover{background-color:color-mix(in oklab,var(--ph-primary) 10%,transparent)}}.hover\:text-\[\#00b2ff\]:hover{color:#00b2ff}.hover\:text-\[\#1da1f2\]:hover{color:#1da1f2}.hover\:text-\[\#12b7f5\]:hover{color:#12b7f5}.hover\:text-\[\#0088cc\]:hover{color:#08c}.hover\:text-\[\#1185fe\]:hover{color:#1185fe}.hover\:text-\[\#1877f2\]:hover{color:#1877f2}.hover\:text-\[\#e4405f\]:hover{color:#e4405f}.hover\:text-\[\#e6162d\]:hover{color:#e6162d}.hover\:text-\[var\(--ph-amber\)\]:hover{color:var(--ph-amber)}}.focus\:not-sr-only:focus{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.focus\:fixed:focus{position:fixed}.focus\:top-4:focus{top:calc(var(--spacing)*4)}.focus\:left-4:focus{left:calc(var(--spacing)*4)}.focus\:z-50:focus{z-index:50}.focus\:m-0:focus{margin:calc(var(--spacing)*0)}.focus\:rounded-none:focus{border-radius:0}.focus\:border:focus{border-style:var(--tw-border-style);border-width:1px}.focus\:border-primary:focus{border-color:var(--ph-primary)}.focus\:bg-light-bg:focus{background-color:var(--ph-bg)}.focus\:px-4:focus{padding-inline:calc(var(--spacing)*4)}.focus\:py-2:focus{padding-block:calc(var(--spacing)*2)}.focus\:font-heading:focus{font-family:JetBrains Mono,Consolas,monospace}.focus\:whitespace-normal:focus{white-space:normal}.focus\:text-primary:focus{color:var(--ph-primary)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + 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)}.focus-visible\:ring-primary\/50:focus-visible{--tw-ring-color:var(--ph-primary)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-primary\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ph-primary) 50%, transparent)}}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.data-\[visible\]\:pointer-events-auto[data-visible]{pointer-events:auto}.data-\[visible\]\:translate-y-0[data-visible]{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[visible\]\:opacity-100[data-visible]{opacity:1}@media (prefers-reduced-motion:reduce){.motion-reduce\:hidden{display:none}}@media (min-width:40rem){.sm\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sm\:block{display:block}.sm\:gap-4{gap:calc(var(--spacing)*4)}.sm\:gap-6{gap:calc(var(--spacing)*6)}.sm\:p-6{padding:calc(var(--spacing)*6)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:py-24{padding-block:calc(var(--spacing)*24)}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}}@media (min-width:48rem){.md\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}}.dark\:hidden:where(.dark,.dark *){display:none}.dark\:border-dark-border:where(.dark,.dark *){border-color:var(--ph-border-soft)}.dark\:border-gray-800:where(.dark,.dark *){border-color:var(--color-gray-800)}.dark\:border-white\/10:where(.dark,.dark *){border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.dark\:border-white\/10:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.dark\:bg-black\/30:where(.dark,.dark *){background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-black\/30:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-black) 30%,transparent)}}.dark\:bg-dark-border:where(.dark,.dark *){background-color:var(--ph-border-soft)}.dark\:bg-dark-surface:where(.dark,.dark *),.dark\:bg-dark-surface\/60:where(.dark,.dark *){background-color:var(--ph-surface)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-dark-surface\/60:where(.dark,.dark *){background-color:color-mix(in oklab,var(--ph-surface) 60%,transparent)}}.dark\:bg-gray-900\/80:where(.dark,.dark *){background-color:#101828cc}@supports (color:color-mix(in lab,red,red)){.dark\:bg-gray-900\/80:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-gray-900) 80%,transparent)}}.dark\:bg-primary\/10:where(.dark,.dark *){background-color:var(--ph-primary)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-primary\/10:where(.dark,.dark *){background-color:color-mix(in oklab,var(--ph-primary) 10%,transparent)}}.dark\:text-dark-border:where(.dark,.dark *){color:var(--ph-border-soft)}.dark\:text-dark-muted:where(.dark,.dark *){color:var(--ph-muted)}.dark\:text-dark-text:where(.dark,.dark *){color:var(--ph-text)}.dark\:text-gray-400:where(.dark,.dark *){color:var(--color-gray-400)}.dark\:text-gray-700:where(.dark,.dark *){color:var(--color-gray-700)}.dark\:opacity-30:where(.dark,.dark *){opacity:.3}.dark\:opacity-50:where(.dark,.dark *){opacity:.5}.dark\:opacity-100:where(.dark,.dark *){opacity:1}@media (hover:hover){.dark\:hover\:bg-primary\/20:where(.dark,.dark *):hover{background-color:var(--ph-primary)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-primary\/20:where(.dark,.dark *):hover{background-color:color-mix(in oklab,var(--ph-primary) 20%,transparent)}}.dark\:hover\:text-\[\#00b2ff\]:where(.dark,.dark *):hover{color:#00b2ff}.dark\:hover\:text-\[\#1da1f2\]:where(.dark,.dark *):hover{color:#1da1f2}.dark\:hover\:text-\[\#12b7f5\]:where(.dark,.dark *):hover{color:#12b7f5}.dark\:hover\:text-\[\#0088cc\]:where(.dark,.dark *):hover{color:#08c}.dark\:hover\:text-\[\#1185fe\]:where(.dark,.dark *):hover{color:#1185fe}.dark\:hover\:text-\[\#1877f2\]:where(.dark,.dark *):hover{color:#1877f2}.dark\:hover\:text-\[\#e4405f\]:where(.dark,.dark *):hover{color:#e4405f}.dark\:hover\:text-\[\#e6162d\]:where(.dark,.dark *):hover{color:#e6162d}}.\[\&\.fab-loading\]\:pointer-events-none.fab-loading{pointer-events:none}.\[\&\.fab-loading\]\:animate-\[pulse_1\.2s_ease-in-out_infinite\].fab-loading{animation:1.2s ease-in-out infinite pulse}.\[\&\.fab-visible\]\:translate-y-0.fab-visible{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\.fab-visible\]\:opacity-100.fab-visible{opacity:1}.\[\&\.music-spinning\]\:animate-\[music-spin_8s_linear_infinite\].music-spinning{animation:8s linear infinite music-spin}.\[\&\>svg\]\:transition-transform>svg{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.\[\&\>svg\]\:duration-200>svg{--tw-duration:.2s;transition-duration:.2s}@media (hover:hover){.hover\:\[\&\>svg\]\:scale-110:hover>svg{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}}.animate-in,.animate-in-delay-1,.animate-in-delay-2,.animate-in-delay-3{animation:fade-in-up .6s ease-out var(--anim-delay,0s) forwards}.animate-in-delay-1,.animate-in-delay-2,.animate-in-delay-3{opacity:0}.animate-in-delay-1{--anim-delay:.1s}.animate-in-delay-2{--anim-delay:.2s}.animate-in-delay-3{--anim-delay:.3s}.reveal{opacity:0;transition-property:opacity,transform;transition-duration:.6s;transition-timing-function:cubic-bezier(.22,1,.36,1);transform:translateY(24px)}.reveal.revealed{opacity:1;transform:translateY(0)}.reveal-delay-1{transition-delay:80ms}.reveal-delay-2{transition-delay:.16s}.reveal-delay-3{transition-delay:.3s}:root.dark img:not(.no-dim){--tw-brightness:brightness(90%);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,)}@media (hover:hover){:root.dark img:not(.no-dim):hover{--tw-brightness:brightness(100%);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,)}}}@font-face{font-family:Ubuntu;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ubuntu-latin-400-normal.woff2)format("woff2")}@font-face{font-family:Ubuntu;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ubuntu-latin-500-normal.woff2)format("woff2")}@font-face{font-family:Ubuntu;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/ubuntu-latin-700-normal.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/jetbrains-mono-latin-400-normal.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/jetbrains-mono-latin-500-normal.woff2)format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/jetbrains-mono-latin-700-normal.woff2)format("woff2")}@keyframes fade-in-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes music-spin{to{transform:rotate(360deg)}}@keyframes search-out{to{opacity:0;transform:translateY(6px) scale(.98)}}#search-dialog.is-closing>div:first-child{animation:.12s ease-in forwards search-out}::view-transition-image-pair(*){isolation:isolate}::view-transition-old(*){mix-blend-mode:normal;animation:.16s ease-out both fade-out}::view-transition-new(*){mix-blend-mode:normal;animation:.2s ease-out both fade-in}::view-transition-group(*){clip-path:inset(0 round 1rem);animation-duration:.3s;animation-timing-function:cubic-bezier(.22,1,.36,1)}::view-transition-old(root){animation-duration:.16s;animation-timing-function:cubic-bezier(.4,0,.2,1);animation-fill-mode:forwards}::view-transition-new(root){animation-duration:.16s;animation-timing-function:cubic-bezier(.4,0,.2,1);animation-fill-mode:forwards}::view-transition-group(root){clip-path:none}::view-transition-old(root){animation-name:fade-out}::view-transition-new(root){animation-name:fade-in}::view-transition-group(navbar){z-index:9999;clip-path:none}::view-transition-old(navbar){animation:none}::view-transition-new(navbar){animation:none}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion:reduce){.animate-in,.animate-in-delay-1,.animate-in-delay-2,.animate-in-delay-3,.reveal,.terminal-cursor{opacity:1!important;transition:none!important;animation:none!important;transform:none!important}::view-transition-group(*){animation:none!important}::view-transition-old(*){animation:none!important}::view-transition-new(*){animation:none!important}*{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media print{body{color:#000;background:#fff}.reveal{opacity:1!important;transition:none!important;transform:none!important}nav,footer,.toc-nav,.post-toc,.mobile-toc-button,#reading-progress-container,#global-music-fab,#scroll-to-top{display:none!important}.post-layout-shell{width:100%;padding:0}.terminal-prose{color:#111;max-width:none}.post-content{max-width:none}.post-content a{color:#000;text-decoration:underline}.post-content a:after{content:" ("attr(href)")";color:#6b7280;font-size:.875rem}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@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-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-font-weight{syntax:"*";inherits:false}@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-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-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-leading{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}