:root{--paper: #f4f1e9;--card: #fbfaf5;--ink: #17160f;--ink-soft: #3a382f;--muted: #57544a;--blue: #2f5d8c;--blue-dark: #1d456d;--blue-light: #8fb4dd;--green: #3d9b6a}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:IBM Plex Sans,system-ui,sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--blue);text-decoration:none}a:hover{color:var(--blue-dark)}::selection{background:var(--ink);color:var(--paper)}.mono{font-family:IBM Plex Mono,monospace}.display{font-family:Space Grotesk,sans-serif}button{font-family:inherit}@keyframes drift{0%{transform:translate(0) scale(1)}50%{transform:translate(4%,-3%) scale(1.08)}to{transform:translate(0) scale(1)}}@keyframes drift2{0%{transform:translate(0) scale(1)}50%{transform:translate(-5%,4%) scale(1.1)}to{transform:translate(0) scale(1)}}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:0}}[data-reveal]{opacity:0;transform:translateY(26px);transition:opacity .7s cubic-bezier(.22,.61,.36,1),transform .7s cubic-bezier(.22,.61,.36,1)}[data-reveal].is-visible{opacity:1;transform:none}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}[data-reveal]{opacity:1;transform:none;transition:none}}.nav-link{color:var(--muted);transition:color .2s}.nav-link:hover{color:var(--ink)}.nav-cta{transition:background .25s,color .25s}.nav-cta:hover{background:var(--ink);color:var(--paper)}.btn-dark{transition:background .25s}.btn-dark:hover{background:var(--blue)}.btn-outline{transition:border-color .25s,background .25s}.btn-outline:hover{border-color:var(--ink);background:#17160f08}.portrait-img{transition:transform .6s cubic-bezier(.22,.61,.36,1)}.portrait-img:hover{transform:scale(1.21)!important;transform-origin:50% 6%}.carousel-btn{transition:background .25s,color .25s,border-color .25s}.carousel-btn:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}.skill-card{transition:transform .3s,box-shadow .3s,border-color .3s}.skill-card:hover{transform:translateY(-4px);box-shadow:0 14px 30px -18px #17160f66;border-color:#17160f40}.card-link{display:inline-flex;align-items:center;gap:7px;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:500;padding:9px 14px;border-radius:8px;border:1px solid rgba(23,22,15,.2);color:var(--ink);transition:border-color .25s,background .25s,color .25s}.card-link:hover{border-color:var(--ink);background:#17160f0a;color:var(--ink)}.card-link-solid{background:var(--ink);border-color:var(--ink);color:var(--paper)}.card-link-solid:hover{background:var(--blue);border-color:var(--blue);color:var(--paper)}.contact-mail{transition:background .25s}.contact-mail:hover{background:var(--blue-light);color:var(--ink)}.contact-link{transition:border-color .25s,background .25s}.contact-link:hover{border-color:var(--paper);background:#f4f1e914}.prose{font-size:16.5px;line-height:1.72;color:var(--ink-soft)}.prose h1,.prose h2,.prose h3,.prose h4,.prose h5{font-family:Space Grotesk,sans-serif;font-weight:600;color:var(--ink);letter-spacing:-.02em;line-height:1.2}.prose h1{font-size:clamp(30px,4vw,44px);margin:0 0 28px}.prose h2{font-size:clamp(24px,3vw,31px);margin:56px 0 16px;padding-top:26px;border-top:1px solid rgba(23,22,15,.12)}.prose h3{font-size:21px;margin:38px 0 12px}.prose h4,.prose h5{font-size:17px;margin:28px 0 10px}.prose p{margin:0 0 18px}.prose strong{font-weight:600;color:var(--ink)}.prose ul,.prose ol{margin:0 0 18px;padding-left:22px}.prose li{margin-bottom:9px}.prose li::marker{color:var(--blue)}.prose code{font-family:IBM Plex Mono,monospace;font-size:.87em;background:#17160f0e;border:1px solid rgba(23,22,15,.09);padding:2px 6px;border-radius:5px;color:var(--ink)}.prose img{display:block;width:100%;height:auto;margin:26px 0;border:1px solid rgba(23,22,15,.12);border-radius:12px;background:#fff}.prose .table-wrap{overflow-x:auto;margin:0 0 22px;border:1px solid rgba(23,22,15,.12);border-radius:12px;background:var(--card)}.prose table{border-collapse:collapse;width:100%;min-width:480px;font-size:14.5px}.prose thead th{font-family:IBM Plex Mono,monospace;font-size:11.5px;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);text-align:left;padding:12px 16px;background:#17160f0a;border-bottom:1px solid rgba(23,22,15,.12);white-space:nowrap}.prose tbody td{padding:12px 16px;border-bottom:1px solid rgba(23,22,15,.08);vertical-align:top}.prose tbody tr:last-child td{border-bottom:none}.prose tbody tr:last-child{background:#2f5d8c0d}.prose blockquote{margin:0 0 18px;padding:2px 0 2px 18px;border-left:2px solid var(--blue);color:var(--muted)}@media print{.no-print{display:none!important}body{background:#fff}.prose img{break-inside:avoid;page-break-inside:avoid}.prose h2,.prose h3{break-after:avoid;page-break-after:avoid}.prose .table-wrap{overflow-x:visible;break-inside:avoid;page-break-inside:avoid}.prose table{min-width:0;font-size:11px}}@media (max-width: 860px){.nav-links-secondary{display:none!important}.hero-grid{grid-template-columns:1fr!important;gap:40px!important;padding:64px 24px 60px!important}.about-grid,.work-card-grid{grid-template-columns:1fr!important}.stack-grid{grid-template-columns:1fr 1fr!important}.exp-row{grid-template-columns:1fr!important;gap:14px!important}.edu-card{grid-template-columns:1fr!important;text-align:left}.edu-meta{text-align:left!important}.section-pad{padding-left:24px!important;padding-right:24px!important}.nav-bar{padding-left:20px!important;padding-right:20px!important}.work-panel{min-height:240px}}@media (max-width: 560px){.stack-grid{grid-template-columns:1fr!important}.contact-card{padding:40px 26px!important}}
