*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: rgb(17 24 39 / 10%);--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.\!visible{visibility:visible!important}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.block{display:block}.flex{display:flex}.grid{display:grid}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.border{border-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)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}:root{--paper:#f3efe6;--ink:#17323d;--accent:#a4442d;--muted:#5f6c6b;--line:rgba(23,50,61,.25);--surface:color-mix(in srgb,var(--paper) 96%,var(--ink) 4%);--surface-raised:color-mix(in srgb,var(--paper) 96%,white 4%);--surface-sunken:color-mix(in srgb,var(--paper) 90%,var(--ink) 10%);--shadow-cinematic:0 28px 80px rgba(23,50,61,.14);--grid-color:rgba(23,50,61,.055);--code-surface:#24343a;--code-ink:#f4f0e8;--type-body:1rem;--type-meta:.85rem;--type-section:clamp(1.5rem,3vw,2rem);--space-unit:.5rem;--space-xs:.5rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2.5rem;--space-xl:4rem;--radius-media:4px;--motion-fast:.2s;--motion-scene:.7s;--ease-out:cubic-bezier(.2,.8,.2,1);--ease-cinematic:cubic-bezier(.16,1,.3,1);color-scheme:light}:root[data-theme=dark]{--paper:#17262c;--ink:#eee9de;--accent:#df8b67;--muted:#b6bbb4;--line:rgba(238,233,222,.25);--surface-raised:#21343b;--surface-sunken:#101d22;--shadow-cinematic:0 32px 90px rgba(0,0,0,.3);--grid-color:rgba(238,233,222,.045);--code-surface:#0f1b20;--code-ink:#f4f0e8;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;min-height:100vh;margin:0;color:var(--ink);background-color:var(--paper);background-image:repeating-linear-gradient(0deg,color-mix(in srgb,var(--ink) 1.5%,transparent) 0 1px,transparent 1px 4px),linear-gradient(90deg,transparent 0 7.5%,var(--line) 7.5% calc(7.5% + 1px),transparent calc(7.5% + 1px)),radial-gradient(circle at 20% 10%,color-mix(in srgb,var(--accent) 8%,transparent),transparent 28rem);font-family:Noto Sans CJK SC,Microsoft YaHei,PingFang SC,sans-serif;font-size:var(--type-body);line-height:1.7;transition:color .25s,background-color .25s}body:has(.admin-page){background-image:none}h1,h2,h3{font-family:"Noto Serif CJK SC",Songti SC,SimSun,serif;line-height:1.12;text-wrap:balance}p,li,blockquote{text-wrap:pretty}a{color:inherit;text-underline-offset:.22em}button{color:inherit;font:inherit}:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.skip-link{position:fixed;z-index:100;top:.5rem;left:.5rem;padding:.6rem 1rem;color:var(--paper);background:var(--ink);transform:translateY(-150%)}.skip-link:focus{transform:none}.site-header{position:sticky;z-index:20;top:0;display:flex;align-items:center;justify-content:space-between;min-height:72px;padding:.7rem clamp(1rem,5vw,4rem);border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--paper) 92%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:min-height var(--motion-fast) var(--ease-out),padding var(--motion-fast) var(--ease-out),background-color var(--motion-fast) var(--ease-out)}.site-header.compact{min-height:58px;padding-block:.3rem;background:color-mix(in srgb,var(--paper) 97%,transparent)}.site-mark{color:var(--accent);font-family:"Noto Serif CJK SC",Songti SC,SimSun,serif;font-size:1.25rem;font-weight:800;text-decoration:none}.site-nav,.header-actions,.site-footer nav{display:flex;align-items:center;gap:clamp(.8rem,2.2vw,2rem)}.site-nav a{min-height:44px;display:grid;place-items:center;text-decoration:none;transition:color var(--motion-fast) var(--ease-out),box-shadow var(--motion-fast) var(--ease-out)}.site-nav a.router-link-exact-active{color:var(--accent);box-shadow:inset 0 -2px var(--accent)}.icon-button{display:grid;width:44px;height:44px;place-items:center;border:1px solid var(--line);background:transparent;cursor:pointer}.icon-button svg{width:19px}.menu-button{display:none}.mobile-nav{position:absolute;top:100%;right:0;left:0;display:grid;padding:1rem;border-bottom:1px solid var(--line);background:var(--paper)}.mobile-nav a{min-height:44px;padding:.45rem}.site-footer{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;padding:2rem clamp(1rem,5vw,4rem);border-top:1px solid var(--line);color:var(--muted);font-size:var(--type-meta)}.site-footer p{margin:0}.site-footer nav{justify-self:end}.site-filing{display:inline-flex;align-items:center;gap:.35rem;justify-self:center;color:inherit;text-align:center;white-space:nowrap}.site-filing a{color:inherit;text-decoration:none}.site-filing a:hover{color:var(--accent);text-decoration:underline}.police-filing{display:inline-flex;align-items:center;gap:2px;color:inherit;text-decoration:none;white-space:nowrap}.police-filing:hover,.site-filing:hover{color:var(--accent);text-decoration:underline}.page-shell,.home-shell{width:min(1120px,calc(100% - 2rem));margin:auto;padding:clamp(4rem,8vw,7rem) 0 clamp(2rem,4vw,3rem)}.home-shell,.about-page,.top-aligned-page,.admin-page{padding-top:0}.home-atmosphere{position:relative;isolation:isolate;--atmosphere-a:color-mix(in srgb,var(--accent) 11%,transparent);--atmosphere-b:color-mix(in srgb,var(--ink) 5%,transparent)}.home-atmosphere:before{position:fixed;z-index:-1;inset:0;content:"";pointer-events:none;background:radial-gradient(circle at 78% 38%,var(--atmosphere-a),transparent 34rem),radial-gradient(circle at 18% 78%,var(--atmosphere-b),transparent 30rem);opacity:.8;transition:background .5s var(--ease-out),opacity .5s var(--ease-out)}.home-atmosphere[data-atmosphere="1"]{--atmosphere-a:color-mix(in srgb,#507d73 14%,transparent);--atmosphere-b:color-mix(in srgb,var(--accent) 7%,transparent)}.home-atmosphere[data-atmosphere="2"]{--atmosphere-a:color-mix(in srgb,#6b648d 13%,transparent);--atmosphere-b:color-mix(in srgb,#b17b4d 7%,transparent)}.home-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.9fr);gap:clamp(2rem,6vw,6rem);align-items:stretch}.home-intro{padding-bottom:.75rem}.page-kicker{color:var(--accent);font-size:.78rem;font-weight:700;letter-spacing:.18em}.page-hero h1,.home-hero h1{margin:.25rem 0;font-size:clamp(3rem,9vw,7rem)}.page-hero p,.home-subtitle{max-width:42rem;color:var(--muted);font-size:clamp(1.1rem,2.4vw,1.6rem)}.plain-section{padding-top:1rem;border-top:2px solid var(--ink)}.plain-section>h2{margin:0 0 calc(var(--space-unit) * 2);font-size:var(--type-section)}.plain-list article{padding:1.2rem 0;border-bottom:1px solid var(--line)}.plain-list h3,.plain-list p{margin:.2rem 0}.plain-list p{color:var(--muted)}.plain-button{display:inline-flex;min-height:44px;align-items:center;padding:.6rem 1rem;color:var(--paper);background:var(--ink);text-decoration:none;transition:color var(--motion-fast) var(--ease-out),background-color var(--motion-fast) var(--ease-out),transform var(--motion-fast) var(--ease-out)}.plain-button:hover{transform:translateY(-1px)}.plain-button.secondary{color:var(--ink);border:1px solid var(--line);background:transparent}.button-row{display:flex;flex-wrap:wrap;gap:.8rem}.plain-form{display:grid;gap:1rem}.plain-form label{display:grid;gap:.35rem;color:var(--muted);font-size:var(--type-meta)}.plain-form input,.plain-form textarea,.search-line input{width:100%;border:1px solid var(--line);padding:.75rem .85rem;color:var(--ink);background:color-mix(in srgb,var(--paper) 88%,var(--ink) 12%);font:inherit}.plain-form textarea{resize:vertical}.search-line{display:flex;gap:.5rem;align-items:center;margin:1.25rem 0}.search-line input{width:auto;flex:1}.search-line svg{width:20px;height:20px;color:var(--muted);flex-shrink:0}.form-error{color:#b3261e}.form-success{color:var(--accent)}.home-direction{margin:1rem 0 0;color:var(--accent);font-family:"Noto Serif CJK SC",Songti SC,SimSun,serif;font-size:clamp(1.5rem,2.8vw,2rem);font-weight:700;white-space:nowrap}.home-direction i{padding:0 .35em;color:var(--line);font-weight:400}.home-actions{display:flex;flex-wrap:wrap;gap:1.2rem;margin-top:2rem}.home-actions a{display:inline-flex;min-height:44px;align-items:center;gap:.4rem}.home-actions svg,.section-heading svg,.home-contact svg{width:1rem}.home-work{margin-top:clamp(5rem,10vw,9rem)}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:1rem;padding-bottom:1rem;border-bottom:3px solid var(--ink)}.section-heading div{display:flex;align-items:baseline;gap:.8rem}.section-heading h2{margin:0;font-size:clamp(2rem,5vw,4rem)}.section-heading span,.home-contact>span{color:var(--accent);font-size:.75rem;font-weight:800;letter-spacing:.1em}.section-heading a,.home-contact a{display:flex;min-height:44px;align-items:center;gap:.3rem}.section-heading a svg,.home-contact a svg,.project-detail-links a svg{transition:transform var(--motion-fast) var(--ease-out)}.section-heading a:hover svg,.home-contact a:hover svg,.project-detail-links a:hover svg{transform:translate(3px)}.project-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;margin:0;padding:0;background:var(--line);list-style:none}.project-cards>li{min-width:0;padding:var(--space-md);background:var(--surface)}.project-cards h3{min-height:3.5em;margin:.35rem 0;font-size:1.35rem}.project-cards p{color:var(--muted)}.project-cards strong{color:var(--accent);font-size:.85rem}.project-cover{display:block;width:100%;aspect-ratio:4/3;margin-bottom:1.2rem;border:1px solid var(--line);-o-object-fit:contain;object-fit:contain;cursor:pointer;transition:transform var(--motion-fast) var(--ease-out)}.carousel{position:relative;margin-bottom:1.2rem}.carousel .project-cover{margin-bottom:0}.index-list{list-style:none;margin:var(--space-md) 0;padding:0;display:flex;flex-direction:column;gap:var(--space-md)}.index-list>li{display:grid;grid-template-columns:240px 1fr auto;gap:var(--space-md);align-items:start;padding:var(--space-md);border:1px solid color-mix(in srgb,var(--line) 72%,transparent);background:var(--surface)}.index-list>.post-index-item{grid-template-columns:minmax(0,1fr)}.project-index-item,.post-index-item{transition:border-color var(--motion-fast) var(--ease-out),transform var(--motion-fast) var(--ease-out)}.project-index-item{cursor:pointer}.project-index-item:hover,.project-index-item:focus-visible,.post-index-item:hover,.post-index-item:focus-within{border-color:var(--accent);transform:translateY(-2px)}.project-index-item:hover .project-cover,.project-index-item:focus-visible .project-cover{transform:scale(1.02)}.project-index-item h2 a{text-decoration:none}.index-list .project-cover{width:240px;aspect-ratio:16/10;margin-bottom:0}.index-list .carousel{width:240px;margin-bottom:0}.index-list .carousel .project-cover{width:100%}.index-list .media-placeholder{width:240px;aspect-ratio:16/10;margin-bottom:0}.index-list>li>div{min-width:0}.index-list h2{margin:0 0 .35rem;font-size:1.25rem}.index-list>li>div p{margin:.35rem 0;color:var(--muted)}.index-list small{color:var(--accent);font-weight:600;font-size:var(--type-meta)}.index-list>li>a{display:flex;align-items:center;gap:.3rem;min-height:40px;padding:.3rem .8rem;border:1px solid var(--ink);white-space:nowrap}.index-list .project-links{display:flex;flex-direction:column;gap:.35rem}.index-list .project-links a{display:flex;align-items:center;gap:.3rem;min-height:40px;padding:.3rem .8rem;border:1px solid var(--ink);white-space:nowrap;text-decoration:none}.index-list .page-kicker{font-size:.75rem;font-weight:800;letter-spacing:.1em;color:var(--accent);margin:0 0 .3rem}.data-notice{margin:1rem 0;padding:.7rem 1rem;border-left:3px solid var(--accent);color:var(--muted);background:color-mix(in srgb,var(--accent) 8%,transparent)}.media-placeholder{position:relative;display:grid;aspect-ratio:4/3;overflow:hidden;place-items:center;margin-bottom:1.2rem;border:1px solid var(--line);background:repeating-linear-gradient(135deg,transparent 0 12px,var(--line) 12px 13px)}.media-placeholder span{position:absolute;top:.6rem;left:.7rem;font:700 .8rem monospace}.media-placeholder i{width:34%;aspect-ratio:1;border:1px solid var(--accent);border-radius:50%}.media-placeholder small{position:absolute;right:.7rem;bottom:.5rem;padding:.15rem .3rem;background:var(--paper)}.home-contact{display:grid;grid-template-columns:auto 1fr auto;gap:var(--space-md);align-items:center;margin-top:var(--space-xl);padding:var(--space-md) 0;border-block:1px solid var(--line)}.post-detail{padding-top:clamp(1.5rem,3vw,2.5rem)}.post-detail header{margin:1rem 0 2rem}.post-detail h1{font-size:clamp(1.8rem,4vw,2.6rem)}.project-detail{padding-top:clamp(1.5rem,3vw,2.5rem)}.project-detail header{max-width:52rem;margin:1rem 0 2rem}.project-detail h1{margin:.5rem 0;font-size:clamp(2.2rem,6vw,4.5rem)}.project-detail-links{display:flex;flex-wrap:wrap;gap:1rem;margin-top:1.25rem}.project-detail-links a{display:inline-flex;min-height:44px;align-items:center;gap:.35rem;padding:.45rem .8rem;border:1px solid var(--ink);text-decoration:none}.project-detail-links svg{width:1rem}.project-carousel{margin:2rem 0;outline:none;touch-action:pan-y}.project-carousel-stage{position:relative;display:grid;min-height:min(68vh,720px);overflow:hidden;place-items:center;border:1px solid var(--line);background:color-mix(in srgb,var(--paper) 92%,var(--ink) 8%)}.project-carousel-image-button{display:grid;width:100%;height:100%;min-height:inherit;padding:0;border:0;place-items:center;background:transparent;cursor:zoom-in}.project-carousel-image{display:block;width:100%;height:min(68vh,720px);-o-object-fit:contain;object-fit:contain}.project-carousel-arrow{position:absolute;z-index:2;top:50%;display:grid;width:48px;height:48px;padding:0;border:1px solid var(--line);place-items:center;color:var(--ink);background:color-mix(in srgb,var(--paper) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:pointer;transform:translateY(-50%);transition:color .2s,background-color .2s}.project-carousel-arrow:hover{color:var(--paper);background:var(--ink)}.project-carousel-arrow.previous{left:1rem}.project-carousel-arrow.next{right:1rem}.project-carousel-arrow svg{width:22px}.project-carousel-counter{margin:.65rem 0 0;color:var(--muted);font-size:var(--type-meta);letter-spacing:.12em;text-align:center}.project-detail-body{line-height:1.85;overflow-wrap:anywhere}.project-detail-body h2,.project-detail-body h3{margin-top:2rem}.project-detail-body pre{padding:1rem;overflow-x:auto;background:color-mix(in srgb,var(--paper) 88%,var(--ink) 12%)}.project-story-layout{display:grid;grid-template-columns:minmax(320px,.9fr) minmax(0,1.1fr);gap:clamp(2rem,5vw,5rem);align-items:start}.project-story-media{position:sticky;top:80px;min-width:0}.project-story-media .project-carousel{margin:0}.project-story-copy{min-width:0}.project-story-copy h1,.project-detail .page-kicker,.technology-relationship .page-kicker{color:var(--project-accent)}.technology-relationship{margin:2rem 0;padding:1rem 0;border-block:1px solid var(--line)}.technology-flow{display:flex;align-items:center;gap:.6rem;padding:.5rem 0;overflow-x:auto}.technology-node{flex:0 0 auto;min-height:40px;border:1px solid var(--line);padding:.4rem .7rem;color:var(--ink);background:var(--surface);cursor:pointer;transition:border-color var(--motion-fast) var(--ease-out),color var(--motion-fast) var(--ease-out),transform var(--motion-fast) var(--ease-out)}.technology-node.active{border-color:var(--project-accent);color:var(--project-accent);transform:translateY(-2px)}.technology-connector,.technology-relationship small{color:var(--muted)}.project-detail .project-carousel-counter{color:var(--project-accent)}.project-detail .project-carousel-arrow:hover{background:var(--project-accent)}.back-link{display:inline-block;margin-bottom:1rem;color:var(--muted)}.post-excerpt{font-size:1.15rem;color:var(--muted)}.post-body{line-height:1.8}.post-body,.project-detail-body{max-width:70ch}.reading-progress{position:fixed;z-index:40;top:0;right:0;left:0;height:3px;background:transparent}.reading-progress i{display:block;width:0;height:100%;background:var(--accent);transition:width 80ms linear}.post-reading-layout{display:grid;grid-template-columns:minmax(0,70ch) 180px;gap:clamp(2rem,5vw,5rem);align-items:start}.post-toc{position:sticky;top:88px;display:grid;gap:.35rem;padding-top:1rem;border-top:1px solid var(--line)}.post-toc strong{margin-bottom:.35rem;color:var(--accent);font-size:var(--type-meta);letter-spacing:.12em}.post-toc button{border:0;padding:.25rem 0;color:var(--muted);background:transparent;text-align:left;cursor:pointer}.post-toc button:hover{color:var(--accent)}.post-toc button.h3{padding-left:1rem;font-size:var(--type-meta)}.post-body{counter-reset:chapter}.post-body h2{counter-increment:chapter;scroll-margin-top:88px}.post-body h2:before{content:counter(chapter,decimal-leading-zero) " / ";color:var(--accent);font-size:.72em}.post-body h3{scroll-margin-top:88px}.post-body h2{margin-top:2rem}.post-body p{margin:.8rem 0}.post-body pre{padding:1rem;overflow-x:auto;background:color-mix(in srgb,var(--paper) 88%,var(--ink) 12%)}.post-body code{font-size:.9em}.post-body blockquote{margin:1rem 0;padding:.5rem 1rem;border-left:3px solid var(--accent);color:var(--muted)}.prose-theme{color:var(--ink);--tw-prose-body:var(--ink);--tw-prose-headings:var(--ink);--tw-prose-lead:var(--muted);--tw-prose-links:var(--accent);--tw-prose-bold:var(--ink);--tw-prose-counters:var(--muted);--tw-prose-bullets:var(--accent);--tw-prose-hr:var(--line);--tw-prose-quotes:var(--ink);--tw-prose-quote-borders:var(--accent);--tw-prose-captions:var(--muted);--tw-prose-code:var(--ink);--tw-prose-pre-code:var(--code-ink);--tw-prose-pre-bg:var(--code-surface);--tw-prose-th-borders:var(--line);--tw-prose-td-borders:var(--line)}.prose-theme pre{color:var(--code-ink);background:var(--code-surface)}.prose-theme pre code{color:inherit}.home-contact p{margin:0}.about-intro{display:grid;grid-template-columns:1fr auto;gap:clamp(2rem,8vw,7rem);align-items:center}.about-intro h1{margin:.25rem 0;font-size:clamp(3.5rem,10vw,8rem)}.about-intro>div>p:last-child{max-width:36rem;color:var(--muted);font-size:1.2rem}.portrait-frame{width:min(150px,8vw);margin:0;justify-self:end}.portrait-frame img{display:block;width:100%;height:auto;aspect-ratio:auto;-o-object-fit:contain;object-fit:contain;border:1px solid var(--line);filter:grayscale(20%)}.portrait-frame figcaption{padding:.5rem 0;color:var(--muted);font-size:.8rem}.about-grid .plain-list h3{font-family:"Noto Serif CJK SC",Songti SC,SimSun,serif}.about-grid{display:grid;gap:var(--space-xl);margin-top:var(--space-xl)}.gpa-line{margin:0 0 .5rem;color:var(--accent);font-weight:700}.score-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));-moz-column-gap:2rem;column-gap:2rem}.score-grid p{display:flex;justify-content:space-between;gap:1rem;margin:0;padding:.7rem 0;border-bottom:1px solid var(--line)}.score-grid strong{color:var(--accent)}.award-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0;list-style:none;counter-reset:award}.award-list li{padding:1rem;border-bottom:1px solid var(--line);counter-increment:award}.award-list li:before{content:counter(award,decimal-leading-zero);display:block;color:var(--accent);font-size:.75rem}.story-section p{max-width:48rem;color:var(--muted);font-size:1.1rem}.resume-page{padding-top:3rem}.resume-toolbar{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin-bottom:1.5rem}.resume-toolbar h1{margin:0;font-size:clamp(1.6rem,4vw,2.6rem)}.resume-page object{min-height:78vh;border:1px solid var(--line);background:color-mix(in srgb,var(--paper) 78%,var(--ink) 22%)}.mobile-pdf-preview{display:none}.contact-grid{display:grid;grid-template-columns:1fr auto;gap:2rem}.contact-form,.contact-grid .plain-section{max-width:760px}.contact-qr{display:flex;flex-direction:column;gap:1.5rem;align-items:center}.contact-qr figure{margin:0;text-align:center}.contact-qr img{width:160px;height:auto;border:1px solid var(--line)}.project-cover,.project-carousel-stage,.portrait-frame img,.contact-qr img,.resume-page object{border-radius:var(--radius-media)}.contact-qr figcaption{margin-top:.4rem;color:var(--muted);font-size:.85rem}.admin-page{width:min(1280px,calc(100% - 2rem))}.admin-header{display:flex;justify-content:space-between;gap:1rem;align-items:center;padding-bottom:1rem;border-bottom:2px solid var(--ink)}.admin-header h1{margin:.15rem 0 0;font-size:clamp(2.2rem,5vw,4rem)}.admin-tabs{display:flex;gap:.4rem;margin:1.5rem 0;border-bottom:1px solid var(--line)}.admin-tabs button{min-height:44px;border:0;border-bottom:3px solid transparent;padding:.6rem 1rem;background:transparent;cursor:pointer}.admin-tabs button.active{border-color:var(--accent);color:var(--accent)}.admin-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:1.5rem 0}.admin-toolbar h2,.admin-toolbar p{margin:.15rem 0}.admin-toolbar p{color:var(--muted)}.admin-layout{display:grid;grid-template-columns:minmax(320px,1fr) 1.4fr;gap:2rem;align-items:start}.admin-layout.list-only,.admin-layout.editor-only{grid-template-columns:minmax(0,1fr)}.admin-layout.editor-only .admin-editor{position:static}.admin-editor{position:sticky;top:96px;padding:1.4rem 1.6rem;border:1px solid var(--line);background:color-mix(in srgb,var(--paper) 90%,var(--ink) 10%)}.admin-editor h2{margin:0 0 .4rem;font-size:1.55rem}.admin-editor fieldset{display:grid;gap:1rem;margin:0;padding:1.15rem;border:1px solid var(--line)}.admin-editor legend{padding:0 .45rem;color:var(--accent);font-family:"Noto Serif CJK SC",Songti SC,SimSun,serif;font-weight:700}.check-line{display:flex!important;align-items:center}.check-line input{width:auto}.admin-actions{display:flex;gap:.7rem}.admin-list{display:grid;gap:.75rem}.admin-list article{display:grid;grid-template-columns:96px 1fr auto;gap:1rem;align-items:center;padding:1.15rem 1.4rem;border:1px solid var(--line);background:color-mix(in srgb,var(--paper) 94%,var(--ink) 6%)}.content-list article>div{min-width:0}.content-list article>div>p{display:-webkit-box;margin:.2rem 0;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3}.project-list article{grid-template-columns:112px minmax(0,1fr) auto}.project-list img{width:112px;height:84px}.post-list article{grid-template-columns:minmax(0,1fr) auto}.content-list nav{justify-self:end}.admin-empty{margin:0;padding:2.5rem 1rem;border:1px dashed var(--line);color:var(--muted);text-align:center}.admin-list img{width:96px;aspect-ratio:4/3;-o-object-fit:cover;object-fit:cover;border:1px solid var(--line)}.admin-list h3,.admin-list p{margin:.1rem 0}.admin-list p,.admin-list small{color:var(--muted)}.admin-list nav{display:flex;gap:.45rem}.admin-list button{min-height:36px;border:1px solid var(--line);padding:.35rem .65rem;background:transparent;cursor:pointer}.message-list article{grid-template-columns:1fr auto}@media(max-width:760px){.site-nav{display:none}.menu-button{display:grid}.site-footer{grid-template-columns:1fr;justify-items:center;text-align:center}.site-footer nav{justify-self:center;justify-content:center}body{background-image:none}.project-cards,.home-contact,.about-intro{grid-template-columns:1fr}.portrait-frame{width:min(220px,100%);justify-self:start}.score-grid,.award-list{grid-template-columns:1fr}.resume-toolbar,.admin-header{align-items:flex-start;flex-direction:column}.admin-layout{grid-template-columns:1fr}.admin-editor{position:static}.admin-list article{grid-template-columns:1fr}.admin-list img{width:100%}.index-list>li{grid-template-columns:1fr}.index-list .carousel,.index-list .project-cover,.index-list .media-placeholder{width:100%}.contact-grid{grid-template-columns:1fr}.contact-qr{flex-direction:row;justify-content:center}.home-hero{grid-template-columns:1fr;gap:1.5rem}.home-intro{padding-bottom:0}.home-direction{white-space:normal}.home-hero h1{font-size:clamp(2.4rem,8vw,4rem)}.desktop-pdf-preview{display:none}.mobile-pdf-preview{display:grid;gap:1rem}.mobile-pdf-preview figure{margin:0}.mobile-pdf-preview img{display:block;width:100%;height:auto;border:1px solid var(--line);background:#fff}.mobile-pdf-preview figcaption{padding:.35rem 0;color:var(--muted);font-size:.8rem;text-align:center}.project-carousel-stage{min-height:min(56vh,520px)}.project-carousel-image{height:min(56vh,520px)}.project-carousel-arrow{width:44px;height:44px}.project-carousel-arrow.previous{left:.5rem}.project-carousel-arrow.next{right:.5rem}.project-detail h1{font-size:clamp(2rem,10vw,3rem)}}@media(max-width:900px){.project-story-layout{grid-template-columns:1fr}.project-story-media{position:static}.project-story-copy{min-width:0}}@media(max-width:1179px){.post-reading-layout{grid-template-columns:minmax(0,70ch)}.post-toc{display:none}}@media(min-width:1180px){.post-body blockquote{float:right;width:42%;margin:.4rem 0 1rem 1.5rem;background:var(--surface)}}@keyframes editorial-enter{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.page-shell>*,.home-shell>*{animation:editorial-enter .28s var(--ease-out) both}.page-shell>*:nth-child(2),.home-shell>*:nth-child(2){animation-delay:60ms}.page-shell>*:nth-child(3),.home-shell>*:nth-child(3){animation-delay:.12s}::view-transition-old(root),::view-transition-new(root){animation-duration:.26s;animation-timing-function:var(--ease-out)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.home-hero{position:relative;min-height:clamp(520px,72vh,760px);padding:clamp(2rem,5vw,4.5rem) 0;border-bottom:1px solid var(--line);align-content:center}.home-hero:before{position:absolute;inset:0 calc(50% - 50vw);z-index:-1;content:"";pointer-events:none;background:linear-gradient(115deg,color-mix(in srgb,var(--ink) 4%,transparent),transparent 52%),linear-gradient(90deg,transparent 49.9%,color-mix(in srgb,var(--ink) 8%,transparent) 50%,transparent 50.1%)}.home-hero-index{position:absolute;top:1.25rem;right:0;left:0;display:flex;justify-content:space-between;color:var(--muted);font:700 .68rem/1.2 ui-monospace,Cascadia Code,monospace;letter-spacing:.16em}.home-hero-index b{color:var(--accent);font-weight:700}.home-hero-title{align-self:center}.home-signal{display:flex;align-items:center;gap:.55rem;margin:0 0 1rem;color:var(--muted);font:700 .72rem/1.2 ui-monospace,Cascadia Code,monospace;letter-spacing:.12em;text-transform:uppercase}.home-signal i{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 14%,transparent);animation:signal-pulse 2.6s var(--ease-out) infinite}@keyframes signal-pulse{50%{box-shadow:0 0 0 10px transparent}}.home-hero h1{max-width:7ch;margin:0;font-size:clamp(5rem,13vw,10.5rem);letter-spacing:-.08em}.home-intro{align-self:end;padding:0 0 clamp(1rem,6vh,4rem)}.home-research-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:2rem 0 0;border-block:1px solid var(--line)}.home-research-stats div{display:grid;gap:.15rem;padding:.8rem 0}.home-research-stats dt{color:var(--muted);font-size:.7rem;letter-spacing:.12em}.home-research-stats dd{margin:0;color:var(--accent);font:600 1.25rem/1 ui-monospace,Cascadia Code,monospace}.project-cards{grid-template-columns:1fr;gap:clamp(1rem,2vw,1.75rem);background:transparent;counter-reset:selected-project}.project-cards>li{position:relative;display:grid;grid-template-columns:minmax(280px,1.12fr) minmax(0,.88fr);gap:clamp(1.5rem,4vw,4rem);overflow:hidden;padding:clamp(1rem,2.2vw,1.8rem);border:1px solid var(--line);background:var(--surface);counter-increment:selected-project;transition:border-color .32s var(--ease-out),transform .32s var(--ease-out),box-shadow .32s var(--ease-out)}.project-cards>li:after{position:absolute;top:-1px;right:-1px;width:clamp(52px,8vw,92px);height:3px;content:"";background:var(--accent);transform:scaleX(.25);transform-origin:right;transition:transform .32s var(--ease-out)}.project-cards>li:hover,.project-cards>li:focus-within{z-index:1;border-color:color-mix(in srgb,var(--accent) 68%,var(--line));box-shadow:0 24px 70px color-mix(in srgb,var(--ink) 14%,transparent);transform:translateY(-4px)}.project-cards>li:hover:after,.project-cards>li:focus-within:after{transform:scaleX(1)}.project-card-media{min-width:0;align-self:stretch}.project-card-media .carousel,.project-card-media .media-placeholder{height:100%;min-height:280px;margin:0}.project-card-media .project-cover{height:100%;margin:0;aspect-ratio:16/10;-o-object-fit:cover;object-fit:cover;filter:saturate(.78) contrast(1.04);transition:filter .5s var(--ease-out),transform .7s var(--ease-out)}.project-cards>li:hover .project-cover,.project-cards>li:focus-within .project-cover{filter:saturate(1) contrast(1.02);transform:scale(1.025)}.project-card-copy{display:flex;min-width:0;flex-direction:column;justify-content:center}.project-card-meta{display:flex;justify-content:space-between;gap:1rem;color:var(--accent);font:700 .7rem/1.2 ui-monospace,Cascadia Code,monospace;letter-spacing:.12em;text-transform:uppercase}.project-cards h3{min-height:0;margin:1rem 0;font-size:clamp(1.65rem,3vw,3rem)}.project-card-link{display:inline;text-decoration:none}.project-card-link svg{display:inline;width:.65em;margin-left:.15em;transition:transform var(--motion-fast) var(--ease-out)}.project-card-link:hover svg,.project-card-link:focus-visible svg{transform:translate(4px,-4px)}.project-cards p{display:-webkit-box;overflow:hidden;margin:.4rem 0 1rem;-webkit-box-orient:vertical;-webkit-line-clamp:4}.project-card-tech{display:flex;flex-wrap:wrap;gap:.4rem;margin:auto 0 .85rem;padding:0;list-style:none}.project-card-tech li{padding:.22rem .5rem;border:1px solid var(--line);color:var(--muted);font:600 .7rem/1.4 ui-monospace,Cascadia Code,monospace}.project-cards strong{font:700 .78rem/1.5 ui-monospace,Cascadia Code,monospace;letter-spacing:.04em}@media(max-width:760px){.home-hero{min-height:auto;padding:4rem 0 3rem}.home-hero-index{font-size:.58rem}.home-hero h1{font-size:clamp(4rem,24vw,6.5rem)}.home-research-stats{gap:.75rem}.project-cards>li{grid-template-columns:1fr}.project-card-media .carousel,.project-card-media .media-placeholder{min-height:220px}.project-card-copy{padding:.35rem}.project-card-tech{margin-top:.75rem}}@media(prefers-reduced-motion:reduce){.home-signal i{animation:none}.project-cards>li:hover,.project-cards>li:focus-within{transform:none}.project-cards>li:hover .project-cover,.project-cards>li:focus-within .project-cover{transform:none}}.top-aligned-page>.page-hero.compact{position:relative;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(260px,.75fr);gap:clamp(2rem,8vw,8rem);align-items:end;min-height:clamp(260px,38vh,420px);padding:clamp(3rem,7vw,6rem) 0 2rem;border-bottom:1px solid var(--line)}.top-aligned-page>.page-hero.compact:after{align-self:end;color:var(--muted);content:"RESEARCH INDEX\aSYSTEMS / MODELS / DEPLOYMENT";font:700 .7rem/1.8 ui-monospace,Cascadia Code,monospace;letter-spacing:.14em;white-space:pre}.project-archive-controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.55fr);gap:2rem;align-items:center;margin:1.5rem 0 2.5rem}.project-archive-meta{display:flex;align-items:center;justify-content:space-between;gap:1rem;color:var(--muted);font:700 .7rem/1.2 ui-monospace,Cascadia Code,monospace;letter-spacing:.12em}.project-archive-meta strong{color:var(--accent);font-size:1rem}.project-archive-controls .search-line{margin:0;border-bottom:1px solid var(--ink)}.project-archive-controls .search-line input{border:0;background:transparent}.project-archive-controls .search-line input:focus{outline:0}.index-list{gap:0;margin-top:0;border-top:1px solid var(--line)}.index-list>.project-index-item{position:relative;grid-template-columns:64px minmax(220px,340px) minmax(0,1fr) auto;gap:clamp(1rem,2.6vw,2.5rem);margin:0;padding:clamp(1rem,2vw,1.6rem) 0;border:0;border-bottom:1px solid var(--line);background:transparent;transform:none}.project-index-item:before{position:absolute;inset:0 auto 0 calc(64px + clamp(1rem,2.6vw,2.5rem));width:2px;content:"";background:var(--record-accent);transform:scaleY(0);transform-origin:bottom;transition:transform .36s var(--ease-out)}.project-index-item:hover:before,.project-index-item:focus-visible:before{transform:scaleY(1)}.project-record-number{padding-top:.25rem;color:var(--record-accent);font:500 clamp(1.3rem,2.4vw,2rem)/1 ui-monospace,"Cascadia Code",monospace;letter-spacing:-.08em}.index-list .project-index-item .carousel,.index-list .project-index-item .media-placeholder{width:100%;align-self:stretch;margin:0;aspect-ratio:16/10;overflow:hidden}.index-list .project-index-item .project-cover{width:100%;height:100%;aspect-ratio:16/10;-o-object-fit:cover;object-fit:cover;filter:saturate(.72) contrast(1.06);transition:filter .5s var(--ease-out),transform .7s var(--ease-out)}.project-index-item:hover .project-cover,.project-index-item:focus-visible .project-cover{filter:saturate(1) contrast(1.02);transform:scale(1.035)}.project-record-copy{align-self:center}.project-record-copy .page-kicker{color:var(--record-accent)}.index-list .project-record-copy h2{margin:.4rem 0 .65rem;font-size:clamp(1.4rem,2.4vw,2.25rem)}.project-record-copy>p:not(.page-kicker){display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3}.project-record-tech{display:flex;flex-wrap:wrap;gap:.3rem .7rem;margin:.9rem 0 0;padding:0;list-style:none}.project-record-tech li{color:var(--muted);font:600 .68rem/1.4 ui-monospace,Cascadia Code,monospace}.project-record-tech li:before{margin-right:.35rem;color:var(--record-accent);content:"+"}.index-list .project-links{align-self:center}.index-list .project-links a{border-color:var(--line);font-size:.75rem}.index-list .project-links a:hover,.index-list .project-links a:focus-visible{border-color:var(--record-accent);color:var(--record-accent)}@media(max-width:900px){.index-list>.project-index-item{grid-template-columns:42px minmax(180px,260px) minmax(0,1fr)}.index-list .project-links{grid-column:3;flex-direction:row}.project-index-item:before{left:calc(42px + clamp(1rem,2.6vw,2.5rem))}}@media(max-width:760px){.top-aligned-page>.page-hero.compact{grid-template-columns:1fr;min-height:auto;padding:3.5rem 0 1.5rem}.top-aligned-page>.page-hero.compact:after{display:none}.project-archive-controls{grid-template-columns:1fr;gap:.8rem}.index-list>.project-index-item{grid-template-columns:38px minmax(0,1fr);gap:1rem}.project-record-number{grid-row:1 / span 3}.index-list .project-index-item .carousel,.index-list .project-index-item .media-placeholder,.project-record-copy,.index-list .project-links{grid-column:2}.index-list .project-links{flex-wrap:wrap}.project-index-item:before{left:38px}.project-record-tech{max-height:4.2rem;overflow:hidden}}.project-detail{width:min(1320px,calc(100% - 2rem))}.project-story-layout{grid-template-columns:minmax(360px,1.08fr) minmax(0,.92fr);gap:clamp(2.5rem,5vw,6rem)}.project-story-media{top:76px;padding:1rem;border:1px solid var(--line);background:color-mix(in srgb,var(--surface) 92%,transparent);box-shadow:0 30px 80px color-mix(in srgb,var(--ink) 12%,transparent)}.project-story-media:after{position:absolute;bottom:-1.5rem;left:0;color:var(--muted);content:"MEDIA / RESEARCH ARCHIVE";font:600 .6rem/1 ui-monospace,Cascadia Code,monospace;letter-spacing:.16em}.project-observation-label,.project-observation-meta,.project-detail-index{display:flex;align-items:center;justify-content:space-between;gap:1rem;font:700 .62rem/1.3 ui-monospace,Cascadia Code,monospace;letter-spacing:.12em;text-transform:uppercase}.project-observation-label{min-height:2.2rem;margin-bottom:.7rem;color:var(--project-accent)}.project-observation-label strong{max-width:54%;overflow:hidden;color:var(--muted);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.project-observation-meta{margin-top:.7rem;color:var(--muted)}.project-story-media .project-carousel{position:relative}.project-story-media .project-carousel-counter{position:absolute;z-index:3;right:.75rem;bottom:.6rem;margin:0;padding:.22rem .45rem;color:var(--code-ink);background:color-mix(in srgb,var(--code-surface) 82%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.project-carousel-stage{min-height:0;aspect-ratio:16/10;border-color:color-mix(in srgb,var(--project-accent) 35%,var(--line));background:color-mix(in srgb,var(--ink) 8%,var(--paper))}.project-carousel-stage:before{position:absolute;z-index:2;inset:.7rem;content:"";pointer-events:none;background:linear-gradient(var(--project-accent),var(--project-accent)) left top/28px 1px no-repeat,linear-gradient(var(--project-accent),var(--project-accent)) left top/1px 28px no-repeat,linear-gradient(var(--project-accent),var(--project-accent)) right top/28px 1px no-repeat,linear-gradient(var(--project-accent),var(--project-accent)) right top/1px 28px no-repeat,linear-gradient(var(--project-accent),var(--project-accent)) left bottom/28px 1px no-repeat,linear-gradient(var(--project-accent),var(--project-accent)) left bottom/1px 28px no-repeat,linear-gradient(var(--project-accent),var(--project-accent)) right bottom/28px 1px no-repeat,linear-gradient(var(--project-accent),var(--project-accent)) right bottom/1px 28px no-repeat;opacity:.68}.project-carousel-image{height:100%;max-height:min(68vh,720px);-o-object-fit:contain;object-fit:contain}.project-carousel-arrow{border-color:color-mix(in srgb,var(--project-accent) 50%,var(--line));color:var(--project-accent)}.project-story-copy{padding-top:1rem}.project-story-copy header{position:relative;max-width:none;margin:0 0 clamp(2rem,5vw,4rem);padding-top:1rem;border-top:3px solid var(--project-accent)}.project-story-copy header:before{position:absolute;top:-3px;right:0;width:28%;height:3px;content:"";background:color-mix(in srgb,var(--project-accent) 22%,var(--paper))}.project-detail-index{margin:.3rem 0 2.5rem;color:var(--muted)}.project-detail-index span:last-child{color:var(--project-accent)}.project-story-copy .page-kicker{font-family:ui-monospace,Cascadia Code,monospace;letter-spacing:.16em;text-transform:uppercase}.project-story-copy h1{max-width:12ch;margin:.65rem 0 1.2rem;font-size:clamp(2.7rem,5vw,5.7rem);letter-spacing:-.055em}.project-story-copy .post-excerpt{max-width:56ch;font-size:clamp(1rem,1.4vw,1.2rem)}.project-detail-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:1.6rem 0;border-block:1px solid var(--line)}.project-detail-facts div{min-width:0;padding:.75rem 0}.project-detail-facts dt{color:var(--muted);font:600 .65rem/1.3 ui-monospace,Cascadia Code,monospace;letter-spacing:.08em}.project-detail-facts dd{margin:.3rem 0 0;overflow:hidden;color:var(--project-accent);font:700 1rem/1.2 ui-monospace,Cascadia Code,monospace;text-overflow:ellipsis;white-space:nowrap}.project-detail-links a{position:relative;overflow:hidden;border-color:color-mix(in srgb,var(--project-accent) 55%,var(--line))}.project-detail-links a:hover,.project-detail-links a:focus-visible{color:var(--paper);background:var(--project-accent)}.technology-relationship{margin:0 0 3rem;padding:1.25rem 0 1.5rem;border-block-color:color-mix(in srgb,var(--project-accent) 35%,var(--line))}.technology-flow{scrollbar-color:var(--project-accent) transparent}.technology-node{border-radius:999px;background:transparent}.technology-node.active{color:var(--paper);background:var(--project-accent);box-shadow:0 8px 22px color-mix(in srgb,var(--project-accent) 22%,transparent)}.technology-connector{color:color-mix(in srgb,var(--project-accent) 60%,var(--muted))}.project-detail-body{position:relative}.project-detail-body h2{margin-top:clamp(3rem,7vw,6rem);padding-top:1rem;border-top:1px solid color-mix(in srgb,var(--project-accent) 45%,var(--line));font-size:clamp(1.9rem,3.4vw,3rem)}.project-detail-body h3{color:color-mix(in srgb,var(--project-accent) 74%,var(--ink))}.project-detail-body table{display:block;width:100%;overflow-x:auto;border-collapse:collapse}.project-detail-body th,.project-detail-body td{min-width:8rem;border-color:var(--line)}.project-detail-body img{border:1px solid var(--line);box-shadow:0 18px 50px color-mix(in srgb,var(--ink) 10%,transparent)}@media(max-width:900px){.project-story-layout{grid-template-columns:1fr}.project-story-media{position:relative;top:auto}.project-story-media:after{display:none}.project-story-copy{padding-top:2rem}.project-story-copy h1{max-width:15ch}}@media(max-width:760px){.project-story-media{padding:.6rem}.project-observation-label strong{display:none}.project-carousel-stage{min-height:220px;aspect-ratio:4/3}.project-carousel-image{height:100%}.project-detail-index{margin-bottom:1.5rem}.project-detail-facts{gap:.5rem}.project-story-copy h1{font-size:clamp(2.35rem,12vw,3.6rem)}}::-moz-selection{color:var(--paper);background:var(--accent)}::selection{color:var(--paper);background:var(--accent)}html{scrollbar-color:var(--accent) var(--surface-sunken)}body{background-image:repeating-linear-gradient(0deg,color-mix(in srgb,var(--ink) 1.2%,transparent) 0 1px,transparent 1px 4px),linear-gradient(90deg,transparent 0 7.5%,var(--line) 7.5% calc(7.5% + 1px),transparent calc(7.5% + 1px)),linear-gradient(var(--grid-color) 1px,transparent 1px),linear-gradient(90deg,var(--grid-color) 1px,transparent 1px),radial-gradient(circle at 18% 8%,color-mix(in srgb,var(--accent) 10%,transparent),transparent 32rem);background-size:auto,auto,80px 80px,80px 80px,auto}#app{min-height:100vh;overflow:clip}.site-header{border-top:2px solid var(--accent);border-bottom-color:color-mix(in srgb,var(--line) 72%,transparent);background:color-mix(in srgb,var(--paper) 86%,transparent);box-shadow:0 8px 32px color-mix(in srgb,var(--ink) 5%,transparent);-webkit-backdrop-filter:blur(18px) saturate(1.2);backdrop-filter:blur(18px) saturate(1.2)}.site-header.compact{box-shadow:0 12px 40px color-mix(in srgb,var(--ink) 8%,transparent)}.site-mark{display:flex;align-items:center;gap:.5rem;letter-spacing:.04em}.site-mark:after{padding-left:.5rem;border-left:1px solid var(--line);color:var(--muted);content:"RESEARCH LAB";font:700 .58rem/1 ui-monospace,Cascadia Code,monospace;letter-spacing:.14em}.site-nav a{position:relative;color:var(--muted);font-size:.88rem}.site-nav a:before{position:absolute;top:8px;left:50%;width:3px;height:3px;border-radius:50%;content:"";background:var(--accent);opacity:0;transform:translate(-50%);transition:opacity var(--motion-fast) var(--ease-out),transform var(--motion-fast) var(--ease-out)}.site-nav a:hover,.site-nav a:focus-visible,.site-nav a.router-link-exact-active{color:var(--ink)}.site-nav a:hover:before,.site-nav a:focus-visible:before,.site-nav a.router-link-exact-active:before{opacity:1;transform:translate(-50%,4px)}.site-nav a.router-link-exact-active{box-shadow:none}.icon-button{border-color:color-mix(in srgb,var(--line) 76%,transparent);background:color-mix(in srgb,var(--surface-raised) 72%,transparent);transition:border-color var(--motion-fast) var(--ease-out),color var(--motion-fast) var(--ease-out),transform var(--motion-fast) var(--ease-out)}.icon-button:hover,.icon-button:focus-visible{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}.plain-button{position:relative;overflow:hidden;border:1px solid var(--ink);box-shadow:7px 7px color-mix(in srgb,var(--accent) 24%,transparent)}.plain-button:hover,.plain-button:focus-visible{color:var(--paper);background:var(--accent);border-color:var(--accent);box-shadow:3px 3px color-mix(in srgb,var(--ink) 24%,transparent);transform:translate(2px,2px)}.page-hero h1,.home-hero h1,.project-story-copy h1{font-feature-settings:"palt" 1}.page-kicker{font-family:ui-monospace,Cascadia Code,monospace;text-transform:uppercase}.site-footer{position:relative;margin-top:clamp(2rem,6vw,6rem);padding-block:clamp(2rem,4vw,3.5rem);background:color-mix(in srgb,var(--surface-sunken) 48%,transparent)}.site-footer:before{position:absolute;top:-1px;right:clamp(1rem,5vw,4rem);width:clamp(80px,16vw,220px);height:2px;content:"";background:var(--accent)}.skeleton-card,.skeleton-article{border-color:var(--line);background:var(--surface-raised)}.skeleton-block:after{background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--ink) 9%,transparent),transparent)}@media(max-width:760px){body{background-image:radial-gradient(circle at 20% 0,color-mix(in srgb,var(--accent) 8%,transparent),transparent 24rem)}.home-hero-index{right:.25rem;left:.25rem}.site-mark:after{display:none}.site-header{padding-inline:1rem}.page-shell,.home-shell,.project-detail{width:min(100% - 1.25rem,1320px)}}@media(prefers-reduced-motion:reduce){.site-nav a:before{transition:none}.icon-button:hover,.icon-button:focus-visible,.plain-button:hover,.plain-button:focus-visible{transform:none}.project-carousel-image,.project-cover{transition:none}}
