:root{--color-paper:#faf8f5;--color-paper-dark:#f0ece6;--color-text:#2c2c2c;--color-text-light:#6b6b6b;--color-accent:#1a2a4a;--color-accent-light:#2e4a7a;--color-divider:#d4cfc7;--color-sparkle:#c8d6e5;--font-cn:"Noto Serif SC", "Source Han Serif SC", "宋体", "SimSun", serif;--font-en:"Cormorant Garamond", "EB Garamond", "Georgia", serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--space-xs:.5rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2rem;--space-xl:3rem;--space-2xl:5rem;--sidebar-width:280px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-cn);color:var(--color-text);background-color:var(--color-paper);min-height:100vh;line-height:1.8;overflow-x:hidden}a{color:inherit;text-decoration:none}ul,ol{list-style:none}button{cursor:pointer;background:0 0;border:none;font-family:inherit}img{max-width:100%;height:auto;display:block}.hidden{display:none!important}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}#cover{background-color:var(--color-paper);z-index:100;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.cover-content{text-align:center}.cover-name{letter-spacing:.3em;color:var(--color-text);font-size:3.5rem;font-weight:400;line-height:1.4}.cover-name-en{font-size:.95rem;font-family:var(--font-en);letter-spacing:.5em;color:var(--color-text-light);margin-top:.25rem}.cover-divider{background-color:var(--color-divider);width:60px;height:1px;margin:2rem auto}.cover-subtitle{letter-spacing:.4em;color:var(--color-text-light);margin-bottom:.25rem;font-size:1.1rem}.cover-subtitle-en{font-size:.7rem;font-family:var(--font-en);letter-spacing:.6em;color:var(--color-text-light);margin-bottom:3rem}.cover-cta{font-family:var(--font-en);letter-spacing:.3em;color:var(--color-accent);border:1px solid var(--color-accent);cursor:pointer;border-radius:2px;padding:.75rem 2rem;font-size:1rem;transition:all .3s}.cover-cta:hover{background-color:var(--color-accent);color:var(--color-paper)}.cover-hint{font-size:.65rem;font-family:var(--font-en);letter-spacing:.2em;color:var(--color-divider);margin-top:1rem}.cover-brand{pointer-events:none;flex-direction:column;align-items:flex-start;display:flex;position:absolute;top:2.5rem;left:2.5rem}.cover-brand-en{font-family:var(--font-en);letter-spacing:.35em;color:var(--color-text-light);font-size:.85rem;line-height:1.6}.cover-brand-portfolio{font-family:var(--font-en);letter-spacing:.35em;color:var(--color-text-light);opacity:.6;font-size:.6rem;line-height:1.6}.cover-collection{pointer-events:none;align-items:center;gap:.6rem;display:flex;position:absolute;top:2.75rem;right:2.5rem}.cover-collection-text{font-family:var(--font-en);letter-spacing:.3em;color:var(--color-text-light);opacity:.7;white-space:nowrap;font-size:.6rem}.cover-slogan{pointer-events:none;text-align:right;flex-direction:column;align-items:flex-end;gap:.15rem;display:flex;position:absolute;bottom:2rem;right:2.5rem}.cover-slogan-cn{letter-spacing:.15em;color:var(--color-text-light);opacity:.4;font-size:.68rem}.cover-slogan-en{font-family:var(--font-en);letter-spacing:.2em;color:var(--color-text-light);opacity:.3;text-transform:uppercase;font-size:.5rem}.transition-layer{z-index:300;position:fixed;inset:0}.white-overlay{background-color:var(--color-paper);opacity:0;pointer-events:all;transition:opacity .4s;position:fixed;inset:0}.white-overlay.active{opacity:1}.main-page{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-width);height:100vh;padding:var(--space-2xl) var(--space-lg);background-color:var(--color-paper);border-right:1px solid var(--color-divider);z-index:50;position:fixed;top:0;left:0;overflow-y:auto}.home-btn{font-family:var(--font-en);letter-spacing:.3em;color:var(--color-text-light);margin-bottom:var(--space-lg);cursor:pointer;padding:.4rem 0;font-size:.65rem;transition:color .2s}.home-btn:hover{color:var(--color-accent)}.sidebar-title{font-family:var(--font-en);letter-spacing:.4em;color:var(--color-text-light);margin-bottom:var(--space-xl);text-transform:uppercase;font-size:.7rem}.sidebar-nav{flex-direction:column;gap:.25rem;display:flex}.sidebar-nav>li>a{color:var(--color-text);padding:.5rem 0;font-size:.95rem;line-height:1.6;transition:color .2s;display:block}.sidebar-nav>li>a:hover{color:var(--color-accent)}.nav-num{font-family:var(--font-en);color:var(--color-text-light);margin-right:.5rem;font-size:.7rem}.nav-en{font-family:var(--font-en);letter-spacing:.2em;color:var(--color-text-light);margin-left:1.3rem;font-size:.6rem;display:block}.sub-nav{margin-bottom:.5rem;padding-left:2rem}.sub-nav a{color:var(--color-text-light);padding:.25rem 0;font-size:.8rem;transition:color .2s;display:block}.sub-nav a:hover,.sidebar-nav>li>a.active,.sidebar-nav>li>a.active .nav-num,.sidebar-nav>li>a.active .nav-en{color:var(--color-accent)}.sub-nav a.active{color:var(--color-accent);font-weight:500}.content{margin-left:var(--sidebar-width);padding:var(--space-2xl) var(--space-xl);flex:1;max-width:900px;min-height:100vh}.content-section{min-height:100vh;padding:var(--space-2xl) 0;border-bottom:1px solid var(--color-divider)}.content-section:last-child{border-bottom:none}.content-section.section-hidden{display:none}.section-title{letter-spacing:.1em;color:var(--color-text);font-size:2rem;font-weight:400;line-height:1.4}.section-subtitle-en{font-size:.7rem;font-family:var(--font-en);letter-spacing:.35em;color:var(--color-text-light);margin-top:.2rem;margin-bottom:var(--space-xl);text-transform:uppercase}.about-card{max-width:760px}.about-header{margin-bottom:1.25rem}.about-name{letter-spacing:.08em;font-size:1.7rem;font-weight:400;line-height:1.4}.about-name-en{font-size:.8rem;font-family:var(--font-en);letter-spacing:.3em;color:var(--color-text-light);margin-top:.2rem}.about-school{color:var(--color-text);font-size:1rem}.about-major{color:var(--color-text-light);margin-top:.15rem;font-size:.85rem}.about-period{font-size:.75rem;font-family:var(--font-en);color:var(--color-text-light);letter-spacing:.05em;margin-top:.35rem}.about-contact{gap:var(--space-sm);border-bottom:1px solid var(--color-divider);flex-wrap:wrap;margin-top:1.25rem;padding-bottom:1.5rem;display:flex}.contact-btn{font-size:.8rem;font-family:var(--font-en);letter-spacing:.04em;color:var(--color-accent);border:1px solid var(--color-accent);border-radius:2px;align-items:center;gap:.45rem;padding:.5rem 1rem;text-decoration:none;transition:background-color .2s,color .2s;display:inline-flex}.contact-btn:hover{background-color:var(--color-accent);color:var(--color-paper)}.contact-btn.copied{background-color:var(--color-accent);color:var(--color-paper);justify-content:center}.contact-icon{font-size:.75rem;line-height:1}.about-body{gap:var(--space-xl);margin-top:var(--space-xl);grid-template-columns:1.1fr 1fr;display:grid}.about-col-label{font-family:var(--font-en);letter-spacing:.28em;color:var(--color-accent-light);text-transform:uppercase;margin-bottom:.75rem;font-size:.68rem;font-weight:500}.about-tags{margin-bottom:var(--space-md);flex-wrap:wrap;gap:.4rem;display:flex}.tag{border:1px solid var(--color-divider);color:var(--color-text-light);letter-spacing:.03em;border-radius:2px;padding:.2rem .65rem;font-size:.72rem;display:inline-block}.tag-skill{border-color:var(--color-accent);color:var(--color-accent)}.tag-period{font-family:var(--font-en);color:var(--color-text-light);background:0 0;border:none;padding:0;font-size:.68rem}.tag-type{border-color:var(--color-accent-light);color:var(--color-accent-light);font-size:.68rem}.meta-role{color:var(--color-text-light);font-size:.72rem}.about-summary{color:var(--color-text-light);font-size:.88rem;line-height:1.9}.about-summary-en{font-family:var(--font-en);color:var(--color-text-light);opacity:.82;letter-spacing:.04em;margin-top:var(--space-sm);font-size:.8rem;line-height:1.9}.about-academic{margin-bottom:var(--space-lg)}.academic-row{justify-content:space-between;align-items:baseline;padding:.15rem 0;font-size:.88rem;display:flex}.academic-item{font-family:var(--font-en);letter-spacing:.08em;color:var(--color-text-light)}.academic-value{font-family:var(--font-en);color:var(--color-text)}.course-list{list-style:none}.course-item{border-bottom:1px dotted var(--color-divider);justify-content:space-between;align-items:baseline;gap:1rem;font-size:.85rem;line-height:2;display:flex}.course-item:last-child{border-bottom:none}.course-name{color:var(--color-text)}.course-score{font-family:var(--font-en);color:var(--color-text-light);white-space:nowrap}.about-honors{margin-top:var(--space-xl);padding-top:var(--space-lg);border-top:1px solid var(--color-divider)}.honors-list{grid-template-columns:repeat(2,1fr);gap:.3rem 2rem;list-style:none;display:grid}.honors-item{color:var(--color-text);padding-left:1rem;font-size:.85rem;line-height:1.9;position:relative}.honors-item:before{content:"—";color:var(--color-accent-light);font-size:.75rem;position:absolute;left:0}.inline-link{color:var(--color-accent);text-underline-offset:2px;text-decoration:underline;transition:color .2s}.inline-link:hover{color:var(--color-accent-light)}.projects-list{gap:var(--space-2xl);flex-direction:column;display:flex}.project-item,.research-item,.competition-item{scroll-margin-top:var(--space-lg);padding-bottom:var(--space-xl);border-bottom:1px solid var(--color-divider)}.research-item:last-child{border-bottom:none;padding-bottom:0}.paginated-item{border-bottom:none;min-height:55vh;padding-bottom:0}.paginated-item.item-hidden{display:none}.project-header,.research-header,.competition-header{margin-bottom:.3rem}.project-title,.research-title,.competition-title{letter-spacing:.05em;font-size:1.3rem;font-weight:400;line-height:1.5}.project-title-en,.research-title-en,.competition-title-en{font-size:.72rem;font-family:var(--font-en);letter-spacing:.25em;color:var(--color-text-light);margin-top:.1rem}.project-subtitle,.competition-subtitle{color:var(--color-text);margin-bottom:var(--space-sm);font-size:.88rem}.project-meta,.research-meta,.competition-meta{margin-bottom:var(--space-md);flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.project-summary,.research-summary,.competition-summary{color:var(--color-text-light);margin-bottom:var(--space-md);font-size:.88rem;line-height:1.9}.project-results{margin-bottom:var(--space-md);padding:var(--space-sm) var(--space-md);border-left:2px solid var(--color-accent-light);background:var(--color-paper-dark)}.results-label{font-size:.7rem;font-family:var(--font-en);letter-spacing:.15em;color:var(--color-accent-light);text-transform:uppercase;margin-bottom:.35rem;display:block}.project-results p{color:var(--color-text);font-size:.85rem;line-height:1.8}.competition-meta .comp-award{color:var(--color-accent);font-size:.78rem;font-weight:500}.comp-note{color:var(--color-text-light);margin-bottom:var(--space-md);padding:var(--space-sm) var(--space-md);border-left:2px solid var(--color-divider);background:var(--color-paper-dark);font-size:.8rem;line-height:1.8}.comp-subheading{font-size:.72rem;font-family:var(--font-en);letter-spacing:.15em;color:var(--color-text-light);text-transform:uppercase;margin-bottom:var(--space-sm);margin-top:var(--space-md)}.pdf-block{margin-top:var(--space-sm)}.pdf-toggle{font-size:.8rem;font-family:var(--font-en);letter-spacing:.06em;color:var(--color-accent);border:1px solid var(--color-accent);cursor:pointer;background:0 0;border-radius:2px;align-items:center;gap:.4rem;padding:.45rem 1rem;transition:all .2s;display:inline-flex}.pdf-toggle:hover,.pdf-toggle.expanded{background-color:var(--color-accent);color:var(--color-paper)}.pdf-toggle-icon{font-size:.7rem;transition:transform .2s;display:inline-block}.pdf-container{margin-top:var(--space-md);width:100%;max-width:100%;overflow:hidden}.pdf-container.hidden{display:none}.pdf-iframe{border:1px solid var(--color-divider);background:#fff;border-radius:2px;width:100%;height:600px}.image-grid{gap:var(--space-sm);margin-bottom:var(--space-md);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.image-grid-item{cursor:pointer;border:1px solid var(--color-divider);border-radius:2px;transition:border-color .2s;overflow:hidden}.image-grid-item:hover{border-color:var(--color-accent-light)}.image-grid-item img{aspect-ratio:4/3;object-fit:cover;width:100%;transition:transform .3s;display:block}.image-grid-item:hover img{transform:scale(1.03)}.image-caption{color:var(--color-text-light);text-align:center;background:var(--color-paper-dark);padding:.4rem .5rem;font-size:.68rem;display:block}.depth-carousel{width:100%;max-width:760px;height:clamp(440px,60vh,660px);margin:var(--space-md) auto 0;touch-action:pan-y;-webkit-user-select:none;user-select:none;perspective:1400px;transition:transform .3s;position:relative;overflow:hidden}.depth-carousel.dragging{cursor:grabbing;transition:none}.depth-carousel-item{aspect-ratio:3/4;transform-origin:50%;border:1px solid var(--color-divider);background:var(--color-paper-dark);cursor:pointer;will-change:transform, opacity, filter;backface-visibility:hidden;border-radius:3px;width:clamp(200px,44%,340px);transition:transform .55s cubic-bezier(.22,.61,.36,1),opacity .55s cubic-bezier(.22,.61,.36,1),filter .55s cubic-bezier(.22,.61,.36,1),box-shadow .3s;position:absolute;top:50%;left:50%;overflow:hidden;box-shadow:0 14px 36px #1a2a4a1a}.depth-carousel-item:hover{box-shadow:0 16px 40px #1a2a4a24}.depth-carousel-item img{object-fit:cover;pointer-events:none;-webkit-user-drag:none;width:100%;height:100%;display:block}.carousel-nav{z-index:40;width:36px;height:36px;color:var(--color-text-light);background:var(--color-paper);border:1px solid var(--color-divider);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;padding-bottom:3px;font-size:1.2rem;line-height:1;transition:color .2s,border-color .2s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.carousel-nav:hover{color:var(--color-accent);border-color:var(--color-accent)}.carousel-prev{left:0}.carousel-next{right:0}.carousel-hint{text-align:center;letter-spacing:.05em;color:var(--color-text-light);opacity:.7;margin-top:var(--space-md);font-size:.68rem}.lightbox{z-index:500;background-color:#000000d9;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.lightbox.active{display:flex}.lightbox-image-wrap{justify-content:center;align-items:center;max-width:90vw;max-height:85vh;display:flex}.lightbox-image{object-fit:contain;max-width:90vw;max-height:85vh}.lightbox-close{color:#fff;opacity:.7;cursor:pointer;z-index:10;background:0 0;border:none;font-size:1.8rem;line-height:1;transition:opacity .2s;position:absolute;top:1rem;right:1.5rem}.lightbox-close:hover{opacity:1}.lightbox-prev,.lightbox-next{color:#fff;opacity:.5;cursor:pointer;z-index:10;background:0 0;border:none;padding:1rem;font-size:2.5rem;line-height:1;transition:opacity .2s;position:absolute;top:50%;transform:translateY(-50%)}.lightbox-prev:hover,.lightbox-next:hover{opacity:1}.lightbox-prev{left:.5rem}.lightbox-next{right:.5rem}.lightbox-counter{font-size:.75rem;font-family:var(--font-en);color:#fff;opacity:.6;letter-spacing:.1em;position:absolute;bottom:1.5rem;left:50%;transform:translate(-50%)}.menu-toggle{top:var(--space-md);right:var(--space-md);z-index:60;flex-direction:column;justify-content:center;gap:6px;width:40px;height:40px;padding:8px;display:none;position:fixed}.menu-toggle span{background-color:var(--color-text);width:100%;height:1.5px;transition:transform .3s,opacity .3s;display:block}.menu-toggle.active span:first-child{transform:translateY(7.5px)rotate(45deg)}.menu-toggle.active span:nth-child(2){opacity:0}.menu-toggle.active span:nth-child(3){transform:translateY(-7.5px)rotate(-45deg)}.menu-overlay{z-index:55;opacity:0;background-color:#0000004d;transition:opacity .3s;position:fixed;inset:0}.menu-overlay.visible{opacity:1}@media (width<=768px){:root{--sidebar-width:0}.cover-name{font-size:2.5rem}.cover-name-en{font-size:.8rem}.sidebar{display:none}.menu-toggle{display:flex}.content{padding:var(--space-lg) var(--space-md);margin-left:0;padding-top:4rem}.sidebar.mobile-open{z-index:70;width:75vw;max-width:320px;height:100vh;transition:transform .3s;display:block;position:fixed;top:0;left:0;transform:translate(-100%);box-shadow:2px 0 20px #0000001a}.sidebar.mobile-open.slide-in{transform:translate(0)}.section-title{font-size:1.5rem}.section-subtitle-en{letter-spacing:.25em;margin-bottom:var(--space-lg);font-size:.65rem}.about-name{font-size:1.3rem}.about-name-en{font-size:.7rem}.about-summary{font-size:.85rem}.about-body{gap:var(--space-lg);grid-template-columns:1fr}.project-title,.research-title,.competition-title{font-size:1.1rem}.project-title-en,.research-title-en,.competition-title-en{font-size:.68rem}.project-subtitle,.competition-subtitle,.project-summary,.research-summary,.competition-summary{font-size:.82rem}.project-meta,.research-meta,.competition-meta{gap:.4rem}.image-grid{grid-template-columns:repeat(2,1fr);gap:.5rem}.image-caption{font-size:.62rem}.depth-carousel{max-width:100%;height:clamp(340px,52vh,480px)}.depth-carousel-item{width:clamp(170px,52%,240px)}.carousel-nav{width:32px;height:32px;font-size:1.05rem}.pdf-iframe{height:400px}.pdf-toggle{padding:.4rem .8rem;font-size:.75rem}.project-results,.comp-note{padding:var(--space-xs) var(--space-sm)}.project-results p,.comp-note p,.honors-item{font-size:.8rem}.lightbox-close{padding:.5rem;font-size:2rem;top:.75rem;right:.75rem}.lightbox-prev,.lightbox-next{padding:.75rem .5rem;font-size:2rem}.lightbox-prev{left:0}.lightbox-next{right:0}.lightbox-image-wrap,.lightbox-image{max-width:95vw;max-height:80vh}.honors-list{grid-template-columns:1fr}}@media (width<=480px){.cover-name{letter-spacing:.2em;font-size:2rem}.section-title{font-size:1.3rem}.content{padding:var(--space-md) var(--space-sm);padding-top:3.5rem}.content-section{padding:var(--space-lg) 0;min-height:auto}.paginated-item{min-height:auto}.projects-list,.research-list,.competitions-list{gap:var(--space-lg)}.project-item,.research-item,.competition-item{padding-bottom:var(--space-lg)}.pdf-iframe{height:320px}.tag{padding:.15rem .5rem;font-size:.68rem}.tag-period,.tag-type{font-size:.65rem}.meta-role{font-size:.68rem}.comp-award{font-size:.72rem!important}.image-grid{grid-template-columns:repeat(2,1fr);gap:.4rem}.depth-carousel{height:clamp(300px,46vh,400px)}.depth-carousel-item{width:clamp(150px,50%,200px)}}@media (width<=768px){.cover-brand{top:1.5rem;left:1.25rem}.cover-brand-en{font-size:.7rem}.cover-brand-portfolio{font-size:.5rem}.cover-collection{top:1.65rem;right:1.25rem}.cover-collection-text{letter-spacing:.2em;font-size:.5rem}.cover-slogan{bottom:1.25rem;right:1.25rem}.cover-slogan-cn{letter-spacing:.1em;font-size:.6rem}.cover-slogan-en{letter-spacing:.14em;font-size:.44rem}}
