@import url("https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=DM+Sans:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,600;9..144,700&display=swap");:root{--bg:#fcfaf1;--surface:#f3f0e6;--paper:#fffdf5;--ink:#261715;--muted:#746862;--line:#cfc7b8;--blue:#73c5ef;--blue-deep:#3d93bc;--yellow:#f4c93f;--peach:#efa987;--shadow:#bdb6aa}:root[data-theme=dark]{--bg:#1d1a1a;--surface:#292526;--paper:#302b2b;--ink:#f8f1e5;--muted:#c5bab0;--line:#665e5a;--blue:#4faedc;--blue-deep:#297d9f;--yellow:#e1b635;--peach:#dc8a68;--shadow:#100e0e}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:DM Sans,sans-serif;transition:background .25s,color .25s}a{color:inherit;text-decoration:none}.wrap{width:min(1120px,calc(100% - 48px));margin-inline:auto}.nav{height:94px;display:flex;align-items:center;justify-content:space-between}.wordmark{font-family:Fraunces,serif;font-size:27px;font-weight:700;letter-spacing:-1.2px}.dot{color:var(--blue-deep)}.nav-actions{display:flex;align-items:center;gap:12px}.mini-button,.theme-toggle{min-height:36px;border:2px solid var(--ink);background:var(--paper);border-radius:9px;box-shadow:0 4px 0 var(--ink);padding:8px 13px;font:500 11px DM Mono;letter-spacing:.07em;text-transform:uppercase;cursor:pointer;color:var(--ink)}.theme-toggle{display:flex;align-items:center;gap:6px}.hero{height:calc(100dvh - 94px);min-height:530px;padding-top:clamp(50px,10vh,100px);position:relative;overflow:hidden}.eyebrow,.section-label{font:500 11px DM Mono;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.eyebrow{display:flex;align-items:center;gap:8px}.eyebrow i{display:inline-block;width:8px;height:8px;border-radius:50%;background:#76bd8f;box-shadow:0 0 0 3px color-mix(in srgb,#76bd8f 22%,transparent)}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(55px,8vw,104px);line-height:.94;letter-spacing:-.075em;margin:26px 0 25px;max-width:850px;font-weight:700}em{font-family:Fraunces,serif;font-weight:600;letter-spacing:-.065em}.intro{max-width:474px;font-size:18px;line-height:1.52;color:var(--muted)}.hero-actions{display:flex;align-items:center;gap:24px;margin-top:33px}.button{min-height:56px;display:inline-flex;align-items:center;justify-content:center;gap:13px;border:2px solid var(--ink);border-radius:11px;padding:14px 19px;font-weight:600;transition:transform .15s,box-shadow .15s}.button:hover,.mini-button:hover,.theme-toggle:hover{transform:translateY(2px);box-shadow:0 2px 0 var(--ink)}.button-primary{background:var(--blue);box-shadow:0 5px 0 var(--ink)}.button-secondary{background:var(--paper);box-shadow:0 5px 0 var(--ink)}.text-link{text-decoration:underline;text-underline-offset:4px;font-size:14px;font-weight:600}.text-link span{margin-left:5px}.hero-doodle{position:absolute;width:270px;height:270px;right:3%;top:78px}.orb{width:125px;height:125px;background:var(--yellow);top:70px;left:70px;transform:rotate(-8deg);box-shadow:7px 7px 0 var(--ink)}.figure-head,.orb{border:2px solid var(--ink);border-radius:50%;position:absolute}.figure-head{width:22px;height:22px;background:var(--paper);top:25px;left:50px}.figure-body{width:24px;height:57px;border:2px solid var(--ink);border-radius:50% 50% 42% 42%;position:absolute;top:50px;left:49px;background:var(--blue)}.figure-body:after,.figure-body:before{content:"";position:absolute;width:30px;height:2px;background:var(--ink);top:12px}.figure-body:before{right:20px;transform:rotate(-31deg);transform-origin:right}.figure-body:after{left:20px;transform:rotate(31deg);transform-origin:left}.orbit{border:1.5px solid var(--ink);position:absolute;width:260px;height:104px;top:80px;transform:rotate(28deg);border-radius:50%}.orbit-two{transform:rotate(-36deg)}.spark{position:absolute;z-index:2;font-size:31px}.spark-one{right:21px;top:7px}.spark-two{bottom:22px;left:18px;font-size:22px}.hero-meta{position:absolute;bottom:44px;left:0;gap:13px}.email-link,.hero-meta{display:flex;align-items:center}.email-link{height:42px;column-gap:8px;border:2px solid var(--ink);border-radius:11px;padding:7px 12px;background:var(--paper);box-shadow:0 4px 0 var(--ink);font-size:13px;font-weight:700;transition:transform .15s,box-shadow .15s}.email-link span{display:none}.email-link:hover,.social-buttons a:hover{transform:translateY(2px);box-shadow:0 2px 0 var(--ink)}.social-buttons{display:flex;gap:9px}.social-buttons a{height:42px;display:flex;align-items:center;gap:7px;padding:7px 10px;border:2px solid var(--ink);border-radius:11px;background:var(--paper);box-shadow:0 4px 0 var(--ink);font-size:13px;font-weight:700;transition:transform .15s,box-shadow .15s}.social-icon{display:grid;width:21px;height:21px;place-items:center;border-radius:5px;background:var(--ink);color:var(--paper);font:500 8px DM Mono;letter-spacing:-.04em}.marquee{overflow:hidden;border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);background:var(--surface);padding:14px 0;font:500 12px DM Mono;color:var(--ink)}.marquee-track{display:flex;width:max-content;animation:move 30s linear infinite}.marquee-group{flex:none;white-space:nowrap;padding-right:34px}.marquee b{color:var(--blue-deep);padding:0 17px;font-size:15px}@keyframes move{to{transform:translateX(-50%)}}@media (prefers-reduced-motion:reduce){.marquee-track{animation:none}}.section{padding:110px 0}.about-content{display:grid;grid-template-columns:1.1fr .75fr;grid-gap:96px;gap:96px;margin-top:38px}.about h2,.contact h2{font-size:clamp(40px,4.7vw,66px);line-height:1.02;letter-spacing:-.06em;margin-bottom:0}.about-copy{padding-top:6px}.about-copy p{color:var(--muted);font-size:17px;line-height:1.6}.about-copy .button{margin-top:12px}.section-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:27px}.hand{font-size:30px}.skill-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:18px;gap:18px}.skill-card{min-height:350px;border:1.5px solid var(--ink);border-radius:16px;padding:21px;position:relative;overflow:hidden;box-shadow:5px 5px 0 var(--ink)}.blue-card{background:var(--blue)}.yellow-card{background:var(--yellow)}.peach-card{background:var(--peach)}.card-number{font:500 11px DM Mono}.card-copy{position:absolute;right:21px;bottom:18px;left:21px}.skill-card h3{font-size:31px;line-height:1;letter-spacing:-.05em;margin:0 0 9px}.skill-card p{font-size:14px;line-height:1.4;max-width:235px;margin:0}.card-art{position:absolute}.code-art{font:600 72px Fraunces;right:32px;top:67px;transform:rotate(-8deg)}.shape-art{right:39px;top:65px;width:130px;height:130px}.shape-art i{width:55px;height:55px;border:2px solid var(--ink);display:block;position:absolute;border-radius:50%}.shape-art i:first-child{left:12px}.shape-art i:nth-child(2){right:0;top:30px;background:var(--paper)}.shape-art i:nth-child(3){bottom:0;left:28px;border-radius:4px;transform:rotate(45deg)}.star-art{font:100px Fraunces;right:41px;top:54px;transform:rotate(19deg)}.contact{padding-top:30px}.contact-card{min-height:365px;border:1.5px solid var(--ink);border-radius:18px;padding:48px;background:var(--paper);position:relative;overflow:hidden;box-shadow:7px 7px 0 var(--ink)}.contact-card h2{margin:23px 0 30px}.contact-star{position:absolute;right:10%;top:62px;font:110px Fraunces;color:var(--blue);transform:rotate(16deg);text-shadow:3px 3px 0 var(--ink)}.nav-links{display:flex;gap:24px;font-size:14px;font-weight:600}.nav-links a{text-decoration:underline;text-underline-offset:4px;-webkit-text-decoration-color:transparent;text-decoration-color:transparent;transition:-webkit-text-decoration-color .15s;transition:text-decoration-color .15s;transition:text-decoration-color .15s,-webkit-text-decoration-color .15s}.nav-links a:hover{-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}.section-title{font-size:clamp(40px,4.7vw,66px);line-height:1.02;letter-spacing:-.06em;margin:8px 0 0}.project-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:22px;gap:22px}.project-card{display:flex;flex-direction:column;gap:14px;border:2px solid var(--ink);border-radius:16px;background:var(--paper);box-shadow:6px 6px 0 var(--ink);padding:24px;transition:transform .15s,box-shadow .15s}a.project-card:hover{transform:translate(3px,3px);box-shadow:3px 3px 0 var(--ink)}.project-top{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.project-card h3{margin:0;font-size:23px;letter-spacing:-.04em;line-height:1.1}.project-card p{margin:0;color:var(--muted);font-size:15px;line-height:1.55}.private-chip,.repo-chip{flex:none;font:500 10px DM Mono;text-transform:uppercase;letter-spacing:.06em;border:1.5px solid var(--ink);border-radius:999px;padding:5px 10px;white-space:nowrap}.repo-chip{background:var(--blue)}.private-chip{background:var(--surface);color:var(--muted)}.tag-row{display:flex;flex-wrap:wrap;gap:7px;margin-top:auto}.tag{font:500 10px DM Mono;text-transform:uppercase;letter-spacing:.05em;border:1.5px solid var(--ink);border-radius:999px;padding:4px 9px;background:var(--surface);color:var(--ink)}.skill-rows{display:grid;grid-gap:16px;gap:16px}.skill-row{display:grid;grid-template-columns:200px 1fr;grid-gap:18px;gap:18px;align-items:center;border:2px solid var(--ink);border-radius:14px;background:var(--paper);box-shadow:5px 5px 0 var(--ink);padding:18px 22px}.skill-row h3{margin:0;font:500 12px DM Mono;text-transform:uppercase;letter-spacing:.07em}.skill-row .tag-row{margin-top:0}.footer{padding:44px 0 58px;display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:13px}.footer p{margin:0}.socials{display:flex;gap:22px;color:var(--ink);font-weight:600}.socials a{text-decoration:underline;text-underline-offset:3px}@media (max-width:760px){.wrap{width:min(100% - 32px,1120px)}.nav{height:74px}.nav-links,.theme-label{display:none}.hero{height:calc(100dvh - 74px);min-height:670px;padding-top:66px}.hero-doodle{opacity:.22;right:-38px;top:310px;transform:scale(.8)}h1{font-size:59px}.intro{font-size:16px}.hero-actions{gap:18px}.hero-actions,.hero-meta{align-items:flex-start;flex-direction:column}.hero-meta{bottom:40px;gap:10px}.project-grid,.skill-row{grid-template-columns:1fr}.skill-row{gap:10px;align-items:start}.email-link{width:auto}.social-buttons a{height:42px}.section{padding:76px 0}.about-content{grid-template-columns:1fr;gap:25px;margin-top:27px}.skill-grid{grid-template-columns:1fr;gap:20px}.skill-card{min-height:280px}.contact-card{padding:34px 25px;min-height:360px}.contact-star{right:-20px;top:80px;font-size:95px;opacity:.5}.footer{flex-direction:column;align-items:flex-start;gap:17px}.mini-button{padding-inline:10px}}