.project-page{--project-detail-title-size:1.5rem;--project-overview-size:clamp(.875rem,2.8vw,1.05rem);--project-contribution-copy-size:clamp(.625rem,2.8vw,1.05rem);min-height:100svh;overflow-x:hidden;background:#f7f7f4;color:#171713}.project-page[lang=zh-CN],.project-page[lang=zh-CN] .project-detail h2,.project-page[lang=zh-CN] .project-detail header h1,.project-page[lang=zh-CN] .project-index-hero h1,.project-page[lang=zh-CN] .project-row h3{font-family:HY Keep Running,Microsoft YaHei,PingFang SC,sans-serif}.project-header{position:sticky;top:0;z-index:40;border-bottom:1px solid rgba(23,23,19,.1);background:rgba(247,247,244,.95);backdrop-filter:blur(14px)}.project-header-inner{display:flex;height:4rem;max-width:90rem;margin:0 auto;padding:0 1.25rem;align-items:center;justify-content:space-between;gap:1rem}.project-home-link,.project-title-link{color:#171713;font-size:.8rem;font-weight:600;text-decoration:none}.project-home-link{display:inline-flex;min-width:2.25rem;align-items:center;gap:.5rem;color:rgba(23,23,19,.62)}.project-language-switcher{display:flex;align-items:center;gap:.45rem;font-size:.7rem}.project-language-switcher a{border-bottom:1px solid transparent;padding:.2rem 0;color:rgba(23,23,19,.48);text-decoration:none}.project-language-switcher a.is-active{border-color:#171713;color:#171713}.project-index-hero{border-bottom:1px solid rgba(23,23,19,.1)}.project-index-hero>div{max-width:90rem;margin:0 auto;padding:1rem 1.25rem}.project-index-hero p{margin:0;color:#5e60ad;font-size:.7rem;font-weight:700;text-transform:uppercase}.project-index-hero h1{margin:.4rem 0 0;font-size:2rem;font-weight:650;line-height:1}.project-index-hero span{display:block;max-width:34rem;margin-top:1.25rem;color:rgba(23,23,19,.58);font-size:.85rem;line-height:1.65}.project-list{max-width:90rem;margin:0 auto;padding:1.5rem 1.25rem 4rem}.project-row{display:grid;grid-template-columns:2rem minmax(0,1fr);gap:.75rem;padding:1.5rem 0;border-bottom:1px solid rgba(23,23,19,.14)}.project-row-index{color:rgba(23,23,19,.35);font-size:.65rem;font-weight:650}.project-row-content{min-width:0}.project-row-layout{display:grid;gap:.85rem;margin-top:.85rem}.project-row-copy{min-width:0}.project-detail-period,.project-row-period{display:flex;align-items:center;gap:.4rem;color:#5e60ad;font-size:.65rem;font-weight:650;text-transform:uppercase}.project-row h3{margin:0;font-size:1.125rem;font-weight:550;line-height:1.2}.project-row-title{color:#171713;text-decoration:none;transition:color .16s ease}.project-row-title:focus-visible,.project-row-title:hover{color:#5e60ad;text-decoration:underline;text-underline-offset:.18em}.project-row-image{position:relative;display:block;width:100%;aspect-ratio:16/9;margin:0;overflow:hidden;border-radius:.45rem;background:#ecece7;transition:box-shadow .18s ease,transform .18s ease}.project-row-image img{object-fit:cover}.project-row-image:focus-visible,.project-row-image:hover{box-shadow:.35rem .35rem 0 #dedff5;transform:translate(-.12rem,-.12rem)}.project-row-copy>p{display:-webkit-box;overflow:hidden;margin:.75rem 0 0;color:rgba(23,23,19,.6);font-size:.8rem;line-height:1.6;-webkit-box-orient:vertical;-webkit-line-clamp:3}.project-tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:1rem}.project-tags span{border:1px solid rgba(23,23,19,.14);border-radius:999px;padding:.3rem .55rem;color:rgba(23,23,19,.58);font-size:.62rem;line-height:1}.project-tags .project-tag-more{border-style:dashed;color:rgba(23,23,19,.42)}.project-row-link{display:inline-flex;width:fit-content;align-items:center;gap:.4rem;min-height:2.75rem;margin-top:1.25rem;padding:.45rem 0;color:#5e60ad;font-size:.72rem;font-weight:700;text-decoration:none}.project-empty{padding:5rem 1rem;border-bottom:1px solid rgba(23,23,19,.14);color:rgba(23,23,19,.45);text-align:center}.project-empty svg{color:#5e60ad}.project-empty p{margin:.8rem 0 0;font-size:.8rem}.project-detail{max-width:64rem;margin:0 auto;padding:1.5rem 1.25rem 2.5rem}.project-back-link{display:inline-flex;align-items:center;gap:.4rem;color:rgba(23,23,19,.55);font-size:.72rem;font-weight:600;text-decoration:none}.project-detail-period{margin-top:.5rem}.project-detail header h1{max-width:50rem;margin:.5rem 0 0;font-size:var(--project-detail-title-size);font-weight:650;line-height:1.08}.project-detail-intro{display:grid;gap:2.5rem;margin-top:1rem;padding-top:1rem;border-top:1px solid rgba(23,23,19,.14)}.project-detail-intro aside h2,.project-detail-overview h2,.project-detail-prose h2{margin:0;color:rgba(23,23,19,.42);font-size:.7rem;font-weight:700;text-transform:uppercase}.project-detail-prose{margin-top:2.5rem}.project-detail-contribution-copy,.project-detail-overview-copy{margin:1rem 0 0;color:rgba(23,23,19,.68);line-height:1.85;text-align:justify;text-justify:inter-word}.project-detail-overview-copy{font-size:var(--project-overview-size)}.project-detail-contribution-copy{font-size:var(--project-contribution-copy-size)}.project-detail-links{padding-top:2rem;border-top:1px solid rgba(23,23,19,.14)}.project-detail-links>div{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1rem}.project-detail-links a{display:inline-flex;min-height:2.5rem;align-items:center;gap:.4rem;border:1px solid rgba(23,23,19,.16);border-radius:.375rem;padding:.55rem .75rem;color:#171713;font-size:.72rem;font-weight:650;text-decoration:none}.project-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin-top:3rem;padding-top:1.25rem;border-top:1px solid rgba(23,23,19,.14)}.project-gallery figure{min-width:0;margin:0;overflow:hidden;border:1px solid rgba(23,23,19,.1);border-radius:.5rem;background:#ecece7}.project-gallery figure.is-featured{grid-column:1/-1}.project-gallery button{display:block;width:100%;border:0;padding:0;background:transparent;cursor:zoom-in}.project-gallery button:focus-visible{outline:2px solid #5e60ad;outline-offset:-2px}.project-gallery img{display:block;width:100%;height:auto;object-fit:contain}.project-gallery-lightbox{position:fixed;z-index:100;inset:0;display:grid;place-items:center;padding:1rem;background:rgba(12,12,10,.88)}.project-gallery-lightbox-panel{position:relative;width:min(100%,70rem);max-height:calc(100svh - 2rem);padding:3.25rem 1rem 1rem;border:1px solid rgba(255,255,255,.18);border-radius:.5rem;background:#171713;box-shadow:0 1.25rem 4rem rgba(0,0,0,.35)}.project-gallery-lightbox-header{position:absolute;z-index:1;top:.75rem;right:.75rem;left:.9rem;display:flex;align-items:center;justify-content:space-between;color:rgba(255,255,255,.72);font-size:.75rem;font-weight:650}.project-gallery-lightbox-header button,.project-gallery-lightbox-nav{display:inline-grid;width:2.5rem;height:2.5rem;place-items:center;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:rgba(23,23,19,.78);color:#fff}.project-gallery-lightbox-image{position:relative;width:100%;height:min(72svh,46rem)}.project-gallery-lightbox-image img{object-fit:contain}.project-gallery-lightbox-nav{position:absolute;top:50%;transform:translateY(-50%)}.project-gallery-lightbox-nav.is-previous{left:.5rem}.project-gallery-lightbox-nav.is-next{right:.5rem}.project-footer{border-top:1px solid rgba(23,23,19,.1);padding:1.5rem;color:rgba(23,23,19,.42);font-size:.7rem;text-align:center}@media (min-width:640px){.project-page{--project-detail-title-size:1rem;--project-overview-size:.95rem;--project-contribution-copy-size:.875rem}.project-header-inner{height:5rem;padding-inline:2rem}.project-index-hero>div{padding:3.5rem 2rem}.project-index-hero h1{font-size:3.25rem}.project-list{padding:2rem 2rem 6rem}.project-row{grid-template-columns:3rem minmax(0,1fr);gap:1.25rem;padding:2rem 0;align-items:start}.project-row-layout.has-image{grid-template-columns:minmax(12rem,.85fr) minmax(0,1.15fr);align-items:start;gap:1.5rem}.project-row h3{font-size:1.25rem}.project-row-copy>p{font-size:.875rem}.project-detail{padding:3rem 2rem 5rem}.project-detail-intro{grid-template-columns:minmax(12rem,.85fr) minmax(0,1.15fr);gap:2rem}}@media (min-width:1024px){.project-row-layout.has-image{grid-template-columns:minmax(18rem,22rem) minmax(0,1fr);gap:2rem}.project-row h3{font-size:1.4rem}.project-row-copy>p{font-size:.95rem}.project-page{--project-detail-title-size:1.8rem;--project-overview-size:1.05rem;--project-contribution-copy-size:1.05rem}.project-header-inner,.project-index-hero>div,.project-list{padding-inline:3rem}.project-index-hero>div{display:grid;grid-template-columns:1fr .7fr;align-items:end}.project-index-hero span{grid-column:2;grid-row:1/span 2;margin:0}.project-detail-intro{grid-template-columns:minmax(19rem,22rem) minmax(0,1fr);gap:3rem}.project-index-hero h1{font-size:3.75rem}}