:root{--paper:#f5f4ef;--surface:#fffefa;--ink:#243c34;--muted:#64716a;--line:#243c3421;--line-strong:#243c3459;--white:#fffefa;--sans:Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;--font-small:.8rem;--font-brand:1.25rem;--font-card-title:clamp(1.1rem, 1.5vw, 1.3rem);--page-pad:clamp(1rem, 4vw, 3.5rem);--content-max:84rem;--card-gap:clamp(1.1rem, 2.2vw, 2rem);color:var(--ink);background:var(--paper);font-family:var(--sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;line-height:1.5}*{box-sizing:border-box}html,body{background:var(--paper);min-width:320px;min-height:100%;margin:0}body,a{font-family:var(--sans)}a{color:inherit;touch-action:manipulation;text-decoration:none}a:focus-visible{outline:3px solid var(--ink);outline-offset:5px;border-radius:.25rem}::selection{color:var(--white);background:var(--ink)}.site-shell{flex-direction:column;min-height:100svh;display:flex}.page-wrap{width:min(100%, var(--content-max));padding-inline:var(--page-pad);margin-inline:auto}main.page-wrap{flex:1;align-items:center;padding-block:clamp(2.5rem,7vh,6rem);display:flex}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;color:var(--white);background:var(--ink);font-size:var(--font-small);padding:.8rem 1rem;transition:transform .18s;position:fixed;top:.75rem;left:.75rem;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.site-header{border-bottom:1px solid var(--line)}.header-inner{align-items:center;min-height:6rem;display:flex}.brand{min-height:2.75rem;font-size:var(--font-brand);letter-spacing:-.035em;align-items:center;gap:.75rem;font-weight:650;display:inline-flex}.brand-icon{object-fit:contain;flex:none;width:2.5rem;height:2.5rem;display:block}.project-grid{gap:var(--card-gap);grid-template-columns:repeat(3,minmax(0,1fr));width:100%;scroll-margin-top:1.5rem;display:grid}.project-grid:focus{outline:none}.project-item,.project-card{min-width:0}.project-card{border:1px solid var(--line);background:var(--surface);border-radius:1.25rem;height:100%;padding:.65rem;transition:border-color .18s,box-shadow .18s,transform .18s;display:block;box-shadow:0 2px 4px #243c3406,0 12px 32px #243c3409}.project-card:focus-visible{border-radius:1.25rem}.project-preview{aspect-ratio:8/5;border:1px solid var(--line);background:var(--paper);object-fit:cover;object-position:top center;border-radius:.7rem;width:100%;height:auto;display:block}.project-card h2{font-size:var(--font-card-title);letter-spacing:.015em;margin:0;padding:1.25rem .65rem .85rem;font-weight:600;line-height:1.5}.site-footer{padding:1.25rem var(--page-pad) max(1.25rem, env(safe-area-inset-bottom));border-top:1px solid var(--line);color:var(--muted);font-size:var(--font-small);text-align:center;flex-wrap:wrap;justify-content:center;align-items:center;gap:.45rem;display:flex}.footer-brand-icon{object-fit:contain;flex:none;width:1.25rem;height:1.25rem;display:block}.footer-legal{flex-wrap:wrap;justify-content:center;align-items:center;gap:0 .45rem;display:inline-flex}.site-footer a{text-underline-offset:.25em;align-items:center;min-height:2.75rem;display:inline-flex}.site-footer a:focus-visible{color:var(--ink);text-decoration:underline}@media (hover:hover) and (pointer:fine){.project-card:hover{border-color:var(--line-strong);transform:translateY(-4px);box-shadow:0 16px 36px #243c341a}.site-footer a:hover{color:var(--ink);text-decoration:underline}}@media (width<=1119px){.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-item:last-child{width:calc((100% - var(--card-gap)) / 2);grid-column:1/-1;justify-self:center}}@media (width<=659px){.header-inner{min-height:4.75rem}main.page-wrap{padding-block:1.5rem 2.5rem}.project-grid{grid-template-columns:minmax(0,1fr)}.project-item:last-child{width:100%}.project-card h2{padding:1rem .5rem .65rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}.project-card:hover{transform:none}}
