/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after{--tw-border-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}::backdrop{--tw-border-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}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.fixed{position:fixed}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.block{display:block}.flex{display:flex}.hidden{display:none}.resize{resize:both}.border{border-style:var(--tw-border-style);border-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/slices/noto-serif-sc-400-s0.woff2)format("woff2");unicode-range:U+20-7E,U+B7,U+2013-2014,U+2018-2019,U+201C-201D,U+2026,U+3000-3002,U+300A-300B,U+4E00,U+4E0E,U+4E2A,U+4E2D,U+4E48,U+4E8E,U+4EA4,U+4EA7,U+4EBA,U+4EC0,U+4EE3,U+4EF6,U+4F5C,U+4F60,U+4FE1,U+503C,U+505A,U+5173-5174,U+51B3,U+524D,U+53D8,U+547C,U+548C,U+54C1,U+5728,U+5904,U+590D,U+5929,U+597D,U+5B83,U+5B9E,U+5C0F,U+5DE5,U+5E08,U+5EFA,U+5F53,U+5F55,U+5F85,U+5F88,U+5F97,U+601D,U+60F3,U+6210-6211,U+6240,U+6253,U+6280,U+628A,U+62DB,U+6587,U+662F,U+6670,U+6709,U+672F,U+673A,U+6742,U+6784,U+6C14,U+6CD5,U+6E05,U+72D7,U+73B0,U+754C,U+7684,U+76EE,U+770B,U+7801,U+7A0B,U+7A7A,U+7AE0,U+7CFB,U+8003,U+8005,U+804A,U+8054,U+884C,U+89C1,U+89E3,U+8BA1,U+8BB0,U+8BBE,U+8D77,U+8F6F,U+95EE,U+95F4,U+9879,U+9898,U+9AD8,U+FF01,U+FF08-FF09,U+FF0C,U+FF1A-FF1B,U+FF1F}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/slices/noto-serif-sc-400-s1.woff2)format("woff2");unicode-range:U+20-7E,U+A9,U+B7,U+2013-2014,U+2018-2019,U+201C-201D,U+2026,U+3000-3002,U+300A-300B,U+4E00}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/slices/noto-serif-sc-400-s2.woff2)format("woff2");unicode-range:U+4E0A-4E0B,U+4E0D-4E0E,U+4E22,U+4E2A,U+4E2D,U+4E3A-4E3B,U+4E48-4E49,U+4E4B,U+4E5F-4E60,U+4E86,U+4E8B,U+4E8E,U+4E92,U+4E9B,U+4EA4,U+4EA7,U+4EAE,U+4EBA,U+4EC0,U+4EC5,U+4ECE,U+4ED6,U+4ED8,U+4EE3,U+4EE5,U+4EEC,U+4EF6-4EF7,U+4EFB,U+4F18,U+4F1A,U+4F20,U+4F46,U+4F4F,U+4F53,U+4F55,U+4F5C,U+4F60,U+4F7F,U+4F8B,U+4F9D,U+4FDD,U+4FE1,U+503C,U+505A,U+5141,U+5148-5149,U+514B,U+5165,U+5168,U+5173,U+5177,U+5185,U+518C-518D,U+5199,U+51B3,U+51CF,U+51FA,U+5206-5207,U+5219,U+521B,U+5220,U+5224,U+522B,U+5230,U+5236,U+523B,U+524D,U+529B,U+529F-52A1,U+52A8-52A9,U+5305,U+5316,U+533A,U+5347,U+534F,U+5355,U+5361,U+5374,U+539F,U+53C2,U+53CD,U+53D1,U+53D6,U+53D8,U+53E0,U+53E3,U+53EA,U+53EF-53F0,U+53F7,U+540D-540E,U+5411,U+5426,U+542F,U+544A,U+5468,U+5473}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/slices/noto-serif-sc-400-s3.woff2)format("woff2");unicode-range:U+548C,U+54C1,U+54CD,U+54EA,U+552F,U+559C,U+5668,U+566A,U+56DE,U+56E0,U+56E2,U+56FE,U+5728,U+5730,U+573A,U+5740,U+578B,U+5806,U+5883,U+589E,U+5904,U+590D,U+591A,U+591F,U+5927,U+5931,U+594F,U+597D,U+5982,U+59CB,U+5B57-5B58,U+5B66,U+5B83,U+5B89,U+5B8C,U+5B9A,U+5B9E,U+5BA2,U+5BB9,U+5BDF,U+5BF9,U+5C01,U+5C06,U+5C0F,U+5C11,U+5C1D,U+5C31,U+5C42,U+5C55,U+5DE5,U+5DF2,U+5E08,U+5E2E,U+5E38,U+5E73,U+5E76,U+5E8F,U+5E93-5E94,U+5EA6,U+5EFA,U+5F00,U+5F52-5F53,U+5F55,U+5F71,U+5F80,U+5F85,U+5F88,U+5F97,U+5FC5,U+6001,U+601D,U+6027,U+6062,U+606F,U+60C5,U+60EF,U+60F3,U+610F,U+611F,U+613F,U+61C2,U+6210-6211,U+6216,U+6233,U+6237,U+6240,U+624B,U+624D,U+6267,U+627E-6280,U+628A,U+6295,U+62A4,U+62C6,U+6307,U+6309,U+6311,U+6362,U+636E,U+6388-6389,U+63A5,U+63D0,U+6536}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/slices/noto-serif-sc-400-s4.woff2)format("woff2");unicode-range:U+6539,U+653E,U+6559,U+6563,U+6570,U+6574,U+6587,U+6599,U+65AD,U+65B9,U+65CB,U+65E0,U+65E2,U+65F6,U+660E,U+6613,U+662F,U+663E,U+666F-6670,U+66F4,U+66FF-6700,U+6709,U+670D,U+671F,U+672C,U+672F,U+6742-6743,U+6765,U+6781,U+6784,U+679C,U+67B6,U+67E5,U+6807,U+6837,U+6848,U+68C0,U+695A,U+6A21,U+6A2A,U+6B21-6B22,U+6B63,U+6B65,U+6BB5,U+6BCF,U+6BD4,U+6C42,U+6C89,U+6CA1,U+6CD5,U+6CE8,U+6D1E,U+6D41,U+6D4B,U+6D4F,U+6DC0,U+6E05,U+6F02,U+706F,U+70B9,U+7126,U+7136,U+7248,U+7269,U+72B6,U+72B9,U+72EC,U+731C,U+73AF-73B0,U+7406,U+751F,U+7528,U+7531,U+753B,U+754C,U+7559,U+75C7,U+7684,U+76D6,U+76D8,U+76EE,U+76F4,U+76F8,U+770B,U+771F,U+773C,U+7740,U+7761,U+77E5,U+7801,U+7814,U+786E,U+793A,U+79BB,U+79FB,U+7A0B,U+7A33,U+7A76,U+7A7A,U+7ACB,U+7AD9,U+7AE0,U+7AEF,U+7B49,U+7B56}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/slices/noto-serif-sc-400-s5.woff2)format("woff2");unicode-range:U+7B7E,U+7B80,U+7CBE,U+7CCA,U+7CFB,U+7D20,U+7EAF,U+7EB3,U+7EBF,U+7EC6,U+7EC8,U+7ECF,U+7ED9,U+7EDC,U+7EDF,U+7EE7,U+7EED,U+7EF4,U+7F16,U+7F51,U+8003,U+8005,U+800C,U+804A,U+8054,U+805A,U+806A,U+80CC,U+80FD,U+811A,U+8131,U+81EA,U+820D,U+8272,U+8282,U+8425,U+85CF,U+884C,U+8865,U+8868,U+88AB,U+88C5,U+8981,U+8986,U+89C2,U+89C4,U+89C6,U+89C8,U+89E3,U+8BA1,U+8BA4,U+8BA9,U+8BAE,U+8BB0,U+8BB8,U+8BBE-8BBF,U+8BC1,U+8BC9,U+8BCD,U+8BD5,U+8BDD,U+8BE5,U+8BED,U+8BEF,U+8BF4,U+8BF7,U+8C6B,U+8D25,U+8D44,U+8D56,U+8D70,U+8D77,U+8DB3,U+8DD1,U+8DEF,U+8DF3,U+8DF5,U+8EAB,U+8F6C,U+8F6F,U+8F7D,U+8F91,U+8F93,U+8FB9,U+8FC7,U+8FD0,U+8FD4,U+8FD8-8FD9,U+8FDB,U+8FDE,U+8FED,U+9009,U+901A-901B,U+9020,U+9053,U+90E8,U+90FD,U+91C7,U+91CC-91CD,U+94AE,U+94FE,U+9519,U+952E,U+957F,U+95ED-95EE}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/slices/noto-serif-sc-400-s6.woff2)format("woff2");unicode-range:U+95F4,U+961F,U+96BE,U+96C6,U+96F6,U+9700,U+9760,U+9762,U+97F3,U+9875,U+9879,U+9898,U+989C,U+9970,U+9988,U+9996,U+9A8C,U+9ED8,U+FF01,U+FF08-FF09,U+FF0C,U+FF1A-FF1B,U+FF1F}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/slices/noto-serif-sc-500-s0.woff2)format("woff2");unicode-range:U+20-7E,U+B7,U+2013-2014,U+2018-2019,U+201C-201D,U+2026,U+3000-3002,U+300A-300B,U+4E00,U+4E0E,U+4E2A,U+4E2D,U+4E48,U+4E8E,U+4EA4,U+4EA7,U+4EBA,U+4EC0,U+4EE3,U+4EF6,U+4F5C,U+4F60,U+4FE1,U+503C,U+505A,U+5173-5174,U+51B3,U+524D,U+53D8,U+547C,U+548C,U+54C1,U+5728,U+5904,U+590D,U+5929,U+597D,U+5B83,U+5B9E,U+5C0F,U+5DE5,U+5E08,U+5EFA,U+5F53,U+5F55,U+5F85,U+5F88,U+5F97,U+601D,U+60F3,U+6210-6211,U+6240,U+6253,U+6280,U+628A,U+62DB,U+6587,U+662F,U+6670,U+6709,U+672F,U+673A,U+6742,U+6784,U+6C14,U+6CD5,U+6E05,U+72D7,U+73B0,U+754C,U+7684,U+76EE,U+770B,U+7801,U+7A0B,U+7A7A,U+7AE0,U+7CFB,U+8003,U+8005,U+804A,U+8054,U+884C,U+89C1,U+89E3,U+8BA1,U+8BB0,U+8BBE,U+8D77,U+8F6F,U+95EE,U+95F4,U+9879,U+9898,U+9AD8,U+FF01,U+FF08-FF09,U+FF0C,U+FF1A-FF1B,U+FF1F}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/slices/noto-serif-sc-500-s1.woff2)format("woff2");unicode-range:U+20-7E,U+A9,U+B7,U+2013-2014,U+2018-2019,U+201C-201D,U+2026,U+3000-3002,U+300A-300B,U+4E00}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/slices/noto-serif-sc-500-s2.woff2)format("woff2");unicode-range:U+4E0A-4E0B,U+4E0D-4E0E,U+4E22,U+4E2A,U+4E2D,U+4E3A-4E3B,U+4E48-4E49,U+4E4B,U+4E5F-4E60,U+4E86,U+4E8B,U+4E8E,U+4E92,U+4E9B,U+4EA4,U+4EA7,U+4EAE,U+4EBA,U+4EC0,U+4EC5,U+4ECE,U+4ED6,U+4ED8,U+4EE3,U+4EE5,U+4EEC,U+4EF6-4EF7,U+4EFB,U+4F18,U+4F1A,U+4F20,U+4F46,U+4F4F,U+4F53,U+4F55,U+4F5C,U+4F60,U+4F7F,U+4F8B,U+4F9D,U+4FDD,U+4FE1,U+503C,U+505A,U+5141,U+5148-5149,U+514B,U+5165,U+5168,U+5173,U+5177,U+5185,U+518C-518D,U+5199,U+51B3,U+51CF,U+51FA,U+5206-5207,U+5219,U+521B,U+5220,U+5224,U+522B,U+5230,U+5236,U+523B,U+524D,U+529B,U+529F-52A1,U+52A8-52A9,U+5305,U+5316,U+533A,U+5347,U+534F,U+5355,U+5361,U+5374,U+539F,U+53C2,U+53CD,U+53D1,U+53D6,U+53D8,U+53E0,U+53E3,U+53EA,U+53EF-53F0,U+53F7,U+540D-540E,U+5411,U+5426,U+542F,U+544A,U+5468,U+5473}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/slices/noto-serif-sc-500-s3.woff2)format("woff2");unicode-range:U+548C,U+54C1,U+54CD,U+54EA,U+552F,U+559C,U+5668,U+566A,U+56DE,U+56E0,U+56E2,U+56FE,U+5728,U+5730,U+573A,U+5740,U+578B,U+5806,U+5883,U+589E,U+5904,U+590D,U+591A,U+591F,U+5927,U+5931,U+594F,U+597D,U+5982,U+59CB,U+5B57-5B58,U+5B66,U+5B83,U+5B89,U+5B8C,U+5B9A,U+5B9E,U+5BA2,U+5BB9,U+5BDF,U+5BF9,U+5C01,U+5C06,U+5C0F,U+5C11,U+5C1D,U+5C31,U+5C42,U+5C55,U+5DE5,U+5DF2,U+5E08,U+5E2E,U+5E38,U+5E73,U+5E76,U+5E8F,U+5E93-5E94,U+5EA6,U+5EFA,U+5F00,U+5F52-5F53,U+5F55,U+5F71,U+5F80,U+5F85,U+5F88,U+5F97,U+5FC5,U+6001,U+601D,U+6027,U+6062,U+606F,U+60C5,U+60EF,U+60F3,U+610F,U+611F,U+613F,U+61C2,U+6210-6211,U+6216,U+6233,U+6237,U+6240,U+624B,U+624D,U+6267,U+627E-6280,U+628A,U+6295,U+62A4,U+62C6,U+6307,U+6309,U+6311,U+6362,U+636E,U+6388-6389,U+63A5,U+63D0,U+6536}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/slices/noto-serif-sc-500-s4.woff2)format("woff2");unicode-range:U+6539,U+653E,U+6559,U+6563,U+6570,U+6574,U+6587,U+6599,U+65AD,U+65B9,U+65CB,U+65E0,U+65E2,U+65F6,U+660E,U+6613,U+662F,U+663E,U+666F-6670,U+66F4,U+66FF-6700,U+6709,U+670D,U+671F,U+672C,U+672F,U+6742-6743,U+6765,U+6781,U+6784,U+679C,U+67B6,U+67E5,U+6807,U+6837,U+6848,U+68C0,U+695A,U+6A21,U+6A2A,U+6B21-6B22,U+6B63,U+6B65,U+6BB5,U+6BCF,U+6BD4,U+6C42,U+6C89,U+6CA1,U+6CD5,U+6CE8,U+6D1E,U+6D41,U+6D4B,U+6D4F,U+6DC0,U+6E05,U+6F02,U+706F,U+70B9,U+7126,U+7136,U+7248,U+7269,U+72B6,U+72B9,U+72EC,U+731C,U+73AF-73B0,U+7406,U+751F,U+7528,U+7531,U+753B,U+754C,U+7559,U+75C7,U+7684,U+76D6,U+76D8,U+76EE,U+76F4,U+76F8,U+770B,U+771F,U+773C,U+7740,U+7761,U+77E5,U+7801,U+7814,U+786E,U+793A,U+79BB,U+79FB,U+7A0B,U+7A33,U+7A76,U+7A7A,U+7ACB,U+7AD9,U+7AE0,U+7AEF,U+7B49,U+7B56}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/slices/noto-serif-sc-500-s5.woff2)format("woff2");unicode-range:U+7B7E,U+7B80,U+7CBE,U+7CCA,U+7CFB,U+7D20,U+7EAF,U+7EB3,U+7EBF,U+7EC6,U+7EC8,U+7ECF,U+7ED9,U+7EDC,U+7EDF,U+7EE7,U+7EED,U+7EF4,U+7F16,U+7F51,U+8003,U+8005,U+800C,U+804A,U+8054,U+805A,U+806A,U+80CC,U+80FD,U+811A,U+8131,U+81EA,U+820D,U+8272,U+8282,U+8425,U+85CF,U+884C,U+8865,U+8868,U+88AB,U+88C5,U+8981,U+8986,U+89C2,U+89C4,U+89C6,U+89C8,U+89E3,U+8BA1,U+8BA4,U+8BA9,U+8BAE,U+8BB0,U+8BB8,U+8BBE-8BBF,U+8BC1,U+8BC9,U+8BCD,U+8BD5,U+8BDD,U+8BE5,U+8BED,U+8BEF,U+8BF4,U+8BF7,U+8C6B,U+8D25,U+8D44,U+8D56,U+8D70,U+8D77,U+8DB3,U+8DD1,U+8DEF,U+8DF3,U+8DF5,U+8EAB,U+8F6C,U+8F6F,U+8F7D,U+8F91,U+8F93,U+8FB9,U+8FC7,U+8FD0,U+8FD4,U+8FD8-8FD9,U+8FDB,U+8FDE,U+8FED,U+9009,U+901A-901B,U+9020,U+9053,U+90E8,U+90FD,U+91C7,U+91CC-91CD,U+94AE,U+94FE,U+9519,U+952E,U+957F,U+95ED-95EE}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/slices/noto-serif-sc-500-s6.woff2)format("woff2");unicode-range:U+95F4,U+961F,U+96BE,U+96C6,U+96F6,U+9700,U+9760,U+9762,U+97F3,U+9875,U+9879,U+9898,U+989C,U+9970,U+9988,U+9996,U+9A8C,U+9ED8,U+FF01,U+FF08-FF09,U+FF0C,U+FF1A-FF1B,U+FF1F}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/slices/noto-serif-sc-700-s0.woff2)format("woff2");unicode-range:U+20-7E,U+B7,U+2013-2014,U+2018-2019,U+201C-201D,U+2026,U+3000-3002,U+300A-300B,U+4E00,U+4E0E,U+4E2A,U+4E2D,U+4E48,U+4E8E,U+4EA4,U+4EA7,U+4EBA,U+4EC0,U+4EE3,U+4EF6,U+4F5C,U+4F60,U+4FE1,U+503C,U+505A,U+5173-5174,U+51B3,U+524D,U+53D8,U+547C,U+548C,U+54C1,U+5728,U+5904,U+590D,U+5929,U+597D,U+5B83,U+5B9E,U+5C0F,U+5DE5,U+5E08,U+5EFA,U+5F53,U+5F55,U+5F85,U+5F88,U+5F97,U+601D,U+60F3,U+6210-6211,U+6240,U+6253,U+6280,U+628A,U+62DB,U+6587,U+662F,U+6670,U+6709,U+672F,U+673A,U+6742,U+6784,U+6C14,U+6CD5,U+6E05,U+72D7,U+73B0,U+754C,U+7684,U+76EE,U+770B,U+7801,U+7A0B,U+7A7A,U+7AE0,U+7CFB,U+8003,U+8005,U+804A,U+8054,U+884C,U+89C1,U+89E3,U+8BA1,U+8BB0,U+8BBE,U+8D77,U+8F6F,U+95EE,U+95F4,U+9879,U+9898,U+9AD8,U+FF01,U+FF08-FF09,U+FF0C,U+FF1A-FF1B,U+FF1F}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/slices/noto-serif-sc-700-s1.woff2)format("woff2");unicode-range:U+20-7E,U+A9,U+B7,U+2013-2014,U+2018-2019,U+201C-201D,U+2026,U+3000-3002,U+300A-300B,U+4E00}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/slices/noto-serif-sc-700-s2.woff2)format("woff2");unicode-range:U+4E0A-4E0B,U+4E0D-4E0E,U+4E22,U+4E2A,U+4E2D,U+4E3A-4E3B,U+4E48-4E49,U+4E4B,U+4E5F-4E60,U+4E86,U+4E8B,U+4E8E,U+4E92,U+4E9B,U+4EA4,U+4EA7,U+4EAE,U+4EBA,U+4EC0,U+4EC5,U+4ECE,U+4ED6,U+4ED8,U+4EE3,U+4EE5,U+4EEC,U+4EF6-4EF7,U+4EFB,U+4F18,U+4F1A,U+4F20,U+4F46,U+4F4F,U+4F53,U+4F55,U+4F5C,U+4F60,U+4F7F,U+4F8B,U+4F9D,U+4FDD,U+4FE1,U+503C,U+505A,U+5141,U+5148-5149,U+514B,U+5165,U+5168,U+5173,U+5177,U+5185,U+518C-518D,U+5199,U+51B3,U+51CF,U+51FA,U+5206-5207,U+5219,U+521B,U+5220,U+5224,U+522B,U+5230,U+5236,U+523B,U+524D,U+529B,U+529F-52A1,U+52A8-52A9,U+5305,U+5316,U+533A,U+5347,U+534F,U+5355,U+5361,U+5374,U+539F,U+53C2,U+53CD,U+53D1,U+53D6,U+53D8,U+53E0,U+53E3,U+53EA,U+53EF-53F0,U+53F7,U+540D-540E,U+5411,U+5426,U+542F,U+544A,U+5468,U+5473}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/slices/noto-serif-sc-700-s3.woff2)format("woff2");unicode-range:U+548C,U+54C1,U+54CD,U+54EA,U+552F,U+559C,U+5668,U+566A,U+56DE,U+56E0,U+56E2,U+56FE,U+5728,U+5730,U+573A,U+5740,U+578B,U+5806,U+5883,U+589E,U+5904,U+590D,U+591A,U+591F,U+5927,U+5931,U+594F,U+597D,U+5982,U+59CB,U+5B57-5B58,U+5B66,U+5B83,U+5B89,U+5B8C,U+5B9A,U+5B9E,U+5BA2,U+5BB9,U+5BDF,U+5BF9,U+5C01,U+5C06,U+5C0F,U+5C11,U+5C1D,U+5C31,U+5C42,U+5C55,U+5DE5,U+5DF2,U+5E08,U+5E2E,U+5E38,U+5E73,U+5E76,U+5E8F,U+5E93-5E94,U+5EA6,U+5EFA,U+5F00,U+5F52-5F53,U+5F55,U+5F71,U+5F80,U+5F85,U+5F88,U+5F97,U+5FC5,U+6001,U+601D,U+6027,U+6062,U+606F,U+60C5,U+60EF,U+60F3,U+610F,U+611F,U+613F,U+61C2,U+6210-6211,U+6216,U+6233,U+6237,U+6240,U+624B,U+624D,U+6267,U+627E-6280,U+628A,U+6295,U+62A4,U+62C6,U+6307,U+6309,U+6311,U+6362,U+636E,U+6388-6389,U+63A5,U+63D0,U+6536}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/slices/noto-serif-sc-700-s4.woff2)format("woff2");unicode-range:U+6539,U+653E,U+6559,U+6563,U+6570,U+6574,U+6587,U+6599,U+65AD,U+65B9,U+65CB,U+65E0,U+65E2,U+65F6,U+660E,U+6613,U+662F,U+663E,U+666F-6670,U+66F4,U+66FF-6700,U+6709,U+670D,U+671F,U+672C,U+672F,U+6742-6743,U+6765,U+6781,U+6784,U+679C,U+67B6,U+67E5,U+6807,U+6837,U+6848,U+68C0,U+695A,U+6A21,U+6A2A,U+6B21-6B22,U+6B63,U+6B65,U+6BB5,U+6BCF,U+6BD4,U+6C42,U+6C89,U+6CA1,U+6CD5,U+6CE8,U+6D1E,U+6D41,U+6D4B,U+6D4F,U+6DC0,U+6E05,U+6F02,U+706F,U+70B9,U+7126,U+7136,U+7248,U+7269,U+72B6,U+72B9,U+72EC,U+731C,U+73AF-73B0,U+7406,U+751F,U+7528,U+7531,U+753B,U+754C,U+7559,U+75C7,U+7684,U+76D6,U+76D8,U+76EE,U+76F4,U+76F8,U+770B,U+771F,U+773C,U+7740,U+7761,U+77E5,U+7801,U+7814,U+786E,U+793A,U+79BB,U+79FB,U+7A0B,U+7A33,U+7A76,U+7A7A,U+7ACB,U+7AD9,U+7AE0,U+7AEF,U+7B49,U+7B56}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/slices/noto-serif-sc-700-s5.woff2)format("woff2");unicode-range:U+7B7E,U+7B80,U+7CBE,U+7CCA,U+7CFB,U+7D20,U+7EAF,U+7EB3,U+7EBF,U+7EC6,U+7EC8,U+7ECF,U+7ED9,U+7EDC,U+7EDF,U+7EE7,U+7EED,U+7EF4,U+7F16,U+7F51,U+8003,U+8005,U+800C,U+804A,U+8054,U+805A,U+806A,U+80CC,U+80FD,U+811A,U+8131,U+81EA,U+820D,U+8272,U+8282,U+8425,U+85CF,U+884C,U+8865,U+8868,U+88AB,U+88C5,U+8981,U+8986,U+89C2,U+89C4,U+89C6,U+89C8,U+89E3,U+8BA1,U+8BA4,U+8BA9,U+8BAE,U+8BB0,U+8BB8,U+8BBE-8BBF,U+8BC1,U+8BC9,U+8BCD,U+8BD5,U+8BDD,U+8BE5,U+8BED,U+8BEF,U+8BF4,U+8BF7,U+8C6B,U+8D25,U+8D44,U+8D56,U+8D70,U+8D77,U+8DB3,U+8DD1,U+8DEF,U+8DF3,U+8DF5,U+8EAB,U+8F6C,U+8F6F,U+8F7D,U+8F91,U+8F93,U+8FB9,U+8FC7,U+8FD0,U+8FD4,U+8FD8-8FD9,U+8FDB,U+8FDE,U+8FED,U+9009,U+901A-901B,U+9020,U+9053,U+90E8,U+90FD,U+91C7,U+91CC-91CD,U+94AE,U+94FE,U+9519,U+952E,U+957F,U+95ED-95EE}@font-face{font-family:Noto Serif SC;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/slices/noto-serif-sc-700-s6.woff2)format("woff2");unicode-range:U+95F4,U+961F,U+96BE,U+96C6,U+96F6,U+9700,U+9760,U+9762,U+97F3,U+9875,U+9879,U+9898,U+989C,U+9970,U+9988,U+9996,U+9A8C,U+9ED8,U+FF01,U+FF08-FF09,U+FF0C,U+FF1A-FF1B,U+FF1F}:root{--ink:#17171b;--paper:#f4f2ec;--line:#d8d6ce;--violet:#7867e8;--violet-text:#6355ce;--lime:#b3c46e;--muted:#63625c;--raised:#eceae2;--card-ink:#1c1c20;--card-ink-text:#f5f4ef;--portrait-bg:#d8d4cc;--portrait-ink:#4f4d48;--body-text:#4e4d49;--cta-text:#000;--grid-line:#17171b0e;--noise-opacity:.05;--code-comment:#9a978d;--code-keyword:#6355ce;--code-string:#56753f;--code-func:#274d8d;--code-number:#a05a2c}[data-theme=dark]{--ink:#ece9e1;--paper:#141416;--line:#2c2c31;--violet:#9186f0;--violet-text:var(--violet);--lime:#a9bd66;--muted:#8f8f8a;--raised:#1d1d21;--card-ink:#232328;--card-ink-text:#f0ede5;--portrait-bg:#1d1d21;--portrait-ink:#8f8f8a;--body-text:#b5b3ad;--cta-text:#000;--grid-line:#ece9e10d;--noise-opacity:.07;--code-comment:#74746e;--code-keyword:#a89df5;--code-string:#a3c47f;--code-func:#8db1e8;--code-number:#e0a56e}*{box-sizing:border-box}html{scroll-behavior:smooth;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark] html,html[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background:var(--paper);color:var(--ink);margin:0;font-family:Helvetica Neue,Arial,PingFang SC,Microsoft YaHei,sans-serif;transition:background-color .35s,color .35s}body:before{content:"";z-index:2147483647;pointer-events:none;opacity:var(--noise-opacity);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}a{color:inherit;text-decoration:none}:is(a:focus-visible,button:focus-visible){outline:2px solid var(--violet);outline-offset:4px}.section-wrap{max-width:1280px;margin:auto;padding-left:34px;padding-right:34px}.reveal{transition:opacity .54s ease-out var(--reveal-delay,0s), transform .54s cubic-bezier(.22, 1, .36, 1) var(--reveal-delay,0s)}.reveal[data-reveal-ready=true]:not([data-reveal-visible=true]){opacity:0;transform:translateY(18px)}.site-nav{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;max-width:1280px;height:84px;margin:auto;padding:0 34px;display:flex}.brand{letter-spacing:-2px;font:700 27px/1 Noto Serif SC,Georgia,serif}.nav-brand-group{align-items:center;gap:8px;display:flex}.brand span{color:var(--violet)}.nav-buddy{cursor:pointer;background:0 0;border:0;place-items:center;width:58px;height:58px;padding:0;display:grid;position:relative}.nav-buddy-image{object-fit:contain;filter:drop-shadow(0 3px 3px #00000014);width:54px;height:54px;transition:transform .2s;animation:.28s ease-out both buddy-arrive,4.2s ease-in-out .28s infinite buddy-float;display:block}:is(.nav-buddy:hover .nav-buddy-image,.nav-buddy:focus-visible .nav-buddy-image){transform:rotate(-5deg)scale(1.08)}.nav-buddy-z{color:var(--violet-text);font:italic 700 12px Georgia,serif;animation:2.6s ease-in-out infinite buddy-z;position:absolute;top:2px;right:1px}@keyframes buddy-z{0%{opacity:0;transform:translateY(2px)rotate(8deg)scale(.7)}35%{opacity:1}to{opacity:0;transform:translate(7px,-12px)rotate(18deg)scale(1.15)}}.nav-buddy-tip{z-index:4;border:1px solid var(--ink);width:max-content;max-width:min(250px,100vw - 40px);color:var(--ink);background:var(--raised);text-align:left;box-shadow:5px 5px 0 var(--violet);padding:10px 12px;font:11px/1.45 PingFang SC,Microsoft YaHei,sans-serif;position:absolute;top:calc(100% - 3px);left:0}@keyframes buddy-float{0%,to{translate:0}50%{translate:0 -3px}}@keyframes buddy-arrive{0%{opacity:0;transform:translateY(4px)scale(.9)}to{opacity:1;transform:translateY(0)scale(1)}}.nav-links{gap:26px;font-size:14px;display:flex}.nav-links a{transition:color .2s}.nav-links a:hover{color:var(--violet)}.mobile-section-nav{display:none}.nav-contact{align-items:center;gap:5px;font-size:14px;display:flex}.nav-actions{align-items:center;gap:18px;display:flex}.theme-toggle{border:1px solid var(--line);width:34px;height:34px;color:var(--ink);cursor:pointer;background:0 0;border-radius:50%;place-items:center;padding:0;transition:border-color .2s,color .2s,transform .4s cubic-bezier(.34,1.56,.64,1);display:grid}.theme-toggle:hover{border-color:var(--ink);color:var(--violet);transform:rotate(40deg)}.theme-toggle .theme-icon-sun{display:none}html[data-theme=dark] .theme-toggle .theme-icon-sun{display:block}html[data-theme=dark] .theme-toggle .theme-icon-moon{display:none}@media (pointer:coarse){.theme-toggle{width:44px;height:44px}.nav-contact{padding:12px 0}.nav-actions{gap:14px}}.hero{padding-top:92px;padding-bottom:50px;position:relative}.hero:before{content:"";z-index:0;background-image:linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);pointer-events:none;background-size:72px 72px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 55%,#0000);mask-image:linear-gradient(#000 55%,#0000)}.hero>*{z-index:1;position:relative}.eyebrow{letter-spacing:.12em;text-transform:uppercase;align-items:center;gap:7px;font-size:11px;font-weight:700;display:flex}.hero-grid{grid-template-columns:1.5fr .55fr;align-items:center;gap:55px;margin-top:45px;display:grid}.hero h1,.cta h2{letter-spacing:-.075em;margin:0;font:500 min(clamp(54px,8vw,112px),15.3846vw - 7.38462px)/.93 Noto Serif SC,Georgia,serif}.h1-line{white-space:nowrap;display:block}.hero h1 em,.cta h2 em{color:var(--violet);font-weight:400}.cta h2 em{font-weight:inherit;color:#f4f2ec}.hero-note{border-left:1px solid var(--ink);padding-bottom:8px;padding-left:18px}.hero-note p{margin:0 0 26px;font-size:15px;line-height:1.7}.text-link{border-bottom:1px solid var(--ink);align-items:center;gap:8px;padding-bottom:4px;font-size:14px;font-weight:700;display:inline-flex}.hero-rail{border-top:1px solid var(--line);border-bottom:1px solid var(--line);white-space:nowrap;letter-spacing:.15em;align-items:center;margin-top:84px;padding:14px 0;font:700 10px Arial;display:flex;overflow:hidden}.hero-rail-track{align-items:center;width:max-content;animation:28s linear infinite hero-rail-scroll;display:flex}.hero-rail-group{align-items:center;gap:18px;padding-right:18px;display:flex}@keyframes hero-rail-scroll{to{transform:translate(-50%)}}.hero-rail i{background:var(--violet);border-radius:50%;flex:none;width:6px;height:6px;display:inline-block}.work-section{padding-top:105px;padding-bottom:115px}.section-head{justify-content:space-between;align-items:flex-end;margin-bottom:32px;display:flex}.section-head>div{align-items:baseline;gap:14px;display:flex}.section-index{color:var(--violet-text);letter-spacing:.06em;font:700 11px monospace;display:block}.section-head h2{letter-spacing:-.055em;margin:0;font:500 clamp(35px,4.5vw,57px)/1 Noto Serif SC,Georgia,serif}.section-head p{width:235px;color:var(--muted);margin:0;font-size:14px;line-height:1.6}.filters{gap:7px;margin:0 0 17px;display:flex}.filters button{cursor:pointer;border:1px solid var(--line);color:var(--ink);background:0 0;border-radius:30px;padding:8px 14px;font-size:12px;transition:all .2s}.filters button.active,.filters button:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}.project-rail-shell{overflow:hidden}.project-rail{overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-color:var(--line) transparent;scrollbar-width:thin;grid-auto-columns:minmax(380px,44vw);grid-auto-flow:column;gap:14px;padding:1px 1px 18px;display:grid;overflow-x:auto}.project-rail>*{scroll-snap-align:start;min-width:0}.project-rail::-webkit-scrollbar{height:7px}.project-rail::-webkit-scrollbar-track{background:0 0}.project-rail::-webkit-scrollbar-thumb{background:var(--line)}.project-rail-footer{color:var(--muted);letter-spacing:.05em;justify-content:space-between;align-items:center;gap:18px;font:700 10px monospace;display:flex}.project-rail-footer>div{gap:6px;display:flex}.project-rail-footer button{border:1px solid var(--line);width:34px;height:34px;color:var(--ink);cursor:pointer;background:0 0;border-radius:50%;place-items:center;padding:0;transition:all .2s;display:grid}.project-rail-footer button:hover{border-color:var(--ink);color:var(--violet)}.project-rail-shell,.writing-rail-shell{position:relative}.project-rail-shell:before,.project-rail-shell:after,.writing-rail-shell:before,.writing-rail-shell:after{content:"";z-index:2;pointer-events:none;opacity:0;width:56px;transition:opacity .25s;position:absolute;top:0;bottom:18px}.project-rail-shell:before,.writing-rail-shell:before{background:linear-gradient(to right, var(--paper) 30%, transparent);left:0}.project-rail-shell:after,.writing-rail-shell:after{background:linear-gradient(to left, var(--paper) 30%, transparent);right:0}.project-rail-shell:not([data-at-start]):before,.writing-rail-shell:not([data-at-start]):before,.project-rail-shell:not([data-at-end]):after,.writing-rail-shell:not([data-at-end]):after{opacity:1}.project-card{border-radius:4px;flex-direction:column;justify-content:space-between;min-height:450px;padding:18px;display:flex;overflow:hidden}.project-link{min-width:0;color:inherit;display:block}.project-link .project-card{height:100%;transition:transform .22s,box-shadow .22s}.project-link:hover .project-card{transform:translateY(-5px);box-shadow:0 16px 26px #00000029}.project-link .project-status{opacity:1;text-underline-offset:4px;text-decoration:underline}.project-card.ink{color:var(--card-ink-text);background:var(--card-ink)}.project-card.violet{background:var(--violet);color:#000}.project-card.lime{background:var(--lime)}.project-top,.project-foot{letter-spacing:.06em;justify-content:space-between;align-items:center;font:700 10px monospace;display:flex}.project-symbol{width:100%;height:130px;margin:12px 0;position:relative}.project-symbol:after{content:attr(data-mark);letter-spacing:-.12em;opacity:.22;font:500 165px/.8 Noto Serif SC,Georgia,serif;position:absolute;bottom:-22px;right:-4px}.project-symbol div{border:1px solid;width:72px;height:72px;position:absolute}.project-symbol div:nth-child(2){border-radius:50%;top:15px;left:14%}.project-symbol div:nth-child(3){top:45px;left:42%;transform:rotate(45deg)}.project-symbol div:nth-child(4){border-radius:50% 50% 0;top:8px;left:67%}.project-copy h3{letter-spacing:-.05em;margin:0 0 10px;font:500 38px/1 Noto Serif SC,Georgia,serif}.project-copy p{max-width:290px;margin:0;font-size:13px;line-height:1.65}.project-foot>div{flex-wrap:wrap;gap:5px;display:flex}.project-foot span{border:1px solid;border-radius:20px;padding:5px 7px;font-size:9px}.project-status{opacity:.8;border:0!important;padding:0!important}.about-section{grid-template-columns:1.15fr .85fr;gap:12vw;padding-top:115px;padding-bottom:115px;display:grid}.portrait-depth{perspective:1000px;width:100%}.portrait-frame{background:var(--portrait-bg);border:1px solid var(--line);width:100%;min-height:465px;color:var(--portrait-ink);letter-spacing:.08em;transform:rotateX(var(--portrait-rotate-x,0deg)) rotateY(var(--portrait-rotate-y,0deg));transform-style:preserve-3d;will-change:transform;flex-direction:column;gap:12px;padding:16px;font:700 10px monospace;transition:transform .18s ease-out,box-shadow .18s ease-out;display:flex;box-shadow:0 14px 26px #00000014}.portrait-frame:hover{box-shadow:0 24px 42px #00000029}.portrait-head,.portrait-foot{justify-content:space-between;display:flex;transform:translateZ(16px)}.portrait-media{background:#f6f2e8;flex:none;height:560px;position:relative;overflow:hidden;transform:translateZ(28px);box-shadow:0 12px 20px #0000001f}.portrait-media img{object-fit:contain;object-position:center;width:100%;height:100%;display:block;position:absolute;inset:0}.about-copy{padding-top:44px}.about-statement{letter-spacing:-.04em;margin:40px 0 30px;font:500 clamp(26px,3.4vw,44px)/1.25 Noto Serif SC,Georgia,serif}.about-statement strong{color:var(--violet);font-weight:500}.about-copy p:not(.about-statement){max-width:485px;font-size:15px;line-height:1.85}.about-copy .text-link{margin-top:26px}.writing-section,.stack-section{border-top:1px solid var(--line);padding-top:115px;padding-bottom:115px}.skill-list{border-top:1px solid var(--ink)}.skill-list article{border-bottom:1px solid var(--line);grid-template-columns:90px 1fr 1fr 30px;align-items:center;gap:20px;min-height:112px;padding:23px 4px;transition:padding .2s,background .2s;display:grid}.skill-list article:hover{background:var(--raised);padding-left:15px}.skill-list span{color:var(--violet);font:700 11px monospace}.skill-list h3{letter-spacing:-.04em;margin:0;font:500 28px Noto Serif SC,Georgia,serif}.skill-list p{max-width:350px;color:var(--muted);margin:0;font-size:13px;line-height:1.6}.cta{background:var(--violet);color:var(--cta-text);justify-content:space-between;align-items:end;margin-bottom:34px;padding-top:70px;padding-bottom:70px;display:flex}.cta .eyebrow{margin-bottom:25px}.mail-button{white-space:nowrap;background:var(--ink);min-width:232px;height:32px;color:var(--paper);border-radius:0;flex-shrink:0;justify-content:space-between;align-items:center;gap:6px;padding:0 15px;font-size:14px;font-weight:500;display:inline-flex}.mail-button[data-copied=true]{background:var(--paper);color:#17171b}.site-footer{color:var(--muted);justify-content:space-between;padding-top:8px;padding-bottom:36px;font-size:11px;display:flex}.site-footer div{gap:19px;display:flex}.site-footer a{align-items:center;gap:5px;display:flex}@media (max-width:720px){.section-wrap{padding-left:20px;padding-right:20px}.search-fab{width:46px;height:46px;bottom:16px;right:16px}.search-fab-kbd{display:none}.search-modal{top:7vh}.search-list{max-height:62vh}.site-nav{height:68px;padding:0 20px}.nav-buddy{width:48px;height:48px}.nav-buddy-image{width:46px;height:46px}.nav-links{display:none}.mobile-section-nav{border-bottom:1px solid var(--line);color:var(--muted);letter-spacing:.06em;scrollbar-width:none;gap:18px;font:700 11px/1 monospace;display:flex;overflow-x:auto}.mobile-section-nav::-webkit-scrollbar{display:none}.mobile-section-nav a{flex:none;padding:13px 0}.hero{padding-top:65px}.hero-grid,.about-section{grid-template-columns:1fr;gap:32px}.hero-note{max-width:360px}.hero-rail{margin-top:60px}.work-section{padding-top:75px;padding-bottom:70px}.writing-section{padding-top:70px;padding-bottom:70px}.section-head{flex-direction:column;align-items:flex-start;gap:20px}.section-head p{width:auto}.project-rail,.writing-rail{grid-auto-columns:minmax(82vw,82vw);gap:12px;padding-bottom:13px}.project-rail-shell:before,.project-rail-shell:after,.writing-rail-shell:before,.writing-rail-shell:after{width:36px;bottom:13px}.project-rail-footer>span{display:none}.project-rail-footer{justify-content:flex-end}.project-card{min-height:390px}.about-section{padding-top:70px;padding-bottom:70px}.portrait-depth{order:-1;min-height:0}.portrait-frame{padding:12px}.portrait-media{height:420px}.about-copy{padding-top:0}.stack-section{padding-top:70px;padding-bottom:70px}.skill-list article{grid-template-columns:42px 1fr 25px;gap:12px}.skill-list p{grid-column:2/4}.cta{flex-direction:column;align-items:start;gap:35px;margin-bottom:20px;padding-top:45px;padding-bottom:45px}.site-footer{flex-wrap:wrap;gap:16px}.site-footer>span:last-child{display:none}.project-case-shell{padding:20px}.project-case{padding:74px 0 55px}.project-case-hero{padding-bottom:40px}.case-title-row h1{margin-top:18px}.case-body>h2,.case-deliverables-section{padding-top:38px}}.writing-rail-shell{overflow:hidden}.writing-rail{overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-color:var(--line) transparent;scrollbar-width:thin;grid-auto-columns:minmax(320px,38vw);grid-auto-flow:column;gap:14px;padding:1px 1px 18px;display:grid;overflow-x:auto}.writing-rail>*{scroll-snap-align:start;min-width:0}.writing-rail::-webkit-scrollbar{height:7px}.writing-rail::-webkit-scrollbar-track{background:0 0}.writing-rail::-webkit-scrollbar-thumb{background:var(--line)}.writing-rail .writing-card{height:100%}.writing-card{border:1px solid var(--line);flex-direction:column;min-height:290px;padding:18px;transition:background .2s,transform .2s;display:flex}.writing-card:hover{background:var(--raised);transform:translateY(-4px)}.writing-card>.article-number{color:var(--violet);font:700 11px monospace}.article-meta{color:var(--muted);letter-spacing:.04em;justify-content:space-between;font:10px monospace;display:flex}.writing-card .article-meta{margin-top:22px}.writing-card h3{letter-spacing:-.04em;margin:15px 0 10px;font:500 26px/1.16 Noto Serif SC,Georgia,serif}.writing-card p{color:var(--muted);margin:0;font-size:13px;line-height:1.65}.article-tags{flex-wrap:wrap;gap:5px;margin-top:auto;padding-top:20px;display:flex}.article-tags span,.article-tags a{border:1px solid var(--line);color:var(--muted);border-radius:18px;padding:4px 7px;font:9px monospace}.article-tags a:hover{border-color:var(--violet);color:var(--violet-text)}.article-tag-cloud{flex-wrap:wrap;gap:6px;margin-top:28px;display:flex}.article-tag-cloud a{border:1px solid var(--line);color:var(--body-text);border-radius:18px;align-items:baseline;gap:6px;padding:5px 9px;font-size:12px;transition:border-color .2s,color .2s;display:inline-flex}.article-tag-cloud a>span{color:var(--muted);font:9px monospace}.article-tag-cloud a:hover{border-color:var(--violet);color:var(--violet-text)}.code-line{color:var(--muted);margin:0 0 25px;font:12px/1.6 monospace}.code-line span{color:var(--violet)}.code-line b{color:var(--ink);font-weight:500}.article-page{background:var(--paper);min-height:100vh}.reading-progress{z-index:20;-webkit-appearance:none;appearance:none;width:100%;height:3px;color:var(--violet);background:var(--line);border:0;display:block;position:fixed;inset:0 0 auto}@supports (color:color-mix(in lab, red, red)){.reading-progress{background:color-mix(in srgb, var(--line) 72%, transparent)}}.reading-progress{transform:translateZ(0)}.reading-progress::-webkit-progress-bar{background:var(--line)}@supports (color:color-mix(in lab, red, red)){.reading-progress::-webkit-progress-bar{background:color-mix(in srgb, var(--line) 72%, transparent)}}.reading-progress::-webkit-progress-value{background:var(--violet);transition:width .1s linear}.reading-progress::-moz-progress-bar{background:var(--violet);transition:width .1s linear}.search-fab{z-index:80;border:1px solid var(--line);background:var(--paper);width:44px;height:44px;color:var(--ink);cursor:pointer;box-shadow:0 6px 24px var(--ink);border-radius:999px;justify-content:center;align-items:center;display:flex;position:fixed;bottom:22px;right:22px}@supports (color:color-mix(in lab, red, red)){.search-fab{box-shadow:0 6px 24px color-mix(in srgb, var(--ink) 14%, transparent)}}.search-fab{transition:border-color .2s,color .2s,transform .2s}:is(.search-fab:hover,.search-fab:focus-visible){border-color:var(--violet);color:var(--violet-text);transform:translateY(-2px)}.search-fab-kbd{border:1px solid var(--line);background:var(--paper);color:var(--muted);white-space:nowrap;border-radius:6px;margin-bottom:6px;padding:2px 6px;font:500 10px/1.4 IBM Plex Mono,monospace;position:absolute;bottom:100%}.search-modal{border:1px solid var(--line);background:var(--paper);width:100%;max-width:min(620px,100vw - 24px);color:var(--ink);box-shadow:0 28px 70px var(--ink);border-radius:14px;margin:0 auto;padding:0;position:fixed;top:11vh;bottom:auto}@supports (color:color-mix(in lab, red, red)){.search-modal{box-shadow:0 28px 70px color-mix(in srgb, var(--ink) 26%, transparent)}}.search-modal{overflow:hidden}.search-modal::backdrop{background:var(--ink)}@supports (color:color-mix(in lab, red, red)){.search-modal::backdrop{background:color-mix(in srgb, var(--ink) 30%, transparent)}}.search-modal::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.search-input-row{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:14px 16px;display:flex}.search-input-icon{color:var(--muted);flex:none}.search-input{min-width:0;color:var(--ink);background:0 0;border:none;outline:none;flex:1;font:400 16px/1.4 inherit}.search-input::placeholder{color:var(--muted)}.search-esc{border:1px solid var(--line);color:var(--muted);border-radius:5px;flex:none;padding:2px 6px;font:500 10px/1.5 IBM Plex Mono,monospace}.search-close{border:1px solid var(--line);width:26px;height:26px;color:var(--muted);cursor:pointer;background:0 0;border-radius:7px;flex:none;justify-content:center;align-items:center;transition:border-color .2s,color .2s;display:flex}:is(.search-close:hover,.search-close:focus-visible){border-color:var(--violet);color:var(--violet-text)}.search-list{max-height:56vh;margin:0;padding:6px;list-style:none;overflow-y:auto}.search-item{color:var(--ink);border-radius:9px;align-items:flex-start;gap:10px;padding:10px;text-decoration:none;display:flex}.search-item:hover,.search-item.is-active{background:var(--raised)}.search-item-type{border:1px solid var(--line);color:var(--muted);border-radius:999px;flex:none;margin-top:2px;padding:2px 7px;font-size:11px;line-height:1.5}.search-item.is-active .search-item-type{border-color:var(--violet)}@supports (color:color-mix(in lab, red, red)){.search-item.is-active .search-item-type{border-color:color-mix(in srgb, var(--violet) 55%, transparent)}}.search-item.is-active .search-item-type{color:var(--violet-text)}.search-item-body{flex:1;min-width:0}.search-item-body strong{font-size:14.5px;font-weight:600;line-height:1.5;display:block}.search-item-desc{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12.5px;line-height:1.6;display:block;overflow:hidden}.search-item-meta{color:var(--muted);flex:none;margin-top:3px;font:400 11px/1.5 IBM Plex Mono,monospace}.search-item mark{background:var(--violet);border-radius:3px;padding:0 1px}@supports (color:color-mix(in lab, red, red)){.search-item mark{background:color-mix(in srgb, var(--violet) 20%, transparent)}}.search-item mark{color:var(--violet-text);font-weight:700}.search-empty,.search-hint{color:var(--muted);text-align:center;padding:24px 16px;font-size:13px}.search-hint-terms{margin-top:10px}.search-hint-terms button{color:var(--violet-text);font:inherit;cursor:pointer;text-underline-offset:3px;background:0 0;border:none;margin:0 4px;padding:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.search-retry{border:1px solid var(--line);color:var(--violet-text);font:inherit;cursor:pointer;background:0 0;border-radius:999px;margin-left:8px;padding:2px 12px;transition:border-color .2s,color .2s}:is(.search-retry:hover,.search-retry:focus-visible){border-color:var(--violet)}.article-shell{max-width:930px;margin:auto;padding:34px}.back-link{color:var(--muted);align-items:center;gap:7px;font:12px monospace;display:inline-flex}.article-top-row{justify-content:space-between;align-items:center;display:flex}.article-index-head{border-bottom:1px solid var(--line);padding:110px 0 90px}.article-index-head h1{letter-spacing:-.07em;margin:20px 0;font:500 clamp(50px,7vw,86px)/.98 Noto Serif SC,Georgia,serif}.article-index-head h1 em{color:var(--violet);font-weight:400}.article-index-head p{max-width:350px;color:var(--muted);margin:0;font-size:15px;line-height:1.7}.not-found-shell{min-height:100dvh}.not-found-pup{filter:drop-shadow(0 10px 18px #00000024);margin:26px 0 0 -6px;animation:5s ease-in-out infinite not-found-float;display:block}.not-found-actions{flex-wrap:wrap;gap:26px;margin-top:44px;display:flex}.not-found-actions a{color:var(--ink);border-bottom:1px solid var(--line);padding-bottom:3px;font:12px monospace;transition:color .2s,border-color .2s}.not-found-actions a:hover{color:var(--violet);border-color:var(--violet)}@keyframes not-found-float{0%,to{translate:0;rotate:-4deg}50%{translate:0 -7px;rotate:4deg}}@media (prefers-reduced-motion:reduce){.not-found-pup{animation:none}}.now-list{gap:34px;margin-top:44px;display:grid}.now-block ul{gap:10px;margin:12px 0 0;padding:0;list-style:none;display:grid}.now-block li{color:var(--body-text);max-width:620px;padding-left:18px;font-size:14px;line-height:1.75;position:relative}.now-block li:before{content:"";border:1px solid var(--violet);border-radius:50%;width:7px;height:7px;position:absolute;top:.72em;left:0}.now-actions{flex-wrap:wrap;gap:26px;margin-top:44px;display:flex}.now-actions a{color:var(--ink);border-bottom:1px solid var(--line);align-items:center;gap:4px;padding-bottom:3px;font:12px monospace;transition:color .2s,border-color .2s;display:inline-flex}.now-actions a:hover{color:var(--violet);border-color:var(--violet)}.now-icon{translate:0 1px}@keyframes page-enter{0%{opacity:0}}main{animation:.22s both page-enter}@media (prefers-reduced-motion:reduce){main{animation:none}}.article-row{border-bottom:1px solid var(--line);grid-template-columns:70px 1fr 26px;gap:25px;padding:30px 0;display:grid}.article-row:hover h2{color:var(--violet)}.article-number{color:var(--violet);font:700 11px monospace}.article-row h2{letter-spacing:-.04em;margin:13px 0 9px;font:500 32px/1.15 Noto Serif SC,Georgia,serif;transition:color .2s}.article-row p{max-width:570px;color:var(--muted);margin:0;font-size:14px;line-height:1.7}.article-arrow{margin-top:4px}.book-group{margin-top:54px}.book-group-index{border-bottom:1px solid var(--line);color:var(--violet);letter-spacing:.12em;padding-bottom:16px;font:700 11px monospace;display:block}.book-group ul{margin:0;padding:0;list-style:none}.book-row{border-bottom:1px solid var(--line);padding:26px 0}.book-title-row{justify-content:space-between;align-items:baseline;gap:18px;display:flex}.book-title-row h2{letter-spacing:-.04em;margin:0;font:500 clamp(24px,3vw,32px)/1.2 Noto Serif SC,Georgia,serif}.book-started{color:var(--muted);letter-spacing:.1em;white-space:nowrap;font:10px monospace}.book-author{color:var(--muted);margin-top:8px;font-size:13px;display:block}.book-takeaway{border-left:2px solid var(--violet);color:var(--body-text);margin:15px 0 0;padding-left:16px;font-size:15px;line-height:1.7}.article-detail{max-width:830px}.article-detail article{padding:110px 0 80px}.article-detail article>header{border-bottom:1px solid var(--line);padding-bottom:45px}.article-detail h1{letter-spacing:-.06em;max-width:760px;margin:22px 0;font:500 clamp(44px,6vw,76px)/1.04 Noto Serif SC,Georgia,serif}.article-lede{max-width:600px;color:var(--muted);font-size:18px;line-height:1.65}.article-body{max-width:650px;padding:65px 0 20px}.article-body>:first-child{margin-top:0}.article-body h2{margin:48px 0 16px;font:500 28px Noto Serif SC,Georgia,serif}.article-body h3{margin:34px 0 12px;font:500 20px Noto Serif SC,Georgia,serif}.article-body p{color:var(--body-text);margin:0 0 15px;font-size:16px;line-height:2}.article-body ul,.article-body ol{color:var(--body-text);margin:0 0 15px;padding-left:1.4em;font-size:16px;line-height:2}.article-body li+li{margin-top:4px}.article-body li::marker{color:var(--violet)}.article-body blockquote{border-left:3px solid var(--violet);color:var(--muted);margin:24px 0;padding:2px 0 2px 20px;font-size:16px;line-height:2}.article-body blockquote p{margin:0}.article-body code{border:1px solid var(--line);background:var(--raised);border-radius:4px;padding:2px 7px;font-family:ui-monospace,SF Mono,Consolas,monospace;font-size:.86em}.article-body pre{border:1px solid var(--line);background:var(--raised);border-radius:4px;margin:24px 0;padding:20px 22px;overflow-x:auto}.code-block{border:1px solid var(--line);background:var(--raised);border-radius:4px;margin:24px 0;overflow:hidden}.code-block-head{border-bottom:1px solid var(--line);color:var(--muted);letter-spacing:.08em;justify-content:space-between;align-items:center;padding:7px 12px 7px 14px;font:10px monospace;display:flex}.code-copy{color:var(--muted);cursor:pointer;letter-spacing:.08em;background:0 0;border:0;padding:2px 6px;font:10px monospace;transition:color .2s}.code-copy:hover,.code-copy[data-copied]{color:var(--violet-text)}.code-block pre{background:0 0;border:0;border-radius:0;margin:0}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:var(--code-comment)}.token.punctuation{color:var(--muted)}.token.keyword,.token.tag,.token.property,.token.symbol,.token.deleted{color:var(--code-keyword)}.token.string,.token.char,.token.attr-value,.token.inserted{color:var(--code-string)}.token.function,.token.class-name,.token.selector,.token.attr-name{color:var(--code-func)}.token.number,.token.boolean,.token.constant,.token.builtin{color:var(--code-number)}.token.operator,.token.entity,.token.url,.token.variable{color:var(--body-text)}.article-body pre code,.case-body pre code{background:0 0;border:0;padding:0;font-size:14px;line-height:1.75}.case-body code{border:1px solid var(--line);background:var(--raised);color:var(--body-text);border-radius:4px;padding:2px 5px;font-family:ui-monospace,SF Mono,Consolas,monospace;font-size:.86em}.case-body pre code{border:0;padding:0}.article-body a{color:var(--violet-text);text-underline-offset:3px;text-decoration:underline}.article-body img{border:1px solid var(--line);max-width:100%;margin:24px 0;display:block}.article-body hr{border:0;border-top:1px solid var(--line);margin:40px 0}.article-nav{border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr;gap:14px;padding-bottom:34px;display:grid}.article-nav-card{border:1px solid var(--line);flex-direction:column;gap:8px;padding:20px 22px;transition:border-color .2s,background .2s;display:flex}.article-nav-card:hover{border-color:var(--ink);background:var(--raised)}.article-nav-card.is-empty{visibility:hidden}.article-nav-card.is-next{text-align:right;align-items:flex-end}.article-nav-card strong{font-size:15px;line-height:1.5}.article-nav-label{color:var(--violet);letter-spacing:.12em;text-transform:uppercase;align-items:center;gap:5px;font:700 11px ui-monospace,SF Mono,Consolas,monospace;display:inline-flex}.article-nav-meta{color:var(--muted);font-size:13px}.article-related{padding:30px 0 8px}.article-series{color:var(--violet-text);letter-spacing:.08em;align-items:baseline;gap:10px;margin-bottom:14px;font:12px monospace;display:flex}.article-series-pos{color:var(--muted)}.article-series-box{padding:30px 0 8px}.article-series-box ol{gap:6px;margin:16px 0 0;padding:0;list-style:none;display:grid}.article-series-box li>a,.article-series-box li.is-current{border:1px solid var(--line);color:inherit;border-radius:10px;align-items:baseline;gap:12px;padding:12px 14px;text-decoration:none;display:flex}.article-series-box li>a:hover{border-color:var(--violet-text)}.article-series-box li.is-current{color:var(--muted);border-style:dashed}.article-series-box li.is-current strong{color:var(--ink)}.article-series-num{color:var(--violet-text);font:12px monospace}.article-backlinks{padding:30px 0 8px}.article-related-grid{grid-template-columns:1fr 1fr;gap:14px;margin-top:16px;display:grid}.article-related-card{border:1px solid var(--line);background:var(--raised);flex-direction:column;gap:8px;padding:18px 20px;transition:border-color .2s;display:flex}.article-related-card:hover{border-color:var(--ink)}.article-related-card strong{font-size:15px;line-height:1.5}@media (max-width:640px){.article-nav,.article-related-grid{grid-template-columns:1fr}.article-nav-card.is-empty{display:none}}.article-end-link{border-bottom:1px solid var(--ink);align-items:center;gap:7px;margin-bottom:50px;padding-bottom:4px;font-weight:700;display:inline-flex}.project-case-page{background:var(--paper);min-height:100vh}.project-case-shell{max-width:980px;margin:auto;padding:34px}.project-case{padding:90px 0 80px}.project-case-hero{border-bottom:1px solid var(--ink);padding-bottom:56px}.case-eyebrow{color:var(--violet);letter-spacing:.12em;font:700 11px monospace}.case-title-row{justify-content:space-between;align-items:baseline;gap:24px;display:flex}.case-title-row h1{letter-spacing:-.08em;margin:24px 0 16px;font:500 clamp(58px,10vw,116px)/.9 Noto Serif SC,Georgia,serif}.case-title-row>span{color:var(--muted);font:700 11px monospace}.project-case-hero>p{max-width:660px;color:var(--body-text);margin:0;font-size:clamp(19px,2.2vw,27px);line-height:1.55}.case-meta,.case-deliverables{flex-wrap:wrap;gap:7px;display:flex}.case-meta{margin-top:30px}.case-meta span,.case-deliverables span{border:1px solid var(--line);color:var(--muted);border-radius:20px;padding:6px 9px;font:10px monospace}.case-body{counter-reset:section}.case-body>h2{border-top:1px solid var(--line);color:var(--violet);letter-spacing:.12em;margin:0;padding:52px 0 28px;font:700 11px monospace}.case-body>h2:before{counter-increment:section;content:counter(section, decimal-leading-zero) " / "}.case-body>h2:first-child{border-top:none;padding-top:0}.case-body>h3{letter-spacing:-.06em;max-width:650px;margin:28px 0 22px;font:500 clamp(32px,4vw,50px)/1.1 Noto Serif SC,Georgia,serif}.case-body>h4{letter-spacing:-.04em;margin:36px 0 10px;font:500 26px Noto Serif SC,Georgia,serif}.case-body p{max-width:670px;color:var(--body-text);margin:0 0 18px;font-size:16px;line-height:1.9}.case-body ul{max-width:670px;color:var(--body-text);gap:13px;margin:6px 0 24px;padding:0;font-size:16px;line-height:1.6;list-style:none;display:grid}.case-body li:before{content:"✓";color:var(--violet);margin-right:9px;font:700 12px monospace}.case-deliverables-section{border-top:1px solid var(--line);padding:52px 0 0}.case-deliverables-index{color:var(--violet);letter-spacing:.12em;font:700 11px monospace}.case-deliverables-section .case-deliverables{margin-top:24px}.project-symbol div{animation:6s ease-in-out infinite symbol-float}.project-symbol div:nth-child(3){animation-delay:-2s}.project-symbol div:nth-child(4){animation-delay:-4s}@keyframes symbol-float{0%,to{translate:0}50%{translate:0 -10px}}@media (prefers-reduced-motion:reduce){.nav-buddy-image,.hero-rail-track{animation:none}.reveal,.reveal[data-reveal-ready=true]:not([data-reveal-visible=true]){opacity:1;transition:none;transform:none}.reading-progress::-webkit-progress-value{transition:none}.reading-progress::-moz-progress-bar{transition:none}.project-symbol div{animation:none}.portrait-frame,.portrait-media,.portrait-head,.portrait-foot{transition:none;transform:none}}@property --tw-border-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}
