:root{--canvas: #fdfcfc;--surface-soft: #f8f7f7;--surface-card: #f1eeee;--surface-dark: #201d1d;--ink: #201d1d;--ink-deep: #0f0000;--charcoal: #302c2c;--body: #424245;--mute: #646262;--stone: #6e6e73;--ash: #9a9898;--hairline: rgba(15, 0, 0, .12);--hairline-strong: #646262;--space-xs: 4px;--space-sm: 8px;--space-md: 12px;--space-lg: 16px;--space-xl: 24px;--space-xxl: 32px;--space-section: 56px;--font-mono: "JetBrains Mono", "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--accent-featured: #d97757;--accent-experience: #5b8def;--accent-projects: #6aaa64;--accent-notebooks: #9b7bbb;--accent-education: #4ba8a8;--accent-certifications: #d4a444;--accent-achievements: #d76e9b;--accent-unsplash: #8a8786;--accent-skills: #5b8a7a;--accent-writing: #c98762;--accent-summary: #b07bbb;--accent-engagements: #c07a4a;color-scheme:light}:root[data-theme=dark],:root:not([data-theme]){--dark-canvas: #1a1818;--dark-surface-soft: #221f1f;--dark-surface-card: #2a2727;--dark-surface-dark: #f1eeee;--dark-ink: #ede9e9;--dark-ink-deep: #fbf7f7;--dark-charcoal: #d0cccc;--dark-body: #b4b0b0;--dark-mute: #8d8a8a;--dark-stone: #8d8a8a;--dark-ash: #6e6c6c;--dark-hairline: rgba(255, 255, 255, .13);--dark-hairline-strong: #8d8a8a}:root[data-theme=dark]{color-scheme:dark;--canvas: var(--dark-canvas);--surface-soft: var(--dark-surface-soft);--surface-card: var(--dark-surface-card);--surface-dark: var(--dark-surface-dark);--ink: var(--dark-ink);--ink-deep: var(--dark-ink-deep);--charcoal: var(--dark-charcoal);--body: var(--dark-body);--mute: var(--dark-mute);--stone: var(--dark-stone);--ash: var(--dark-ash);--hairline: var(--dark-hairline);--hairline-strong: var(--dark-hairline-strong)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){color-scheme:dark;--canvas: var(--dark-canvas);--surface-soft: var(--dark-surface-soft);--surface-card: var(--dark-surface-card);--surface-dark: var(--dark-surface-dark);--ink: var(--dark-ink);--ink-deep: var(--dark-ink-deep);--charcoal: var(--dark-charcoal);--body: var(--dark-body);--mute: var(--dark-mute);--stone: var(--dark-stone);--ash: var(--dark-ash);--hairline: var(--dark-hairline);--hairline-strong: var(--dark-hairline-strong)}}#theme-switch{position:fixed;top:14px;right:14px;display:flex;gap:2px;padding:2px;border:1px solid var(--hairline);border-radius:6px;background:var(--canvas);z-index:20}#theme-switch button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--mute);font-family:var(--font-mono);font-size:13px;line-height:1;width:26px;height:24px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .12s,color .12s}#theme-switch button:hover{color:var(--ink)}#theme-switch button[aria-pressed=true]{background:var(--surface-card);color:var(--ink)}#writing details>summary>h2:before{color:var(--accent-writing)}.post{padding:var(--space-md) 0;border-bottom:1px solid var(--hairline)}.post:last-child{border-bottom:0}.post>summary{display:flex;align-items:baseline;gap:var(--space-md);cursor:pointer;list-style:none;padding:0;margin:0;border:0}.post>summary::-webkit-details-marker{display:none}.post>summary:before{content:"[+]";color:var(--mute);margin-right:var(--space-xs)}.post[open]>summary:before{content:"[-]"}.post-date{font-size:13px;color:var(--mute);flex-shrink:0}.post-title{font-weight:500;color:var(--ink)}.post-summary{margin:var(--space-sm) 0 var(--space-md);color:var(--body);font-size:14px}.post-body{font-size:15px}.post-body p:first-child{margin-top:0}.post-body p:last-child{margin-bottom:0}#skills-list{display:flex;flex-direction:column;gap:var(--space-md)}.skill-group{display:grid;grid-template-columns:180px 1fr;gap:var(--space-md);align-items:baseline}.skill-group-label{color:var(--mute);font-family:var(--font-mono);font-size:13px;font-weight:500}.skill-group-items{display:flex;flex-wrap:wrap;gap:var(--space-sm)}@media (max-width: 480px){.skill-group{grid-template-columns:1fr;gap:var(--space-sm)}}.skill-static{cursor:default;color:var(--body);border-style:dashed}.skill-static:hover{background:var(--canvas)}.skill-pill{display:inline-block;padding:4px 12px;border:1px solid var(--hairline-strong);border-radius:4px;background:var(--canvas);color:var(--ink);font-family:var(--font-mono);font-size:14px;font-weight:500;cursor:pointer;transition:background .12s,color .12s,border-color .12s}.skill-pill:hover{background:var(--surface-card)}.skill-pill.active{background:var(--ink);color:var(--canvas);border-color:var(--ink)}#skills .section-header h2:before{color:var(--accent-skills)}#summary .section-header h2:before{color:var(--accent-summary)}#summary-body{color:var(--body);max-width:60ch}#summary .section-header h2:before,#skills .section-header h2:before,#writing details>summary>h2:before,#featured .section-header h2:before,#unsplash .section-header h2:before,#experience details>summary>h2:before,#projects details>summary>h2:before,#engagements details>summary>h2:before,#notebooks details>summary>h2:before,#education details>summary>h2:before,#certifications details>summary>h2:before,#achievements details>summary>h2:before{content:"●";display:inline-block;margin-right:6px;font-size:11px;vertical-align:2px}#featured .section-header h2:before{color:var(--accent-featured)}#unsplash .section-header h2:before{color:var(--accent-unsplash)}#experience details>summary>h2:before{color:var(--accent-experience)}#projects details>summary>h2:before{color:var(--accent-projects)}#engagements details>summary>h2:before{color:var(--accent-engagements)}#notebooks details>summary>h2:before{color:var(--accent-notebooks)}#education details>summary>h2:before{color:var(--accent-education)}#certifications details>summary>h2:before{color:var(--accent-certifications)}#achievements details>summary>h2:before{color:var(--accent-achievements)}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--canvas);color:var(--ink);font-family:var(--font-mono);font-size:16px;font-weight:400;line-height:1.5;-webkit-font-smoothing:antialiased}main{max-width:640px;margin:0 auto;padding:64px 20px 96px}@media (max-width: 480px){main{padding:32px 16px 64px}.project.featured{gap:var(--space-md)}.featured-thumb{width:72px;height:72px}h1{font-size:28px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{transition-duration:1ms!important;animation-duration:1ms!important}}h1,h2,h3{margin:0;font-weight:700;line-height:1.5;color:var(--ink)}h1{font-size:38px}h2,h3{font-size:16px}p{margin:8px 0;color:var(--body)}#intro p{color:var(--body)}#intro :first-child{margin-top:0}a{color:var(--ink);text-decoration:underline;text-underline-offset:3px}a:hover{color:var(--ink-deep)}section{margin-top:var(--space-section)}#intro{margin-top:0}#jump-nav{margin-top:var(--space-xl)}#quick-links>h2,.section-header h2{padding-bottom:var(--space-sm);border-bottom:1px solid var(--hairline);margin-bottom:var(--space-lg)}.section-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding-bottom:var(--space-sm);border-bottom:1px solid var(--hairline);margin-bottom:var(--space-lg)}.section-header h2{border-bottom:0;padding-bottom:0;margin-bottom:0}#jump-nav{display:flex;flex-wrap:wrap;gap:var(--space-sm);padding-top:var(--space-md);border-top:1px solid var(--hairline)}#jump-nav a{display:inline-block;padding:2px 10px;border:1px solid var(--hairline);border-radius:4px;color:var(--mute);font-size:14px;text-decoration:none;background:var(--canvas);transition:background .12s,color .12s,border-color .12s}#jump-nav a:hover{color:var(--ink);border-color:var(--hairline-strong)}details>summary{cursor:pointer;list-style:none;display:flex;align-items:baseline;gap:var(--space-xs);padding-bottom:var(--space-sm);border-bottom:1px solid var(--hairline);margin-bottom:var(--space-lg);-webkit-user-select:none;user-select:none}details>summary::-webkit-details-marker{display:none}details>summary>h2{display:inline;margin:0;padding:0;border:0}details>summary:before{content:"[+]";color:var(--mute);font-weight:400;font-size:16px}details[open]>summary:before{content:"[-]"}details>summary:hover:before{color:var(--ink)}details>summary:hover>h2{color:var(--ink-deep)}details[open]>summary{margin-bottom:var(--space-lg)}#unsplash-body p:first-child{margin-top:0}#contact-strip{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-md)}.contact-link{display:inline-block;padding:4px 12px;border:1px solid var(--hairline-strong);border-radius:4px;color:var(--ink);font-size:14px;font-weight:500;text-decoration:none;background:var(--canvas);transition:background .12s,color .12s}.contact-link:hover{background:var(--ink);color:var(--canvas)}#featured-list{display:flex;flex-direction:column;gap:var(--space-md)}.project.featured{display:flex;gap:var(--space-lg);padding:var(--space-md) 0;border-bottom:1px solid var(--hairline)}.project.featured:last-child{border-bottom:0}.featured-thumb{flex-shrink:0;width:96px;height:96px;display:block;border:1px solid var(--hairline);border-radius:4px;overflow:hidden;background:var(--surface-card)}.featured-thumb img{width:100%;height:100%;object-fit:cover;display:block}.featured-body{flex:1 1 auto;min-width:0}.featured-body header{margin-bottom:4px}#project-list{display:flex;flex-direction:column}.project{padding:var(--space-md) 0;border-bottom:1px solid var(--hairline)}.project:last-child{border-bottom:0}.project header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-md);flex-wrap:wrap;margin-bottom:4px}.project h3 a{color:var(--ink);text-decoration:none}.project h3 a:before{content:"[+] ";color:var(--mute)}.project h3 a:hover{color:var(--ink-deep);text-decoration:underline;text-underline-offset:3px}.meta{color:var(--mute);font-size:14px;margin:0 0 var(--space-sm)}.body p:first-child{margin-top:0}.body p:last-child{margin-bottom:0}.links{display:flex;gap:var(--space-sm);flex-shrink:0}.icon-link{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;color:var(--mute);text-decoration:none;border:1px solid var(--hairline);border-radius:4px;background:var(--canvas);transition:color .12s,background .12s,border-color .12s}.icon-link:hover{color:var(--canvas);background:var(--ink);border-color:var(--ink)}.icon-link svg{width:14px;height:14px}#project-view .back{margin:0 0 var(--space-xl);font-size:14px;position:sticky;top:0;background:var(--canvas);padding:var(--space-md) 0;z-index:10}#project-view .back a{color:var(--mute);text-decoration:none}.project-nav{display:flex;justify-content:space-between;gap:var(--space-lg);margin-top:var(--space-xxl);padding-top:var(--space-lg);border-top:1px solid var(--hairline);font-size:14px}.project-nav a{display:flex;flex-direction:column;gap:4px;color:var(--ink);text-decoration:none;max-width:45%}.project-nav-prev{text-align:left}.project-nav-next{text-align:right;margin-left:auto}.project-nav-label{color:var(--mute);font-size:12px}.project-nav-title{font-weight:500}.project-nav a:hover .project-nav-title{text-decoration:underline;text-underline-offset:3px}#project-view .back a:hover{color:var(--ink);text-decoration:underline;text-underline-offset:3px}.project-page header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-md);flex-wrap:wrap;padding-bottom:var(--space-sm);border-bottom:1px solid var(--hairline);margin-bottom:var(--space-md)}.project-page h2{font-size:24px;font-weight:700}.project-page .meta{margin-bottom:var(--space-lg)}.project-cover{display:block;width:100%;height:auto;margin:var(--space-xl) 0;border-radius:0;border:0}.project-page .body{margin-top:var(--space-lg)}.project-page .body img{max-width:100%;height:auto;border-radius:0;border:0;margin:var(--space-md) 0}.project-page .body h2{font-size:16px;font-weight:700;margin-top:var(--space-xl);padding-bottom:var(--space-xs);border-bottom:1px solid var(--hairline)}.project-page .body h3{font-size:16px;font-weight:700;margin-top:var(--space-lg)}.project-page .body code{background:var(--surface-card);padding:0 4px;border-radius:4px;font-size:14px}.project-page .body pre{background:var(--surface-card);padding:var(--space-md) var(--space-lg);border-radius:4px;overflow-x:auto;font-size:14px}.project-page .body pre code{background:transparent;padding:0;font-size:inherit}.project-page .body table{width:100%;border-collapse:collapse;margin:var(--space-md) 0;font-size:14px}.project-page .body th,.project-page .body td{text-align:left;padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--hairline)}.project-page .body th{font-weight:700;color:var(--ink)}.project-page .body blockquote{margin:var(--space-md) 0;padding-left:var(--space-md);border-left:2px solid var(--hairline-strong);color:var(--mute)}.mermaid-diagram{margin:var(--space-lg) 0;display:flex;justify-content:center}.mermaid-diagram svg{max-width:100%;height:auto}#experience-body h3,#education-body h3{font-size:16px;font-weight:700;margin-top:var(--space-lg);color:var(--ink)}#experience-body h3:first-child,#education-body h3:first-child{margin-top:0}#experience-body p,#education-body p{margin:4px 0 var(--space-md);color:var(--body)}#experience-body em,#education-body em{display:block;font-style:normal;color:var(--mute);font-size:14px;margin-bottom:4px}#experience-body h3+p>em:only-child,#education-body h3+p>em:only-child{margin:0 0 var(--space-md)}@page{size:A4;margin:16mm 14mm 20mm;@bottom-right{content:counter(page) " / " counter(pages);font-family:JetBrains Mono,monospace;font-size:9pt;color:#666}}@media print{body{background:#fff;color:#000}main{max-width:100%;padding:0}a{color:#000;text-decoration:none}#theme-switch,#jump-nav,#unsplash,#notebooks,.featured-thumb,.links,.project h3 a:before,details>summary:before{display:none!important}h2:before{color:#000!important}details>:not(summary){display:block!important}details,details>summary{display:block}details>summary{cursor:default;list-style:none;padding-bottom:4px;border-bottom:1px solid #999;margin-bottom:12px}details[open]>summary{margin-bottom:12px}section{page-break-inside:auto;margin-top:24px}.project,h2,h3{page-break-inside:avoid}body,p{font-size:10.5pt;line-height:1.4}h1{font-size:22pt}h2{font-size:12pt}h3{font-size:11pt}.contact-link{border:0;padding:0 12px 0 0;background:transparent!important;color:#000!important;font-size:10pt}#contact-strip{gap:12px}.project.featured{display:block;padding:8px 0}.featured-body{padding:0}}#certifications-body ul,#achievements-body ul{list-style:none;padding:0;margin:0}#certifications-body li,#achievements-body li{padding:4px 0;color:var(--body)}#certifications-body li:before,#achievements-body li:before{content:"[+] ";color:var(--mute)}
