:root{--bg: #FAF8F4;--surface: #FFFFFF;--surface-2: #F1EEE5;--border: #E4DFD2;--text: #22282B;--text-muted: #5B6569;--teal: #4E7482;--teal-icon: #3A5764;--sage: #73906A;--amber: #B8752E;--tint-teal: rgba(78, 116, 130, .12);--tint-sage: rgba(115, 144, 106, .12);--nav-bg: rgba(250, 248, 244, .88);--btn-primary-bg: #232C36;--btn-primary-text: #FFFFFF;--band-bg: #232C36;--band-text: #FFFFFF;--band-text-muted: #AEB8BE;--band-accent: #8FB4BE;--band-border: #4A5966;--band-chip-bg: rgba(255, 255, 255, .06);--band-chip-border: rgba(255, 255, 255, .14);--band-chip-text: #E7E9EA;--footer-bg: #1B222A;--footer-text: #7C868C;--shadow-color: rgba(35, 44, 54, .16)}html.dark{--bg: #15191D;--surface: #1C2127;--surface-2: #21262D;--border: #2B313A;--text: #ECEEF0;--text-muted: #98A2AC;--teal: #7FB3C2;--teal-icon: #7FB3C2;--sage: #9BC28C;--amber: #E8B778;--tint-teal: rgba(127, 179, 194, .14);--tint-sage: rgba(155, 194, 140, .14);--nav-bg: rgba(21, 25, 29, .86);--btn-primary-bg: #7FB3C2;--btn-primary-text: #12161A;--band-bg: #0F1216;--band-text: #FFFFFF;--band-text-muted: #98A2AC;--band-accent: #7FB3C2;--band-border: #2B313A;--band-chip-bg: #21262D;--band-chip-border: #2B313A;--band-chip-text: #ECEEF0;--footer-bg: #0F1216;--footer-text: #98A2AC;--shadow-color: rgba(0, 0, 0, .5)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;width:100%;background:var(--bg);color:var(--text);font-family:Manrope,system-ui,sans-serif;transition:background-color .2s ease,color .2s ease}a{color:inherit;text-decoration:none}h1,h2,h3,h4{font-family:Space Grotesk,system-ui,sans-serif;margin:0}p{margin:0}.mono{font-family:IBM Plex Mono,monospace}.eyebrow{display:flex;align-items:center;gap:10px;font-family:IBM Plex Mono,monospace;font-size:12.5px;font-weight:600;letter-spacing:.12em;color:var(--teal);text-transform:uppercase}.eyebrow-mark{width:8px;height:8px;background:var(--teal);border-radius:2px;flex:none}.wrap{max-width:1180px;margin:0 auto;padding:0 24px}@media screen and (min-width: 900px){.wrap{padding:0 60px}}.btn{display:inline-flex;align-items:center;gap:8px;font-family:Manrope,sans-serif;font-weight:700;font-size:15px;padding:14px 26px;border-radius:8px;white-space:nowrap;border:none;cursor:pointer;transition:opacity .15s ease,color .15s ease,border-color .15s ease}.btn-primary{background:var(--btn-primary-bg);color:var(--btn-primary-text)}.btn-primary:hover{opacity:.88;color:#fff}.btn-secondary{background:transparent;color:var(--text);border:1.5px solid var(--border)}.btn-secondary:hover{color:var(--teal);border-color:var(--teal)}.pill{display:inline-flex;align-items:center;font-family:IBM Plex Mono,monospace;font-size:12.5px;font-weight:500;color:var(--text-muted);background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:7px 15px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:999px;border:1.5px solid var(--border);color:var(--text);flex:none;background:transparent;cursor:pointer}.icon-btn:hover{color:var(--teal);border-color:var(--teal)}footer{min-height:50px}.section-header{max-width:600px;margin-bottom:40px}.section-header h2{font-size:28px;font-weight:700;margin-top:16px}@media screen and (min-width: 900px){.section-header h2{font-size:34px}}@media screen and (min-width: 900px){.section-header{margin-bottom:52px}}.section-header--center{margin-left:auto;margin-right:auto;margin-bottom:0;text-align:center}.section-header--center .eyebrow{justify-content:center}.about{background:var(--surface);border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:56px 0}@media screen and (min-width: 900px){.about{padding:100px 0}}.about .grid{display:flex;flex-direction:column;gap:24px}@media screen and (min-width: 900px){.about .grid{display:grid;grid-template-columns:360px 1fr;gap:80px}}.about .header{margin-bottom:0}.about .header h2{line-height:1.2}.about .copy{display:flex;flex-direction:column;gap:20px;font-size:16px;line-height:1.75;color:var(--text-muted);max-width:640px}@media screen and (min-width: 900px){.about .copy{font-size:17px;gap:22px}}.contact-band{background:var(--band-bg);border-top:1px solid var(--border)}.contact-band .inner{padding:64px 24px;text-align:center}@media screen and (min-width: 900px){.contact-band .inner{padding:100px 60px}}.contact-band .header .eyebrow{color:var(--band-accent)}.contact-band .header .eyebrow-mark{background:var(--band-accent)}.contact-band .header h2{color:var(--band-text)}.contact-band .email{display:inline-block;font-family:Space Grotesk,sans-serif;font-size:18px;font-weight:600;color:var(--band-text);margin-top:28px;border-bottom:2px solid var(--band-border);word-break:break-word;transition:color .15s ease,border-color .15s ease}.contact-band .email:hover{color:var(--band-accent);border-color:var(--band-accent)}@media screen and (min-width: 480px){.contact-band .email{font-size:22px}}@media screen and (min-width: 900px){.contact-band .email{font-size:28px}}.contact-band .chips{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:32px}.contact-band .chip{display:flex;align-items:center;gap:8px;background:var(--band-chip-bg);border:1px solid var(--band-chip-border);color:var(--band-chip-text);border-radius:999px;padding:10px 18px;font-size:14px;font-weight:600;transition:color .15s ease,border-color .15s ease}.contact-band .chip:hover{color:var(--band-accent);border-color:var(--band-accent)}.testimonials{background:var(--bg);padding:64px 0}@media screen and (min-width: 900px){.testimonials{padding:100px 0}}.testimonials .grid{display:flex;flex-wrap:wrap;justify-content:center;gap:20px}@media screen and (min-width: 900px){.testimonials .grid{gap:24px}}.testimonials .card{background:var(--surface-2);border:1px solid var(--border);border-radius:14px;padding:28px;flex:1 1 100%}@media screen and (min-width: 900px){.testimonials .card{flex:0 1 calc(33.333% - 16px);max-width:calc(33.333% - 16px)}}.testimonials .card p{font-size:15.5px;line-height:1.65;font-style:italic;color:var(--text)}.testimonials .quote-mark{color:var(--teal);opacity:.65;margin-bottom:14px;display:block}.site-footer{background:var(--footer-bg)}.site-footer .inner{padding:22px 24px;display:flex;flex-direction:column;gap:10px;align-items:center;text-align:center;font-size:12.5px;color:var(--footer-text)}@media screen and (min-width: 700px){.site-footer .inner{padding:24px 60px;flex-direction:row;justify-content:space-between;text-align:left}}.site-footer .links{display:flex;gap:16px}.site-footer .links a:hover{color:var(--footer-text);opacity:.8}.highlights{background:var(--surface);border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:64px 0}@media screen and (min-width: 900px){.highlights{padding:100px 0}}.highlights .grid{display:grid;grid-template-columns:1fr;gap:20px}@media screen and (min-width: 640px){.highlights .grid{grid-template-columns:repeat(2,1fr)}}@media screen and (min-width: 1000px){.highlights .grid{grid-template-columns:repeat(3,1fr);gap:24px}}.highlights .card{background:var(--surface-2);border:1px solid var(--border);border-radius:14px;padding:28px}.highlights .card h3{font-size:17px;font-weight:600;margin-bottom:10px}.highlights .card p{font-size:15px;line-height:1.6;color:var(--text-muted)}.highlights .icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:18px}.highlights .icon--teal{background:var(--tint-teal);color:var(--teal-icon)}.highlights .icon--sage{background:var(--tint-sage);color:var(--sage)}.hero{background:var(--bg)}.hero .grid{padding:56px 24px 64px;display:flex;flex-direction:column-reverse;gap:40px}@media screen and (min-width: 900px){.hero .grid{padding:110px 60px 100px;display:grid;grid-template-columns:1fr 420px;gap:72px;align-items:center}}.hero .headline{font-size:40px;line-height:1.12;font-weight:700;margin:20px 0;letter-spacing:-.01em}@media screen and (min-width: 900px){.hero .headline{font-size:58px;margin:22px 0 24px}}.hero .accent{color:var(--amber)}.hero .subhead{font-size:16.5px;line-height:1.65;color:var(--text-muted);max-width:490px}@media screen and (min-width: 900px){.hero .subhead{font-size:18px}}.hero .ctas{display:flex;flex-wrap:wrap;gap:14px;margin-top:32px}.hero .socials{display:flex;gap:12px;margin-top:36px}.hero .photo{position:relative;max-width:340px;margin:0 auto}@media screen and (min-width: 900px){.hero .photo{max-width:none;margin:0}}.hero .photo img{position:relative;width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:20px;display:block;box-shadow:0 24px 48px -20px var(--shadow-color)}.hero .photo-tint{position:absolute;top:-16px;left:-16px;width:100%;height:100%;background:var(--tint-teal);border-radius:20px}.hero .photo-badge{position:absolute;left:18px;bottom:-18px;background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:9px 16px;font-size:12px;font-weight:600;color:var(--text);box-shadow:0 12px 24px -12px var(--shadow-color)}nav.site-nav{position:sticky;top:0;z-index:40;background:var(--nav-bg);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}nav.site-nav .inner{height:76px;display:flex;align-items:center;justify-content:space-between;gap:16px;position:relative}@media screen and (min-width: 900px){nav.site-nav .inner{height:84px}}nav.site-nav .logo{display:flex;align-items:center;gap:2px;font-family:Space Grotesk,sans-serif;font-weight:700;font-size:19px;color:var(--text);flex:none}nav.site-nav .logo-dot{color:var(--teal);margin:0 3px}nav.site-nav .logo-rest{color:var(--text-muted);font-weight:500}nav.site-nav .hamburger{display:block}@media screen and (min-width: 900px){nav.site-nav .hamburger{display:none}}nav.site-nav .panel{display:none}nav.site-nav .panel--open{display:flex;position:absolute;top:76px;left:0;right:0;background:var(--surface);border-bottom:1px solid var(--border);flex-direction:column;align-items:stretch;padding:20px 24px 28px;gap:18px}@media screen and (min-width: 900px){nav.site-nav .panel{display:flex;align-items:center;gap:28px;flex:1;justify-content:flex-end}nav.site-nav .panel--open{position:static;flex-direction:row;align-items:center;padding:0;border-bottom:none;background:transparent}}nav.site-nav .anchors{display:flex;flex-direction:column;gap:16px;font-size:15px;font-weight:600;color:var(--text-muted)}nav.site-nav .anchors a:hover{color:var(--teal)}@media screen and (min-width: 900px){nav.site-nav .anchors{flex-direction:row;gap:32px}}nav.site-nav .divider{display:none}@media screen and (min-width: 900px){nav.site-nav .divider{display:block;width:1px;height:22px;background:var(--border)}}nav.site-nav .pages{display:flex;flex-direction:column;gap:12px}nav.site-nav .pages .btn{padding:10px 18px;font-size:14px;text-align:center;justify-content:center}@media screen and (min-width: 900px){nav.site-nav .pages{flex-direction:row;gap:12px}}nav.site-nav .page--active{border-color:var(--teal);color:var(--teal)}nav.site-nav .icon-btn{align-self:flex-start}@media screen and (min-width: 900px){nav.site-nav .icon-btn{align-self:center}}.toolkit{background:var(--bg);padding:64px 0}@media screen and (min-width: 900px){.toolkit{padding:100px 0}}.toolkit .grid{display:grid;grid-template-columns:1fr;gap:32px}@media screen and (min-width: 640px){.toolkit .grid{grid-template-columns:repeat(2,1fr)}}@media screen and (min-width: 1000px){.toolkit .grid{grid-template-columns:repeat(4,1fr);gap:36px}}.toolkit .grid h3{font-size:14px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text);margin-bottom:16px}.toolkit .pills{display:flex;flex-wrap:wrap;gap:8px}.project-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 1px 2px var(--shadow-color)}.project-card .image{width:100%;height:190px;object-fit:cover;display:block}.project-card .body{padding:24px;display:flex;flex-direction:column;gap:12px;flex:1}.project-card .body h3{font-size:19px;font-weight:600}.project-card .description{font-size:14px;line-height:1.6;color:var(--text-muted);flex:1}.project-card .tags{display:flex;flex-wrap:wrap;gap:6px}.project-card .links{display:flex;flex-wrap:wrap;gap:18px;margin-top:6px;padding-top:16px;border-top:1px solid var(--border)}.project-card .link{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--text);transition:color .15s ease}.project-card .link:hover{color:var(--teal)}.project-card .link--muted{color:var(--text-muted)}.projects-page{background:var(--bg)}.projects-page .header{padding:64px 24px 40px;max-width:760px}.projects-page .header h1{font-size:34px;font-weight:700;margin-top:16px}.projects-page .header p{font-size:16px;line-height:1.65;color:var(--text-muted);margin-top:14px}@media screen and (min-width: 900px){.projects-page .header{padding:100px 60px 64px}.projects-page .header h1{font-size:44px}.projects-page .header p{font-size:17px}}.projects-page .grid{padding-bottom:72px;display:grid;grid-template-columns:1fr;gap:24px}@media screen and (min-width: 640px){.projects-page .grid{grid-template-columns:repeat(2,1fr)}}@media screen and (min-width: 1000px){.projects-page .grid{grid-template-columns:repeat(3,1fr);gap:28px}}@media screen and (min-width: 900px){.projects-page .grid{padding-bottom:120px}}.projects-page .more{background:var(--surface);border:1px dashed var(--border);border-radius:14px;padding:40px 24px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:14px;color:var(--text-muted);transition:border-color .15s ease,color .15s ease}.projects-page .more:hover{color:var(--text);border-color:var(--teal)}.projects-page .more h3{font-size:17px;font-weight:600;color:var(--text)}.projects-page .more p{font-size:14px}.projects-page .more-link{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--text);margin-top:4px}.resume-page{background:var(--surface-2);min-height:calc(100vh - 76px)}.resume-page .actions{display:flex;justify-content:center;padding:32px 24px}.resume-page .frame-wrap{display:flex;justify-content:center;padding:0 24px 64px}.resume-page .frame{width:100%;max-width:800px;height:2100px;background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden}.resume-page .frame iframe{width:100%;height:100%;border:none}
