:root{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:#111;background:#f4f3ef;font-synthesis:none}*{box-sizing:border-box}html{background:#f4f3ef}body{margin:0;min-width:320px;background:#f4f3ef}::selection{background:#111;color:#f4f3ef}a{color:#111}.site-shell{max-width:920px;min-height:100vh;margin:0 auto;padding:64px 24px 48px}.site-header,.page-nav,.project-head,.sort-button,.project-status,.project-year,.skill-index,.elsewhere,.change>span,.site-footer,.contact-email,.no-link{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.site-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:28px;color:#666;font-size:12px;letter-spacing:.05em}.site-header a{color:#666;text-decoration:none}h1{margin:0 0 20px;font-size:clamp(24px,5.5vw,60px);line-height:.92;font-weight:700;letter-spacing:-.02em}.lede{max-width:520px;margin:0 0 20px;color:#444;font-size:17px;line-height:1.5}.page-nav{display:flex;gap:20px;margin-bottom:44px;font-size:12px;letter-spacing:.03em}.text-link{padding-bottom:2px;border-bottom:1px solid #111;text-decoration:none}.text-link:hover{color:#666;border-color:#666}.project-list{margin:0}.project-head{display:grid;grid-template-columns:minmax(0,1fr) 110px 70px;padding:0;border-top:1px solid #111;border-bottom:1px solid #ccc}.sort-button{display:inline-flex;align-items:center;gap:5px;padding:10px 0;border:0;background:transparent;color:#999;font:inherit;font-size:11px;letter-spacing:.05em;text-align:left;cursor:pointer}.sort-button:hover,.sort-button.is-active{color:#111}.sort-button:last-child{justify-content:flex-end;text-align:right}.sort-chevron{position:relative;display:inline-block;width:8px;height:8px;flex:0 0 8px;transform:translateY(-1px)}.sort-chevron:before{position:absolute;top:1px;left:1px;width:5px;height:5px;border-right:1px solid currentColor;border-bottom:1px solid currentColor;content:"";transform:rotate(45deg)}.sort-chevron.is-asc:before{top:3px;transform:rotate(225deg)}.project-year{text-align:right}.project{border-bottom:1px solid #ccc}.project-row{display:grid;grid-template-columns:minmax(0,1fr) 110px 70px;align-items:center;width:100%;padding:20px 0;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer;font:inherit}.project-row:hover{background:#ebe9e2}.project-name{min-width:0}.project-name strong{display:block;overflow-wrap:anywhere;font-size:26px;font-weight:600;letter-spacing:-.01em}.project-name small{display:block;margin-top:2px;color:#666;font-size:14px;font-weight:400}.project-status{font-size:11px;letter-spacing:.03em}.status-live{color:#1a5c2e}.status-in-progress{color:#8a5a00}.status-open-source{color:#1a3f8a}.project-year{color:#666;font-size:13px}.project-detail{display:flex;flex-wrap:wrap;gap:28px;padding:0 0 28px}.project-detail[hidden]{display:none}.project-shot{display:flex;flex:0 0 220px;aspect-ratio:4 / 3;align-items:center;justify-content:center;padding:8px;background:repeating-linear-gradient(45deg,#ddd,#ddd 10px,#e8e6df 10px 20px);color:#888;text-align:center;font:11px ui-monospace,SFMono-Regular,Menlo,monospace}.project-copy{max-width:480px;min-width:220px;flex:1}.project-copy p{margin:0 0 16px;color:#333;font-size:15px;line-height:1.6}.project-copy .text-link,.contact-email{font-size:12px;letter-spacing:.03em}.no-link{color:#999;font-size:12px}.site-footer{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:16px;padding-top:56px;color:#999;font-size:11px;line-height:1.6}.site-footer p{max-width:400px;margin:0}.site-footer .text-link{color:#111;font-size:13px}.page-intro{min-height:calc(100vh - 112px)}.statement{max-width:600px;margin:0 0 24px;color:#222;font-size:19px;line-height:1.6}.body-copy{max-width:560px;margin:0 0 40px;color:#444;font-size:15px;line-height:1.7}.elsewhere{display:flex;gap:20px;padding-top:20px;border-top:1px solid #ccc;color:#999;font-size:12px;letter-spacing:.03em}.elsewhere span:not(:first-child){color:#bbb}.skill-list,.change-list{border-top:1px solid #ccc}.skill{display:flex;gap:24px;padding:24px 0;border-bottom:1px solid #ccc}.skill-index{width:32px;flex-shrink:0;padding-top:4px;color:#999;font-size:12px}.skill h2{margin:0 0 6px;font-size:22px;font-weight:600;letter-spacing:-.01em}.skill p{max-width:520px;margin:0;color:#555;font-size:14px;line-height:1.6}.contact-email{display:inline-block;margin-top:4px;font-size:14px}.change{display:grid;grid-template-columns:100px minmax(0,1fr);gap:24px;padding:22px 0;border-bottom:1px solid #ccc}.change>span{padding-top:3px;color:#999;font-size:12px}.change p{margin:0;color:#333;font-size:15px;line-height:1.6}@media(max-width:620px){.site-shell{padding-top:32px}.project-head,.project-row{grid-template-columns:minmax(0,1fr) 84px}.project-head .sort-button:last-child,.project-year{display:none}.project-name strong{font-size:22px}.project-name small{padding-right:12px;font-size:13px}.project-status{font-size:10px;text-align:right}.project-detail{padding-left:0}.project-shot{flex-basis:100%}.project-copy{min-width:0}.elsewhere{flex-wrap:wrap;gap:10px 18px}.change{grid-template-columns:78px minmax(0,1fr);gap:14px}}
