:root{--cream: #fbfaf5;--paper: #ffffff;--ink: #14161c;--muted: #6b7280;--gator-blue: #0021a5;--uf-orange: #fa4616;--tint-blue: #e8ebf6;--tint-orange: #fdeae3;--border: 2px solid var(--ink);--shadow: 5px 5px 0 var(--ink);--shadow-sm: 3px 3px 0 var(--ink);--shadow-lg: 8px 8px 0 var(--ink);--radius: 14px;--radius-lg: 20px;--display: "Poppins", "Segoe UI", system-ui, sans-serif;--body: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--wrap: 1120px;--header-h: 76px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:24px}.skip-link{position:absolute;left:-9999px;top:0;z-index:100;padding:12px 20px;background:var(--ink);color:var(--cream);border-radius:0 0 var(--radius) 0}.skip-link:focus{left:0}:focus-visible{outline:3px solid var(--ink);outline-offset:3px}h1,h2,h3{font-family:var(--display);font-weight:800;letter-spacing:-.02em;margin:0}h1{font-size:clamp(3.2rem,9vw,5.6rem);line-height:.92;margin-bottom:1.5rem}h2{font-size:clamp(1.9rem,4.2vw,3rem);line-height:1.06;margin-bottom:2.5rem}h3{font-size:1.15rem;font-weight:700;line-height:1.3;letter-spacing:-.01em}p{margin:0 0 1rem}a{color:inherit}.eyebrow{display:inline-block;margin:0 0 1.25rem;padding:.35rem .9rem;background:var(--paper);border:var(--border);border-radius:999px;box-shadow:var(--shadow-sm);font-family:var(--display);font-size:.72rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;line-height:1.4}.lede{max-width:34rem;color:#40454f;font-size:1.06rem}.rule{border:0;border-top:2px solid rgba(20,22,28,.1);margin-block:0}.site-header{position:sticky;top:0;z-index:50;background:#fbfaf5e0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:2px solid rgba(20,22,28,.1)}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:var(--header-h)}.brand{font-family:var(--display);font-weight:800;font-size:1.15rem;letter-spacing:-.02em;text-decoration:none}.nav{display:flex;align-items:center;gap:14px}.nav-pill{display:flex;align-items:center;gap:2px;margin:0;padding:5px;list-style:none;background:var(--paper);border:var(--border);border-radius:999px;box-shadow:var(--shadow-sm)}.nav-pill a{display:block;padding:7px 14px;border-radius:999px;font-size:.92rem;font-weight:600;text-decoration:none;transition:background .15s ease,color .15s ease}.nav-pill a:hover{background:var(--tint-blue)}.nav-pill a.nav-play{background:var(--uf-orange);color:var(--ink)}.nav-pill a.nav-play:hover{background:#e33d0f}.mail-pill{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;background:var(--paper);border:var(--border);border-radius:999px;box-shadow:var(--shadow-sm);font-size:.88rem;font-weight:600;text-decoration:none;white-space:nowrap}.mail-pill svg{width:16px;height:16px}.hamburger{display:none;flex-direction:column;gap:5px;width:46px;height:42px;padding:0;align-items:center;justify-content:center;background:var(--paper);border:var(--border);border-radius:12px;box-shadow:var(--shadow-sm);cursor:pointer}.hamburger span{display:block;width:20px;height:2.5px;background:var(--ink);border-radius:2px}svg{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}[aria-label=LinkedIn] svg{fill:currentColor;stroke:none}.btn{display:inline-flex;align-items:center;gap:9px;padding:13px 22px;background:var(--paper);border:var(--border);border-radius:999px;box-shadow:var(--shadow);font-family:var(--display);font-weight:700;font-size:.95rem;text-decoration:none;transition:transform .12s ease,box-shadow .12s ease}.btn svg{width:17px;height:17px}.btn-accent{background:var(--gator-blue);color:#fff}.btn:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--ink)}.btn:active{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--ink)}.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:50px;height:50px;background:var(--paper);border:var(--border);border-radius:999px;box-shadow:var(--shadow);transition:transform .12s ease,box-shadow .12s ease}.btn-icon svg{width:20px;height:20px}.btn-icon:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--ink)}.hero{display:grid;grid-template-columns:1.25fr .75fr;gap:56px;align-items:center;padding-block:clamp(56px,9vw,104px)}.cta-row{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:2rem}.hero-media{display:flex;justify-content:center}.headshot{width:100%;max-width:320px;height:auto;aspect-ratio:1;object-fit:cover;border:var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.section{padding-block:clamp(56px,8vw,96px);scroll-margin-top:var(--header-h)}.split{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:start}.split h2{margin-bottom:0}.split-body p{color:#40454f;margin-bottom:1.1rem}.split-body p:last-child{margin-bottom:0}.card{padding:26px;background:var(--paper);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow);transition:transform .15s ease,box-shadow .15s ease}.card:hover{transform:translate(-3px,-3px);box-shadow:8px 8px 0 var(--ink)}.tint-blue{background:var(--tint-blue)}.tint-orange{background:var(--tint-orange)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:24px}.grid-skills{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.card p{color:#3a3f49;font-size:.97rem}.card p:last-of-type{margin-bottom:0}.tags{display:flex;flex-wrap:wrap;gap:7px;margin:1.1rem 0 0;padding:0;list-style:none}.tags li{padding:4px 11px;background:#ffffffd1;border:1.5px solid var(--ink);border-radius:999px;font-size:.76rem;font-weight:600;line-height:1.5}.exp-list{display:grid;gap:24px;margin:0;padding:0;list-style:none}.exp-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:10px}.exp-date{font-family:var(--display);font-size:.8rem;font-weight:600;white-space:nowrap;color:#4b5160}.exp-org{margin:.3rem 0 .9rem;font-weight:600;font-size:.92rem;color:#4b5160}.proj-meta{margin:0 0 .55rem;font-family:var(--display);font-size:.74rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#565c69}.proj h3{margin-bottom:.7rem}.proj-featured{grid-column:1 / -1;border-top:8px solid var(--uf-orange)}.proj-featured h3{font-size:1.5rem;margin-bottom:.85rem}.proj-featured>p{max-width:68ch}.skill h3{margin-bottom:.2rem}.contact-row{display:grid;grid-template-columns:1fr auto;gap:40px;align-items:center}.contact-row h2{margin-bottom:0}.contact-actions{display:flex;flex-direction:column;align-items:flex-start;gap:14px}.contact-secondary{display:flex;gap:12px}.btn-plain{box-shadow:var(--shadow-sm)}.site-footer{border-top:2px solid rgba(20,22,28,.1);padding-block:28px}.footer-inner{display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:center}.footer-inner p{margin:0;font-size:.88rem;color:var(--muted)}.footer-inner a{font-weight:600;color:var(--ink);text-decoration:none}.footer-inner a:hover{text-decoration:underline}@media (max-width: 1040px){.mail-pill span{display:none}.mail-pill{padding:11px}.mail-pill svg{width:18px;height:18px}}@media (max-width: 900px){.hamburger{display:flex}.nav{position:absolute;top:calc(var(--header-h) - 6px);right:24px;left:24px;flex-direction:column;align-items:stretch;gap:12px;padding:16px;background:var(--paper);border:var(--border);border-radius:var(--radius);box-shadow:var(--shadow);display:none}.nav.open{display:flex}.nav-pill{flex-direction:column;align-items:stretch;border:0;border-radius:0;box-shadow:none;padding:0;gap:4px}.nav-pill a{padding:11px 14px;border-radius:10px;font-size:1rem}.mail-pill{justify-content:center;box-shadow:none}.mail-pill span{display:inline}.hero{grid-template-columns:1fr;gap:40px}.hero-media{order:-1;justify-content:flex-start}.headshot{max-width:210px}.split,.contact-row{grid-template-columns:1fr;gap:28px}}@media (max-width: 560px){body{font-size:16px}.wrap{padding-inline:18px}.card{padding:22px}.grid{grid-template-columns:1fr}.exp-head{flex-direction:column;gap:4px}}
