.page{min-height:100vh;padding-top:102px;background:#fff;color:#0a0a0a}.page-shell{max-width:1136px;margin:0 auto;padding-left:2rem;padding-right:2rem}.page-eyebrow{font-family:SFMono-Regular,Consolas,Menlo,monospace;font-size:.72rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:#6b6b6b;margin:0}.page-eyebrow span{color:#a3a3a3}.page-title{font-size:clamp(2.5rem,5.2vw,4.25rem);font-weight:800;line-height:1.04;letter-spacing:-.03em;margin:1.5rem 0 0;color:#0a0a0a}.page-title-dot{color:#00f}.page-lede{font-size:1.12rem;line-height:1.75;color:#6b6b6b;max-width:58ch;margin:1.75rem 0 0}.page-hero{padding-top:4.5rem;padding-bottom:3.5rem}.page-footer{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-top:5rem;padding:1.75rem 0 0;border-top:1px solid #e8e8e8;font-family:SFMono-Regular,Consolas,Menlo,monospace;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:#a3a3a3}.about-page{max-width:44rem;padding-top:4.5rem;padding-bottom:1rem}.about-head{margin-bottom:2.5rem}.about-title{font-size:clamp(2.35rem,4.6vw,3.4rem);font-weight:800;line-height:1.1;letter-spacing:-.03em;color:#0a0a0a;margin:1.15rem 0 0}.about-lede{font-size:1.08rem;line-height:1.75;color:#6b6b6b;margin:1.25rem 0 0}.about-rule{border:0;border-top:1px solid #ececec;margin:0 0 2.5rem}.about-rule--contact{margin:3rem 0 2rem}.about-prose{font-size:1.02rem;line-height:1.8;color:#333}.about-prose p{margin:0}.about-prose p+p{margin-top:1.5rem}.about-figure{margin:2.75rem 0}.about-figure img{display:block;width:100%;aspect-ratio:16 / 10;object-fit:cover;border-radius:18px;border:1px solid #ececec;background:#f5f5f7}.about-figure figcaption{margin-top:.75rem;font-family:SFMono-Regular,Consolas,Menlo,monospace;font-size:.68rem;letter-spacing:.08em;text-align:center;color:#a3a3a3}.about-explore{margin:1.5rem 0 0;font-size:1.02rem;line-height:1.8;color:#333}.about-explore a{color:#0a0a0a;font-weight:600;text-decoration:underline;text-underline-offset:4px;text-decoration-color:#d4d4d4;transition:color .18s ease,text-decoration-color .18s ease}.about-explore a:hover{color:#00f;text-decoration-color:#00f}.projects-body{padding-bottom:2rem}.projects-rule{border:0;border-top:1px solid #0a0a0a;margin:0}.projects-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem;margin-top:2.5rem;grid-auto-rows:minmax(0,auto);grid-auto-flow:dense}.project-card{border-radius:20px;overflow:hidden;background:#fff;border:1px solid #e8e8e8;transition:transform .3s ease,box-shadow .3s ease,border-color .3s ease}.project-card:hover{transform:translateY(-6px);border-color:#dcdcdc;box-shadow:0 24px 48px #00000014}.project-card-inner{display:flex;flex-direction:column;height:100%}.project-card--wide{grid-column:span 2}.project-card--large{grid-column:span 2;grid-row:span 2}.project-card--tall{grid-row:span 2}.project-card-media{position:relative;aspect-ratio:16 / 10;overflow:hidden;background:#f5f5f7}.project-card--tall .project-card-media,.project-card--large .project-card-media{aspect-ratio:16 / 9}.project-card--tall .project-card-media,.project-card--large .project-card-media{flex:1;aspect-ratio:auto;min-height:14rem}.project-card--tall .project-card-content,.project-card--large .project-card-content{flex:0 0 auto}.project-card-media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}.project-card:hover .project-card-media img{transform:scale(1.04)}.project-card-placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:transparent}.project-card-placeholder span{font-size:clamp(2.5rem,5vw,4rem);font-weight:800;letter-spacing:-.04em;color:var(--project-color, #4164e7)}.project-card-placeholder i{font-style:normal;opacity:.45}.project-card--bg-white .project-card-media{background:#fff}.project-card--bg-color .project-card-media{background:var(--project-color, #4164e7)}.project-card--bg-dark .project-card-media{background:#0a0a0a}.project-card--bg-color .project-card-placeholder span,.project-card--bg-dark .project-card-placeholder span{color:#fff}.project-card--fit-contain .project-card-media{aspect-ratio:auto}.project-card--fit-contain .project-card-media img{height:auto;object-fit:contain;object-position:center;padding:1.25rem}.project-card-content{display:flex;flex-direction:column;gap:.7rem;flex:1;padding:1.5rem}.project-card-meta{display:flex;justify-content:space-between;align-items:center;gap:1rem}.project-card-category{font-family:SFMono-Regular,Consolas,Menlo,monospace;font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:var(--project-color, #4164e7)}.project-card-arrow{font-size:1.05rem;color:#a3a3a3;transition:color .2s ease,transform .2s ease}.project-card:hover .project-card-arrow{color:var(--project-color, #4164e7);transform:translate(2px,-2px)}.project-card-title{font-size:1.25rem;font-weight:700;line-height:1.25;letter-spacing:-.02em;margin:0}.project-card--large .project-card-title{font-size:1.5rem}.project-card-description{margin:0;font-size:.95rem;line-height:1.7;color:#6b6b6b;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.projects-empty{margin-top:2.5rem;padding:4rem 2rem;border:1px dashed #e8e8e8;border-radius:24px;background:#fcfcfd;text-align:center}.projects-empty-mark{font-family:SFMono-Regular,Consolas,Menlo,monospace;font-size:.66rem;letter-spacing:.2em;color:#a3a3a3}.projects-empty h2{font-size:1.75rem;font-weight:700;letter-spacing:-.02em;margin:1rem 0 .5rem}.projects-empty p{color:#6b6b6b;margin:0}@media(max-width:1024px){.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-card--tall,.project-card--large{grid-row:span 1}.project-card--tall .project-card-media,.project-card--large .project-card-media{flex:none;aspect-ratio:16 / 9;min-height:0}}@media(max-width:768px){.page{padding-top:70px}.page-shell{padding-left:1.5rem;padding-right:1.5rem}.page-hero{padding-top:3.5rem;padding-bottom:2.5rem}.about-page{padding-top:3.5rem}.projects-grid{grid-template-columns:minmax(0,1fr)}.project-card--wide,.project-card--large{grid-column:span 1}.page-footer{flex-direction:column;align-items:flex-start;gap:.4rem}}.about-github{--gh-cell: 10px;--gh-gap: 2px;margin-top:3rem;padding-top:2.5rem;border-top:1px solid #ececec}.about-github-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem}.about-github-label,.about-contact-label{margin:0;font-family:SFMono-Regular,Consolas,Menlo,monospace;font-size:.68rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:#a3a3a3}.about-contact{margin:0}.about-contact-list{margin-top:.75rem;border-top:1px solid #ececec;border-bottom:1px solid #ececec}.about-contact-row{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:.95rem 0;border-bottom:1px solid #f4f4f4;transition:color .18s ease}.about-contact-row:last-child{border-bottom:0}.about-contact-name{color:#0a0a0a;font-size:.98rem;font-weight:600;transition:color .18s ease}.about-contact-hint{display:inline-flex;align-items:center;gap:.35rem;color:#a3a3a3;font-size:.78rem;text-align:right;transition:color .18s ease}.about-contact-hint span{display:inline-block;transition:transform .18s ease}.about-contact-row:hover .about-contact-name,.about-contact-row:hover .about-contact-hint{color:#00f}.about-contact-row:hover .about-contact-hint span{transform:translate(2px,-2px)}.about-github-total{margin:.35rem 0 0;color:#666;font-size:.95rem}.about-github-total strong{color:#000}.about-github-link{color:#000;font-size:.88rem;font-weight:700}.about-github-link:hover{color:#00c}.about-github-scroll{margin-top:1.4rem;padding-bottom:.35rem;overflow-x:auto}.about-github-months{display:grid;gap:var(--gh-gap);width:max-content;margin-bottom:.3rem;color:#9ca3af;font-size:.68rem}.about-github-months span{grid-row:1;white-space:nowrap}.about-github-grid{display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,var(--gh-cell));gap:var(--gh-gap);width:max-content}.about-github-cell{display:inline-block;width:var(--gh-cell);height:var(--gh-cell);border-radius:3px;background:#eef0f4}.about-github-cell.is-empty{background:transparent}.about-github-cell[data-level="1"]{background:#ccd3f9}.about-github-cell[data-level="2"]{background:#99a4f0}.about-github-cell[data-level="3"]{background:#4d5fe0}.about-github-cell[data-level="4"]{background:#00c}.about-github-legend{display:flex;align-items:center;gap:.4rem;margin-top:1rem;color:#9ca3af;font-size:.72rem}.about-preview-body{margin:1rem 0 0;color:#4b5563;font-size:.9rem;line-height:1.6}@media(max-width:768px){.about-contact-row{gap:1rem}.about-contact-hint{font-size:.72rem}}
