:root{--paper: #f1ece1;--paper-panel: #ece6d8;--ink: #1a1917;--ink-strong: #23211d;--ink-body: #38352e;--ink-body-2: #46433b;--muted: #5b5648;--faint: #8a8474;--faint-2: #a8a192;--line: #1a1917;--line-soft: #d8d0c0;--line-softer: #e4ddce;--hair: #b7ae9a;--border-input: #c9c0ae;--accent: #c05621;--font-display: "Newsreader", Georgia, "Times New Roman", serif;--font-body: "IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", monospace;--container: 1180px;--gutter: 80px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}h1,h2,h3,h4,p{margin:0}a{color:var(--ink);text-decoration:none;transition:color .18s ease}a:hover{color:var(--accent)}::selection{background:var(--accent);color:var(--paper)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}img{max-width:100%;display:block}.container{max-width:var(--container);margin:0 auto;padding-left:var(--gutter);padding-right:var(--gutter)}.mono{font-family:var(--font-mono)}.topbar{display:flex;justify-content:space-between;align-items:center;padding-top:30px}.brand{font-family:var(--font-mono);font-size:13px;font-weight:500;letter-spacing:.04em}.brand span{color:var(--accent)}.nav{display:flex;gap:34px}.nav a{font-family:var(--font-mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.hero{position:relative;padding-top:96px;padding-bottom:70px}.hero-radar{position:absolute;top:8px;right:-150px;width:620px;height:620px;opacity:.55;pointer-events:none}.hero-inner{position:relative;max-width:780px}.eyebrow{display:flex;align-items:center;gap:12px;font-family:var(--font-mono);font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:34px}.eyebrow .dot{width:8px;height:8px;background:var(--accent);border-radius:50%;flex:0 0 auto}.h1{font-family:var(--font-display);font-weight:400;font-size:58px;line-height:1.08;letter-spacing:-.01em;text-wrap:balance;margin-bottom:30px}.h1 em{font-style:italic;color:var(--accent)}.lead{font-size:19px;line-height:1.62;color:var(--ink-body);max-width:620px;margin-bottom:40px}.cta-row{display:flex;gap:16px;align-items:center;flex-wrap:wrap}.btn-primary{display:inline-flex;align-items:center;gap:10px;background:var(--accent);color:#f7f3ea;font-family:var(--font-mono);font-size:13px;letter-spacing:.06em;text-transform:uppercase;padding:15px 26px;border-radius:2px}.btn-primary:hover{color:#fff;filter:brightness(1.05)}.btn-ghost{font-family:var(--font-mono);font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:15px 6px;border-bottom:1px solid var(--border-input)}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px;margin-top:78px;padding-top:34px;border-top:1px solid var(--line-soft);max-width:900px}.stat-num{font-family:var(--font-mono);font-size:40px;font-weight:500;letter-spacing:-.02em}.stat-num sup{font-size:26px;vertical-align:baseline}.stat-cap{font-size:14px;line-height:1.5;color:var(--muted);margin-top:8px}.section{padding-top:96px}.section-head{display:flex;align-items:baseline;gap:20px;border-top:1px solid var(--line);padding-top:20px;margin-bottom:44px}.section-num{font-family:var(--font-mono);font-size:12px;letter-spacing:.16em;color:var(--accent)}.section-label{font-family:var(--font-mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.work{padding-top:60px}.work-divider{display:flex;align-items:baseline;gap:20px;border-top:1px solid var(--line);padding-top:20px}.featured{display:grid;grid-template-columns:.9fr 1.45fr;gap:40px;align-items:center;padding-top:46px}.proj-kicker{font-family:var(--font-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:18px}.proj-title{font-family:var(--font-display);font-weight:400;font-size:40px;line-height:1.1;letter-spacing:-.01em;margin-bottom:22px}.proj-body{font-size:17px;line-height:1.65;color:var(--ink-body);margin-bottom:18px}.metrics{display:flex;flex-wrap:wrap;gap:10px 22px;font-family:var(--font-mono);font-size:12.5px;color:var(--muted);margin:26px 0}.metrics .sep{color:var(--border-input)}.tech-line{font-family:var(--font-mono);font-size:12px;line-height:1.9;color:#746f62}.source-link{display:inline-flex;align-items:center;gap:9px;margin-top:26px;font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid var(--border-input);padding-bottom:3px}.placeholder{border:1px dashed var(--hair);background:var(--paper-panel);border-radius:3px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;text-align:center}.placeholder--wide{aspect-ratio:4 / 3.4}.placeholder--portrait{aspect-ratio:4 / 5}.media{width:100%;border-radius:3px;object-fit:cover;background:var(--paper-panel)}.media--wide{height:auto;border:1px solid var(--line-soft)}.media--portrait{aspect-ratio:4 / 5}.placeholder p{font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;color:var(--faint);line-height:1.6}.placeholder p .dim{color:var(--faint-2)}.work-row{display:grid;grid-template-columns:130px 1fr 260px;gap:30px;padding:34px 0;border-top:1px solid var(--line-soft);align-items:start}.work-when{font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;color:var(--faint);padding-top:5px}.work-tag{display:inline-block;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);border:1px solid var(--accent);border-radius:2px;padding:3px 8px;margin-bottom:14px}.work-title{font-family:var(--font-display);font-weight:400;font-size:27px;line-height:1.15;margin-bottom:12px}.work-desc{font-size:16px;line-height:1.62;color:var(--ink-body-2);max-width:520px}.work-desc strong{font-weight:600}.work-stack{font-family:var(--font-mono);font-size:11.5px;line-height:1.85;color:#746f62;padding-top:4px}.about-grid{display:grid;grid-template-columns:300px 1fr;gap:64px;align-items:start}.about-lead{font-family:var(--font-display);font-weight:300;font-size:27px;line-height:1.4;letter-spacing:-.005em;color:var(--ink-strong);margin-bottom:28px}.about-body{font-size:17px;line-height:1.68;color:var(--ink-body-2);max-width:620px;margin-bottom:20px}.about-meta{display:flex;flex-wrap:wrap;gap:14px 40px;margin-top:34px;font-family:var(--font-mono);font-size:12.5px;color:var(--muted)}.about-meta .k{color:var(--faint-2);margin-right:8px}.edu-grid{display:grid;grid-template-columns:340px 1fr;gap:64px;align-items:start}.col-label{font-family:var(--font-mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:22px}.degree{margin-bottom:28px}.degree-name{font-family:var(--font-display);font-size:23px;line-height:1.25;margin-bottom:5px}.degree-sub{font-size:14.5px;line-height:1.55;color:var(--muted)}.course-row{display:grid;grid-template-columns:68px 1fr;gap:20px;padding:14px 0;border-top:1px solid var(--line-softer)}.course-year{font-family:var(--font-mono);font-size:12px;color:var(--faint);padding-top:2px}.course-name{font-size:16px;line-height:1.45;color:var(--ink-strong)}.course-inst{font-size:13px;color:var(--faint);margin-top:2px}.stack-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px 56px}.stack-cat{font-family:var(--font-mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:14px}.stack-items{font-size:16px;line-height:1.9;color:var(--ink-body)}.contact-inner{border-top:1px solid var(--line);padding-top:60px}.contact-num{font-family:var(--font-mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:26px}.contact-num span{color:var(--accent)}.contact-h2{font-family:var(--font-display);font-weight:400;font-size:58px;line-height:1.05;letter-spacing:-.015em;margin-bottom:34px;max-width:720px}.contact-h2 em{font-style:italic;color:var(--accent)}.contact-email{font-family:var(--font-display);font-size:30px;border-bottom:1px solid var(--border-input);padding-bottom:4px}.contact-links{display:flex;flex-wrap:wrap;gap:28px;margin-top:54px;font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase}.contact-links a{color:var(--muted)}.footer{padding-top:90px;padding-bottom:46px}.footer-inner{display:flex;justify-content:space-between;align-items:baseline;gap:16px;border-top:1px solid var(--line-soft);padding-top:22px;font-family:var(--font-mono);font-size:11.5px;letter-spacing:.06em;color:var(--faint)}@media (max-width: 1080px){:root{--gutter: 48px}.hero-radar{right:-220px;opacity:.4}}@media (max-width: 860px){:root{--gutter: 28px}.h1{font-size:44px}.hero{padding-top:64px}.hero-radar{width:460px;height:460px;right:-180px;top:-20px}.featured{grid-template-columns:1fr;gap:32px}.proj-title{font-size:32px}.about-grid{grid-template-columns:1fr;gap:36px}.placeholder--portrait{max-width:260px}.edu-grid{grid-template-columns:1fr;gap:40px}.stack-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 40px}.work-row{grid-template-columns:1fr;gap:14px}.work-when,.work-stack{padding-top:0}.contact-h2{font-size:40px}.stats{gap:28px}.stat-num{font-size:32px}}@media (max-width: 560px){.topbar{flex-direction:column;align-items:flex-start;gap:16px}.nav{gap:22px;flex-wrap:wrap}.h1{font-size:36px}.stats{grid-template-columns:1fr;gap:22px}.stack-grid{grid-template-columns:1fr}.footer-inner{flex-direction:column;gap:8px}.hero-radar{display:none}}
