.star-border{position:relative;display:inline-flex;align-items:center;justify-content:center;margin:0;border:0;border-radius:var(--sb-radius);background:var(--sb-surface);color:inherit;font:inherit;cursor:pointer;isolation:isolate;overflow:hidden;-webkit-tap-highlight-color:transparent;transition:transform .4s cubic-bezier(.22,1,.36,1),box-shadow .4s cubic-bezier(.22,1,.36,1)}.star-border:hover{transform:translateY(-1px);box-shadow:0 8px 24px #3e44282e}.star-border__ring{position:absolute;top:-120%;right:-120%;bottom:-120%;left:-120%;z-index:0;background:conic-gradient(from 0deg,transparent 0deg,transparent 250deg,var(--sb-glow) 310deg,transparent 350deg,transparent 360deg);animation:star-border-spin var(--sb-speed) linear infinite;pointer-events:none}.star-border:after{content:"";position:absolute;inset:var(--sb-thickness);z-index:1;border-radius:inherit;background:var(--sb-surface);pointer-events:none}.star-border__content{position:relative;z-index:2;display:inline-flex;align-items:center;gap:8px}@keyframes star-border-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.star-border__ring{animation:none;background:conic-gradient(from 200deg,transparent 0deg,var(--sb-glow) 60deg,transparent 120deg,transparent 360deg)}}@font-face{font-family:Woodcut Song;src:url(/fonts/woodcut-song.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Snell Script;src:url(/fonts/snell-bold.woff2) format("woff2");font-weight:700;font-display:swap}@font-face{font-family:Snell Script;src:url(/fonts/snell-regular.woff2) format("woff2");font-weight:400;font-display:swap}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Helvetica Neue,PingFang SC,Microsoft YaHei,sans-serif;background:#fefceb;color:#3e4428;overflow-x:hidden}::selection{background:#8fa34533;color:#3e4428}:root{--max-width: 1700px;--bg-base: #FEFCEB;--bg-alt: #FDFBF3;--bg-soft: #FAF7EC;--bg-card: #EFF3DC;--bg-card-hover: #E2DCC6;--text-primary: #3E4428;--text-secondary: #5F6549;--text-muted: #7C8168;--text-dim: #8A8E75;--text-light: #A8AB90;--accent: #8FA345;--accent-light: #B9C77F;--accent-pale: #DCE8A8;--border-subtle: rgba(143, 163, 69, .1);--border-light: rgba(143, 163, 69, .18);--shadow-soft: 0 2px 12px rgba(62, 68, 40, .06);--shadow-card: 0 4px 24px rgba(62, 68, 40, .08)}.container{max-width:var(--max-width);margin:0 auto;padding:0 64px}.section{position:relative;padding:140px 0}:root{font-synthesis:none}.section-label{font-size:11px;font-weight:500;letter-spacing:3.2px;text-transform:uppercase;color:#8a8e75}.section-title{font-family:Woodcut Song,Songti SC,STSong,serif;font-size:clamp(34px,3.4vw,50px);font-weight:400;letter-spacing:1.5px;color:var(--text-primary);line-height:1.2;font-synthesis:none}.section-sub{font-size:16px;font-weight:300;color:var(--text-secondary);line-height:1.7}.body-text{font-size:15px;font-weight:300;color:var(--text-secondary);line-height:1.8}.card-minimal{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:20px;box-shadow:var(--shadow-soft);transition:all .4s cubic-bezier(.16,1,.3,1)}.card-minimal:hover{background:var(--bg-card-hover);border-color:var(--border-light);box-shadow:var(--shadow-card);transform:translateY(-4px)}.img-overlay{position:relative;overflow:hidden}.img-overlay:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#3e44280d,#3e442826);pointer-events:none}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:#fefceb}::-webkit-scrollbar-thumb{background:#c9d49b;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#8fa345}@keyframes fade-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes subtle-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes twinkle{0%,to{opacity:.3;transform:scale(.9)}50%{opacity:1;transform:scale(1)}}.twinkle{animation:twinkle 4.6s ease-in-out infinite}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-9px)}}.floaty{animation:floaty 7.5s ease-in-out infinite}@keyframes spin-slow{to{transform:rotate(360deg)}}.spin-slow{animation:spin-slow 38s linear infinite}@keyframes dash-drift{to{stroke-dashoffset:-26}}.dash-drift{animation:dash-drift 3.4s linear infinite}.cover-plate-img{filter:saturate(.98) contrast(1.01);transition:filter .6s cubic-bezier(.16,1,.3,1)}.proj-card:hover .cover-plate-img{filter:saturate(1.08) contrast(1.03) brightness(1.01)}@media (prefers-reduced-motion: reduce){.cover-plate-img{transition:none}}
