@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--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-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-orange-300:#ffb96d;--color-orange-500:#fe6e00;--color-gray-200:#e5e7eb;--color-gray-400:#99a1af;--color-gray-600:#4a5565;--color-gray-700:#364153;--color-gray-800:#1e2939;--spacing:.25rem;--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-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-semibold:600;--font-weight-bold:700;--leading-relaxed:1.625;--radius-md:.375rem;--ease-out:cubic-bezier(0, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-point:#006e67;--font-article:"MaruBuriLight", Georgia, serif;--font-article-bold:"MaruBuriSemiBold", Georgia, serif}@supports (color:lab(0% 0 0)){:root,:host{--color-orange-300:lab(80.8059% 21.7313 50.4455);--color-orange-500:lab(64.272% 57.1788 90.3583);--color-gray-200:lab(91.6229% -.159115 -2.26791);--color-gray-400:lab(65.9269% -.832707 -8.17473);--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)}}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, 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:where(:not(iframe)){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}@font-face{font-family:MaruBuriLight;src:url(https://hangeul.pstatic.net/hangeul_static/webfont/MaruBuri/MaruBuri-Light.woff2)format("woff2");font-display:swap}@font-face{font-family:MaruBuriSemiBold;src:url(https://hangeul.pstatic.net/hangeul_static/webfont/MaruBuri/MaruBuri-SemiBold.woff2)format("woff2");font-display:swap}:root{--font-body:"Noto Sans KR", "Apple SD Gothic Neo", sans-serif;--font-highlight:"Space Grotesk", sans-serif;--paper:#faf9f6;--ink:#222824;--muted:#5d6862;--line:#d8ded7;--accent:#006e67;--surface:#f0f2ed;--color-code-background:#2e3440;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.dark{--paper:#171c1b;--ink:#e8eeea;--muted:#a8b6ae;--line:#394640;--accent:#7ad8c6;--surface:#222c28;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html{scroll-padding-top:100px}body{background:var(--paper);color:var(--ink);font-family:var(--font-body), Arial, sans-serif;-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.7}h1,h2,h3,h4,h5,h6{text-wrap:pretty;overflow-wrap:anywhere;font-weight:700;line-height:1.4}h1{letter-spacing:-.04em;font-size:clamp(2rem,4vw,3.25rem)}h2{letter-spacing:-.03em;font-size:1.7rem}h3{font-size:1.35rem}p{margin:1em 0}a{text-underline-offset:4px}a:hover{color:var(--accent)}button,summary{cursor:pointer}button,input,select{font:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}::selection{background:var(--accent);color:var(--paper)}img{max-width:100%;height:auto}pre{color:#eceff4;tab-size:2;background:#2e3440;max-width:100%;padding:24px 20px;overflow-x:auto}pre,pre code{white-space:pre;overflow-wrap:normal;word-break:normal;font-size:14px;line-height:1.7}pre code.hljs{padding:0}code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.85em}:not(pre)>code{background:var(--surface);overflow-wrap:anywhere;padding:.15em .3em}table{border-collapse:collapse;width:max-content;max-width:100%;font-size:.9em;display:block;overflow:auto}th,td{border:1px solid var(--line);text-align:left;padding:10px 14px}th{background:var(--surface)}blockquote{border-left:3px solid var(--accent);color:var(--muted);margin:28px 0;padding:4px 24px}hr{border-color:var(--line);margin:32px 0}}@layer components{.site-shell{width:min(100% - 64px,1080px);margin:auto}.site-frame{flex-direction:column;min-height:100svh;display:flex}#main-content{flex:1;min-width:0;padding:48px 0 0}.site-header{z-index:50;border-bottom:1px solid var(--line);background:var(--paper);justify-content:space-between;align-items:center;gap:20px;min-height:88px;display:flex;position:sticky;top:0}.brand{font-family:var(--font-highlight), sans-serif;flex-shrink:0;align-items:center;gap:12px;font-size:22px;font-weight:500;line-height:1.05;display:flex}.brand img{width:40px;height:40px}.brand-caption{font-family:var(--font-body), sans-serif;letter-spacing:.06em;color:var(--muted);margin-top:6px;font-size:11px;display:block}.header-tools,.desktop-nav{align-items:center;gap:8px;display:flex}.desktop-nav{gap:22px;margin-right:16px}.desktop-nav a{align-items:center;min-height:44px;font-size:14px;display:inline-flex}.desktop-nav a[aria-current]{color:var(--accent);text-decoration:underline;text-decoration-thickness:2px}.icon-button{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;min-width:44px;min-height:44px;font-size:19px;display:inline-flex}.icon-button:hover{background:var(--surface)}.skip-link{background:var(--ink);color:var(--paper);z-index:100;padding:12px 20px;position:fixed;top:8px;left:16px;transform:translateY(-200%)}.skip-link:focus{transform:none}.mobile-nav{display:none}.menu-dialog{background:var(--paper);width:360px;max-width:100%;height:100svh;max-height:100svh;color:var(--ink);border:0;margin:0 0 0 auto;padding:0}.menu-dialog::backdrop{background:#0008}.menu-panel{padding:24px}.mobile-links{flex-direction:column;margin-top:24px;display:flex}.mobile-links a{border-bottom:1px solid var(--line);padding:16px 0;font-size:22px}.language-menu{position:relative}.language-menu summary{list-style:none}.language-menu summary::-webkit-details-marker{display:none}.language-panel{background:var(--paper);border:1px solid var(--line);width:240px;padding:20px;font-size:14px;position:absolute;top:52px;right:0;box-shadow:0 8px 24px #0001}.language-panel p{color:var(--muted);margin:0 0 12px}.language-panel a{text-decoration:underline}.eyebrow{font-family:var(--font-highlight), sans-serif;color:var(--accent);letter-spacing:.14em;text-transform:uppercase;font-size:12px;font-weight:500}.masthead{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;align-items:end;gap:32px;padding:12px 0 32px;display:grid}.masthead h1{font-family:var(--font-article-bold);margin:16px 0 20px;font-size:40px;font-weight:400;line-height:1.3}.masthead p{color:var(--muted);max-width:600px;margin:0;font-size:16px}.masthead-aside{text-align:right;color:var(--muted);font-size:13px}.masthead-aside a{min-height:44px;display:block}.section-heading{justify-content:space-between;align-items:center;gap:16px;display:flex}.list-heading{color:var(--muted);padding:28px 0 0;font-size:14px}.list-heading h2{font:inherit;color:var(--ink);font-weight:500}.post-row{border-bottom:1px solid var(--line);grid-template-columns:148px minmax(0,1fr);gap:28px;padding:36px 0;display:grid}.post-row-meta{color:var(--muted);flex-direction:column;gap:4px;padding-top:5px;font-size:12px;display:flex}.post-row h2{font-size:clamp(1.25rem,2.2vw,1.65rem);font-weight:700}.post-title-link:hover{text-decoration:underline}.post-excerpt{color:var(--muted);overflow-wrap:anywhere;margin:12px 0;font-size:15px;line-height:1.85}.tag-list{flex-wrap:wrap;gap:4px 12px;margin:12px 0 0;display:flex}.tag{min-height:32px;color:var(--accent);overflow-wrap:anywhere;align-items:center;font-size:12px;display:inline-flex;padding:0!important}.tag:before{content:"#";opacity:.6;margin-right:2px}.tag:hover{text-decoration:underline}.pagination{flex-wrap:wrap;justify-content:center;align-items:center;gap:4px;padding:36px 0;display:flex}.pagination ol{align-items:center;gap:4px;display:flex}.page-link{border-radius:3px;justify-content:center;align-items:center;width:44px;min-height:44px;font-size:14px;display:inline-flex}.page-link[aria-current]{background:var(--accent);color:var(--paper);font-weight:700}.page-link:not([aria-current]):hover{background:var(--surface)}.page-link[aria-disabled]{opacity:.35;pointer-events:none}.page-gap{text-align:center;width:22px;display:inline-block}.page-header{border-bottom:1px solid var(--line);margin-bottom:20px;padding:12px 0 32px}.page-header h1{margin:12px 0}.page-header p{color:var(--muted);margin:8px 0}.text-link{color:var(--accent);min-height:32px;text-decoration:underline;display:inline-block}.button{background:var(--accent);min-height:44px;color:var(--paper);border:1px solid var(--accent);border-radius:3px;justify-content:center;align-items:center;gap:8px;padding:8px 18px;font-size:14px;display:inline-flex}.button:hover{opacity:.88;color:var(--paper)}.button.secondary{color:var(--ink);border-color:var(--line);background:0 0}.empty-state{max-width:560px;padding:56px 0}.search-skeleton-row{border-bottom:1px solid var(--line);gap:14px;padding:28px 0;display:grid}.search-skeleton-row span{background:var(--line);height:14px;display:block}.search-skeleton-row .search-skeleton-title{width:72%;height:28px}.search-skeleton-row .search-skeleton-meta{width:30%}.search-skeleton-row .search-skeleton-excerpt{width:92%}.empty-state h2{font-size:24px}.empty-state p{color:var(--muted)}.not-found{grid-template-columns:minmax(0,560px) 120px;align-items:center;gap:64px;max-width:800px;margin:0 auto;padding:72px 0;display:grid}.not-found h1{word-break:keep-all;margin:16px 0}.not-found p{color:var(--muted);margin:0 0 28px}.not-found>img{width:120px;height:auto}.action-row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.topic-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:0 32px;margin:32px 0;display:grid}.topic-grid li{border-bottom:1px solid var(--line)}.topic-grid a{overflow-wrap:anywhere;justify-content:space-between;align-items:center;gap:16px;min-height:64px;padding:20px 0;display:flex}.topic-grid span{color:var(--muted);font-size:13px}.site-footer{border-top:1px solid var(--line);color:var(--muted);margin-top:80px;padding:32px 0;font-size:12px}.footer-intro{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;font-size:14px;display:flex}.footer-socials{flex-wrap:wrap;gap:8px;display:flex}.site-footer p{margin-bottom:0}.search-form{gap:12px;margin:28px 0 20px;display:flex}.search-form input{border:1px solid var(--line);background:var(--paper);border-radius:3px;width:100%;min-width:0;min-height:52px;padding:12px 16px}.search-form .button{white-space:nowrap;flex-shrink:0}.search-filters{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:end;gap:16px;padding-bottom:24px;display:flex}.search-filters label{color:var(--muted);flex-direction:column;flex:1;gap:6px;min-width:130px;font-size:12px;display:flex}.search-filters select{color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:3px;width:100%;min-height:44px;padding:10px}.search-summary{color:var(--muted);margin-top:24px;font-size:14px}.reading-article{max-width:720px;margin:auto}.article-header{padding:24px 0}.article-header h1{margin:20px 0;font-size:clamp(2rem,4vw,2.8rem)}.article-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px 16px;font-size:13px;display:flex}.article-meta time{white-space:nowrap}.reading-article .prose,.about-content{font-family:var(--font-article);overflow-wrap:anywhere;font-size:19px;line-height:1.95}.prose p{margin:1.4em 0}.prose h2,.prose h3,.prose h4{font-family:var(--font-body), sans-serif;margin:2.5em 0 .8em;scroll-margin-top:10px}.prose h2{font-size:1.6em}.prose h3{font-size:1.25em}.prose a,.link{color:var(--accent);text-decoration:underline}.prose strong{font-family:var(--font-article-bold);font-weight:600}.prose ul,.prose ol{margin:1.2em 0;padding-left:1.5em}.prose ul{list-style:outside}.prose ol{list-style:decimal}.prose li{padding:.2em 0}.prose li>p{margin:.4em 0}.prose img{max-width:100%;height:auto;margin:32px auto;display:block}figure{margin:24px 0}figcaption{font-family:var(--font-body), sans-serif;color:var(--muted);margin-top:8px;font-size:12px}.toc{border:1px solid var(--line);border-left:3px solid var(--accent);margin:32px 0;padding:20px 24px;font-size:14px}.toc summary{min-height:44px;font-weight:500}.toc ol{margin:12px 0 0;padding:0;list-style:none}.toc a{color:var(--muted);padding:7px 0;display:block}.toc a[aria-current]{color:var(--accent);text-decoration:underline}.toc .toc-nested{padding-left:20px}.code-tools{color:#eceff4;font-family:var(--font-body), sans-serif;background:#252b35;justify-content:space-between;align-items:center;padding:4px 12px;font-size:12px;display:flex}.code-tools button{min-height:44px;padding:4px 12px;text-decoration:underline}.code-tools+pre{margin-top:0}.ad-space{max-width:100%;min-height:180px;margin:32px 0;overflow:hidden}.reading-end{border-top:1px solid var(--line);margin-top:48px;padding-top:32px}.reading-end h2{font-size:24px}.related-list{margin:20px 0}.related-list li{border-bottom:1px solid var(--line)}.related-list a{padding:18px 0;font-size:17px;display:block}.adjacent-posts{grid-template-columns:1fr 1fr;gap:24px;padding:24px 0;display:grid}.adjacent-posts a{overflow-wrap:anywhere;min-width:0;display:block}.adjacent-posts .adjacent-post-older{grid-column:1}.adjacent-posts .adjacent-post-newer{text-align:right;grid-column:-2/-1}.adjacent-posts span{color:var(--muted);margin-bottom:8px;font-size:12px;display:block}.feed-row{border-bottom:1px solid var(--line);padding:24px 0}.feed-url{background:var(--surface);border:1px solid var(--line);width:100%;min-height:44px;margin:12px 0;padding:12px;font-size:14px;display:block}.status-message{color:var(--muted);font-size:13px}.share-menu{position:relative}.share-panel{z-index:30;background:var(--paper);border:1px solid var(--line);width:280px;padding:20px;position:absolute;top:52px;right:0;box-shadow:0 8px 24px #0001}.share-panel button,.share-panel a{text-align:left;min-height:44px;font-size:14px;display:block}.about-content{max-width:720px;margin:auto}.about-content article{width:100%}.about-content h2{margin:48px 0 16px}}@layer utilities{.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.relative{position:relative}.static{position:static}.sticky{position:sticky}.isolate{isolation:isolate}.float-left{float:left}.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}.my-8{margin-block:calc(var(--spacing) * 8)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-2\.5{margin-right:calc(var(--spacing) * 2.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.max-w-\[680px\]{max-width:680px}.-translate-y-full{--tw-translate-y:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.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}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.flex-wrap{flex-wrap:wrap}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.rounded{border-radius:.25rem}.rounded-full{border-radius:2147483647px}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.bg-gray-200{background-color:var(--color-gray-200)}.px-1{padding-inline:var(--spacing)}.px-2{padding-inline:calc(var(--spacing) * 2)}.py-1{padding-block:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-7{padding-top:calc(var(--spacing) * 7)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-right{text-align:right}.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-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-gray-600{color:var(--color-gray-600)}.text-inherit{color:inherit}.text-orange-500{color:var(--color-orange-500)}.lowercase{text-transform:lowercase}.underline{text-decoration-line:underline}.shadow{--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{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);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,)}.invert{--tw-invert:invert(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,)}.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,)}.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-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))}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}@media (hover:hover){.hover\:text-gray-800:hover{color:var(--color-gray-800)}.hover\:underline:hover{text-decoration-line:underline}}@media (min-width:40rem){.sm\:mx-0{margin-inline:0}.sm\:flex{display:flex}.sm\:items-end{align-items:flex-end}.sm\:gap-10{gap:calc(var(--spacing) * 10)}:where(.sm\:space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block:0}}.dark\:bg-gray-700:where(.dark,.dark *){background-color:var(--color-gray-700)}.dark\:text-gray-400:where(.dark,.dark *){color:var(--color-gray-400)}.dark\:text-orange-300:where(.dark,.dark *){color:var(--color-orange-300)}.dark\:invert-0:where(.dark,.dark *){--tw-invert:invert(0%);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){.dark\:hover\:text-gray-200:where(.dark,.dark *):hover{color:var(--color-gray-200)}}}@media (max-width:800px){.desktop-nav{display:none}.mobile-nav{display:block}.masthead{grid-template-columns:1fr;gap:20px}.masthead-aside{text-align:left;gap:20px;display:flex}}@media (max-width:600px){.not-found{grid-template-columns:1fr;gap:40px;padding:32px 0}.not-found>img{justify-self:center}.site-shell{width:calc(100% - 32px)}.site-header{gap:4px;min-height:76px}.header-tools{gap:0}.brand{gap:8px;font-size:19px}.brand img{width:34px;height:34px}.brand-caption{font-size:10px}#main-content{padding-top:28px}.masthead{padding:12px 0 24px}.masthead p{font-size:14px}.post-row{grid-template-columns:1fr;gap:8px;padding:28px 0}.post-row-meta{flex-direction:row;gap:12px;padding:0}.post-excerpt{font-size:14px}.post-row h2{font-size:21px}.pagination{gap:2px}.page-link{width:36px}.topic-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px}.topic-grid a{font-size:14px}.footer-intro{flex-direction:column;align-items:flex-start;gap:4px}.site-footer{margin-top:56px}.reading-article .prose,.about-content{font-size:18px}.article-header{padding:12px 0}.article-meta{font-size:12px}.article-header h1{font-size:32px}.toc{padding:16px}.adjacent-posts{grid-template-columns:1fr;gap:24px}.search-form{gap:8px}.search-form .button{padding:8px 14px}.search-filters{gap:12px}.search-filters label{min-width:110px}}@media (max-width:350px){.brand-caption{display:none}.brand img{width:30px;height:30px}.brand{font-size:18px}.page-link{width:32px}.pagination ol{gap:1px}.page-gap{width:10px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.qr-dialog{background:var(--paper);color:var(--ink);border:1px solid var(--line);max-width:calc(100% - 32px);max-height:90svh;margin:auto;padding:24px;overflow:auto}.qr-dialog::backdrop{background:#0009}.qr-dialog>img{height:auto;margin:20px auto 0;display:block}@media (max-width:600px){.pagination ol{flex-wrap:wrap;flex-basis:100%;order:0;justify-content:center;gap:2px}.pagination .page-link{width:44px}.pagination .page-arrow{order:1;margin:8px 20px 0}.page-gap{width:12px}}.home-discovery{border-bottom:1px solid var(--line);padding:32px 0}.home-discovery h2{font-size:22px}.home-search{max-width:720px;margin:20px 0 28px}.topic-hubs{grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;display:grid}.topic-hubs a{border-top:2px solid var(--accent);padding:16px 0;display:block}.topic-hub-title{justify-content:space-between;gap:12px;font-size:16px;font-weight:500;display:flex}.topic-hub-description{color:var(--muted);word-break:keep-all;margin:10px 0;font-size:12px;display:block}.topic-hub-count{color:var(--accent);font-size:12px}.featured-story{border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr;align-items:center;gap:40px;padding:40px 0;display:grid}.featured-story figure{margin:0}.featured-story img{aspect-ratio:1.6;object-fit:cover;width:100%}.featured-copy h2{margin:16px 0;font-size:28px}.featured-copy p{color:var(--muted);font-size:14px;line-height:1.8}.featured-meta{color:var(--muted);margin-bottom:20px;font-size:12px;display:block}.ad-label{text-align:center;color:var(--muted);font:10px var(--font-body);letter-spacing:.08em;text-transform:uppercase;margin-bottom:12px;display:block}.ad-preview{background:var(--surface);border:1px dashed var(--line);min-height:150px;color:var(--muted);place-items:center;font-size:12px;display:grid}@media (max-width:800px){.topic-hubs{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.featured-story{gap:24px}.featured-copy h2{font-size:23px}}@media (max-width:600px){.featured-story{grid-template-columns:1fr}.home-discovery h2{font-size:20px}.home-discovery .section-heading{align-items:start}.home-discovery .text-link{font-size:12px}.topic-hub-title{font-size:14px}.share-menu{flex-basis:100%}.share-panel{max-width:calc(100vw - 32px);left:0;right:auto}.masthead h1{font-size:30px}}@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-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-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@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-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{background:#2e3440}.hljs,.hljs-subst{color:#d8dee9}.hljs-selector-tag{color:#81a1c1}.hljs-selector-id{color:#8fbcbb;font-weight:700}.hljs-selector-class,.hljs-selector-attr{color:#8fbcbb}.hljs-property,.hljs-selector-pseudo{color:#88c0d0}.hljs-addition{background-color:#a3be8c80}.hljs-deletion{background-color:#bf616a80}.hljs-built_in,.hljs-type,.hljs-class{color:#8fbcbb}.hljs-function,.hljs-title.hljs-function,.hljs-function>.hljs-title{color:#88c0d0}.hljs-keyword,.hljs-literal,.hljs-symbol{color:#81a1c1}.hljs-number{color:#b48ead}.hljs-regexp{color:#ebcb8b}.hljs-string{color:#a3be8c}.hljs-title{color:#8fbcbb}.hljs-params{color:#d8dee9}.hljs-bullet{color:#81a1c1}.hljs-code{color:#8fbcbb}.hljs-emphasis{font-style:italic}.hljs-formula{color:#8fbcbb}.hljs-strong{font-weight:700}.hljs-link:hover{text-decoration:underline}.hljs-quote,.hljs-comment{color:#4c566a}.hljs-doctag{color:#8fbcbb}.hljs-meta,.hljs-meta .hljs-keyword{color:#5e81ac}.hljs-meta .hljs-string{color:#a3be8c}.hljs-attr{color:#8fbcbb}.hljs-attribute{color:#d8dee9}.hljs-name{color:#81a1c1}.hljs-section{color:#88c0d0}.hljs-tag{color:#81a1c1}.hljs-variable,.hljs-template-variable{color:#d8dee9}.hljs-template-tag{color:#5e81ac}.language-abnf .hljs-attribute{color:#88c0d0}.language-abnf .hljs-symbol{color:#ebcb8b}.language-apache .hljs-attribute{color:#88c0d0}.language-apache .hljs-section{color:#81a1c1}.language-arduino .hljs-built_in{color:#88c0d0}.language-aspectj .hljs-meta{color:#d08770}.language-aspectj>.hljs-title{color:#88c0d0}.language-bnf .hljs-attribute{color:#8fbcbb}.language-clojure .hljs-name{color:#88c0d0}.language-clojure .hljs-symbol{color:#ebcb8b}.language-coq .hljs-built_in{color:#88c0d0}.language-cpp .hljs-meta .hljs-string{color:#8fbcbb}.language-css .hljs-built_in{color:#88c0d0}.language-css .hljs-keyword{color:#d08770}.language-diff .hljs-meta,.language-ebnf .hljs-attribute{color:#8fbcbb}.language-glsl .hljs-built_in{color:#88c0d0}.language-groovy .hljs-meta:not(:first-child),.language-haxe .hljs-meta,.language-java .hljs-meta{color:#d08770}.language-ldif .hljs-attribute{color:#8fbcbb}.language-lisp .hljs-name,.language-lua .hljs-built_in,.language-moonscript .hljs-built_in,.language-nginx .hljs-attribute{color:#88c0d0}.language-nginx .hljs-section{color:#5e81ac}.language-pf .hljs-built_in,.language-processing .hljs-built_in{color:#88c0d0}.language-scss .hljs-keyword,.language-stylus .hljs-keyword{color:#81a1c1}.language-swift .hljs-meta{color:#d08770}.language-vim .hljs-built_in{color:#88c0d0;font-style:italic}.language-yaml .hljs-meta{color:#d08770}
:root,:host{--fa-font-solid:normal 900 1em/1 "Font Awesome 7 Free";--fa-font-regular:normal 400 1em/1 "Font Awesome 7 Free";--fa-font-light:normal 300 1em/1 "Font Awesome 7 Pro";--fa-font-thin:normal 100 1em/1 "Font Awesome 7 Pro";--fa-font-duotone:normal 900 1em/1 "Font Awesome 7 Duotone";--fa-font-duotone-regular:normal 400 1em/1 "Font Awesome 7 Duotone";--fa-font-duotone-light:normal 300 1em/1 "Font Awesome 7 Duotone";--fa-font-duotone-thin:normal 100 1em/1 "Font Awesome 7 Duotone";--fa-font-brands:normal 400 1em/1 "Font Awesome 7 Brands";--fa-font-sharp-solid:normal 900 1em/1 "Font Awesome 7 Sharp";--fa-font-sharp-regular:normal 400 1em/1 "Font Awesome 7 Sharp";--fa-font-sharp-light:normal 300 1em/1 "Font Awesome 7 Sharp";--fa-font-sharp-thin:normal 100 1em/1 "Font Awesome 7 Sharp";--fa-font-sharp-duotone-solid:normal 900 1em/1 "Font Awesome 7 Sharp Duotone";--fa-font-sharp-duotone-regular:normal 400 1em/1 "Font Awesome 7 Sharp Duotone";--fa-font-sharp-duotone-light:normal 300 1em/1 "Font Awesome 7 Sharp Duotone";--fa-font-sharp-duotone-thin:normal 100 1em/1 "Font Awesome 7 Sharp Duotone";--fa-font-slab-regular:normal 400 1em/1 "Font Awesome 7 Slab";--fa-font-slab-press-regular:normal 400 1em/1 "Font Awesome 7 Slab Press";--fa-font-slab-duo-regular:normal 400 1em/1 "Font Awesome 7 Slab Duo";--fa-font-slab-press-duo-regular:normal 400 1em/1 "Font Awesome 7 Slab Press Duo";--fa-font-pixel-regular:normal 400 1em/1 "Font Awesome 7 Pixel";--fa-font-mosaic-solid:normal 900 1em/1 "Font Awesome 7 Mosaic";--fa-font-vellum-solid:normal 900 1em/1 "Font Awesome 7 Vellum";--fa-font-whiteboard-semibold:normal 600 1em/1 "Font Awesome 7 Whiteboard";--fa-font-thumbprint-light:normal 300 1em/1 "Font Awesome 7 Thumbprint";--fa-font-notdog-solid:normal 900 1em/1 "Font Awesome 7 Notdog";--fa-font-notdog-duo-solid:normal 900 1em/1 "Font Awesome 7 Notdog Duo";--fa-font-etch-solid:normal 900 1em/1 "Font Awesome 7 Etch";--fa-font-graphite-thin:normal 100 1em/1 "Font Awesome 7 Graphite";--fa-font-jelly-regular:normal 400 1em/1 "Font Awesome 7 Jelly";--fa-font-jelly-fill-regular:normal 400 1em/1 "Font Awesome 7 Jelly Fill";--fa-font-jelly-duo-regular:normal 400 1em/1 "Font Awesome 7 Jelly Duo";--fa-font-chisel-regular:normal 400 1em/1 "Font Awesome 7 Chisel";--fa-font-utility-semibold:normal 600 1em/1 "Font Awesome 7 Utility";--fa-font-utility-duo-semibold:normal 600 1em/1 "Font Awesome 7 Utility Duo";--fa-font-utility-fill-semibold:normal 600 1em/1 "Font Awesome 7 Utility Fill"}.svg-inline--fa{box-sizing:content-box;display:var(--fa-display,inline-block);vertical-align:-.125em;height:1em;width:var(--fa-width,1.25em);overflow:visible}.svg-inline--fa.fa-2xs{vertical-align:.1em}.svg-inline--fa.fa-xs{vertical-align:0}.svg-inline--fa.fa-sm{vertical-align:-.0714286em}.svg-inline--fa.fa-lg{vertical-align:-.2em}.svg-inline--fa.fa-xl{vertical-align:-.25em}.svg-inline--fa.fa-2xl{vertical-align:-.3125em}.svg-inline--fa.fa-pull-left,.svg-inline--fa .fa-pull-start{float:inline-start;margin-inline-end:var(--fa-pull-margin,.3em)}.svg-inline--fa.fa-pull-right,.svg-inline--fa .fa-pull-end{float:inline-end;margin-inline-start:var(--fa-pull-margin,.3em)}.svg-inline--fa.fa-li{width:var(--fa-li-width,2em);inset-block-start:.25em;inset-inline-start:calc(-1 * var(--fa-li-width,2em))}.fa-layers-counter,.fa-layers-text{text-align:center;display:inline-block;position:absolute}.fa-layers{text-align:center;vertical-align:-.125em;height:1em;width:var(--fa-width,1.25em);display:inline-block;position:relative}.fa-layers .svg-inline--fa{transform-origin:50%;margin:auto;position:absolute;inset:0}.fa-layers-text{transform-origin:50%;top:50%;left:50%;transform:translate(-50%,-50%)}.fa-layers-counter{background-color:var(--fa-counter-background-color,#ff253a);border-radius:var(--fa-counter-border-radius,1em);box-sizing:border-box;color:var(--fa-inverse,#fff);line-height:var(--fa-counter-line-height,1);max-width:var(--fa-counter-max-width,5em);min-width:var(--fa-counter-min-width,1.5em);padding:var(--fa-counter-padding,.25em .5em);right:var(--fa-right,0);text-overflow:ellipsis;top:var(--fa-top,0);transform:scale(var(--fa-counter-scale,.25));transform-origin:100% 0;overflow:hidden}.fa-layers-bottom-right{bottom:var(--fa-bottom,0);right:var(--fa-right,0);transform:scale(var(--fa-layers-scale,.25));transform-origin:100% 100%;top:auto}.fa-layers-bottom-left{bottom:var(--fa-bottom,0);left:var(--fa-left,0);transform:scale(var(--fa-layers-scale,.25));transform-origin:0 100%;top:auto;right:auto}.fa-layers-top-right{top:var(--fa-top,0);right:var(--fa-right,0);transform:scale(var(--fa-layers-scale,.25));transform-origin:100% 0}.fa-layers-top-left{left:var(--fa-left,0);right:auto;top:var(--fa-top,0);transform:scale(var(--fa-layers-scale,.25));transform-origin:0 0}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{vertical-align:.225em;font-size:.625em;line-height:.1em}.fa-xs{vertical-align:.125em;font-size:.75em;line-height:.0833333em}.fa-sm{vertical-align:.0535715em;font-size:.875em;line-height:.0714286em}.fa-lg{vertical-align:-.075em;font-size:1.25em;line-height:.05em}.fa-xl{vertical-align:-.125em;font-size:1.5em;line-height:.0416667em}.fa-2xl{vertical-align:-.1875em;font-size:2em;line-height:.03125em}.fa-width-auto{--fa-width:auto}.fa-fw,.fa-width-fixed{--fa-width:1.25em}.fa-canvas-square{margin-block-end:-.125em;padding-block:.125em}.fa-canvas-roomy{box-sizing:content-box;margin-block-end:-.25em;padding-block:.25em;padding-inline:.125em}.fa-ul{margin-inline-start:var(--fa-li-margin,2.5em);padding-inline-start:0;list-style-type:none}.fa-ul>li{position:relative}.fa-li{text-align:center;width:var(--fa-li-width,2em);line-height:inherit;position:absolute;inset-inline-start:calc(-1 * var(--fa-li-width,2em))}.fa-border{border-color:var(--fa-border-color,#eee);border-radius:var(--fa-border-radius,.1em);border-style:var(--fa-border-style,solid);border-width:var(--fa-border-width,.0625em);box-sizing:var(--fa-border-box-sizing,content-box);padding:var(--fa-border-padding,.1875em .25em)}.fa-pull-left,.fa-pull-start{float:inline-start;margin-inline-end:var(--fa-pull-margin,.3em)}.fa-pull-right,.fa-pull-end{float:inline-end;margin-inline-start:var(--fa-pull-margin,.3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28, .84, .42, 1))}.fa-fade{animation-name:fa-fade;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-beat-fade{animation-name:fa-beat-fade;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1.5s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-flip-360{animation-name:fa-flip-360;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{animation-name:fa-shake;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,.75s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-spin{animation-name:fa-spin;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,steps(8))}.fa-spin-snap{animation-name:fa-spin-snap;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,3s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-snap-4{animation-name:fa-spin-snap-4;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,2.4s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-snap-8{animation-name:fa-spin-snap-8;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,4s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-buzz{animation-name:fa-buzz;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,.6s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-wag{animation-name:fa-wag;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,.9s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-out);transform-origin:bottom}.fa-float{animation-name:fa-float;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,3s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out);will-change:transform}.fa-swing{animation-name:fa-swing;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1.2s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-out);transform-origin:top}.fa-jello{animation-name:fa-jello;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,.9s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-out)}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-bounce,.fa-fade,.fa-beat-fade,.fa-flip,.fa-flip-360,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse,.fa-buzz,.fa-float,.fa-jello,.fa-spin-snap,.fa-spin-snap-4,.fa-spin-snap-8,.fa-swing,.fa-wag{transition:none!important;animation:none!important}}@keyframes fa-beat{0%{transform:scale(1)}25%{transform:scale(calc(1.25 * var(--fa-beat-scale,1.25)))}45%{transform:scale(calc(1.22 * var(--fa-beat-scale,1.22)))}65%{transform:scale(calc(1.25 * var(--fa-beat-scale,1.25)))}90%{transform:scale(1)}}@keyframes fa-bounce{0%{animation-timing-function:var(--fa-animation-timing);transform:scale(1)translateY(0)}14%{transform:scale(var(--fa-bounce-start-scale-x,1.06), var(--fa-bounce-start-scale-y,.94)) translateY(var(--fa-bounce-anticipation,3px));animation-timing-function:cubic-bezier(.33,0,.66,.33)}32%{transform:scale(var(--fa-bounce-jump-scale-x,.94), var(--fa-bounce-jump-scale-y,1.12)) translateY(calc(-1 * var(--fa-bounce-height,.5em)));animation-timing-function:cubic-bezier(.33,.66,.66,1)}52%{transform:scale(1, 1) translateY(calc(-1 * var(--fa-bounce-height,.5em) * 1.1));animation-timing-function:cubic-bezier(.5,0,1,.5)}70%{transform:scale(var(--fa-bounce-land-scale-x,1.06), var(--fa-bounce-land-scale-y,.92)) translateY(0);animation-timing-function:cubic-bezier(.33,.33,.66,1)}85%{transform:scale(.98, 1.04) translateY(calc(-2px * var(--fa-bounce-rebound,1)));animation-timing-function:cubic-bezier(.33,0,.66,1)}to{transform:scale(1)translateY(0)}}@keyframes fa-fade{0%{opacity:1;animation-timing-function:cubic-bezier(.2,0,.4,1);transform:scale(1)}40%{opacity:var(--fa-fade-opacity,.4);animation-timing-function:cubic-bezier(.4,0,.6,1);transform:scale(.98)}to{opacity:1;transform:scale(1)}}@keyframes fa-beat-fade{0%{opacity:var(--fa-beat-fade-opacity,.4);animation-timing-function:cubic-bezier(.2,0,.4,1);transform:scale(1)}25%{opacity:calc(var(--fa-beat-fade-opacity,.4) + .4);transform:scale(var(--fa-beat-fade-scale,1.28));animation-timing-function:cubic-bezier(.4,0,.6,1)}45%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.25));animation-timing-function:cubic-bezier(.4,0,.2,1)}65%{opacity:calc(var(--fa-beat-fade-opacity,.4) + .4);transform:scale(var(--fa-beat-fade-scale,1.28));animation-timing-function:cubic-bezier(.4,0,.6,1)}to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}}@keyframes fa-flip{0%{transform:perspective(2em) scale(1) rotate3d(var(--fa-flip-x,0), var(--fa-flip-y,1), var(--fa-flip-z,0), 0deg);animation-timing-function:cubic-bezier(.2,0,.4,1)}8%{transform:perspective(2em) scale(var(--fa-flip-anticipation-scale,.95)) rotate3d(var(--fa-flip-x,0), var(--fa-flip-y,1), var(--fa-flip-z,0), 0deg);animation-timing-function:cubic-bezier(.33,0,.66,.33)}35%{transform:perspective(2em) scale(1) rotate3d(var(--fa-flip-x,0), var(--fa-flip-y,1), var(--fa-flip-z,0), calc(var(--fa-flip-angle,-360deg) * .6));animation-timing-function:linear}65%{transform:perspective(2em) scale(1) rotate3d(var(--fa-flip-x,0), var(--fa-flip-y,1), var(--fa-flip-z,0), calc(var(--fa-flip-angle,-360deg) * .5));animation-timing-function:cubic-bezier(.33,.66,.66,1)}92%{transform:perspective(2em) scale(1) rotate3d(var(--fa-flip-x,0), var(--fa-flip-y,1), var(--fa-flip-z,0), calc(var(--fa-flip-angle,-360deg) * var(--fa-flip-overshoot,1.04)));animation-timing-function:cubic-bezier(.33,0,.66,1)}to{transform:perspective(2em) scale(1) rotate3d(var(--fa-flip-x,0), var(--fa-flip-y,1), var(--fa-flip-z,0), var(--fa-flip-angle,-360deg))}}@keyframes fa-flip-360{0%{transform:perspective(2em) scale(1) rotate3d(var(--fa-flip-x,0), var(--fa-flip-y,1), var(--fa-flip-z,0), 0deg);animation-timing-function:cubic-bezier(.2,0,.4,1)}8%{transform:perspective(2em) scale(var(--fa-flip-anticipation-scale,.95)) rotate3d(var(--fa-flip-x,0), var(--fa-flip-y,1), var(--fa-flip-z,0), 0deg);animation-timing-function:cubic-bezier(.33,0,.66,.33)}50%{transform:perspective(2em) scale(1) rotate3d(var(--fa-flip-x,0), var(--fa-flip-y,1), var(--fa-flip-z,0), calc(var(--fa-flip-angle,-360deg) * .6));animation-timing-function:cubic-bezier(.33,.66,.66,1)}80%{transform:perspective(2em) scale(1) rotate3d(var(--fa-flip-x,0), var(--fa-flip-y,1), var(--fa-flip-z,0), calc(var(--fa-flip-angle,-360deg) * var(--fa-flip-overshoot,1.04)));animation-timing-function:cubic-bezier(.33,0,.66,1)}to{transform:perspective(2em) scale(1) rotate3d(var(--fa-flip-x,0), var(--fa-flip-y,1), var(--fa-flip-z,0), var(--fa-flip-angle,-360deg))}}@keyframes fa-shake{0%{animation-timing-function:cubic-bezier(.2,0,.8,1);transform:rotate(0)}8%{animation-timing-function:cubic-bezier(.3,0,.7,1);transform:rotate(35deg)translate(1px)}20%{animation-timing-function:cubic-bezier(.3,0,.7,1);transform:rotate(-22deg)translate(-1px)}35%{animation-timing-function:cubic-bezier(.3,0,.7,1);transform:rotate(15deg)translate(1px)}50%{animation-timing-function:cubic-bezier(.4,0,.6,1);transform:rotate(-9deg)}65%{animation-timing-function:cubic-bezier(.4,0,.6,1);transform:rotate(5deg)}78%{animation-timing-function:cubic-bezier(.4,0,.6,1);transform:rotate(-3deg)}90%{animation-timing-function:cubic-bezier(.4,0,.2,1);transform:rotate(1deg)}to{transform:rotate(0)}}@keyframes fa-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes fa-spin-snap{0%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:rotate(0)}12%{animation-timing-function:cubic-bezier(.8,0,1,1);transform:rotate(60deg)}16.67%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:rotate(60deg)}28.67%{animation-timing-function:cubic-bezier(.8,0,1,1);transform:rotate(120deg)}33.33%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:rotate(120deg)}45.33%{animation-timing-function:cubic-bezier(.8,0,1,1);transform:rotate(180deg)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:rotate(180deg)}62%{animation-timing-function:cubic-bezier(.8,0,1,1);transform:rotate(240deg)}66.67%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:rotate(240deg)}78.67%{animation-timing-function:cubic-bezier(.8,0,1,1);transform:rotate(300deg)}83.33%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:rotate(300deg)}95.33%{animation-timing-function:cubic-bezier(.8,0,1,1);transform:rotate(360deg)}to{transform:rotate(360deg)}}@keyframes fa-spin-snap-4{0%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:rotate(0)}15%{animation-timing-function:cubic-bezier(.8,0,1,1);transform:rotate(90deg)}25%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:rotate(90deg)}40%{animation-timing-function:cubic-bezier(.8,0,1,1);transform:rotate(180deg)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:rotate(180deg)}65%{animation-timing-function:cubic-bezier(.8,0,1,1);transform:rotate(270deg)}75%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:rotate(270deg)}90%{animation-timing-function:cubic-bezier(.8,0,1,1);transform:rotate(360deg)}to{transform:rotate(360deg)}}@keyframes fa-spin-snap-8{0%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:rotate(0)}9%{animation-timing-function:cubic-bezier(.8,0,1,1);transform:rotate(45deg)}12.5%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:rotate(45deg)}21.5%{animation-timing-function:cubic-bezier(.8,0,1,1);transform:rotate(90deg)}25%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:rotate(90deg)}34%{animation-timing-function:cubic-bezier(.8,0,1,1);transform:rotate(135deg)}37.5%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:rotate(135deg)}46.5%{animation-timing-function:cubic-bezier(.8,0,1,1);transform:rotate(180deg)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:rotate(180deg)}59%{animation-timing-function:cubic-bezier(.8,0,1,1);transform:rotate(225deg)}62.5%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:rotate(225deg)}71.5%{animation-timing-function:cubic-bezier(.8,0,1,1);transform:rotate(270deg)}75%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:rotate(270deg)}84%{animation-timing-function:cubic-bezier(.8,0,1,1);transform:rotate(315deg)}87.5%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:rotate(315deg)}96.5%{animation-timing-function:cubic-bezier(.8,0,1,1);transform:rotate(360deg)}to{transform:rotate(360deg)}}@keyframes fa-buzz{0%{animation-timing-function:cubic-bezier(.1,0,.9,1);transform:translate(0)rotate(0)}5%{transform:translateX(var(--fa-buzz-distance,4px)) rotate(.5deg)}10%{transform:translateX(calc(-1 * var(--fa-buzz-distance,4px))) rotate(-.5deg)}15%{transform:translateX(var(--fa-buzz-distance,4px)) rotate(.3deg)}20%{transform:translateX(calc(-1 * var(--fa-buzz-distance,4px))) rotate(-.3deg)}25%{transform:translateX(calc(var(--fa-buzz-distance,4px) * .7)) rotate(.2deg)}30%{transform:translateX(calc(-1 * var(--fa-buzz-distance,4px) * .7)) rotate(-.2deg)}35%{transform:translateX(calc(var(--fa-buzz-distance,4px) * .4)) rotate(.1deg)}40%{transform:translate(0)rotate(0)}to{transform:translate(0)rotate(0)}}@keyframes fa-wag{0%{animation-timing-function:cubic-bezier(.2,0,.6,1);transform:rotate(0)}12%{transform:rotate(var(--fa-wag-angle,12deg));animation-timing-function:cubic-bezier(.4,0,.2,1)}24%{animation-timing-function:cubic-bezier(.2,0,.6,1);transform:rotate(2deg)}36%{transform:rotate(calc(var(--fa-wag-angle,12deg) * .85));animation-timing-function:cubic-bezier(.4,0,.2,1)}48%{animation-timing-function:cubic-bezier(.2,0,.6,1);transform:rotate(1deg)}58%{transform:rotate(calc(var(--fa-wag-angle,12deg) * .6));animation-timing-function:cubic-bezier(.4,0,.2,1)}68%{transform:rotate(0)}to{transform:rotate(0)}}@keyframes fa-float{0%{transform:translateY(0) translateX(0) rotate(0deg) scale(var(--fa-float-squash-x,1.02), var(--fa-float-squash-y,.98));animation-timing-function:cubic-bezier(.33,0,.66,.33)}15%{transform:translateY(calc(-.4 * var(--fa-float-height,6px))) translateX(var(--fa-float-drift,1px)) rotate(var(--fa-float-tilt,1deg)) scale(1, 1);animation-timing-function:cubic-bezier(.33,.66,.66,1)}35%{transform:translateY(calc(-1 * var(--fa-float-height,6px))) translateX(0) rotate(0deg) scale(var(--fa-float-stretch-x,.98), var(--fa-float-stretch-y,1.03));animation-timing-function:cubic-bezier(.5,0,.5,0)}50%{transform:translateY(calc(-.92 * var(--fa-float-height,6px))) translateX(calc(-.5 * var(--fa-float-drift,1px))) rotate(calc(-.5 * var(--fa-float-tilt,1deg))) scale(.995, 1.01);animation-timing-function:cubic-bezier(.33,0,.66,.33)}70%{transform:translateY(calc(-.3 * var(--fa-float-height,6px))) translateX(calc(-1 * var(--fa-float-drift,1px))) rotate(calc(-1 * var(--fa-float-tilt,1deg))) scale(1, 1);animation-timing-function:cubic-bezier(.33,.66,.66,1)}90%{transform:translateY(calc(.05 * var(--fa-float-height,6px))) translateX(0) rotate(0deg) scale(var(--fa-float-squash-x,1.02), var(--fa-float-squash-y,.98));animation-timing-function:cubic-bezier(.33,0,.66,1)}to{transform:translateY(0) translateX(0) rotate(0deg) scale(var(--fa-float-squash-x,1.02), var(--fa-float-squash-y,.98))}}@keyframes fa-swing{0%{animation-timing-function:cubic-bezier(.2,0,.8,1);transform:rotate(0)}8%{transform:rotate(var(--fa-swing-angle,22deg));animation-timing-function:cubic-bezier(.3,0,.7,1)}18%{transform:rotate(calc(-1 * var(--fa-swing-angle,22deg) * .85));animation-timing-function:cubic-bezier(.3,0,.7,1)}28%{transform:rotate(calc(var(--fa-swing-angle,22deg) * .65));animation-timing-function:cubic-bezier(.35,0,.65,1)}38%{transform:rotate(calc(-1 * var(--fa-swing-angle,22deg) * .45));animation-timing-function:cubic-bezier(.4,0,.6,1)}48%{transform:rotate(calc(var(--fa-swing-angle,22deg) * .25));animation-timing-function:cubic-bezier(.4,0,.6,1)}56%{transform:rotate(calc(-1 * var(--fa-swing-angle,22deg) * .1));animation-timing-function:cubic-bezier(.4,0,.6,1)}64%{transform:rotate(0)}to{transform:rotate(0)}}@keyframes fa-jello{0%{animation-timing-function:cubic-bezier(.2,0,.8,1);transform:scale(1)}12%{transform:scale(var(--fa-jello-scale-x,1.15), calc(2 - var(--fa-jello-scale-x,1.15)));animation-timing-function:cubic-bezier(.3,0,.7,1)}24%{transform:scale(calc(2 - var(--fa-jello-scale-y,1.12)), var(--fa-jello-scale-y,1.12));animation-timing-function:cubic-bezier(.3,0,.7,1)}36%{transform:scale(calc(1 + (var(--fa-jello-scale-x,1.15) - 1) * .5), calc(2 - (1 + (var(--fa-jello-scale-x,1.15) - 1) * .5)));animation-timing-function:cubic-bezier(.4,0,.6,1)}48%{transform:scale(calc(2 - (1 + (var(--fa-jello-scale-y,1.12) - 1) * .3)), calc(1 + (var(--fa-jello-scale-y,1.12) - 1) * .3));animation-timing-function:cubic-bezier(.4,0,.6,1)}58%{animation-timing-function:cubic-bezier(.4,0,.2,1);transform:scale(1.02,.98)}68%{transform:scale(1)}to{transform:scale(1)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle,0))}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.svg-inline--fa.fa-inverse{fill:var(--fa-inverse,#fff)}.fa-stack{vertical-align:middle;width:2.5em;height:2em;line-height:2em;display:inline-block;position:relative}.fa-inverse{color:var(--fa-inverse,#fff)}.svg-inline--fa.fa-stack-1x{--fa-width:1.25em;height:1em;width:var(--fa-width)}.svg-inline--fa.fa-stack-2x{--fa-width:2.5em;height:2em;width:var(--fa-width)}.fa-stack-1x,.fa-stack-2x{z-index:var(--fa-stack-z-index,auto);margin:auto;position:absolute;inset:0}
html[data-site=tech]{--neon-lime:#d7fa00;--paint-cyan:#05dce8;--paint-pink:#ff058a;--tag-surface:#e2ebee;--font-body:"Pretendard Variable", Pretendard, "Apple SD Gothic Neo", sans-serif;--font-highlight:var(--font-body);--font-article:var(--font-body), sans-serif;--font-article-bold:var(--font-body), sans-serif;scroll-padding-top:32px}html[data-site=tech].dark{--tag-surface:#344148}.artwork{vertical-align:middle;flex-shrink:0;display:inline-block;position:relative}.artwork img{width:100%;height:auto;display:block;position:relative}.art-dark,.dark .art-light{display:none!important}.dark .art-dark{display:block!important}.ink-icon{flex:0 0 32px;width:32px;height:32px;display:inline-flex}.ink-icon img{object-fit:contain;width:100%;height:100%}.dark .artwork-logo:after{content:"";pointer-events:none;clip-path:polygon(47.44% 66.34%,59.49% 66.34%,59.49% 67.32%,74.23% 67.32%,74.23% 64.39%,76.92% 64.39%,76.92% 67.32%,82.95% 67.32%,82.95% 79.02%,59.49% 79.02%,59.49% 82.93%,47.44% 82.93%);filter:grayscale()contrast(1000%)invert();mix-blend-mode:screen;background:url(/assets/renewal/logo.webp) 50%/100% 100% no-repeat;position:absolute;inset:0}.search-input-wrap{flex:1;min-width:0;position:relative}.search-clear{position:absolute;top:50%;right:10px;transform:translateY(-50%)}.search-input-wrap input{padding-right:52px}html[data-site=tech] body{line-height:1.7}html[data-site=tech] ::selection{background:var(--neon-lime);color:#111317}html[data-site=tech] .site-shell{width:min(1328px,100% - 128px);max-width:none;margin:auto;position:relative}html[data-site=tech] .site-frame{z-index:1;position:relative}html[data-site=tech] .site-header{background:0 0;border:0;align-items:flex-start;gap:28px;min-height:192px;padding:20px 0 28px;position:relative;top:auto}html[data-site=tech] .site-header.is-home{min-height:234px}html[data-site=tech] .brand-cluster{align-items:center;gap:28px;min-width:0;display:flex}html[data-site=tech] .brand{flex-shrink:0;display:block}html[data-site=tech] .brand .artwork-logo{width:270px}html[data-site=tech] .brand-cluster>.artwork-code-music-write{width:130px}html[data-site=tech] .is-home .brand .artwork-logo{width:365px}html[data-site=tech] .is-home .brand-cluster>.artwork-code-music-write{width:175px}html[data-site=tech] .header-tools{align-items:center;gap:12px;padding-top:0}html[data-site=tech] .desktop-nav{gap:28px;margin-right:12px}html[data-site=tech] .desktop-nav a{color:var(--ink);white-space:nowrap;padding:6px 0;font-size:17px;font-weight:500;text-decoration:none;position:relative}html[data-site=tech] .desktop-nav a[aria-current]:after{content:"";background:url(/assets/renewal/underline-cyan.webp) 50%/100% 100%;height:7px;position:absolute;bottom:0;left:0;right:0}html[data-site=tech] .icon-button{color:var(--ink);border-radius:0;min-width:44px;min-height:44px}html[data-site=tech] .language-menu summary{list-style:none}html[data-site=tech] .language-menu summary::-webkit-details-marker{display:none}html[data-site=tech] :is(.header-tools>.theme-toggle,.header-tools>.language-menu>summary){background:0 0;position:relative}html[data-site=tech] :is(.header-tools>.theme-toggle,.header-tools>.language-menu>summary) .ink-icon{transition:transform .16s cubic-bezier(.23,1,.32,1)}html[data-site=tech] :is(.header-tools>.theme-toggle,.header-tools>.language-menu>summary):after{content:"";pointer-events:none;opacity:0;background:url(/assets/renewal/underline-cyan.webp) 50%/100% 100% no-repeat;width:28px;height:5px;transition:opacity .12s,transform .16s cubic-bezier(.23,1,.32,1);position:absolute;bottom:1px;left:calc(50% - 14px);transform:scaleX(.6)}html[data-site=tech] .header-tools>.language-menu>summary:after{background:var(--paint-pink);-webkit-mask:url(/assets/renewal/underline-cyan.webp) 50%/100% 100% no-repeat;mask:url(/assets/renewal/underline-cyan.webp) 50%/100% 100% no-repeat}html[data-site=tech] .header-tools>.language-menu[open]>summary:after,html[data-site=tech] :is(.header-tools>.theme-toggle,.header-tools>.language-menu>summary):focus-visible:after{opacity:1;transition:none;transform:none}@media (hover:hover) and (pointer:fine){html[data-site=tech] :is(.header-tools>.theme-toggle,.header-tools>.language-menu>summary):hover{background:0 0}html[data-site=tech] :is(.header-tools>.theme-toggle,.header-tools>.language-menu>summary):hover:after{opacity:1;transform:none}html[data-site=tech] .header-tools>.theme-toggle:hover .ink-icon{transform:rotate(-12deg)scale(1.06)}html[data-site=tech] .header-tools>.language-menu>summary:hover .ink-icon{transform:translateY(-2px)rotate(5deg)}html[data-site=tech] :is(.header-tools>.theme-toggle,.header-tools>.language-menu>summary):active .ink-icon{transform:scale(.94)}}@media (prefers-reduced-motion:reduce){html[data-site=tech] :is(.header-tools>.theme-toggle,.header-tools>.language-menu>summary) .ink-icon,html[data-site=tech] :is(.header-tools>.theme-toggle,.header-tools>.language-menu>summary):after{transition:none;transform:none}html[data-site=tech] :is(.header-tools>.theme-toggle,.header-tools>.language-menu>summary):is(:hover,:active) .ink-icon{transform:none}}html[data-site=tech] .language-panel{border:1px solid var(--line);border-top:3px solid var(--paint-cyan);z-index:20;box-shadow:0 10px 28px #00000012}html[data-site=tech] .site-frame>main{min-height:52vh;padding:0 56px}.site-decor{pointer-events:none;z-index:0;position:absolute;inset:0;overflow:clip}.site-decor .artwork{position:absolute}.site-decor .artwork-corner-lime{width:230px;top:0;left:-104px}.site-decor .artwork-corner-pink{width:146px;top:0;right:-104px}.site-decor .artwork-left-cyan{width:99px;top:274px;left:-104px}.site-decor .artwork-right-cyan{width:180px;top:455px;right:-104px}html[data-site=tech] .site-decor{min-height:1050px;position:absolute}.site-decor .artwork-corner-lime,.site-decor .artwork-left-cyan{left:0}.site-decor .artwork-corner-pink,.site-decor .artwork-right-cyan{right:0}.renewal-columns{grid-template-columns:minmax(0,1fr) 156px;align-items:start;column-gap:112px;display:grid}.primary-column{min-width:0}html[data-site=tech] .page-header{border:0;max-width:none;margin:0 0 20px;padding:0}html[data-site=tech] .page-header h1{letter-spacing:-.055em;word-break:keep-all;margin:0 0 12px;font-size:clamp(32px,3.25vw,46px);font-weight:900;line-height:1.38}html[data-site=tech] .page-header p{color:var(--ink);margin:12px 0 0;font-size:19px;line-height:1.7}.paint-word{isolation:isolate;display:inline;position:relative}.paint-word:before{content:"";z-index:-1;background:url(/assets/renewal/heading-marker.webp) 50%/100% 100% no-repeat;position:absolute;inset:-4px -18px -21px}.dark .paint-word{color:#111317}html[data-site=tech] .ink-search{align-items:center;gap:0;height:80px;margin:20px 6px 0 -24px;display:flex;position:relative}html[data-site=tech] .ink-search .search-input-wrap{background:url(/assets/renewal/search-frame.webp) 50%/100% 100% no-repeat;align-items:center;gap:12px;height:78px;padding:19px 18px 7px 52px;display:flex}html[data-site=tech].dark .ink-search .search-input-wrap{background-image:url(/assets/renewal/search-frame-dark.webp)}html[data-site=tech] .ink-search input{color:var(--ink);box-shadow:none;background:0 0;border:0;border-radius:0;min-height:44px;padding:6px 52px 6px 0;font-size:18px}html[data-site=tech] .ink-search input::-webkit-search-cancel-button{display:none}html[data-site=tech] .ink-search input::placeholder{color:var(--muted);opacity:.8}html[data-site=tech] .ink-search input:focus{outline:0}html[data-site=tech] .ink-search:focus-within .search-input-wrap{filter:drop-shadow(0 2px 0 var(--paint-cyan))}html[data-site=tech] .ink-search .search-clear{top:57.6%;right:22px}html[data-site=tech] .search-clear .ink-icon{flex-basis:22px;width:22px;height:22px}html[data-site=tech] .ink-search .search-submit{color:#fff;background:url(/assets/renewal/search-button.webp) 50%/100% 100% no-repeat;border:0;width:141px;height:86px;margin-left:-18px;padding:0 30px 24px 8px;font-size:19px;font-weight:700;position:relative;top:18px}html[data-site=tech] .button{background:var(--ink);color:var(--paper);border-color:var(--ink);border-radius:0;min-height:44px;font-weight:500;transition:transform .14s,background-color .14s}html[data-site=tech] .button.secondary{color:var(--ink);border-color:var(--line);background:0 0}html[data-site=tech] .button:active{transform:translateY(2px)}html[data-site=tech] .button:disabled{opacity:.45;cursor:not-allowed}html[data-site=tech] .text-link{color:var(--ink);-webkit-text-decoration-color:var(--paint-cyan);text-decoration-color:var(--paint-cyan);text-decoration-thickness:2px}.mascot-note{align-items:center;gap:0;margin:4px 0 8px -20px;display:flex}.mascot-note .artwork-mascot{width:120px}.mascot-note .artwork-games-begin{width:220px}.mascot-note-life{flex-direction:column;gap:16px;margin:30px 0}.mascot-note-life .artwork-mascot{width:170px}.mascot-note-life .artwork-life-music{width:140px}.tag-sidebar{min-width:0;padding-top:4px}.author-home .tag-sidebar{margin-top:-58px}.tag-sidebar h2{background:url(/assets/renewal/tags-underline.webp) bottom/100% 12px no-repeat;padding-bottom:12px;font-size:22px;font-weight:900;display:inline-block;position:relative}.dark .tag-sidebar h2{background-image:url(/assets/renewal/tags-underline-dark.webp)}.tag-sidebar h2 .artwork-tags-arrow{width:70px;position:absolute;top:-12px;left:-88px}.tag-sidebar ul{margin:10px 0 0}.tag-sidebar li a{justify-content:space-between;align-items:baseline;gap:12px;min-height:42px;padding:7px 0;font-size:17px;display:flex}.tag-sidebar li a>span:first-child{overflow-wrap:anywhere}.tag-sidebar li a>span:last-child{color:var(--muted);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:15px}html[data-site=tech] .tag-sidebar li a[aria-current]>span:first-child{color:#111317;-webkit-box-decoration-break:clone;box-decoration-break:clone;background:url(/assets/renewal/heading-marker.webp) 50%/100% 100% no-repeat;margin:-.1em -.5em -.8em;padding:.1em .5em .8em;font-weight:700}.tag-sidebar .all-tags{border-top:1px solid var(--line);gap:8px;margin-top:14px;padding-top:12px;font-size:16px;display:flex}.sidebar-graffiti{min-height:230px;margin-top:120px;position:relative}.sidebar-graffiti .artwork-right-lime{width:155px;position:absolute;top:40px;left:-84px}.sidebar-graffiti .artwork-life-music{width:140px;margin-left:36px}html[data-site=tech] .section-heading.list-heading{border:0;justify-content:start;gap:12px;margin:8px 0 10px;padding:0}html[data-site=tech] .list-heading h2{flex-shrink:0;font-size:27px;font-weight:900;line-height:1.35}html[data-site=tech] .list-heading span{color:var(--muted);white-space:nowrap;font-size:13px}html[data-site=tech] .list-heading:after{content:"";background:var(--line);flex:1;height:1px}html[data-site=tech] .post-row{border-bottom:1px solid var(--line);flex-direction:column;gap:0;padding:20px 0 22px;display:flex}html[data-site=tech] .post-row-content{display:contents}html[data-site=tech] .post-title-link{order:0}html[data-site=tech] .post-row-meta{color:var(--muted);flex-flow:wrap;order:1;gap:8px 16px;margin:6px 0;padding-top:0;font-size:14px;display:flex}html[data-site=tech] .post-row-meta>*+*{border-left:1px solid var(--line);padding-left:16px}html[data-site=tech] .post-row h2{word-break:keep-all;letter-spacing:-.045em;font-size:30px;font-weight:900;line-height:1.45}html[data-site=tech] .post-excerpt{-webkit-line-clamp:4;color:var(--muted);-webkit-box-orient:vertical;order:2;margin:2px 0 10px;font-size:18px;line-height:1.7;display:-webkit-box;overflow:hidden}html[data-site=tech] .post-row .tag-list{order:3;gap:8px;margin:0}html[data-site=tech] .tag{background:var(--tag-surface);color:var(--ink);overflow-wrap:anywhere;border-radius:20px;max-width:100%;min-height:28px;font-size:14px;display:inline-flex;padding:2px 12px!important}html[data-site=tech] .tag:before{content:none}html[data-site=tech] .tag[aria-current]{background:var(--neon-lime);color:#111317;font-weight:700}html[data-site=tech] .pagination{justify-content:center;margin:38px 0}html[data-site=tech] .page-link{color:var(--ink);font-variant-numeric:tabular-nums;border:0;border-radius:0;font-size:17px;line-height:1}html[data-site=tech] .page-link[aria-current]{isolation:isolate;color:#fff;background:url(/assets/renewal/pagination-stamp.webp) 50%/100% 100% no-repeat;font-weight:900;position:relative}html[data-site=tech] .page-link[aria-disabled]{opacity:.3}html[data-site=tech] .page-link:not([aria-current]):hover{color:var(--accent);background:0 0}html[data-site=tech] .page-arrow .artwork-nav-arrow{width:32px}html[data-site=tech] .page-arrow-previous .artwork-nav-arrow{transform:rotate(180deg)}html[data-site=tech] mark{color:inherit;background:color-mix(in srgb, var(--neon-lime) 50%, transparent)}html[data-site=tech].dark mark{color:#111317;background:var(--neon-lime)}html[data-site=tech] .empty-state{text-align:left;border:0;max-width:none;padding:40px 0}html[data-site=tech] .empty-state>.artwork-mascot{width:140px;margin:0 0 12px}html[data-site=tech] .empty-state h2{font-size:26px;font-weight:900}html[data-site=tech] .search-filters{gap:16px;margin-top:26px}html[data-site=tech] .search-filters label{min-width:140px}html[data-site=tech] .search-filters select{border:0;border-bottom:2px solid var(--line);background:0 0;border-radius:0;font-size:14px}html[data-site=tech] .search-summary{border-bottom:1px solid var(--line);min-height:42px;margin:26px 0 0;padding-bottom:14px;font-size:16px}.top-tags{grid-template-columns:repeat(4,minmax(0,1fr));gap:30px;margin:42px 0 60px;display:grid}.top-tags a{flex-direction:column;align-items:start;gap:12px;min-width:0;display:flex}.top-tags strong{overflow-wrap:anywhere;padding-bottom:10px;font-size:23px;font-weight:900;position:relative}.top-tags strong:after{content:"";background:var(--neon-lime);height:9px;position:absolute;bottom:0;left:0;right:0;-webkit-mask:url(/assets/renewal/underline-cyan.webp) 50%/100% 100%;mask:url(/assets/renewal/underline-cyan.webp) 50%/100% 100%}.top-tags li:nth-child(2) strong:after{background:var(--paint-cyan)}.top-tags li:nth-child(3) strong:after{background:var(--paint-pink)}.top-tags li:nth-child(4) strong:after{background:var(--ink)}.top-tags .artwork-tags-arrow{width:54px}.top-tags span{color:var(--muted);font-size:13px}html[data-site=tech] .topic-grid{grid-template-columns:repeat(4,minmax(0,1fr));column-gap:40px}html[data-site=tech] .topic-grid a{font-size:16px}html[data-site=tech] .site-footer{margin:80px 56px 0;padding:30px 0}html[data-site=tech] .site-footer .ink-icon{flex-basis:24px;width:24px;height:24px}html[data-site=tech] .reading-article{grid-template-columns:minmax(0,1fr) 190px;align-items:start;gap:64px;max-width:none;display:grid}.reading-content{min-width:0}html[data-site=tech] .reading-aside{position:sticky;top:32px}html[data-site=tech] .article-header{flex-direction:column;padding:22px 0 28px;display:flex}html[data-site=tech] .article-header h1{word-break:keep-all;background:url(/assets/renewal/underline-cyan.webp) 0 100%/min(420px,86%) 10px no-repeat;order:0;margin:0 0 16px;padding-bottom:20px;font-size:clamp(32px,3vw,44px);font-weight:900;line-height:1.45}html[data-site=tech] .article-meta{order:1;gap:8px 14px;font-size:13px}html[data-site=tech] .article-header>.tag-list{order:2;margin-top:16px}html[data-site=tech] .prose,html[data-site=tech] .about-content{font-family:var(--font-body), sans-serif;font-size:19px;line-height:1.95}html[data-site=tech] .prose strong{font-family:inherit;font-weight:700}html[data-site=tech] .prose h2{background:url(/assets/renewal/underline-cyan.webp) 0 100%/min(240px,70%) 8px no-repeat;border:0;padding-bottom:10px;font-size:29px;font-weight:900}html[data-site=tech] .prose h3{font-size:24px;font-weight:700}html[data-site=tech] .prose h4{font-size:21px}html[data-site=tech] .prose blockquote{border-color:var(--paint-cyan);color:var(--muted);background:0 0;padding:4px 24px}html[data-site=tech] .prose pre{background:#1b232a;border-radius:0;font-size:14px}html[data-site=tech] .prose pre code{background:0 0}html[data-site=tech] .prose th{background:var(--surface)}html[data-site=tech] .prose th,html[data-site=tech] .prose td{overflow-wrap:normal;word-break:normal;min-width:9rem}html[data-site=tech] .toc{border:0;margin:14px 0 24px;padding:0}html[data-site=tech] .toc summary{border-bottom:1px solid var(--line);font-size:17px;font-weight:900}html[data-site=tech] .toc a{overflow-wrap:anywhere;padding:8px 0;font-size:13px;line-height:1.7}html[data-site=tech] .toc a[aria-current]{color:var(--ink);font-weight:700;text-decoration:none}html[data-site=tech] .toc .toc-nested{padding-left:14px}html[data-site=tech] .toc-mobile{display:none}html[data-site=tech] .reading-end{border-top:1px solid var(--line);margin-top:48px;padding-top:24px}html[data-site=tech] .reading-end h2{font-size:27px;font-weight:900}html[data-site=tech] .related-list li{border-bottom:1px solid var(--line);padding:14px 0}html[data-site=tech] .adjacent-posts{gap:32px}html[data-site=tech] .code-copy:before{content:"";vertical-align:middle;background:url(/assets/renewal/icon-copy-dark.webp) 50%/contain;width:18px;height:18px;margin-right:5px;display:inline-block}html[data-site=tech] .copy-button .ink-icon{flex-basis:22px;width:22px;height:22px}html[data-site=tech] .profile-article{max-width:none;padding-right:320px;position:relative}html[data-site=tech] .profile-intro{display:block}html[data-site=tech] .profile-photo-frame{isolation:isolate;width:245px;height:auto;position:absolute;top:20px;right:0}html[data-site=tech] .profile-photo-frame:before{content:"";z-index:-1;pointer-events:none;background:url(/assets/renewal/photo-spray-frame.webp) 50%/100% 100% no-repeat;position:absolute;inset:-32px -40px}html[data-site=tech] .profile-photo{width:100%;height:auto;box-shadow:none;border:0;border-radius:0;display:block}html[data-site=tech] .profile-article h1{font-size:42px;font-weight:900}html[data-site=tech] .profile-article h2{text-decoration:underline;-webkit-text-decoration-color:var(--paint-cyan);text-decoration-color:var(--paint-cyan);text-underline-offset:9px;margin:48px 0 18px;font-size:27px;font-weight:900;text-decoration-thickness:5px}html[data-site=tech] .profile-article h2:nth-of-type(3n+2){-webkit-text-decoration-color:var(--paint-pink);text-decoration-color:var(--paint-pink)}html[data-site=tech] .profile-article h2:nth-of-type(3n){-webkit-text-decoration-color:var(--neon-lime);text-decoration-color:var(--neon-lime)}.profile-art{position:absolute;top:450px;right:20px}html[data-site=tech] .subscribe-page{max-width:none}html[data-site=tech] .feed-item{border:0;border-bottom:1px solid var(--line);background:0 0;padding:24px 0}html[data-site=tech] .feed-item h2{align-items:center;gap:10px;font-size:24px;font-weight:900;display:flex}html[data-site=tech] .feed-item input{background:var(--surface);border:0;border-bottom:2px solid var(--paint-cyan);width:100%;min-width:0;padding:12px;font-family:ui-monospace,monospace;font-size:14px}html[data-site=tech] .feed-item .action-row{row-gap:8px}html[data-site=tech] .feed-item .status-message{flex-basis:100%;min-block-size:1.7em}html[data-site=tech] .not-found{grid-template-columns:minmax(0,1fr) 240px;gap:70px;max-width:960px;padding:20px 0 60px;display:grid}html[data-site=tech] .not-found .artwork-not-found-404{width:400px;max-width:100%}html[data-site=tech] .not-found h1{font-size:34px;font-weight:900}html[data-site=tech] .not-found>.artwork-mascot{width:230px;max-width:100%}html[data-site=tech] .about-content{max-width:none;margin-inline:0}html[data-site=tech] .prose .hljs-comment{color:#9aa8b7}@layer components{html[data-site=tech] .tag{padding:2px 12px!important}}@media (min-width:1200px){.author-home .list-heading{width:calc(100% + 268px)}.author-home .post-excerpt{-webkit-line-clamp:4}}@media (hover:hover){html[data-site=tech] .post-title-link:hover{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--paint-cyan);text-decoration-color:var(--paint-cyan);text-decoration-thickness:4px}html[data-site=tech] .icon-button:hover{background:var(--tag-surface)}html[data-site=tech] .button:hover{background-color:var(--ink);color:var(--paper)}html[data-site=tech] .button.secondary:hover{color:var(--ink);border-color:var(--accent);opacity:1;background-color:#0000}html[data-site=tech] .ink-search .search-submit:hover{background-color:#0000;transform:rotate(-2deg)}}@media (max-width:1199px){.site-decor .artwork-corner-lime{width:140px}.site-decor .artwork-corner-pink{width:72px}.site-decor .artwork-left-cyan{width:32px}.site-decor .artwork-right-cyan{width:56px}html[data-site=tech] .site-shell{width:calc(100% - 80px)}html[data-site=tech] .site-frame>main{padding-inline:24px}html[data-site=tech] .site-header,html[data-site=tech] .site-header.is-home{min-height:204px}html[data-site=tech] .is-home .brand .artwork-logo{width:290px}html[data-site=tech] .brand-cluster>.artwork-code-music-write,html[data-site=tech] .is-home .brand-cluster>.artwork-code-music-write{width:130px}html[data-site=tech] .desktop-nav{display:none}html[data-site=tech] .mobile-nav{display:block}html[data-site=tech] .header-tools>.language-menu,html[data-site=tech] .header-tools>.icon-button{display:none}.renewal-columns{grid-template-columns:minmax(0,1fr) 150px;column-gap:48px}.tag-sidebar h2 .artwork-tags-arrow{width:42px;left:-48px}.sidebar-graffiti .artwork-life-music{margin-left:0}html[data-site=tech] .site-footer{margin-inline:24px}html[data-site=tech] .reading-article{grid-template-columns:minmax(0,1fr) 168px;gap:40px}html[data-site=tech] .menu-dialog{background:var(--paper);width:100vw;max-width:none;height:100dvh;max-height:none;color:var(--ink);border:0;margin:0;padding:0}html[data-site=tech] .menu-panel{isolation:isolate;min-height:100%;padding:28px max(24px,50vw - 350px);position:relative;overflow:auto}.menu-brand{align-items:center;gap:16px;display:flex}.menu-brand .artwork-logo{width:210px}.menu-brand .artwork-code-music-write{width:95px}.menu-close{position:absolute;top:24px;right:20px}html[data-site=tech] .mobile-links{margin:36px 0 22px}html[data-site=tech] .mobile-links a{border:0;align-items:center;gap:14px;width:fit-content;min-width:164px;padding:10px 14px;font-size:29px;font-weight:900;display:flex}html[data-site=tech] .mobile-links a[aria-current]{isolation:isolate;color:#111317;background:0 0;position:relative}html[data-site=tech] .mobile-links a[aria-current]:after{content:"";z-index:-1;pointer-events:none;background:url(/assets/renewal/heading-marker.webp) 50%/100% 100% no-repeat;position:absolute;inset:0 -4px -24px}.menu-settings{border-block:1px solid var(--line);gap:16px;padding:12px 0;display:flex}.menu-settings .icon-button{gap:8px;width:auto;font-size:14px;display:flex}.menu-settings .language-panel{left:0;right:auto}.menu-footer{gap:24px;padding-top:18px;font-size:14px;display:flex}html[data-site=tech] .menu-panel .mascot-note{margin:16px 0 0}}@media (max-width:899px){.renewal-columns{grid-template-columns:minmax(0,1fr)}.tag-sidebar{border-top:1px solid var(--line);padding-top:22px;margin-top:38px!important}.tag-sidebar h2 .artwork-tags-arrow{width:48px;margin-right:12px;position:relative;top:auto;left:auto}.tag-sidebar ul{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:24px;display:grid}.sidebar-graffiti{display:none}html[data-site=tech] .reading-article{display:block}html[data-site=tech] .reading-aside{display:none}html[data-site=tech] .toc-mobile{border-block:1px solid var(--line);padding:10px 0;display:block}html[data-site=tech] .toc-mobile summary{border:0;min-height:36px}.top-tags{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:32px}html[data-site=tech] .topic-grid{grid-template-columns:repeat(2,minmax(0,1fr))}html[data-site=tech] .profile-article{padding-right:240px}html[data-site=tech] .profile-photo-frame{width:195px}.profile-art{right:10px}html[data-site=tech] .not-found{grid-template-columns:minmax(0,1fr) 160px;gap:24px}}@media (max-width:599px){html[data-site=tech] .menu-panel .section-heading{margin:0}html[data-site=tech] .site-shell{width:calc(100% - 40px)}html[data-site=tech] .site-frame>main{padding-inline:0}html[data-site=tech] .site-header,html[data-site=tech] .site-header.is-home{gap:4px;min-height:143px;padding:16px 0 24px}html[data-site=tech] .brand-cluster{gap:10px}html[data-site=tech] .brand .artwork-logo,html[data-site=tech] .is-home .brand .artwork-logo{width:186px}html[data-site=tech] .brand-cluster>.artwork-code-music-write,html[data-site=tech] .is-home .brand-cluster>.artwork-code-music-write{width:86px}html[data-site=tech] .header-tools{padding-top:5px}html[data-site=tech] .header-tools .ink-icon{flex-basis:28px;width:28px;height:28px}.site-decor .artwork-corner-lime{opacity:.75;width:78px}.site-decor .artwork-corner-pink{width:45px}.site-decor .artwork-left-cyan{width:18px;top:300px}.site-decor .artwork-right-cyan{opacity:.5;width:36px;top:720px}html[data-site=tech] .page-header{margin-bottom:24px}html[data-site=tech] .page-header h1{letter-spacing:-.05em;font-size:30px;line-height:1.5}html[data-site=tech] .page-header p{margin-top:14px;font-size:15px;line-height:1.85}.paint-word:before{inset:-2px -10px -14px}html[data-site=tech] .ink-search{height:65px;margin:18px -6px 0}html[data-site=tech] .ink-search .search-input-wrap{gap:6px;height:61px;padding:14px 6px 5px max(22px,5%)}html[data-site=tech] .ink-search .search-input-wrap>.ink-icon{flex-basis:25px;width:25px;height:25px}html[data-site=tech] .ink-search input{padding-right:54px;font-size:16px}html[data-site=tech] .ink-search .search-clear{min-width:44px;right:14px}html[data-site=tech] .ink-search .search-submit{width:76px;height:67px;margin-left:-10px;padding:0 14px 19px 2px;font-size:15px;top:11px}.mascot-note{margin:2px 0 6px -8px}.mascot-note .artwork-mascot{width:84px}.mascot-note .artwork-games-begin{width:168px}html[data-site=tech] .list-heading h2{font-size:22px}html[data-site=tech] .post-row{padding:22px 0}html[data-site=tech] .post-row h2{font-size:23px;line-height:1.5}html[data-site=tech] .post-row-meta{gap:6px 10px;font-size:12px}html[data-site=tech] .post-row-meta>*+*{padding-left:10px}html[data-site=tech] .post-excerpt{-webkit-line-clamp:4;font-size:15px;line-height:1.8}html[data-site=tech] .tag{font-size:11px;padding:2px 10px!important}html[data-site=tech] .pagination{flex-wrap:nowrap;gap:2px}html[data-site=tech] .pagination ol{flex-wrap:nowrap;flex-basis:auto;gap:2px}html[data-site=tech] .pagination .page-arrow{order:0;margin:0}html[data-site=tech] .page-link{width:36px;min-width:30px;font-size:15px}html[data-site=tech] .page-gap{width:14px}html[data-site=tech] .page-arrow .artwork-nav-arrow{width:28px}html[data-site=tech] .site-footer{margin:56px 0 0}html[data-site=tech] .footer-intro{flex-direction:column;gap:6px}.top-tags{gap:28px 20px;margin-block:34px}.top-tags strong{font-size:20px}html[data-site=tech] .topic-grid{column-gap:22px}html[data-site=tech] .topic-grid a{font-size:14px}html[data-site=tech] .search-filters{gap:14px 12px}html[data-site=tech] .search-filters label{min-width:calc(50% - 12px)}html[data-site=tech] .search-filters .button{font-size:13px}html[data-site=tech] .search-filters select,html[data-site=tech] .feed-item input{font-size:16px}html[data-site=tech] .article-header h1{font-size:29px;line-height:1.5}html[data-site=tech] .article-meta{gap:8px 12px;font-size:12px}html[data-site=tech] .prose,html[data-site=tech] .about-content{font-size:17px;line-height:1.95}html[data-site=tech] .prose h2{font-size:25px}html[data-site=tech] .prose h3{font-size:21px}html[data-site=tech] .prose pre{padding:22px 16px}html[data-site=tech] .prose blockquote{padding-left:18px}html[data-site=tech] .profile-article{padding-right:0}html[data-site=tech] .profile-intro{flex-direction:column;gap:16px;display:flex}html[data-site=tech] .profile-photo-frame{order:1;align-self:center;width:180px;margin:22px 0;position:relative;top:auto;right:auto}html[data-site=tech] .profile-photo-frame:before{inset:-24px -30px}html[data-site=tech] .profile-article h1{font-size:31px}.profile-art{margin-top:32px;position:static}.profile-art .mascot-note-life{flex-direction:row;justify-content:center}html[data-site=tech] .not-found{flex-direction:column;align-items:start;gap:20px;padding-top:0;display:flex}html[data-site=tech] .not-found .artwork-not-found-404{width:290px}html[data-site=tech] .not-found h1{font-size:27px}html[data-site=tech] .not-found>.artwork-mascot{align-self:center;width:120px}.menu-brand .artwork-logo{width:177px}.menu-brand .artwork-code-music-write{width:76px}html[data-site=tech] .menu-panel{padding:24px}.menu-close{top:18px;right:12px}}@media (max-width:374px){html[data-site=tech] .page-link{width:32px}html[data-site=tech] .brand .artwork-logo,html[data-site=tech] .is-home .brand .artwork-logo{width:166px}html[data-site=tech] .brand-cluster>.artwork-code-music-write,html[data-site=tech] .is-home .brand-cluster>.artwork-code-music-write{width:76px}.top-tags{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){html[data-site=tech] *,html[data-site=tech] :before,html[data-site=tech] :after{scroll-behavior:auto!important;transition:none!important}}html[data-site=tech] .copy-button,html[data-site=tech] .share-menu>button{align-items:center;gap:8px;display:inline-flex}html[data-site=tech] .share-menu .ink-icon,html[data-site=tech] .copy-button .ink-icon{flex-basis:22px;width:22px;height:22px}html[data-site=tech] .share-panel{background:var(--paper);border-radius:0}html[data-site=tech] .qr-dialog{background:var(--paper);color:var(--ink);border:0;border-radius:0;width:min(360px,100% - 32px)}html[data-site=tech] .qr-dialog form{justify-content:end;margin-bottom:16px;display:flex}html[data-site=tech] .qr-dialog form button{align-items:center;gap:8px;display:inline-flex}html[data-site=tech] .qr-dialog .ink-icon img{width:100%;height:100%;margin:0}html[data-site=tech] .qr-dialog>img{background:#fff;margin:auto}@media (max-width:899px){.search-aside,.subscribe-aside{display:none}}html[data-site=tech] .button.paint-button{color:#fff;background:url(/assets/renewal/search-button.webp) 50%/100% 100% no-repeat;border:0;min-height:64px;padding:10px 30px 18px;font-weight:700}html[data-site=tech] .button.paint-outline{min-height:62px;color:var(--ink);background:url(/assets/renewal/action-outline.webp) 50%/100% 100% no-repeat;border:0;justify-content:center;align-items:center;gap:8px;padding:12px 24px;display:inline-flex}html[data-site=tech].dark .button.paint-outline{background-image:url(/assets/renewal/action-outline-dark.webp)}html[data-site=tech] .empty-state>.artwork-state-error,html[data-site=tech] .empty-state>.artwork-state-empty{width:160px;margin-bottom:20px;display:block}html[data-site=tech] .return-to-list{align-items:center;gap:10px;display:inline-flex}html[data-site=tech] .return-to-list .artwork-nav-arrow{width:34px;transform:scaleX(-1)}html[data-site=tech] .article-title-lead{color:#111317;-webkit-box-decoration-break:clone;box-decoration-break:clone;background:url(/assets/renewal/heading-marker.webp) 50%/100% 100% no-repeat;padding:.1em .26em .8em}html[data-site=tech] .toc a[aria-current] .toc-label{color:#111317;-webkit-box-decoration-break:clone;box-decoration-break:clone;background:url(/assets/renewal/heading-marker.webp) 50%/100% 100% no-repeat;padding:.1em .5em .8em}html[data-site=tech] .search-results-shell{min-height:820px}html[data-site=tech] .search-preparing{margin-top:20px;padding-top:180px}html[data-site=tech] .search-filters select:disabled{opacity:.55}@media (max-width:1199px){html[data-site=tech] .menu-panel:before{content:"";z-index:-1;pointer-events:none;background:url(/assets/renewal/corner-lime.webp) 0 0/82px no-repeat,url(/assets/renewal/corner-pink.webp) 100% 0/68px no-repeat,url(/assets/renewal/right-cyan.webp) 100% 100%/60px no-repeat;position:absolute;inset:0}html[data-site=tech] .mobile-links a:before{content:"";background:url(/assets/renewal/nav-arrow.webp) 50%/contain no-repeat;flex:0 0 36px;width:36px;height:28px}html[data-site=tech].dark .mobile-links a:before{background-image:url(/assets/renewal/nav-arrow-dark.webp)}html[data-site=tech].dark .mobile-links a[aria-current]:before{background-image:url(/assets/renewal/nav-arrow.webp)}html[data-site=tech] .menu-settings{border:0;flex-direction:column;align-items:flex-start;gap:12px;padding:10px 0}html[data-site=tech] .menu-settings .icon-button{background:url(/assets/renewal/underline-cyan.webp) 48px bottom/calc(100% - 48px) 5px no-repeat;gap:14px;padding-bottom:8px;font-size:17px;font-weight:700}html[data-site=tech] .menu-settings .ink-icon{flex-basis:36px;width:36px;height:36px}}@media (max-width:599px){html[data-site=tech] .author-home .home-title-line{display:block}html[data-site=tech] .author-home .page-header h1{letter-spacing:-.055em;font-size:clamp(38px,10.8vw,44px);line-height:1.22}html[data-site=tech] .archive-empty-state>.artwork-state-empty{width:130px}html[data-site=tech] .menu-panel .mascot-note{margin-top:20px}}html[data-site=tech] .state-page{text-align:center;max-width:880px;margin:0 auto;padding:12px 0 48px}html[data-site=tech] .state-page>.artwork-state-empty{width:180px;margin-bottom:28px}html[data-site=tech] .state-page h1{letter-spacing:-.045em;font-size:clamp(28px,3vw,42px);font-weight:900;line-height:1.45}html[data-site=tech] .state-page p{max-width:650px;margin:20px auto 24px;font-size:18px}html[data-site=tech] .state-page .action-row{justify-content:center}html[data-site=tech] .state-page>.artwork-mascot{width:140px;margin:36px auto 0;display:block}@media (max-width:599px){html[data-site=tech] .state-page>.artwork-state-empty{width:140px}html[data-site=tech] .state-page p{font-size:16px}}
html[data-site=tech]{--rule-muted:url(/assets/renewal/ink-rule-muted.webp);--rule-ink:url(/assets/renewal/ink-rule-ink.webp);--rule-cyan:url(/assets/renewal/ink-rule-cyan.webp);--rule-pink:url(/assets/renewal/ink-rule-pink.webp);--rule-lime:url(/assets/renewal/ink-rule-lime.webp)}html[data-site=tech].dark{--rule-muted:url(/assets/renewal/ink-rule-muted-dark.webp);--rule-ink:url(/assets/renewal/ink-rule-ink-dark.webp)}html[data-site=tech] :is(.post-row,.topic-grid li,.search-summary,.search-filters,.search-filters label,.toc summary,.related-list li,.feed-item,.prose th,.prose td){border:0;position:relative}html[data-site=tech] :is(.post-row,.topic-grid li,.search-summary,.search-filters label,.toc summary,.related-list li,.feed-item,.prose th,.prose td):after{content:"";height:var(--rule-height,3px);border-image:var(--rule-source,var(--rule-muted)) 1 64 fill / .125px 8px / 0 round stretch;pointer-events:none;position:absolute;inset:auto 0 0}html[data-site=tech] .post-row{--rule-height:3px}html[data-site=tech] :is(.topic-grid li,.related-list li,.prose th,.prose td){--rule-height:2px}html[data-site=tech] :is(.search-filters label,.toc summary){--rule-source:var(--rule-ink)}html[data-site=tech] .feed-item{--rule-height:4px}html[data-site=tech] .search-filters select{border:0}html[data-site=tech] .feed-address{position:relative}html[data-site=tech] .feed-address .feed-url{border:0}html[data-site=tech] .feed-address:after{content:"";border-image:var(--rule-cyan) 1 64 fill / .125px 8px / 0 round stretch;pointer-events:none;height:3px;position:absolute;inset:auto 0 0}html[data-site=tech] :is(.all-tags,.site-footer,.reading-end,.prose pre,.prose blockquote){border:0;position:relative}html[data-site=tech] :is(.all-tags,.site-footer,.reading-end,.prose pre,.prose blockquote,.qr-dialog,.share-panel,.language-panel):before{content:"";height:var(--rule-height,4px);border-image:var(--rule-source,var(--rule-ink)) 1 64 fill / .125px 8px / 0 round stretch;pointer-events:none;position:absolute;inset:0 0 auto}html[data-site=tech] .all-tags{--rule-source:var(--rule-muted);--rule-height:3px}html[data-site=tech] :is(.prose pre,.prose blockquote,.share-panel,.language-panel,.qr-dialog){--rule-source:var(--rule-cyan);--rule-height:5px}html[data-site=tech] .reading-end{padding-bottom:24px}html[data-site=tech] .reading-end:after{content:"";border-image:var(--rule-pink) 1 64 fill / .125px 8px / 0 round stretch;pointer-events:none;height:4px;position:absolute;inset:auto 0 0}html[data-site=tech] .site-footer{--rule-source:var(--rule-cyan);--rule-height:4px}html[data-site=tech] .prose blockquote{padding:16px 20px 4px}html[data-site=tech] :is(.share-panel,.language-panel){border:0}html[data-site=tech] .list-heading:after,html[data-site=tech] .prose hr{border:0;border-image:var(--rule-muted) 1 64 fill / .125px 8px / 0 round stretch;background:0 0;height:3px}html[data-site=tech] .profile-article h2{--rule-source:var(--rule-cyan);padding-bottom:12px;text-decoration:none;position:relative}html[data-site=tech] .profile-article h2:nth-of-type(3n+2){--rule-source:var(--rule-pink)}html[data-site=tech] .profile-article h2:nth-of-type(3n){--rule-source:var(--rule-lime)}html[data-site=tech] .profile-article h2:after{content:"";border-image:var(--rule-source) 1 64 fill / .125px 8px / 0 round stretch;pointer-events:none;width:min(240px,70%);height:5px;position:absolute;inset:auto auto 0 0}html[data-site=tech] .prose hr{border-image-source:var(--rule-ink);height:5px}html[data-site=tech] .post-row-meta>*+*{border:0;padding-left:0}html[data-site=tech] .post-row-meta>*+:before{content:"·";color:var(--muted);margin-right:12px}.post-meta-item{white-space:nowrap;align-items:center;gap:7px;display:inline-flex}.post-meta-icon{background:var(--meta-icon) center / contain no-repeat;flex:0 0 22px;width:22px;height:22px}.dark .post-meta-icon{filter:url(/assets/renewal/meta-icon-dark.svg#ink)}html[data-site=tech] .share-trigger-icon .ink-icon{transform:translateY(-1.5px)}.post-meta-clock{--meta-icon:url(/assets/renewal/icon-clock.webp)}.post-meta-calendar{--meta-icon:url(/assets/renewal/icon-calendar.webp)}.featured-meta{flex-wrap:wrap;align-items:center;gap:8px 14px;display:flex}html[data-site=tech] .post-row-meta{align-items:center}html[data-site=tech] .post-row-meta>.post-meta-item:before{content:none}html[data-site=tech] .article-meta .share-menu{flex-basis:auto}html[data-site=tech] .share-trigger-icon{width:44px;height:44px;color:var(--ink);cursor:pointer;background:0 0;border:0;justify-content:center;padding:11px;line-height:1;transition:transform .16s ease-out}html[data-site=tech] .share-trigger-icon:active{transform:scale(.94)}html[data-site=tech] .share-trigger[aria-expanded=true]{color:var(--accent)}html[data-site=tech] .share-panel{padding:16px;top:calc(100% + 8px)}html[data-site=tech] .share-panel button{width:100%;color:var(--ink);text-align:left;background:0 0;border:0;padding:10px 8px;position:relative}html[data-site=tech] .share-panel .copy-button{justify-content:flex-start;font-weight:700}html[data-site=tech] .share-panel button:after{content:"";opacity:0;border-image:var(--rule-lime) 1 64 fill / .125px 8px / 0 round stretch;pointer-events:none;height:3px;position:absolute;inset:auto 8px 2px}html[data-site=tech] .share-panel button:focus-visible:after{opacity:1}@media (hover:hover) and (pointer:fine){html[data-site=tech] .share-trigger-icon:hover{color:var(--ink);opacity:1;background-color:#0000;transform:rotate(-1.5deg)}html[data-site=tech] .share-panel .copy-button:hover{color:var(--ink);opacity:1;background:0 0}html[data-site=tech] .share-panel button:hover:after{opacity:1}}@media (max-width:899px){html[data-site=tech] .article-meta{position:relative}html[data-site=tech] .article-meta .share-menu{position:static}html[data-site=tech] .article-meta .share-panel{left:0;right:auto}html[data-site=tech] :is(.tag-sidebar,.toc-mobile){border:0;position:relative}html[data-site=tech] :is(.tag-sidebar,.toc-mobile):before{content:"";border-image:var(--rule-cyan) 1 64 fill / .125px 8px / 0 round stretch;pointer-events:none;height:4px;position:absolute;inset:0 0 auto}html[data-site=tech] .toc-mobile summary:after{content:none}}:root .nav-arrow{font-size:inherit;color:inherit;vertical-align:middle;pointer-events:none;flex-shrink:0;justify-content:center;align-self:center;align-items:center;margin:0;line-height:1;display:inline-flex}html[data-site=tech] .nav-arrow{background:url(/assets/renewal/nav-arrow.webp) 50%/contain no-repeat;width:1.65em;height:1.15em;margin-inline:.2em}html[data-site=tech].dark .nav-arrow,html[data-site=tech] .button:not(.secondary) .nav-arrow{background-image:url(/assets/renewal/nav-arrow-dark.webp)}html[data-site=tech].dark .button:not(.secondary):not(.paint-button) .nav-arrow{background-image:url(/assets/renewal/nav-arrow.webp)}html[data-site=tech] .nav-arrow-left{margin-inline-start:0;transform:rotate(180deg)}html[data-site=tech] .nav-arrow-up{margin-inline-start:0;transform:rotate(-90deg)}html[data-site=tech] .nav-arrow-out{margin-inline-end:0;transform:rotate(-45deg)}html[data-site=tech] .nav-arrow-right{margin-inline-end:0}html[data-site=tech] .support-art-link{border-radius:4px;grid-template-columns:35% minmax(0,1fr);align-items:center;width:min(360px,100%);margin:32px auto;text-decoration:none;transition:transform .16s cubic-bezier(.23,1,.32,1);display:grid;position:relative}html[data-site=tech] .support-art-mascot{pointer-events:none;width:100%;height:auto;display:block}html[data-site=tech] .support-art-lettering{aspect-ratio:16/9;pointer-events:none}html[data-site=tech] .support-art-lettering,html[data-site=tech] .support-art-lettering img{width:100%;height:auto;display:block}html[data-site=tech] .support-art-link:focus-visible{outline:2px solid var(--ink);outline-offset:6px}@media (hover:hover) and (pointer:fine){html[data-site=tech] .support-art-link:hover{transform:translateY(-3px)rotate(-1deg)}}html[data-site=tech] .support-art-link:active{transform:translateY(1px)scale(.97)}@media (prefers-reduced-motion:reduce){html[data-site=tech] .support-art-link{transition:none}html[data-site=tech] .support-art-link:hover,html[data-site=tech] .support-art-link:active{transform:none}}