:root{--page: #f6faf0;--paper: #e9dfc4;--ink: #080808;--muted: #555;--link: #2c93bd;--wave: #8eb2ec;--green: #58bd70;--cream: #fffdf5;--border: rgba(8, 8, 8, .1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{min-height:100vh;background:var(--page);color:var(--ink);font-family:Instrument Sans,sans-serif}.page{width:min(100%,90rem);margin:0 auto;padding:1rem}.profile{display:flex;align-items:center;gap:28px;padding:28px 32px;background:var(--cream);border:1px solid var(--border);margin-bottom:56px;position:relative;overflow:hidden}.profile:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 39px,rgba(0,0,0,.022) 39px 40px),repeating-linear-gradient(0deg,transparent 0 39px,rgba(0,0,0,.022) 39px 40px);pointer-events:none}.avatar-wrap{position:relative;flex-shrink:0;z-index:1}.avatar{width:10rem;height:10rem;border-radius:50%;background:var(--paper);border:2px solid rgba(8,8,8,.12);display:flex;align-items:center;justify-content:center;overflow:hidden}.profile-body{flex:1;min-width:0;position:relative;z-index:1}.profile-name{font-family:"DM Serif Display",serif;font-size:3em;line-height:1;letter-spacing:-.02em;margin-bottom:.2em}.profile-role{font-size:1em;font-weight:700;letter-spacing:.1em;color:var(--muted);margin-bottom:9px}.profile-bio{font-size:1em;line-height:1.5;color:#3a3a3a}.profile-links{display:flex;flex-direction:column;gap:7px;flex-shrink:0;position:relative;z-index:1}.plink{display:inline-flex;align-items:center;gap:7px;padding:6px 13px;font-family:DM Mono,monospace;font-size:10.5px;font-weight:500;text-decoration:none;border:1px solid rgba(8,8,8,.13);background:var(--paper);color:var(--ink);white-space:nowrap;transition:background .12s,border-color .12s}.plink:hover{background:#ddd3b0;border-color:#08080838}.plink svg{width:12px;height:12px;opacity:.65;flex-shrink:0}.section-head{display:flex;align-items:baseline;gap:12px;margin-bottom:24px}.section-head h2{font-family:"DM Serif Display",serif;font-size:26px;font-weight:400;letter-spacing:-.03em}.badge{font-family:DM Mono,monospace;font-size:10px;color:var(--muted);background:var(--paper);padding:2px 7px}.projects-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.project-card{position:relative;height:12rem;overflow:hidden;cursor:pointer}.preview{position:absolute;inset:0;background:#f8f6ee;z-index:1}.preview:first-child>img{width:100%;height:100%;object-fit:contain;object-position:top}.details{display:flex;flex-direction:column;justify-content:space-between;position:absolute;left:0;right:0;top:100%;height:calc(100% - 28px);z-index:2;padding:1em;background:var(--paper);border-top:1px solid rgba(160,140,100,.3);transition:top .2s cubic-bezier(.25,.46,.45,.94)}.project-card:hover .details,.project-card:focus-within .details{top:28px}.caption{position:absolute;left:0;right:0;bottom:0;z-index:3;height:3em;display:flex;align-items:center;justify-content:space-between;padding:0 .7em;background:var(--paper)}.project-card .tech-tags{position:absolute;top:.3em;right:.3em;display:flex;gap:.2em;z-index:3;align-items:center;flex-wrap:wrap;justify-content:flex-end;max-width:70%}.shield{display:block;height:1.3em;width:auto}.card-title{font-family:Instrument Sans,sans-serif;font-weight:600;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;font-size:1rem}.card-btn{display:inline-flex;align-items:center;gap:.5em;padding:.4rem;background:var(--ink);color:var(--cream);font-family:DM Mono,monospace;font-size:.6rem;font-weight:700;letter-spacing:.04em;text-decoration:none;white-space:nowrap;flex-shrink:0;transition:background .12s}.card-btn:hover{background:#333;transition:background .12s}.card-btn .arr{font-size:.8em;line-height:1}.details-top{display:flex;align-items:flex-end;justify-content:space-between;gap:.5em}.details-desc{color:#1a1a1a}.details-rule{height:1.5px;background:#748fad8c;margin-bottom:.2rem}.details-links a{display:flex;align-items:center;font-family:DM Mono,monospace;color:var(--link);text-decoration:none}.details-links img{width:1.8em;height:1.8em;flex:0 0 1.8em;color:var(--ink)}.details-links{display:flex;font-size:.8rem;gap:.5em;font-family:DM Mono,monospace;text-decoration:none}.details-links a:hover{text-decoration:underline}.footer{margin-top:68px;padding-top:24px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;font-family:DM Mono,monospace;font-size:10.5px;color:var(--muted)}@media(max-width:860px){.projects-grid{grid-template-columns:repeat(2,1fr);gap:20px 24px}}@media(max-width:580px){.page{padding:16px 16px 56px}.profile{flex-wrap:wrap;gap:16px;padding:18px 20px;margin-bottom:36px}.profile-links{flex-direction:row;flex-wrap:wrap;width:100%}.projects-grid{grid-template-columns:1fr;gap:16px}.project-card .details{top:28px}.footer{flex-direction:column;gap:6px;text-align:center}}.project-card-side{display:flex;gap:1rem;margin:2rem}.project-card-side .project-icon img{aspect-ratio:1/1;width:5rem;height:5rem}.project-card-side .details-side{display:flex;flex-direction:column;gap:.5rem}.project-card-side .details-side .details-top{display:flex;flex-direction:column;align-items:flex-start}.grid-two-columns{display:grid;grid-template-columns:repeat(2,1fr)}.project-card-side .tech-tags{display:flex;flex-direction:row;gap:.2em}@media(max-width:900px){.project-card-side{flex-direction:column;align-items:center;gap:1rem;margin:1em}.project-card-side .details-side .details-top{flex-direction:column;align-items:flex-start}.project-card-side .details-side .details-actions{align-self:end}}@media(max-width:640px){.grid-two-columns{grid-template-columns:1fr;gap:0}}
