.button{min-block-size:var(--control-h);justify-content:center;align-items:center;gap:var(--space-3);padding-inline:var(--space-5);border:1px solid var(--color-control-border);border-radius:var(--radius-xs);color:var(--color-text);font-family:var(--font-display);font-size:var(--text-button);letter-spacing:var(--tracking-button);text-transform:uppercase;white-space:nowrap;background:0 0;font-weight:600;font-stretch:100%;line-height:1.1;text-decoration:none;display:inline-flex}:lang(zh) .button{letter-spacing:var(--tracking-cjk-max)}.button--compact{min-block-size:var(--control-h-s);padding-inline:var(--space-4);font-size:var(--text-button-s)}.button--large{min-block-size:var(--control-h-l);padding-inline:var(--space-6)}.button__label,.button__arrow{display:inline-block}.button__arrow{font-family:var(--font-mono)}.button--primary{color:var(--color-on-accent);background:var(--color-accent);border-color:#0000}.button--primary:active{background:var(--color-accent-pressed)}.button--inverse{color:var(--color-bg);background:var(--color-text);border-color:#0000}.button--inverse:active{opacity:.9}.button--ghost{border-color:var(--color-control-border);color:var(--color-text);background:0 0}.button--ghost:active{background:color-mix(in srgb, var(--color-text) 10%, transparent)}@media (hover:hover){.button--primary:hover{background:var(--color-accent-hover)}.button--inverse:hover{background:var(--color-text-bright)}.button--ghost:hover,.button:not(.button--primary,.button--inverse):hover{border-color:var(--color-text);background:color-mix(in srgb, var(--color-text) 6%, transparent)}}.button:disabled,.button[aria-disabled=true]{border-color:var(--color-rule-strong);color:var(--color-text-meta);cursor:not-allowed;background:0 0}.button--primary:disabled,.button--inverse:disabled{background:var(--color-rule-strong);border-color:#0000}.button-row{align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}@media (width<=479.98px){.button-row--stack{flex-direction:column;align-items:stretch}}.text-link{min-block-size:var(--target-min);color:var(--color-text);font-size:var(--text-body-s);font-weight:var(--weight-label);text-decoration-line:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--color-control-border);text-decoration-color:var(--color-control-border);text-underline-offset:.3em;align-items:center;gap:.4em;display:inline-flex}.text-link__arrow{font-family:var(--font-mono);text-decoration:none;display:inline-block}@media (hover:hover){.text-link:hover{-webkit-text-decoration-color:var(--color-text);text-decoration-color:var(--color-text)}}.text-link:active{opacity:.8}.prose a{color:var(--color-text);text-decoration-thickness:1px;-webkit-text-decoration-color:var(--color-control-border);text-decoration-color:var(--color-control-border);text-underline-offset:.3em}.link-pending{color:var(--color-text-meta);font-size:var(--text-body-s)}.eyebrow{color:var(--color-text-meta);font-family:var(--font-mono);font-size:var(--text-meta);font-weight:500;line-height:var(--leading-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;margin:0}.section-head{row-gap:0}.section-head__title{margin:0}@media (width>=1024px){.section-head>.eyebrow{grid-area:1/1/auto/4;align-self:start;margin-block-start:.35em}.section-head>.section-head__title{grid-area:1/4/auto/11}.section-head>.section-head__aside{grid-area:1/11/auto/13;place-self:end}}@media (width<=1023.98px){.section-head>.eyebrow{margin-block-end:var(--space-3)}.section-head>.section-head__aside{margin-block-start:var(--space-3)}}.meta-row{color:var(--color-text-meta);font-family:var(--font-mono);font-size:var(--text-meta);font-weight:500;line-height:var(--leading-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;font-variant-numeric:tabular-nums lining-nums;flex-wrap:wrap;column-gap:0;margin:0;display:flex}.meta-row>*+:before{content:" / ";white-space:pre;color:var(--color-text-meta)}.meta-row__title{color:var(--color-text)}:lang(zh) .meta-row [data-localized]{letter-spacing:var(--tracking-cjk-max)}.badge-placeholder{block-size:1.375rem;padding-inline:var(--space-2);border:1px dashed var(--color-control-border);border-radius:var(--radius-xs);color:var(--color-text-secondary);font-family:var(--font-mono);font-size:var(--text-meta-xs);letter-spacing:var(--tracking-meta-xs);text-transform:uppercase;vertical-align:middle;background:0 0;flex:none;align-items:center;font-weight:500;line-height:1;display:inline-flex}.placeholder-notice{max-inline-size:48ch;border-inline-start:1px dashed var(--color-control-border);color:var(--color-text-secondary);font-size:var(--text-body-s);margin:0;padding-inline-start:var(--space-4)}.chip-list{gap:var(--space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.chip{align-items:center;gap:var(--space-2);min-block-size:2.75rem;padding-inline:var(--space-4);border:1px solid var(--color-rule-strong);border-radius:var(--radius-xs);color:var(--color-text-secondary);font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;white-space:nowrap;font-weight:500;text-decoration:none;display:inline-flex}:lang(zh) .chip{letter-spacing:var(--tracking-cjk-max)}.chip__count{color:var(--color-text-meta);font-variant-numeric:tabular-nums lining-nums}@media (hover:hover){.chip:hover{border-color:var(--color-control-border);color:var(--color-text)}}.chip[aria-current=page]{border-color:var(--color-accent);color:var(--color-on-accent);background:var(--color-accent)}.chip[aria-current=page] .chip__count{color:var(--color-on-accent)}@media (width<=767.98px){.chip-list--scroll{margin-inline:calc(-1 * var(--page-margin));padding-inline:var(--page-margin);scroll-snap-type:x proximity;scrollbar-width:none;flex-wrap:nowrap;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#000 92%,#0000);mask-image:linear-gradient(90deg,#000 92%,#0000)}.chip-list--scroll::-webkit-scrollbar{display:none}.chip-list--scroll>li{scroll-snap-align:start}}.price{gap:var(--space-2);justify-items:start;display:grid}.price__label{color:var(--color-text-meta);font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:var(--tracking-meta);text-transform:uppercase;margin:0;font-weight:500}:lang(zh) .price__label{letter-spacing:var(--tracking-cjk-max)}.price__figure{color:var(--color-text);font-family:var(--font-display);font-size:var(--text-price);letter-spacing:-.02em;font-variant-numeric:tabular-nums lining-nums;margin:0;font-weight:500;font-stretch:100%;line-height:1}.price__figure--s{font-size:var(--text-price-s)}.price__currency{color:var(--color-text-secondary);vertical-align:.9em;letter-spacing:0;margin-inline-end:.08em;font-size:.45em}.price__quote{color:var(--color-text);font-family:var(--font-display);font-size:var(--text-h2);margin:0;font-weight:500;line-height:1.12}.price__note{max-inline-size:40ch;margin:var(--space-3) 0 0;color:var(--color-text-secondary);font-size:var(--text-body-s)}.price__note:before{block-size:1px;inline-size:16px;background:var(--color-rule-strong);content:"";vertical-align:middle;margin-inline-end:var(--space-3);display:inline-block}.empty-state{max-inline-size:48ch;padding-block:var(--space-6)}.flat-line{block-size:1px;inline-size:120px;background:var(--color-trace);margin-block-end:var(--space-5);display:block}.empty-state h2{font-size:var(--text-h2);line-height:var(--leading-heading-s);margin-block-end:var(--space-3)}:lang(zh) .empty-state h2{font-size:var(--text-h2-zh)}.empty-state p{color:var(--color-text-secondary);margin-block-end:var(--space-3)}.cta-band{position:relative}.cta-band--large{padding-block:var(--section-m);background:var(--color-bg-2)}.cta-band--large:before{background:var(--color-trace);content:"";block-size:1px;position:absolute;inset-block-start:0;inset-inline:0}.cta-band__inner{row-gap:var(--space-5)}.cta-band__heading{margin:0}.cta-band--large .cta-band__heading{font-size:var(--text-display);font-weight:var(--weight-display);font-stretch:var(--stretch-display);line-height:var(--leading-display);letter-spacing:var(--tracking-display)}:lang(zh) .cta-band--large .cta-band__heading{font-size:var(--text-display-zh);font-weight:var(--weight-display-zh);line-height:var(--leading-display-zh);letter-spacing:.01em}.cta-band__body{max-inline-size:40ch;color:var(--color-text-secondary);font-size:var(--text-lede);line-height:var(--leading-lede);margin:0}.cta-band__actions{align-items:center;gap:var(--space-5);flex-wrap:wrap;display:flex}.cta-band--small{padding-block:var(--section-s)}.cta-band--small .cta-band__heading{font-size:var(--text-h1)}:lang(zh) .cta-band--small .cta-band__heading{font-size:var(--text-h1-zh)}@media (width>=1024px){.cta-band--large .cta-band__eyebrow{grid-column:1/4}.cta-band--large .cta-band__heading{grid-column:1/11}.cta-band--large .cta-band__body,.cta-band--large .cta-band__actions{grid-column:7/13}.cta-band--small .cta-band__heading{grid-area:1/4/auto/10;align-self:center}.cta-band--small .cta-band__actions{grid-area:1/10/auto/13;justify-self:end}}@media (width<=479.98px){.cta-band--large .cta-band__actions .button{inline-size:100%}}.ruled-list{margin:0;padding:0;list-style:none}.ruled-list>li{border-block-end:1px solid var(--color-rule)}.ruled-list>li:first-child{border-block-start:1px solid var(--color-rule)}.content-blocks{max-inline-size:var(--measure);color:var(--color-text);font-size:var(--text-body)}.content-blocks>*+*{margin-block-start:1em}.content-blocks h2{font-size:var(--text-h2);line-height:var(--leading-heading-s);scroll-margin-top:calc(var(--header-h) + var(--space-4));margin-block-start:var(--space-8)}:lang(zh) .content-blocks h2{font-size:var(--text-h2-zh)}.content-blocks h3{font-size:var(--text-h3);margin-block-start:var(--space-7)}.content-blocks p,.content-blocks li{color:var(--color-text-secondary)}.content-blocks ul,.content-blocks ol{padding-inline-start:1.25em}.content-blocks a{color:var(--color-text);text-decoration-thickness:1px;-webkit-text-decoration-color:var(--color-control-border);text-decoration-color:var(--color-control-border);text-underline-offset:.3em}.content-blocks blockquote{border-inline-start:1px solid var(--color-rule-strong);margin-inline:0;padding-inline-start:var(--space-5)}.content-blocks blockquote p{color:var(--color-text);font-family:var(--font-display);font-size:var(--text-h2);line-height:1.25}.content-blocks cite,.content-blocks figcaption{color:var(--color-text-meta);font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:var(--tracking-meta);font-style:normal}.content-blocks figure{margin-inline:0}.content-blocks figure img{inline-size:100%}.content-blocks figure figcaption{margin-block-start:var(--space-3)}.content-blocks hr{margin-block:var(--space-7);border:0;border-block-start:1px solid var(--color-rule)}.project-cover{--cover-ratio:1.3333;inline-size:100%;aspect-ratio:var(--cover-ratio);background:var(--color-bg-2);display:block;position:relative;overflow:clip;container-type:inline-size}.project-cover[data-aspect="3:2"]{--cover-ratio:1.5}.project-cover[data-aspect="4:5"]{--cover-ratio:.8}.project-cover[data-aspect="16:9"],.project-cover[data-aspect=hero]{--cover-ratio:1.7778}.project-cover[data-aspect="21:9"]{--cover-ratio:2.3333}@media (width>=1024px){.project-cover[data-aspect=hero]{--cover-ratio:2.3333}}.project-cover__art,.project-cover__image{block-size:100%;inline-size:100%;display:block;position:absolute;inset:0}.project-cover__image{object-fit:cover}[class*=focal-x-],[class*=focal-y-]{object-position:var(--focal-x,50%) var(--focal-y,50%)}.focal-x-0{--focal-x:0%}.focal-x-25{--focal-x:25%}.focal-x-50{--focal-x:50%}.focal-x-75{--focal-x:75%}.focal-x-100{--focal-x:100%}.focal-y-0{--focal-y:0%}.focal-y-25{--focal-y:25%}.focal-y-50{--focal-y:50%}.focal-y-75{--focal-y:75%}.focal-y-100{--focal-y:100%}.project-cover__line{fill:none;stroke:var(--color-text);stroke-width:1px}.project-cover__dots{fill:none;stroke:var(--color-text);stroke-opacity:.2;stroke-width:2px;stroke-linecap:round}.project-cover__numeral{color:var(--color-trace);font-family:var(--font-display);font-size:calc(28cqi / var(--cover-ratio));letter-spacing:-.02em;font-variant-numeric:tabular-nums lining-nums;pointer-events:none;font-weight:200;font-stretch:125%;line-height:.8;position:absolute;inset-block-end:0;inset-inline-start:var(--space-4)}.project-cover__badge{background:color-mix(in srgb, var(--color-bg) 80%, transparent);position:absolute;inset-block-start:var(--space-3);inset-inline-start:var(--space-3)}.hover-preview__item>.project-cover,.project-hero__cover>.project-cover{aspect-ratio:auto;block-size:100%}.project-row__head{align-items:center;gap:var(--space-2) var(--space-3);flex-wrap:wrap;display:flex}.project-row__title{color:var(--color-text);font-family:var(--font-display);font-size:var(--text-title-list);font-weight:var(--weight-title);font-stretch:var(--stretch-title);line-height:var(--leading-title);letter-spacing:var(--tracking-title);text-wrap:balance;margin:0}:lang(zh) .project-row__title{font-size:var(--text-title-list-zh);font-weight:var(--weight-heading-zh);letter-spacing:.01em;line-height:1.2}.project-list{position:relative}.project-list__rows{margin:0;padding:0;list-style:none}.project-list__item{border-block-end:1px solid var(--color-rule)}.project-list__item:first-child{border-block-start:1px solid var(--color-rule)}.project-row{align-items:start;gap:var(--space-2) 0;min-block-size:6rem;padding-block:var(--space-5);color:var(--color-text);grid-template-columns:auto auto minmax(0,1fr) auto;grid-template-areas:"index cats year thumb""head head head thumb""sub sub sub thumb";text-decoration:none;display:grid}.project-row__index{grid-area:index}.project-row__cats{grid-area:cats}.project-row__year{grid-area:year}.project-row__head{grid-area:head;margin-block-start:var(--space-1)}.project-row__sub{grid-area:sub}.project-row__thumb{inline-size:5.5rem;grid-area:thumb;margin-inline-start:var(--space-4)}.project-row__index,.project-row__year{color:var(--color-text-meta);font-family:var(--font-mono);font-size:var(--text-meta);font-weight:500;line-height:var(--leading-meta);letter-spacing:var(--tracking-meta);font-variant-numeric:tabular-nums lining-nums}.project-row__cats:before,.project-row__year:before{content:" / ";color:var(--color-text-meta);white-space:pre}.project-row__sub{gap:var(--space-1) var(--space-4);max-inline-size:60ch;color:var(--color-text-secondary);font-size:var(--text-body-s);line-height:var(--leading-body-s);flex-wrap:wrap;display:flex}.project-row__sub>:first-child{color:var(--color-text);font-weight:var(--weight-label)}.project-row:active .project-row__title{opacity:.8}.project-row:focus-visible{outline-offset:-2px}@media (width>=1024px){.project-row{column-gap:var(--grid-gutter);row-gap:var(--space-2);grid-template-columns:repeat(12,minmax(0,1fr));grid-template-areas:none;align-items:baseline}.project-row__index{grid-area:1/1}.project-row__head{grid-area:1/2/auto/8;margin-block-start:0}.project-row__cats{grid-area:1/8/auto/11}.project-row__year{grid-area:1/12;justify-self:end}.project-row__cats:before,.project-row__year:before{content:none}.project-row__sub{grid-area:2/2/auto/8}.project-row__thumb{grid-area:1/11/span 2;align-self:start;margin-inline-start:0}}@media (hover:hover) and (pointer:fine){.project-list__rows:has(.project-row:hover) .project-row:not(:hover) .project-row__title{color:var(--color-text-secondary)}}
