:root{--ink:#14284f;--ink-deep:#0b1937;--paper:#f5f1e9;--white:#fffdf9;--coral:#ef795f;--coral-deep:#d65d48;--sage:#a8c0ae;--line:#d7d1c6;--muted:#716e68;--serif:Georgia,'Times New Roman',serif;--sans:'DM Sans',sans-serif;--display:Manrope,'DM Sans',sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.55}.grain{position:fixed;inset:0;opacity:.035;pointer-events:none;z-index:20;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.35'/%3E%3C/svg%3E")}.container{width:min(1160px,calc(100% - 64px));margin:auto}.section{padding:120px 0}.site-header{position:sticky;top:0;z-index:15;background:rgba(245,241,233,.9);backdrop-filter:blur(16px);border-bottom:1px solid rgba(20,40,79,.08)}.nav{height:76px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);font-family:var(--display);font-weight:800;letter-spacing:-.04em;text-decoration:none;white-space:nowrap}.brand-mark{display:grid;place-items:center;background:var(--coral);color:var(--ink);width:31px;height:31px;border-radius:50%;font-size:17px}.nav-links{display:flex;gap:22px;margin-left:auto}.nav-links a,.footer-links a{font-size:12px;color:var(--ink);text-decoration:none;font-weight:600}.nav-links a:hover,.footer-links a:hover{color:var(--coral-deep)}.nav-actions{display:flex;align-items:center;gap:9px}.icon-link,.footer-social a{display:grid;place-items:center;width:34px;height:34px;color:var(--ink);border:1px solid var(--line);border-radius:50%}.icon-link svg,.footer-social svg{width:15px}.button{display:inline-flex;align-items:center;justify-content:center;gap:9px;text-decoration:none;border:1px solid transparent;min-height:45px;padding:0 19px;font-weight:700;font-size:12px;letter-spacing:.01em;cursor:pointer}.button svg,.text-link svg,.project-footer svg,.insight-card svg{width:15px}.button-ink{background:var(--ink);color:var(--white)}.button-ink:hover{background:var(--coral);color:var(--ink)}.button-small{min-height:35px;padding:0 13px}.menu-toggle{display:none;background:none;border:0;color:var(--ink);padding:5px}.hero{min-height:690px;display:grid;grid-template-columns:1fr .95fr;align-items:center;gap:70px;padding-top:80px;padding-bottom:90px}.eyebrow{display:flex;align-items:center;gap:10px;margin:0 0 25px;color:var(--coral-deep);font-family:var(--display);font-size:10px;font-weight:800;letter-spacing:.16em;text-transform:uppercase}.eyebrow-line{width:33px;height:1px;background:var(--coral)}h1,h2,h3,p{margin-top:0}h1,h2{font-family:var(--display);letter-spacing:-.075em;line-height:.98}h1{font-size:clamp(58px,7.5vw,102px);margin:0 0 28px;font-weight:800}h1 em,h2 em{font-family:var(--serif);font-weight:400;color:var(--coral);letter-spacing:-.07em}h1 span{color:var(--coral)}.hero-title{font-family:var(--display);font-size:20px;font-weight:700;letter-spacing:-.035em;margin-bottom:13px}.hero-intro{max-width:495px;color:var(--muted);font-size:16px;margin-bottom:30px}.hero-actions{display:flex;align-items:center;gap:25px}.text-link{display:inline-flex;align-items:center;gap:8px;color:var(--ink);font-size:12px;font-weight:700;text-decoration:none;border-bottom:1px solid var(--ink);padding-bottom:5px}.hero-meta{display:flex;gap:30px;margin-top:66px;font-size:10px;text-transform:uppercase;letter-spacing:.15em;color:var(--muted)}.hero-meta span:last-child{color:var(--ink)}.hero-visual{position:relative;min-height:560px;display:grid;place-items:center}.photo-frame{position:relative;width:min(390px,72vw);aspect-ratio:4/5;background:var(--ink);padding:14px;transform:rotate(3deg);box-shadow:24px 25px 0 var(--coral)}.photo-frame img{width:100%;height:100%;object-fit:cover;position:relative;z-index:1}.photo-backdrop{position:absolute;inset:34px -22px -25px 37px;border:1px solid var(--sage);opacity:.7}.photo-placeholder{position:absolute;inset:14px;z-index:2;display:none;place-items:center;align-content:center;gap:8px;background:linear-gradient(145deg,#d8dfd6,#aabcaf);color:var(--ink);text-align:center}.photo-placeholder svg{width:60px;height:60px;stroke-width:1}.photo-placeholder small{font-size:11px}.photo-placeholder code{font-family:var(--sans)}.photo-label{position:absolute;bottom:25px;left:26px;z-index:3;font-size:10px;letter-spacing:.16em;color:var(--white)}.float-tag{position:absolute;background:var(--white);padding:10px 13px;box-shadow:0 12px 28px rgba(20,40,79,.12);font-weight:700;font-size:12px;z-index:4}.float-tag span{display:inline-block;width:7px;height:7px;background:var(--coral);border-radius:50%;margin-left:12px}.tag-python{top:18%;left:2%;transform:rotate(-7deg)}.tag-sql{top:33%;right:1%;transform:rotate(6deg)}.tag-finance{bottom:24%;left:4%;transform:rotate(-3deg)}.photo-socials{position:absolute;bottom:25px;right:0;display:flex;flex-direction:column;gap:9px}.photo-socials a{display:flex;align-items:center;gap:7px;color:var(--ink);font-size:11px;text-decoration:none}.photo-socials svg{width:13px}.ticker{overflow:hidden;background:var(--coral);border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);padding:14px 0}.ticker-track{display:flex;justify-content:space-around;align-items:center;min-width:900px;font-family:var(--display);font-size:12px;font-weight:800;letter-spacing:.13em;white-space:nowrap}.ticker b{font-size:18px;font-weight:400}.section-intro{display:grid;grid-template-columns:1fr 1fr;align-items:end;margin-bottom:60px}.section-intro h2,.section-head h2{font-size:clamp(42px,5vw,65px);margin-bottom:0}.section-intro>p{max-width:390px;color:var(--muted);margin:0 0 4px}.snapshot-grid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--ink)}.snapshot-card{position:relative;min-height:250px;padding:24px;border-right:1px solid rgba(20,40,79,.2);transition:transform .3s ease}.snapshot-card:hover{transform:translateY(-8px)}.snapshot-card:first-child{border-left:1px solid rgba(20,40,79,.2)}.snapshot-card svg{width:29px;height:29px;margin:40px 0 30px}.snapshot-card h3{font-family:var(--display);font-size:18px;margin-bottom:7px;letter-spacing:-.04em}.snapshot-card p{font-size:12px;line-height:1.5;max-width:140px}.card-index{position:absolute;top:23px;right:22px;font-size:10px;font-weight:700;opacity:.6}.card-navy{background:var(--ink);color:var(--white)}.card-coral{background:var(--coral)}.card-cream{background:var(--white)}.card-sage{background:var(--sage)}.section-tint{background:#e9e4da}.about-grid{display:grid;grid-template-columns:.9fr 1.2fr;gap:130px;align-items:center}.about-image{position:relative}.mini-photo{width:260px;aspect-ratio:3/4;background:var(--ink);padding:10px;transform:rotate(-4deg)}.mini-photo img{width:100%;height:100%;object-fit:cover}.mini-photo .photo-placeholder{inset:10px}.mini-photo .photo-placeholder svg{width:40px}.image-caption{position:absolute;bottom:-35px;left:210px;font-family:var(--serif);font-size:23px;line-height:1.05;color:var(--coral-deep);transform:rotate(-5deg)}.about-copy{max-width:600px}.about-copy h2{font-size:clamp(43px,5vw,67px);margin-bottom:35px}.about-copy>p{color:var(--muted);max-width:560px}.status-card{border-top:1px solid var(--ink);margin-top:35px;display:grid;grid-template-columns:1fr 1fr}.status-card>div{padding:15px 15px 15px 0;border-bottom:1px solid var(--line)}.status-card span,.case-columns span{display:block;color:var(--coral-deep);font-size:9px;text-transform:uppercase;letter-spacing:.14em;font-weight:800;margin-bottom:6px}.status-card strong{font-size:13px}.section-head{display:flex;justify-content:space-between;align-items:end;gap:40px;margin-bottom:45px}.section-head>p{max-width:320px;color:var(--muted);margin:0}.filter-row{display:flex;gap:7px;flex-wrap:wrap}.filter{border:1px solid var(--line);background:transparent;color:inherit;padding:8px 13px;font-family:var(--sans);font-size:11px;cursor:pointer}.filter.active,.filter:hover{background:var(--ink);color:var(--white);border-color:var(--ink)}.skills-layout{display:grid;grid-template-columns:1fr 250px;gap:55px;margin-top:22px}.skill-row{display:grid;grid-template-columns:1.2fr 1.8fr 85px 95px;gap:20px;align-items:center;padding:17px 0;border-top:1px solid var(--line);transition:padding .25s}.skill-row:hover{padding-left:10px;padding-right:10px;background:rgba(255,255,255,.35)}.skill-name{display:grid;grid-template-columns:12px 1fr;align-items:center;gap:5px}.skill-name strong{font-family:var(--display);font-size:14px;letter-spacing:-.03em}.skill-name small{grid-column:2;color:var(--muted);font-size:10px}.skill-dot{width:7px;height:7px;border-radius:50%;grid-row:span 2}.status-current{background:#4a8266}.status-learning{background:var(--coral)}.status-future{background:var(--ink)}.skill-description{color:var(--muted);font-size:12px}.status-pill{font-size:10px;font-weight:700}.skill-level{font-size:11px;color:var(--muted);text-align:right}.skill-stat{border-top:2px solid var(--ink);padding-top:12px;margin-bottom:30px}.skill-stat strong{display:block;font-family:var(--display);font-size:55px;letter-spacing:-.09em}.skill-stat span{font-size:10px;text-transform:uppercase;letter-spacing:.14em}.skill-note{background:var(--sage);padding:22px}.skill-note svg{width:20px}.skill-note p{font-family:var(--serif);font-size:20px;line-height:1.1;margin:25px 0 0}.section-dark{background:var(--ink);color:var(--white)}.light .eyebrow{color:var(--coral)}.light h2{color:var(--white)}.light>p{color:#b6bdc9}.project-toolbar{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:22px}.section-dark .filter{border-color:#52617d;color:#d8dce4}.section-dark .filter.active,.section-dark .filter:hover{background:var(--coral);border-color:var(--coral);color:var(--ink)}.search-box{display:flex;align-items:center;gap:8px;border-bottom:1px solid #7c879d;padding:7px 0;width:180px}.search-box svg{width:15px}.search-box input{border:0;outline:0;background:transparent;color:var(--white);font:inherit;font-size:12px;width:100%}.search-box input::placeholder{color:#9ca7b9}.project-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.project-card{background:var(--white);color:var(--ink);display:grid;grid-template-columns:.85fr 1.15fr;min-height:285px}.project-art{position:relative;overflow:hidden;padding:17px;background:var(--coral);min-height:100%}.project-art.art-1{background:var(--sage)}.project-art.art-2{background:#ded2bb}.project-art>span{font-family:var(--display);font-size:13px;font-weight:700}.project-art svg{position:absolute;right:17px;top:17px;width:17px}.art-lines{position:absolute;inset:38% 10% 18%;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);transform:skewY(-12deg)}.art-lines:after,.art-lines:before{content:'';position:absolute;left:15%;right:10%;top:48%;height:1px;background:var(--ink);transform:rotate(22deg)}.art-lines:before{left:40%;right:-5%;top:20%;transform:rotate(-32deg)}.project-content{padding:24px 23px;display:flex;flex-direction:column}.project-meta{display:flex;justify-content:space-between;color:var(--coral-deep);font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.12em}.project-card h3{font-family:var(--display);font-size:22px;letter-spacing:-.05em;margin:23px 0 10px}.project-card p{color:var(--muted);font-size:12px;line-height:1.5}.tag-list{display:flex;gap:5px;flex-wrap:wrap;margin-top:auto}.tag-list span{background:#ebe6dc;padding:5px 8px;font-size:10px}.project-footer{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);margin-top:18px;padding-top:12px;font-size:11px;color:var(--muted)}.project-footer a{color:var(--ink);text-decoration:none;font-weight:700;display:flex;align-items:center;gap:5px}.empty-state{color:#b6bdc9}.lab{background:var(--paper)}.lab-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.panel{background:var(--white);border:1px solid var(--line);padding:25px}.panel-top{display:flex;justify-content:space-between;align-items:center;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.12em;border-bottom:1px solid var(--line);padding-bottom:15px}.panel-top svg{width:19px;color:var(--coral-deep)}.input-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:25px 0}.input-grid label,.contact-form label{display:grid;gap:6px;color:var(--muted);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.input-grid input,.contact-form input,.contact-form textarea{width:100%;border:1px solid var(--line);padding:10px;background:var(--paper);color:var(--ink);font:inherit;outline-color:var(--coral)}.output-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:2px solid var(--ink);padding-top:16px;gap:10px}.output-grid span{display:block;color:var(--muted);font-size:10px}.output-grid strong{font-family:var(--display);font-size:20px;letter-spacing:-.05em}.section-coral{background:var(--coral);color:var(--ink)}.case-grid{display:grid;grid-template-columns:220px 1fr;gap:70px}.case-label .case-number{display:block;font-family:var(--display);font-size:110px;line-height:.8;letter-spacing:-.1em;margin:50px 0 30px}.case-label>p:last-child{font-size:11px;text-transform:uppercase;letter-spacing:.14em;font-weight:800}.case-content h2,.contact h2{font-size:clamp(46px,6vw,80px);margin-bottom:55px}.case-content h2 em,.contact h2 em{color:var(--ink)}.equation{display:flex;align-items:center;gap:17px;font-size:14px;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);padding:17px 0;margin-bottom:40px}.equation i{font-family:var(--serif);font-size:25px;font-style:normal}.equation strong{font-family:var(--serif);font-size:21px;font-weight:400}.case-columns{display:grid;grid-template-columns:repeat(2,1fr);gap:27px 50px}.case-columns>div{border-bottom:1px solid rgba(20,40,79,.35);padding-bottom:16px}.case-columns strong{font-family:var(--serif);font-size:18px;font-weight:400;line-height:1.15}.finance-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:100px}.finance-copy h2{font-size:clamp(44px,5vw,66px)}.finance-copy>p{color:var(--muted);max-width:400px}.disclaimer{display:inline-flex;align-items:center;gap:8px;margin-top:18px;font-size:10px;text-transform:uppercase;letter-spacing:.1em}.disclaimer svg{width:14px;color:var(--coral-deep)}.finance-modules{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--ink)}.finance-module{padding:24px 20px 25px 0;border-bottom:1px solid var(--line)}.finance-module:nth-child(even){padding-left:20px;border-left:1px solid var(--line)}.finance-module span{font-size:10px;color:var(--coral-deep);font-weight:800}.finance-module svg{width:22px;display:block;margin:38px 0 25px}.finance-module h3{font-family:var(--display);font-size:16px;margin-bottom:6px}.finance-module p{color:var(--muted);font-size:12px;margin:0}.insight-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.insight-card{border-top:2px solid var(--ink);padding:18px 5px 0;min-height:220px}.insight-index{float:right;font-family:var(--display);font-weight:800;color:var(--coral-deep)}.insight-card small{font-size:10px;color:var(--coral-deep);text-transform:uppercase;letter-spacing:.12em;font-weight:800}.insight-card h3{font-family:var(--display);font-size:22px;letter-spacing:-.05em;margin:28px 0 10px}.insight-card p{color:var(--muted);font-size:12px}.insight-card a{display:inline-flex;gap:5px;align-items:center;color:var(--ink);font-size:11px;font-weight:700;text-decoration:none;margin-top:12px}.resume-card{background:var(--ink);color:var(--white);padding:50px 55px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:30px}.resume-card .eyebrow{color:var(--coral)}.resume-card h2{font-size:clamp(42px,5vw,65px);margin-bottom:15px}.resume-card p{color:#b6bdc9;max-width:400px}.button-cream{background:var(--paper);color:var(--ink)}.button-outline-light{border-color:#758098;color:var(--white)}.resume-actions{display:flex;flex-direction:column;gap:10px}.resume-strip{grid-column:1/-1;display:flex;gap:40px;border-top:1px solid #53627e;padding-top:22px;margin-top:20px;color:#aab3c3;font-size:11px}.resume-strip b{color:var(--coral);font-family:var(--display);font-size:20px;margin-right:5px}.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:100px}.contact h2{margin-bottom:20px}.contact p{max-width:430px}.contact-links{margin-top:40px;border-top:1px solid var(--ink)}.contact-links a{display:grid;grid-template-columns:25px 1fr 15px;align-items:center;gap:10px;color:var(--ink);text-decoration:none;padding:16px 0;border-bottom:1px solid rgba(20,40,79,.3)}.contact-links svg{width:17px}.contact-links span{font-family:var(--display);font-weight:800}.contact-links small{display:block;font-family:var(--sans);font-size:10px;font-weight:400;color:var(--ink);opacity:.7}.contact-form{background:var(--paper);padding:30px;display:grid;gap:17px}.contact-form textarea{resize:vertical}.form-note{font-size:10px;color:var(--muted);margin:0}.footer{background:var(--ink-deep);color:var(--white);padding:52px 0 20px}.footer .brand{color:var(--white)}.footer-top{display:grid;grid-template-columns:1.2fr 1.6fr auto;gap:30px;align-items:start}.footer-top>div>p{font-size:11px;color:#aeb6c5;margin-top:17px}.footer-links{display:flex;flex-wrap:wrap;gap:12px 20px;padding-top:9px}.footer-links a{color:#c0c7d2}.footer-social{display:flex;gap:8px}.footer-social a{color:var(--white);border-color:#53617d}.footer-bottom{display:flex;justify-content:space-between;border-top:1px solid #344461;margin-top:48px;padding-top:18px;color:#8894a9;font-size:10px}.reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease}.reveal.is-visible{opacity:1;transform:none}.reveal-delay{transition-delay:.15s}@media(max-width:900px){.container{width:min(100% - 40px,650px)}.nav-links{display:none;position:absolute;top:76px;left:0;right:0;background:var(--paper);padding:20px;flex-direction:column;gap:0;border-bottom:1px solid var(--line)}.nav-links.open{display:flex}.nav-links a{padding:12px 0;border-bottom:1px solid var(--line)}.nav-actions .button{display:none}.menu-toggle{display:block}.hero{grid-template-columns:1fr;gap:25px;padding-top:60px}.hero-visual{min-height:510px;order:-1}.hero-copy{padding-bottom:30px}.hero-meta{margin-top:35px}.snapshot-grid{grid-template-columns:repeat(2,1fr)}.snapshot-card:nth-child(2){border-right:0}.snapshot-card:nth-child(3){border-left:1px solid rgba(20,40,79,.2)}.section-intro,.about-grid,.finance-grid,.contact-grid{grid-template-columns:1fr;gap:45px}.about-image{margin:auto}.skills-layout{grid-template-columns:1fr}.skill-aside{display:grid;grid-template-columns:1fr 1fr;gap:30px}.project-grid,.lab-grid{grid-template-columns:1fr}.finance-modules{max-width:600px}.footer-top{grid-template-columns:1fr}.footer-bottom{gap:10px;flex-direction:column}.case-grid{grid-template-columns:1fr;gap:20px}.case-label .case-number{margin:20px 0}.case-content h2{margin-bottom:35px}}@media(max-width:560px){.container{width:calc(100% - 32px)}.nav{height:68px}.nav-links{top:68px}.brand{font-size:13px}.icon-link{width:30px;height:30px}.hero{padding-top:42px}.hero-visual{min-height:410px}.photo-frame{width:260px;box-shadow:16px 18px 0 var(--coral)}.photo-socials{right:0;bottom:10px}.float-tag{font-size:10px;padding:8px 10px}.tag-python{top:10%;left:0}.tag-sql{right:0;top:28%}.tag-finance{left:0;bottom:18%}h1{font-size:57px}.hero-title{font-size:17px}.hero-actions{align-items:flex-start;flex-direction:column;gap:17px}.section{padding:80px 0}.snapshot-grid{grid-template-columns:1fr 1fr}.snapshot-card{min-height:220px;padding:16px}.snapshot-card svg{margin:35px 0 23px;width:23px}.snapshot-card h3{font-size:15px}.snapshot-card p{font-size:10px}.about-copy h2{font-size:46px}.status-card{grid-template-columns:1fr}.skill-row{grid-template-columns:1fr 70px;gap:8px 15px}.skill-description{grid-column:1/-1;grid-row:2}.skill-level{text-align:right;grid-column:2;grid-row:1}.status-pill{grid-column:1}.skill-aside{display:block}.skill-note{margin-top:20px}.project-toolbar{align-items:flex-start;flex-direction:column}.search-box{width:100%}.project-card{grid-template-columns:1fr}.project-art{min-height:145px}.case-columns{grid-template-columns:1fr;gap:17px}.equation{align-items:flex-start;flex-direction:column;gap:3px}.finance-modules{grid-template-columns:1fr}.finance-module:nth-child(even){padding-left:0;border-left:0}.insight-grid{grid-template-columns:1fr}.resume-card{padding:32px 23px;display:block}.resume-actions{margin-top:25px}.resume-strip{gap:15px;flex-wrap:wrap;margin-top:28px}.resume-strip b{font-size:16px}.contact-form{padding:20px}.footer-links{gap:12px 15px}}