@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;700&family=Fraunces:opsz,wght@9..144,500;9..144,700&display=swap";:root{font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--scrollbar-track:#f1e8dbeb;--scrollbar-thumb:#9f4b22;--scrollbar-thumb-hover:#7f3a19;font-family:DM Sans,sans-serif}*{box-sizing:border-box}body{color:#2b231f;background:radial-gradient(circle at 12% 14%,#cd8d5f33,#0000 26%),radial-gradient(circle at 88% 10%,#46664d2e,#0000 22%),linear-gradient(165deg,#f5ecde 0%,#f8f4eb 45%,#f1e8db 100%);margin:0}a{color:inherit}#root{min-height:100vh}*{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:var(--scrollbar-track);border-radius:999px}::-webkit-scrollbar-thumb{background:linear-gradient(180deg, #b76436 0%, var(--scrollbar-thumb) 72%);border:2px solid var(--scrollbar-track);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}.portfolio-page{--ink-900:#1f1713;--ink-700:#4b3e36;--ink-600:#66564c;--paper:#fcf8eed1;--paper-strong:#fffaf1;--line:#60453538;--accent:#9f4b22;--accent-soft:#9f4b221f;--accent-alt:#2f5f47;--shadow-soft:0 16px 50px #2c1e1524;--shadow-card:0 10px 30px #3021181f;max-width:1100px;color:var(--ink-700);margin:0 auto;padding:26px clamp(16px,4vw,44px) 40px;position:relative}.portfolio-page:before{content:"";pointer-events:none;opacity:.4;z-index:-1;background-image:linear-gradient(#644b380b 1px,#0000 1px),linear-gradient(90deg,#644b380b 1px,#0000 1px);background-size:34px 34px;position:fixed;inset:0}.top-rail{border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:4;background:#fffcf6a6;border-radius:999px;justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px;padding:14px 18px;display:flex;position:sticky;top:10px}.brand{letter-spacing:.03em;color:var(--ink-900);margin:0;font-family:Fraunces,serif;font-size:1.05rem}.top-rail nav{flex-wrap:wrap;justify-content:flex-end;gap:14px;display:flex}.top-rail a{letter-spacing:.02em;color:var(--ink-700);border-bottom:2px solid #0000;padding:4px 0;font-size:.93rem;text-decoration:none;transition:color .18s,border-color .18s}.top-rail a:hover{color:var(--accent);border-bottom-color:var(--accent)}.hero-section{border:1px solid var(--line);box-shadow:var(--shadow-soft);background:linear-gradient(140deg,#fffaf1e6 0%,#f8f0e4b8 54%,#f1e9dbcc 100%);border-radius:28px;margin-bottom:28px;padding:clamp(24px,5vw,56px);position:relative;overflow:hidden}.hero-section:after{content:"";aspect-ratio:1;background:radial-gradient(circle,#2f5f472e 0%,#2f5f4700 70%);border-radius:50%;width:46%;position:absolute;top:-40%;right:-10%}.eyebrow{text-transform:uppercase;letter-spacing:.18em;color:var(--accent-alt);z-index:1;margin:0;font-size:.8rem;position:relative}.hero-section h1{max-width:16ch;color:var(--ink-900);letter-spacing:-.02em;z-index:1;margin:10px 0 14px;font-family:Fraunces,serif;font-size:clamp(2.1rem,4.6vw,4.1rem);line-height:1.05;position:relative}.hero-copy{max-width:58ch;color:var(--ink-600);z-index:1;margin:0;line-height:1.6;position:relative}.hero-note{color:#4b3e36db;z-index:1;max-width:62ch;margin:10px 0 0;font-size:.9rem;line-height:1.55;position:relative}.metrics{z-index:1;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:26px;display:grid;position:relative}.metrics article{background:#fffbf4cc;border:1px solid #60453547;border-radius:16px;padding:14px}.metrics h2{color:var(--ink-900);margin:0;font-family:Fraunces,serif;font-size:clamp(1.6rem,2.5vw,2rem)}.metrics p{margin:4px 0 0;font-size:.92rem}.content{gap:20px;display:grid}.content-section{border:1px solid var(--line);background:var(--paper);box-shadow:var(--shadow-card);border-radius:24px;padding:clamp(20px,3.2vw,30px);animation:.65s both reveal-up}.content-section:nth-of-type(2){animation-delay:80ms}.content-section:nth-of-type(3){animation-delay:.13s}.content-section:nth-of-type(4){animation-delay:.18s}.section-header{margin-bottom:18px}.section-header p{color:var(--accent-alt);text-transform:uppercase;letter-spacing:.12em;margin:0;font-size:.78rem}.section-header h2{color:var(--ink-900);margin:6px 0 0;font-family:Fraunces,serif;font-size:clamp(1.6rem,2.5vw,2.3rem)}.card-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.work-card{border:1px solid var(--line);background:var(--paper-strong);border-radius:16px;flex-direction:column;gap:10px;padding:16px;transition:transform .22s,box-shadow .22s,border-color .22s;display:flex}.work-card:hover{border-color:#9f4b2257;transform:translateY(-4px);box-shadow:0 14px 30px #3f2c2129}.card-head{text-transform:uppercase;letter-spacing:.09em;color:var(--ink-600);justify-content:space-between;gap:8px;font-size:.74rem;display:flex}.work-card h3{color:var(--ink-900);margin:0;font-family:Fraunces,serif;font-size:1.2rem;line-height:1.2}.work-card p{margin:0;line-height:1.55}.work-card small{color:var(--ink-600);font-size:.86rem;line-height:1.4}.research-link{letter-spacing:.02em;width:fit-content;color:var(--ink-900);background:linear-gradient(120deg,#9f4b222e 0%,#fffaf2e6 100%);border:1px solid #9f4b2259;border-radius:999px;margin-top:2px;padding:7px 12px;font-size:.84rem;text-decoration:none;transition:transform .18s,border-color .18s,background .18s}.research-link:hover{background:linear-gradient(120deg,#9f4b223d 0%,#fffaf2f2 100%);border-color:#9f4b2280;transform:translateY(-1px)}.research-links{flex-wrap:wrap;gap:8px;margin-top:auto;display:flex}.research-meta{gap:8px;padding-top:10px;display:grid}.research-meta p{margin:0;font-size:.88rem;line-height:1.45}.research-meta strong{color:var(--ink-900);font-weight:600}.research-preview{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.research-details{background:#fff9efbf;border:1px solid #60453533;border-radius:12px;padding:8px 10px}.research-details summary{cursor:pointer;color:var(--ink-900);font-size:.86rem;font-weight:500}.research-details[open] summary{margin-bottom:2px}.social-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.timeline{gap:12px;display:grid}.timeline-item{border:1px solid var(--line);background:var(--paper-strong);border-radius:16px;padding:16px}.timeline-top{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.timeline-top h3{color:var(--ink-900);margin:0;font-family:Fraunces,serif;font-size:1.1rem}.timeline-top span{text-transform:uppercase;letter-spacing:.09em;color:var(--accent-alt);font-size:.78rem}.timeline-item p{margin:10px 0 12px;line-height:1.55}.progress-track{background:var(--accent-soft);border-radius:999px;width:100%;height:10px;overflow:hidden}.progress-fill{border-radius:inherit;background:linear-gradient(90deg, var(--accent), #c98651);height:100%}.skills-layout{grid-template-columns:minmax(170px,240px) 1fr;gap:14px;display:grid}.skill-tabs{align-content:start;gap:8px;display:grid}.skill-tab{border:1px solid var(--line);color:var(--ink-700);text-align:left;font:inherit;cursor:pointer;background:#fcf7ee;border-radius:12px;padding:10px 12px;transition:all .18s}.skill-tab:hover{border-color:#9f4b2259;transform:translate(2px)}.skill-tab.active{color:var(--ink-900);background:linear-gradient(120deg,#9f4b222b 0%,#fffaf2db 88%);border-color:#9f4b2273;font-weight:500}.skill-panel{border:1px solid var(--line);background:var(--paper-strong);border-radius:16px;padding:16px}.skill-panel h3{color:var(--ink-900);margin:0 0 10px;font-family:Fraunces,serif;font-size:1.28rem}.skill-panel ul{gap:8px;margin:0;padding-left:18px;display:grid}.skill-panel li{line-height:1.55}.footer{border-top:1px solid var(--line);color:var(--ink-600);margin-top:20px;padding-top:14px;font-size:.9rem}@keyframes reveal-up{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@media (width<=920px){.card-grid,.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.skills-layout{grid-template-columns:1fr}.skill-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=680px){.top-rail{border-radius:18px;flex-direction:column;align-items:flex-start;position:static}.top-rail nav{justify-content:flex-start;width:100%}.metrics,.card-grid,.skill-tabs,.social-grid{grid-template-columns:1fr}.timeline-top{flex-direction:column;align-items:flex-start}}
