*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--ink: #111;--paper: #f9f6f0;--mid: #666;--light: #aaa;--border: rgba(0,0,0,.1);--serif: "Playfair Display", Georgia, serif;--sans: "DM Sans", sans-serif;--mono: "DM Mono", monospace;--nav-h: 64px;--shadow: 0 8px 24px rgba(0,0,0,.07);--max-w: 1100px}html{scroll-behavior:smooth}body{font-family:var(--sans);background:var(--paper);color:var(--ink);font-size:16px;line-height:1.6;overflow-x:hidden}a{color:inherit;text-decoration:none}img{display:block;width:100%}ul{list-style:none}button,input,textarea{font:inherit;cursor:pointer}p{color:var(--mid);line-height:1.75}h1,h2,h3{font-family:var(--serif);line-height:1.2}h1{font-size:clamp(2rem,5vw,3.8rem)}h2{font-size:clamp(1.5rem,3vw,2.2rem)}h3{font-size:1.2rem}.container{width:min(calc(100% - 2rem),var(--max-w));margin:0 auto}.page-wrap{padding-top:var(--nav-h);min-height:100vh}.section{padding:4.5rem 0}.section-label{font:.72rem var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mid);margin-bottom:.5rem}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.65rem 1.4rem;font-size:.875rem;font-weight:600;border-radius:999px;border:1.5px solid var(--ink)}.btn:hover{opacity:.65}.btn-primary,.btn-accent{background:var(--ink);color:var(--paper)}.btn-outline{background:transparent;color:var(--ink)}.tag{display:inline-block;padding:.25rem .7rem;font:.7rem var(--mono);background:#0000000d;border:1px solid var(--border);border-radius:999px;color:var(--mid)}.tag-accent{font-weight:600;color:var(--ink)}.card{background:#fff;border:1px solid var(--border);border-radius:16px;overflow:hidden;box-shadow:var(--shadow)}.card:hover{box-shadow:0 12px 32px #0000001a}.navbar{position:fixed;inset:0 0 auto;height:var(--nav-h);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#f9f6f0d9;border-bottom:1px solid var(--border);z-index:100;display:flex;align-items:center}.navbar .container{display:flex;align-items:center;justify-content:space-between}.nav-logo{font:700 1.2rem var(--serif)}.nav-links{display:flex;gap:.1rem}.nav-link{padding:.4rem .85rem;font-size:.875rem;color:var(--mid);border-radius:999px}.nav-link:hover,.nav-link.active{color:var(--ink);background:#0000000d}.nav-link.active{font-weight:600}.footer{background:var(--ink);color:var(--paper);padding:2rem 0;margin-top:4rem;border-top:1px solid var(--border)}.footer-inner{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}.footer-logo{font:700 1.1rem var(--serif)}.footer-copy{font-size:.78rem;color:var(--light)}.hero{min-height:calc(100vh - var(--nav-h));display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center}.hero-eyebrow{font:.72rem var(--mono);letter-spacing:.15em;text-transform:uppercase;color:var(--mid);margin-bottom:.75rem}.hero h1{margin-bottom:1rem}.hero-desc{margin-bottom:2rem}.hero-img-wrap{position:relative;width:100%;aspect-ratio:4/5;justify-self:end}.hero-img-frame{position:absolute;inset:0;overflow:hidden;border-radius:20px;box-shadow:var(--shadow)}.hero-img-frame img{width:100%;height:100%;object-fit:cover;display:block}.about-grid{display:grid;grid-template-columns:1fr 1.6fr;gap:4rem;align-items:start}.about-text h2,.about-text p{margin-bottom:1rem}.skills-grid{display:flex;flex-wrap:wrap;gap:.4rem;margin:1rem 0}.specializations li{display:flex;gap:.6rem;padding:.4rem 0;border-bottom:1px solid var(--border);font-size:.875rem;color:var(--mid)}.specializations li:before{content:"→";flex-shrink:0}.resume-section{margin-bottom:2.5rem}.resume-section h3{margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--border)}.timeline-item{display:grid;grid-template-columns:1fr auto;gap:1rem;padding-bottom:1.25rem;margin-bottom:1.25rem;border-bottom:1px solid var(--border)}.timeline-item:last-child{border:none;margin:0;padding:0}.timeline-role{font-weight:600;font-size:.95rem}.timeline-company{font-size:.85rem;color:var(--mid)}.timeline-date{font:.72rem var(--mono);color:var(--light);white-space:nowrap}.timeline-desc{font-size:.85rem;margin-top:.35rem}.edu-item{margin-bottom:1rem}.edu-degree{font-weight:600;font-size:.95rem}.edu-school{font-size:.85rem;color:var(--mid)}.edu-year{font:.72rem var(--mono);color:var(--light)}.portfolio-header{margin-bottom:2rem}.projects-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.25rem}.project-card{cursor:pointer}.project-card-img{aspect-ratio:16/10;overflow:hidden}.project-card-img img{width:100%;height:100%;object-fit:cover}.project-card-body{padding:1.1rem}.project-card-title{font:700 1.1rem var(--serif);margin-bottom:.35rem}.project-card-desc{font-size:.85rem;margin-bottom:.75rem}.project-card-footer{display:flex;justify-content:space-between;align-items:center;padding-top:.75rem;border-top:1px solid var(--border)}.project-link{font-size:.8rem;font-weight:600}.project-detail-hero{background:var(--ink);color:var(--paper);padding:4rem 0}.project-detail-hero p{color:var(--light)}.project-detail-meta{display:flex;flex-wrap:wrap;gap:2rem;margin-top:1.5rem}.meta-item label{font:.68rem var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--light)}.meta-item p{font-size:.875rem;color:var(--paper);margin-top:.2rem}.project-detail-img{aspect-ratio:16/7;overflow:hidden;margin-bottom:3rem}.project-detail-img img{width:100%;height:100%;object-fit:cover}.project-detail-content{max-width:700px}.project-detail-content h3{margin:1.5rem 0 .6rem}.project-detail-content p{margin-bottom:1rem}.project-actions{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:2rem;padding-top:2rem;border-top:1px solid var(--border)}.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem}.blog-card{display:flex;flex-direction:column;cursor:pointer}.blog-card-img{aspect-ratio:16/9;overflow:hidden}.blog-card-img img{width:100%;height:100%;object-fit:cover}.blog-card-body{padding:1rem;flex:1;display:flex;flex-direction:column}.blog-card-meta{display:flex;align-items:center;gap:.6rem;margin-bottom:.4rem}.blog-date{font:.7rem var(--mono);color:var(--light)}.blog-card-title{font:700 1rem/1.3 var(--serif);margin-bottom:.35rem}.blog-card-excerpt{font-size:.82rem;flex:1;margin-bottom:.6rem}.blog-read-more{font-size:.78rem;font-weight:600;margin-top:auto}.blog-detail-header{max-width:660px;margin:0 auto 2rem;text-align:center}.blog-detail-header h1{margin:.6rem 0}.blog-detail-cover{aspect-ratio:16/7;overflow:hidden;border-radius:16px;margin-bottom:2rem;box-shadow:var(--shadow)}.blog-detail-cover img{width:100%;height:100%;object-fit:cover}.blog-detail-body{max-width:660px;margin:0 auto}.blog-detail-body p{margin-bottom:1.1rem;color:var(--ink);line-height:1.8}.blog-back{display:inline-flex;align-items:center;gap:.35rem;font-size:.85rem;color:var(--mid);margin-bottom:1.25rem}.blog-back:hover{color:var(--ink)}.contact-grid{display:grid;grid-template-columns:1fr 1.4fr;gap:4rem;align-items:start}.social-links{display:flex;flex-direction:column;gap:.6rem;margin-top:1.25rem}.social-link{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow)}.social-link:hover{opacity:.65}.social-link-text strong{display:block;font-size:.85rem}.social-link-text span{font-size:.75rem;color:var(--mid)}.contact-form{background:#fff;padding:1.75rem;border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow)}.form-group{margin-bottom:1.1rem}.form-group label{display:block;font:600 .72rem var(--mono);letter-spacing:.05em;text-transform:uppercase;margin-bottom:.35rem}.form-group input,.form-group textarea{width:100%;padding:.65rem .875rem;background:var(--paper);border:1px solid var(--border);border-radius:10px;color:var(--ink);outline:none;resize:vertical}.form-group input:focus,.form-group textarea:focus{border-color:var(--ink)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:.875rem}@media(max-width:820px){.hero,.about-grid{grid-template-columns:1fr;gap:2rem}.hero-img-wrap{justify-self:center;max-width:300px}.contact-grid,.projects-grid{grid-template-columns:1fr}.blog-grid{grid-template-columns:repeat(2,1fr)}.footer-inner{flex-direction:column;align-items:start}}@media(max-width:560px){.section{padding:3.5rem 0}.nav-links{display:none}.blog-grid,.form-row,.timeline-item{grid-template-columns:1fr}}
