.navbar{align-items:center;background-color:initial;border-bottom:1px solid #0000;display:flex;justify-content:space-between;left:0;padding:18px clamp(20px,6vw,80px);position:fixed;right:0;top:0;transition:background-color .4s ease,padding .3s ease,border-color .4s ease,-webkit-backdrop-filter .4s ease;transition:background-color .4s ease,padding .3s ease,border-color .4s ease,backdrop-filter .4s ease;transition:background-color .4s ease,padding .3s ease,border-color .4s ease,backdrop-filter .4s ease,-webkit-backdrop-filter .4s ease;z-index:50}.navbar.scrolled{-webkit-backdrop-filter:blur(16px) saturate(140%);backdrop-filter:blur(16px) saturate(140%);background-color:#f5efe6c7;border-bottom:1px solid var(--line-soft);padding:12px clamp(20px,6vw,80px)}body.dark-mode .navbar{background-color:initial}body.dark-mode .navbar.scrolled{background-color:#0d0c0ac7;border-bottom-color:var(--line)}.navbar-mark{align-items:center;display:inline-flex;flex-shrink:0;gap:6px;text-decoration:none}.navbar-mark-letters{color:var(--ink);font-family:var(--font-display);font-size:22px;font-variation-settings:"opsz" 144,"SOFT" 60;font-weight:600;letter-spacing:-.04em;transition:color .2s ease}.navbar:not(.scrolled) .navbar-mark-letters{color:#f5efe6f2}.navbar-mark:hover .navbar-mark-letters{color:var(--accent)}.navbar-links{align-items:center;display:flex;gap:4px}.navbar-link{align-items:center;border-radius:999px;color:var(--ink-muted);display:inline-flex;font-family:var(--font-body);font-size:13px;font-weight:500;gap:8px;letter-spacing:0;padding:8px 14px;text-decoration:none;transition:color .2s ease,background-color .25s ease}.navbar:not(.scrolled) .navbar-link{color:#f5efe6a6}.navbar-link-num{color:var(--ink-muted);font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;opacity:.7;transition:color .2s ease,opacity .2s ease}.navbar:not(.scrolled) .navbar-link-num{color:#f5efe673}.navbar-link:hover{color:var(--ink)}.navbar:not(.scrolled) .navbar-link:hover{color:#f5efe6}.navbar-link.is-active{background-color:var(--paper-warm);color:var(--ink)}.navbar:not(.scrolled) .navbar-link.is-active{background-color:#f5efe614;color:#f5efe6}.navbar-link.is-active .navbar-link-num{color:var(--accent);opacity:1}.navbar-theme-toggle{align-items:center;background-color:initial;border:1px solid var(--line);border-radius:999px;color:var(--ink);cursor:pointer;display:inline-flex;height:36px;justify-content:center;transition:all .25s ease;width:36px}.navbar:not(.scrolled) .navbar-theme-toggle{border-color:#f5efe633;color:#f5efe6d9}.navbar-theme-toggle:hover{background-color:var(--paper-warm);border-color:var(--accent);color:var(--accent)}.navbar:not(.scrolled) .navbar-theme-toggle:hover{background-color:#f5efe61a;border-color:var(--accent);color:#f5efe6}@media (max-width:768px){.navbar{padding:14px 20px}.navbar.scrolled{padding:10px 20px}.navbar-link-name{display:none}.navbar-link{padding:6px 10px}.navbar-link-num{font-size:11px}}@media (max-width:480px){.navbar-links{gap:2px}.navbar-link{padding:5px 8px}}.hero{background-color:#0d0c0a;color:#f5efe6;display:flex;flex-direction:column;min-height:100vh;overflow:hidden;padding:clamp(80px,11vh,140px) clamp(20px,6vw,80px) clamp(80px,10vh,120px);position:relative}.hero-pinstripes{background-image:repeating-linear-gradient(100deg,#0000,#0000 18px,hsla(30,53%,64%,.045) 0,hsla(30,53%,64%,.045) 19px)}.hero-grain,.hero-pinstripes{inset:0;pointer-events:none;position:absolute;z-index:1}.hero-grain{background-image:url("data:image/svg+xml;utf8,<svg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 200 200%27><filter id=%27n%27><feTurbulence type=%27fractalNoise%27 baseFrequency=%270.9%27 numOctaves=%272%27 stitchTiles=%27stitch%27/><feColorMatrix type=%27matrix%27 values=%270 0 0 0 0.96  0 0 0 0 0.94  0 0 0 0 0.90  0 0 0 0.08 0%27/></filter><rect width=%27200%27 height=%27200%27 filter=%27url%28%23n%29%27/></svg>");background-size:200px 200px;mix-blend-mode:overlay;opacity:.55}.hero-curve{bottom:14%;height:52%;left:0;opacity:.9;pointer-events:none;position:absolute;width:100%;z-index:1}.hero-curve-grid{animation:hero-fade .5s ease-out forwards;opacity:0}.hero-curve-path{stroke-dasharray:2400;stroke-dashoffset:2400;animation:hero-draw 2.6s cubic-bezier(.65,0,.35,1) .4s forwards}.hero-curve-mark{animation:hero-fade .4s ease-out forwards;opacity:0;transform-origin:center}@keyframes hero-draw{to{stroke-dashoffset:0}}@keyframes hero-fade{to{opacity:1}}.hero-statusbar{align-items:center;display:flex;flex-wrap:wrap;gap:24px;justify-content:space-between;margin:0 auto clamp(40px,8vh,96px);max-width:1280px;position:relative;width:100%;z-index:3}.hero-eyebrow{align-items:center;color:#d4a373f2;display:inline-flex;font-family:var(--font-mono);font-size:11px;font-weight:500;gap:10px;letter-spacing:.18em;text-transform:uppercase}.hero-eyebrow-dot{animation:hero-dot-pulse 2.4s ease-in-out infinite;background-color:#b87333;background-color:var(--accent,#b87333);border-radius:50%;box-shadow:0 0 0 4px #b873332e;height:6px;width:6px}@keyframes hero-dot-pulse{0%,to{box-shadow:0 0 0 4px #b873332e}50%{box-shadow:0 0 0 9px #b873330a}}.hero-clock-group{flex-wrap:wrap;gap:14px}.hero-clock-group,.hero-market-pill{align-items:center;display:inline-flex}.hero-market-pill{border:1px solid #f5efe61f;border-radius:999px;color:#f5efe699;font-family:var(--font-mono);font-size:10.5px;font-weight:500;gap:8px;letter-spacing:.14em;padding:6px 12px;text-transform:uppercase}.hero-market-pill--open{border-color:#d4a37359;color:var(--accent)}.hero-market-bullet{background-color:#f5efe666;border-radius:50%;display:inline-block;height:5px;width:5px}.hero-market-pill--open .hero-market-bullet{animation:hero-bullet-pulse 2s ease-in-out infinite;background-color:var(--accent)}@keyframes hero-bullet-pulse{0%,to{opacity:1}50%{opacity:.35}}.hero-clock{align-items:baseline;display:inline-flex;font-family:var(--font-mono);font-size:11px;gap:8px;letter-spacing:.12em;text-transform:uppercase}.hero-clock-label{color:#f5efe680;font-weight:500}.hero-clock-digits{font-feature-settings:"tnum";color:var(--accent);font-variant-numeric:tabular-nums;font-weight:500;letter-spacing:.06em}.hero-grid{grid-gap:clamp(40px,6vw,96px);align-items:start;display:grid;gap:clamp(40px,6vw,96px);grid-template-columns:minmax(0,1.55fr) minmax(0,.85fr);margin:auto;max-width:1280px;position:relative;width:100%;z-index:2}.hero-name-block{display:flex;flex-direction:column;gap:28px;min-width:0}.hero-name-meta{align-items:center;color:#f5efe680;display:inline-flex;font-family:var(--font-mono);font-size:11px;font-weight:500;gap:12px;letter-spacing:.16em;text-transform:uppercase}.hero-name-meta-num{color:var(--accent);font-weight:600;letter-spacing:.12em}.hero-name-meta-line{background-color:#d4a37366;display:inline-block;height:1px;width:36px}.hero-name{color:#f5efe6;display:flex;flex-direction:column;font-family:var(--font-display);font-size:clamp(64px,13vw,200px);font-variation-settings:"opsz" 144,"SOFT" 30;font-weight:400;letter-spacing:-.045em;line-height:.86;margin:0;text-shadow:0 1px 0 #0003}.hero-name-first{display:block}.hero-name-last{display:block;margin-left:clamp(28px,7vw,110px);position:relative}.hero-name-last em{color:var(--accent);font-style:italic;font-variation-settings:"opsz" 144,"SOFT" 100}.hero-name-period{color:var(--accent);display:inline-block;font-style:normal;margin-left:-.05em}.hero-role{border-left:2px solid var(--accent);color:#f5efe6d1;font-family:var(--font-body);font-size:clamp(15px,1.3vw,18px);font-weight:400;line-height:1.5;margin-top:4px;max-width:480px;padding:0 0 0 16px;text-align:left}.hero-spec{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:hsla(36,43%,93%,.025);border:1px solid #f5efe61a;border-radius:4px;display:flex;flex-direction:column;gap:16px;margin-top:clamp(24px,4vh,56px);padding:22px 26px 20px;position:relative}.hero-spec:before{background-color:var(--accent);content:"";height:2px;left:22px;position:absolute;top:-1px;width:40px}.hero-spec-head{align-items:baseline;border-bottom:1px solid #f5efe614;display:flex;font-family:var(--font-mono);font-size:10.5px;gap:16px;justify-content:space-between;letter-spacing:.16em;padding-bottom:14px;text-transform:uppercase}.hero-spec-title{color:#f5efe6f2;font-weight:600}.hero-spec-id{color:#f5efe66b;font-weight:500}.hero-spec-list{display:flex;flex-direction:column;list-style:none;margin:0;padding:0}.hero-spec-row{grid-gap:14px;align-items:baseline;animation:hero-spec-reveal .5s ease-out forwards;border-bottom:1px solid #f5efe60d;cursor:default;display:grid;font-family:var(--font-mono);font-size:11px;gap:14px;grid-template-columns:24px 80px minmax(0,1fr);letter-spacing:.04em;opacity:0;padding:11px 0;position:relative;transform:translateY(8px);transition:background-color .2s ease,padding-left .25s ease}.hero-spec-row:last-child{border-bottom:none}.hero-spec-row:before{background-color:var(--accent);content:"";height:0;left:-8px;position:absolute;top:50%;transform:translateY(-50%);transition:height .25s ease;width:4px}.hero-spec-row:hover{padding-left:8px}.hero-spec-row:hover:before{height:60%}.hero-spec-row:hover .hero-spec-value{color:#f5efe6}@keyframes hero-spec-reveal{to{opacity:1;transform:translateY(0)}}.hero-spec-num{font-feature-settings:"tnum";color:var(--accent);font-variant-numeric:tabular-nums;font-weight:500}.hero-spec-label{color:#f5efe685;font-size:10px;font-weight:500;letter-spacing:.14em;text-transform:uppercase}.hero-spec-value{font-feature-settings:"tnum";color:#f5efe6e6;line-height:1.4;transition:color .2s ease;word-break:break-word}.hero-spec-foot{border-top:1px solid #f5efe614;display:flex;flex-wrap:wrap;gap:16px;padding-top:14px}.hero-spec-link{align-items:center;border-bottom:1px solid #0000;color:#f5efe6b3;display:inline-flex;font-family:var(--font-mono);font-size:10.5px;font-weight:600;gap:5px;letter-spacing:.14em;padding-bottom:3px;text-decoration:none;text-transform:uppercase;transition:color .2s ease,border-color .2s ease}.hero-spec-link-arrow{transition:transform .2s ease}.hero-spec-link:hover{border-bottom-color:var(--accent);color:var(--accent)}.hero-spec-link:hover .hero-spec-link-arrow{transform:translate(2px,-2px)}.hero-cue{align-items:flex-start;bottom:32px;color:#f5efe68c;cursor:pointer;display:flex;flex-direction:column;font-family:var(--font-mono);font-size:10px;font-weight:500;gap:10px;left:clamp(20px,6vw,80px);letter-spacing:.18em;position:absolute;text-decoration:none;text-transform:uppercase;transition:color .2s ease;z-index:3}.hero-cue:hover{color:#f5efe6}.hero-cue-line{background-color:#d4a373b3;display:block;height:56px;transform-origin:top center;width:1px}@media (max-width:980px){.hero-grid{gap:40px;grid-template-columns:1fr}.hero-spec{margin-top:8px}.hero-name{font-size:clamp(56px,14vw,130px)}}@media (max-width:640px){.hero{min-height:auto;padding-bottom:clamp(60px,9vh,96px);padding-top:clamp(80px,12vh,120px)}.hero-statusbar{align-items:flex-start;flex-direction:column;gap:14px;margin-bottom:40px}.hero-clock-group{justify-content:space-between;width:100%}.hero-name{font-size:clamp(52px,16vw,96px)}.hero-name-last{margin-left:16px}.hero-spec{padding:18px 20px 16px}.hero-spec-row{font-size:10.5px;gap:10px;grid-template-columns:20px 70px minmax(0,1fr)}.hero-curve{bottom:18%;height:40%;opacity:.7}.hero-cue{display:none}}@media (max-width:380px){.hero-spec-row{grid-template-columns:18px minmax(0,1fr)}.hero-spec-label{grid-column:2;margin-bottom:2px}.hero-spec-value{grid-column:2}}.proj-subhead{color:var(--ink-muted);font-family:var(--font-display);font-size:clamp(15px,1.3vw,18px);font-style:italic;font-variation-settings:"opsz" 60,"SOFT" 80;line-height:1.45;margin-top:-8px;max-width:560px;padding:0;text-align:left}.proj-list{display:flex;flex-direction:column;gap:clamp(56px,8vw,96px);margin:0 auto;max-width:1200px}.proj-grid{grid-gap:clamp(40px,5vw,64px) clamp(32px,4vw,56px);display:grid;gap:clamp(40px,5vw,64px) clamp(32px,4vw,56px);grid-template-columns:repeat(2,1fr)}.proj-card{display:flex;flex-direction:column;gap:18px;position:relative}.proj-card--featured{grid-gap:clamp(32px,5vw,64px);align-items:center;display:grid;gap:clamp(32px,5vw,64px);grid-template-columns:1.15fr 1fr}.proj-image-wrap{aspect-ratio:16/10;background-color:var(--paper-warm);border:1px solid var(--line-soft);border-radius:var(--radius-sm);overflow:hidden;transition:transform .4s var(--ease-out),box-shadow .4s var(--ease-out);width:100%}.proj-image{display:block;filter:saturate(.95);height:100%;object-fit:cover;transition:transform .6s var(--ease-out),filter .4s ease;width:100%}.proj-card:hover .proj-image{filter:saturate(1.05);transform:scale(1.03)}.proj-card:hover .proj-image-wrap{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.proj-body{display:flex;flex-direction:column;gap:10px;padding-top:4px}.proj-built{color:var(--accent);font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase}.proj-title{color:var(--ink);font-family:var(--font-display);font-size:clamp(24px,2.6vw,34px);font-variation-settings:"opsz" 60,"SOFT" 30;font-weight:500;letter-spacing:-.02em;line-height:1.1;margin:0}.proj-card--featured .proj-title{font-size:clamp(34px,4vw,52px);font-variation-settings:"opsz" 144,"SOFT" 30;font-weight:400}.proj-tagline{font-family:var(--font-display);font-size:clamp(15px,1.4vw,19px);font-style:italic;font-variation-settings:"opsz" 60,"SOFT" 80;line-height:1.4;margin:0}.proj-description,.proj-tagline{color:var(--ink-soft);padding:0;text-align:left}.proj-description{font-family:var(--font-body);font-size:14px;line-height:1.65;margin:4px 0 0}.proj-card--featured .proj-description{font-size:15px;max-width:520px}.proj-built-with{color:var(--ink-muted);font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;line-height:1.5;margin-top:10px;padding:0;text-align:left;word-spacing:.05em}.proj-built-with-label{color:var(--accent);font-weight:500;letter-spacing:.12em;margin-right:8px;text-transform:uppercase}.proj-links{display:flex;gap:18px;margin-top:14px}.proj-link{align-items:center;border-bottom:1px solid var(--line);color:var(--ink);display:inline-flex;font-family:var(--font-mono);font-size:12px;font-weight:500;gap:6px;letter-spacing:.1em;padding-bottom:3px;text-decoration:none;transition:color .2s ease,border-color .2s ease}.proj-link--primary{border-bottom-color:var(--accent);color:var(--accent)}.proj-link:hover{border-color:var(--accent);color:var(--accent)}.proj-link:hover .proj-arrow{transform:translate(2px,-2px)}.proj-arrow{display:inline-block;transition:transform .25s ease}@media (max-width:900px){.proj-card--featured,.proj-grid{grid-template-columns:1fr}}@media (max-width:480px){.proj-links{flex-direction:column;gap:10px}}.skills-groups{gap:40px;margin:0 auto;max-width:1100px}.skill-group,.skills-groups{display:flex;flex-direction:column}.skill-group{gap:20px}.skill-group-label{align-items:center;display:flex;gap:14px}.skill-group-num{color:var(--accent);font-size:11px}.skill-group-name,.skill-group-num{font-family:var(--font-mono);font-weight:500;letter-spacing:.14em}.skill-group-name{color:var(--ink);font-size:12px;text-transform:uppercase}.skill-group-line{background-color:var(--line);flex:1 1;height:1px}.skill-grid{grid-gap:6px;display:grid;gap:6px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));list-style:none;margin:0;padding:0}.skill-chip{align-items:center;background-color:initial;border:1px solid var(--line-soft);border-radius:var(--radius-sm);cursor:default;display:flex;gap:12px;padding:14px 16px;transition:border-color .25s ease,background-color .25s ease,color .25s ease}.skill-chip:hover{background-color:var(--paper-raised);border-color:var(--accent)}.skill-icon{color:var(--ink);filter:grayscale(.85) opacity(.85) contrast(1.05);font-size:22px;line-height:1;transition:filter .3s ease,transform .3s ease}.skill-chip:hover .skill-icon{filter:grayscale(0) opacity(1) contrast(1);transform:scale(1.06)}body.dark-mode .skill-icon{filter:grayscale(.85) opacity(.78) brightness(1.15) contrast(1)}body.dark-mode .skill-chip:hover .skill-icon{filter:grayscale(0) opacity(1) brightness(1.05) contrast(1)}.skill-name{color:var(--ink-soft);font-family:var(--font-body);font-size:13px;font-weight:500;letter-spacing:0;transition:color .25s ease}.skill-chip:hover .skill-name{color:var(--ink)}@media (max-width:600px){.skill-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}.skill-chip{padding:12px 14px}}.exp-list{display:flex;flex-direction:column;gap:0;margin:0 auto;max-width:1100px}.exp-row{grid-gap:clamp(24px,4vw,56px);border-top:1px solid var(--line);display:grid;gap:clamp(24px,4vw,56px);grid-template-columns:200px 1fr;padding:40px 0;position:relative;transition:background-color .3s ease}.exp-row:last-child{border-bottom:1px solid var(--line)}.exp-row:after{background-color:var(--accent);content:"";height:1px;left:0;position:absolute;top:-1px;transition:width .5s ease;width:0}.exp-row:hover:after{width:100%}.exp-aside{display:flex;flex-direction:column;gap:8px;padding-top:4px}.exp-num{color:var(--accent);letter-spacing:.12em}.exp-date,.exp-num{font-family:var(--font-mono);font-size:11px;font-weight:500}.exp-date{color:var(--ink);letter-spacing:.08em}.exp-date,.exp-location{text-transform:uppercase}.exp-location{color:var(--ink-muted);font-family:var(--font-mono);font-size:10px;letter-spacing:.1em}.exp-main{display:flex;flex-direction:column;gap:12px}.exp-role{color:var(--ink);font-family:var(--font-display);font-size:clamp(22px,2.4vw,30px);font-variation-settings:"opsz" 60,"SOFT" 30;font-weight:500;letter-spacing:-.02em;line-height:1.15}.exp-prior-role{align-items:center;color:var(--ink-muted);display:inline-flex;font-family:var(--font-mono);font-size:11px;font-weight:500;gap:2px;letter-spacing:.06em;margin:-4px 0 4px;padding:0;text-align:left}.exp-prior-arrow{color:var(--accent);font-weight:600;margin-right:4px}.exp-company{color:var(--ink-soft);font-family:var(--font-body);font-size:15px;margin:0;padding:0;text-align:left}.exp-company-name{color:var(--ink);font-weight:600;position:relative}.exp-company-name:after{background-color:var(--accent-soft);bottom:-1px;content:"";height:1px;left:0;position:absolute;width:100%}.exp-description{color:var(--ink-soft);font-family:var(--font-body);font-size:15px;line-height:1.6;margin-top:6px;max-width:680px;padding:0;text-align:left}.exp-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}@media (max-width:700px){.exp-row{gap:16px;grid-template-columns:1fr;padding:32px 0}.exp-aside{align-items:center;flex-direction:row;flex-wrap:wrap;gap:10px}.exp-date,.exp-location,.exp-num{font-size:10px}}.edu-card{background-color:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-md);margin:0 auto;max-width:760px;padding:40px clamp(24px,4vw,48px);position:relative;transition:background-color .3s ease,border-color .3s ease,box-shadow .3s ease}.edu-card:before{background-color:var(--accent);content:"";height:3px;left:32px;position:absolute;top:-1px;width:48px}.edu-card:hover{border-color:var(--accent-soft);box-shadow:var(--shadow-md)}.edu-meta{align-items:center;color:var(--ink-muted);display:inline-flex;font-family:var(--font-mono);font-size:11px;font-weight:500;gap:12px;letter-spacing:.12em;margin-bottom:24px;text-transform:uppercase}.edu-divider{background-color:var(--ink-muted);border-radius:50%;display:inline-block;height:4px;width:4px}.edu-degree{color:var(--ink);font-family:var(--font-display);font-size:clamp(28px,3vw,36px);font-variation-settings:"opsz" 60,"SOFT" 30;font-weight:500;letter-spacing:-.02em;line-height:1.1;margin-bottom:8px}.edu-school{color:var(--ink-soft);font-family:var(--font-body);font-size:16px;margin-bottom:32px;padding:0;text-align:left}.edu-detail-row{grid-gap:24px;align-items:baseline;border-top:1px solid var(--line-soft);display:grid;gap:24px;grid-template-columns:110px 1fr;padding:14px 0}.edu-detail-row:last-child{border-bottom:1px solid var(--line-soft)}.edu-label{color:var(--ink-muted);font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.16em;text-transform:uppercase}.edu-value{color:var(--ink);font-family:var(--font-body);font-size:14px;line-height:1.55}@media (max-width:600px){.edu-card{padding:32px 20px}.edu-detail-row{gap:4px;grid-template-columns:1fr}}.contact-grid{grid-gap:clamp(40px,6vw,80px);align-items:start;display:grid;gap:clamp(40px,6vw,80px);grid-template-columns:.85fr 1fr;margin:0 auto;max-width:1100px;padding-top:8px}.contact-aside{display:flex;flex-direction:column;gap:32px}.contact-blurb{color:var(--ink);font-family:var(--font-display);font-size:clamp(20px,2vw,26px);font-style:italic;font-variation-settings:"opsz" 60,"SOFT" 60;line-height:1.35;margin:0;padding:0;text-align:left}.contact-direct{display:flex;flex-direction:column;gap:6px}.contact-email{align-self:flex-start;border-bottom:1px solid var(--accent);color:var(--ink);font-family:var(--font-mono);font-size:15px;font-weight:500;padding-bottom:2px;text-decoration:none;transition:color .2s ease}.contact-email:hover{color:var(--accent)}.contact-elsewhere{display:flex;flex-wrap:wrap;gap:16px}.contact-link{border-bottom:1px solid #0000;color:var(--ink-soft);font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.12em;padding-bottom:2px;text-decoration:none;text-transform:uppercase;transition:color .2s ease,border-color .2s ease}.contact-link:hover{border-bottom-color:var(--accent);color:var(--accent)}.contact-form-wrap{background-color:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-md);padding:clamp(24px,4vw,40px);position:relative}.contact-form-wrap:before{background-color:var(--accent);content:"";height:3px;position:absolute;right:32px;top:-1px;width:48px}.contact-form{gap:20px}.contact-form,.form-row{display:flex;flex-direction:column}.form-row{gap:6px}.form-label{color:var(--ink-muted);font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.16em;text-transform:uppercase}.form-input{background-color:initial;border:none;border-bottom:1px solid var(--line);color:var(--ink);font-family:var(--font-body);font-size:15px;line-height:1.5;outline:none;padding:8px 0 10px;transition:border-color .25s ease;width:100%}.form-input::placeholder{color:var(--ink-muted)}.form-input:hover{border-bottom-color:var(--ink-muted)}.form-input:focus,.form-input:focus-visible{border-bottom-color:var(--accent);outline:none}.form-textarea{font-family:var(--font-body);min-height:100px;resize:vertical}.form-submit{align-items:center;align-self:flex-start;background-color:var(--ink);border:1px solid var(--ink);border-radius:999px;color:var(--paper);cursor:pointer;display:inline-flex;font-family:var(--font-mono);font-size:12px;font-weight:600;gap:8px;letter-spacing:.14em;margin-top:12px;padding:12px 20px;text-transform:uppercase;transition:all .25s ease}.form-submit:hover,body.dark-mode .form-submit{background-color:var(--accent);border-color:var(--accent);color:var(--paper)}body.dark-mode .form-submit:hover{background-color:var(--accent-deep);border-color:var(--accent-deep)}.form-submit-arrow{display:inline-block;transition:transform .25s ease}.form-submit:hover .form-submit-arrow{transform:translateX(3px)}.contact-success{color:var(--accent);font-family:var(--font-display);font-size:clamp(20px,2vw,24px);font-style:italic;font-variation-settings:"opsz" 60,"SOFT" 60;margin:0;padding:0;text-align:left}@media (max-width:800px){.contact-grid{grid-template-columns:1fr}}.back-to-top{align-items:center;background-color:var(--ink);border:none;border-radius:999px;bottom:24px;box-shadow:var(--shadow-lg);color:var(--paper);cursor:pointer;display:inline-flex;font-family:var(--font-mono);font-size:11px;font-weight:600;gap:8px;letter-spacing:.14em;padding:10px 16px;position:fixed;right:24px;text-transform:uppercase;transition:background-color .25s ease,color .25s ease;z-index:60}.back-to-top:hover,body.dark-mode .back-to-top{background-color:var(--accent)}body.dark-mode .back-to-top{color:var(--paper)}body.dark-mode .back-to-top:hover{background-color:var(--accent-deep)}.back-to-top-arrow{font-size:14px;line-height:1}@media (max-width:480px){.back-to-top{bottom:16px;padding:9px 14px;right:16px}.back-to-top-label{display:none}}.chatbot-toggle-btn{align-items:center;background-color:var(--ink);border:1px solid var(--ink);border-radius:999px;bottom:24px;box-shadow:var(--shadow-lg);color:var(--paper);cursor:pointer;display:inline-flex;justify-content:center;left:24px;padding:12px;position:fixed;transition:background-color .25s ease,transform .25s ease,border-color .25s ease;z-index:60}.chatbot-toggle-btn:hover{background-color:var(--accent);border-color:var(--accent);transform:translateY(-2px)}body.dark-mode .chatbot-toggle-btn{background-color:var(--accent);border-color:var(--accent);color:var(--paper)}body.dark-mode .chatbot-toggle-btn:hover{background-color:var(--accent-deep);border-color:var(--accent-deep)}.chatbot-container{background-color:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;font-family:var(--font-body);overflow:hidden;position:fixed;width:384px;z-index:60}.chatbot-header{align-items:center;background-color:var(--ink);border-bottom:1px solid var(--ink);color:var(--paper);cursor:grab;display:flex;justify-content:space-between;padding:14px 16px}body.dark-mode .chatbot-header{background-color:var(--paper-warm);border-bottom-color:var(--line)}.chatbot-header:active{cursor:grabbing}.chatbot-header-content{align-items:center;display:flex;gap:10px}.chatbot-header h3{color:var(--paper);font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:.16em;margin:0;text-transform:uppercase}body.dark-mode .chatbot-header h3{color:var(--ink)}.chatbot-minimize-btn{align-items:center;background:#0000;border:none;border-radius:var(--radius-sm);color:var(--paper);cursor:pointer;display:inline-flex;padding:4px;transition:background-color .2s ease,color .2s ease}.chatbot-minimize-btn:hover{background-color:#f5efe61f}body.dark-mode .chatbot-minimize-btn{color:var(--ink)}body.dark-mode .chatbot-minimize-btn:hover{background-color:#f5efe60f}.chatbot-messages{background-color:var(--paper);display:flex;flex-direction:column;gap:10px;height:380px;overflow-y:auto;padding:16px}.message-wrapper{display:flex}.message-user{justify-content:flex-end}.message-assistant{justify-content:flex-start}.message-bubble{word-wrap:break-word;border-radius:var(--radius-md);font-family:var(--font-body);font-size:13.5px;line-height:1.5;max-width:78%;padding:11px 14px}.bubble-user{background-color:var(--ink);border-bottom-right-radius:4px;color:var(--paper)}body.dark-mode .bubble-user{background-color:var(--accent);color:var(--paper)}.bubble-assistant{background-color:var(--paper-raised);border:1px solid var(--line-soft);border-bottom-left-radius:4px;color:var(--ink)}.typing-indicator{align-items:center;display:flex;gap:4px;height:12px}.typing-dot{animation:typing-bounce 1.4s ease-in-out infinite;background-color:var(--ink-muted);border-radius:50%;height:6px;width:6px}.typing-dot:first-child{animation-delay:0s}.typing-dot:nth-child(2){animation-delay:.15s}.typing-dot:nth-child(3){animation-delay:.3s}@keyframes typing-bounce{0%,60%,to{opacity:.5;transform:translateY(0)}30%{opacity:1;transform:translateY(-6px)}}.chatbot-input-container{align-items:center;background-color:var(--paper-raised);border-top:1px solid var(--line);display:flex;gap:8px;padding:12px 14px}.chatbot-input{background-color:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink);flex:1 1;font-family:var(--font-body);font-size:13.5px;outline:none;padding:9px 12px;transition:border-color .2s ease}.chatbot-input::placeholder{color:var(--ink-muted)}.chatbot-input:focus{border-color:var(--accent)}.chatbot-input:disabled{background-color:var(--paper-warm);cursor:not-allowed;opacity:.6}.chatbot-send-btn{align-items:center;background-color:var(--ink);border:none;border-radius:var(--radius-sm);color:var(--paper);cursor:pointer;display:inline-flex;justify-content:center;padding:9px;transition:background-color .25s ease}.chatbot-send-btn:hover:not(:disabled){background-color:var(--accent)}.chatbot-send-btn:disabled{background-color:var(--line);color:var(--ink-muted);cursor:not-allowed}body.dark-mode .chatbot-send-btn{background-color:var(--accent)}body.dark-mode .chatbot-send-btn:hover:not(:disabled){background-color:var(--accent-deep)}.chatbot-messages::-webkit-scrollbar{width:6px}.chatbot-messages::-webkit-scrollbar-track{background:var(--paper-warm)}.chatbot-messages::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}.chatbot-messages::-webkit-scrollbar-thumb:hover{background:var(--ink-muted)}@media (max-width:480px){.chatbot-container{max-width:384px;width:calc(100vw - 32px)}}.site-footer{background-color:var(--paper-warm);border-top:1px solid var(--line);color:var(--ink-muted);display:flex;flex-direction:column;font-family:var(--font-mono);font-size:12px;gap:12px;letter-spacing:.04em;padding:40px clamp(20px,6vw,80px);transition:background-color .4s ease,border-color .4s ease}.footer-row{align-items:center;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between}.footer-mark{color:var(--ink);font-family:var(--font-display);font-size:22px;font-variation-settings:"opsz" 144,"SOFT" 60;font-weight:600;letter-spacing:-.04em}.footer-meta{color:var(--ink-muted);letter-spacing:.04em}.footer-link,.footer-meta{font-family:var(--font-mono);font-size:12px}.footer-link{border-bottom:1px solid #0000;color:var(--accent);letter-spacing:.06em;text-decoration:none;text-transform:uppercase;transition:border-color .2s ease,color .2s ease}.footer-link:hover{border-color:var(--accent);color:var(--accent-deep)}body.dark-mode .footer-link:hover{color:var(--accent-soft)}

/*
! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com
*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.visible{visibility:visible}.absolute{position:absolute}.grid{display:grid}.hidden{display:none}.resize{resize:both}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}:root{--font-display:"Fraunces","Times New Roman",Georgia,serif;--font-body:"Geist",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-mono:"JetBrains Mono","Courier New",ui-monospace,monospace;--paper:#f5efe6;--paper-warm:#ece2d0;--paper-raised:#fbf6ee;--ink:#1a1714;--ink-soft:#3d3630;--ink-muted:#6b6358;--line:#d4c8b3;--line-soft:#e3d7bf;--accent:#b87333;--accent-soft:#d4a373;--accent-deep:#8a4f1f;--positive:#0a7c5a;--shadow-sm:0 1px 2px #1a17140f;--shadow-md:0 4px 14px #1a171414;--shadow-lg:0 12px 32px #1a17141f;--space-xs:6px;--space-sm:12px;--space-md:24px;--space-lg:48px;--space-xl:96px;--space-2xl:144px;--radius-sm:4px;--radius-md:8px;--radius-lg:14px;--ease-out:cubic-bezier(0.22,1,0.36,1)}body.dark-mode{--paper:#0d0c0a;--paper-warm:#14110d;--paper-raised:#1a1612;--ink:#f5efe6;--ink-soft:#d4c8b3;--ink-muted:#8b8275;--line:#2a2620;--line-soft:#1f1c17;--accent:#d4a373;--accent-soft:#b87333;--accent-deep:#e8c39b;--shadow-sm:0 1px 2px #0006;--shadow-md:0 4px 14px #00000080;--shadow-lg:0 12px 32px #0009}*{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-feature-settings:"kern","liga","calt";background-color:#f5efe6;background-color:var(--paper);color:#1a1714;color:var(--ink);font-family:Geist,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-family:var(--font-body);font-size:16px;line-height:1.6}body,header,section{transition:background-color .4s ease,color .4s ease}header,section{display:flex;flex-direction:column;position:relative}section{align-items:stretch;padding:96px clamp(20px,6vw,80px);padding:var(--space-xl) clamp(20px,6vw,80px)}#contact,#education,#projects{background-color:#f5efe6;background-color:var(--paper)}#experience,#skills{background-color:#ece2d0;background-color:var(--paper-warm)}p{color:#3d3630;color:var(--ink-soft);font-size:16px;line-height:1.65;padding-top:0;text-align:left}a{color:#b87333;color:var(--accent);text-decoration:none;transition:color .2s ease}a:hover{color:#8a4f1f;color:var(--accent-deep)}body.dark-mode a:hover{color:#d4a373;color:var(--accent-soft)}h1,h2,h3,h4,h5,h6{font-feature-settings:"kern","liga","ss01";color:#1a1714;color:var(--ink);font-family:Fraunces,Times New Roman,Georgia,serif;font-family:var(--font-display);letter-spacing:-.02em;z-index:3}.App{background-color:#f5efe6;background-color:var(--paper);min-height:100vh;text-align:left}.eyebrow{color:#b87333;color:var(--accent);display:inline-block;font-family:JetBrains Mono,Courier New,ui-monospace,monospace;font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.18em;text-transform:uppercase}.section-heading{display:flex;flex-direction:column;gap:24px;gap:var(--space-md);margin:0 auto 48px;margin:0 auto var(--space-lg);max-width:900px;padding:0 clamp(8px,2vw,24px);text-align:left}.section-heading .display{color:#1a1714;color:var(--ink);font-family:Fraunces,Times New Roman,Georgia,serif;font-family:var(--font-display);font-size:clamp(40px,6vw,72px);font-variation-settings:"opsz" 144,"SOFT" 30;font-weight:400;letter-spacing:-.025em;line-height:1.02}.section-heading .display em{color:#b87333;color:var(--accent);font-style:italic;font-variation-settings:"opsz" 144,"SOFT" 80}.mono-tag{align-items:center;border:1px solid #d4c8b3;border:1px solid var(--line);border-radius:999px;color:#6b6358;color:var(--ink-muted);display:inline-flex;font-family:JetBrains Mono,Courier New,ui-monospace,monospace;font-family:var(--font-mono);font-size:11px;font-weight:500;gap:4px;letter-spacing:.06em;padding:4px 10px;text-transform:uppercase;transition:border-color .2s ease,color .2s ease;white-space:nowrap}.mono-tag:hover{border-color:#b87333;border-color:var(--accent);color:#b87333;color:var(--accent)}.section-index{color:#6b6358;color:var(--ink-muted);font-family:JetBrains Mono,Courier New,ui-monospace,monospace;font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.04em}.scroll-progress{background:#b87333;background:var(--accent);box-shadow:0 0 10px #b8733380;height:2px;left:0;pointer-events:none;position:fixed;right:0;top:0;transform-origin:0;z-index:9999}body.dark-mode .scroll-progress{background:#b87333;background:var(--accent);box-shadow:0 0 12px #d4a37399}:focus{outline:none}:focus-visible{border-radius:2px;outline:2px solid #b87333;outline:2px solid var(--accent);outline-offset:3px}a:focus-visible,button:focus-visible{outline:2px solid #b87333;outline:2px solid var(--accent);outline-offset:3px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}}.App-logo{height:40vmin;pointer-events:none}
/*# sourceMappingURL=main.04b59244.css.map*/