:root{--color-bg: #ffffff;--color-fg: #000000;--color-muted: #666666;--color-border: #e5e5e5;--color-accent: #d91a72;--color-code-bg: #f5f5f5}[data-theme=dark]{--color-bg: #1a1a1a;--color-fg: #e5e5e5;--color-muted: #a0a0a0;--color-border: #333333;--color-accent: #ff85c0;--color-code-bg: #2a2a2a}html{height:100%;scrollbar-gutter:stable}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;line-height:1.5;font-size:14px;display:flex;flex-direction:column;margin:0;background-color:var(--color-bg);color:var(--color-fg);height:100%;align-items:center}.skip-link{position:absolute;top:-40px;left:16px;background:var(--color-accent);color:#fff;padding:8px 16px;text-decoration:none;border-radius:4px;font-size:14px;font-weight:500;z-index:1000;transition:top .2s ease}.skip-link:focus{top:16px}header,footer{width:100%}#main-nav,#main-content,.site-footer{max-width:1024px;box-sizing:border-box;width:100%}#main-nav{margin:0 auto;padding:1rem 3rem}.nav-content{display:flex;justify-content:space-between;align-items:center}.nav-left{display:flex;gap:2.5rem;align-items:center;list-style:none;margin:0;padding:0}.nav-left li,.nav-right{display:flex;align-items:center}#main-content{margin:0 auto;padding:1rem 3rem 3rem;flex:1}.nav-left a{font-size:14px;font-weight:500;color:var(--color-fg);text-decoration:none;transition:color .2s ease;position:relative}.nav-left a:hover{color:var(--color-accent)}.nav-left a.active{color:var(--color-accent);font-weight:600;text-decoration:underline;text-decoration-color:var(--color-accent);text-decoration-thickness:2px;text-underline-offset:4px}body.experience .experience-header{margin-bottom:1.5rem}body.experience .experience-header h1{font-size:24px;font-weight:500;margin:0 0 4px;color:var(--color-fg)}body.experience .job-title{font-size:16px;margin:0 0 8px;color:var(--color-muted);font-weight:400}body.experience .contact-info{font-size:14px}body.experience .contact-info p{margin:2px 0}body.experience .contact-info a{text-decoration:underline;color:var(--color-muted)}body.experience section,body:not(.experience) .about,body:not(.experience) .hero,body:not(.experience) .colophon{margin-bottom:1.5rem}body.experience section h2,body:not(.experience) .colophon h2{font-size:16px;font-weight:500;color:var(--color-fg);margin:0 0 8px;text-transform:uppercase}body.experience .experience-summary p{margin:0 0 8px;line-height:1.4}body.experience .company-group{margin-bottom:1.5rem;padding-left:8px;border-left:2px solid var(--color-accent)}body.experience .company-group h3,body.experience .job h3,body.experience .skill-category h3,body.experience .experience-education h3{font-size:14px;font-weight:500;color:var(--color-fg);margin:0 0 2px}body.experience .company-website,body.experience .company,body.experience .experience-education p{font-size:12px;margin:0 0 6px}body.experience .company-website{margin:0 0 8px}body.experience .company-website a{color:var(--color-fg);text-decoration:none}body.experience .company-group .position{margin-bottom:12px}body.experience .company-group .position:first-child h3:after{content:" (Current)";font-size:11px;color:var(--color-accent);font-weight:400}body.experience .company-group .position:last-child{margin-bottom:0}body.experience .company{color:var(--color-muted);font-weight:400}body.experience .job{margin-bottom:1.25rem}body.experience .job .company-website{font-size:12px;margin:0 0 6px}body.experience .skill-category{margin-bottom:8px}body.experience .skill-category h3{margin:0 0 2px;display:inline}body.experience .skill-category p{display:inline;margin:0;color:var(--color-muted)}body.experience .skill-category h3:after{content:": "}body.experience .experience-education .education{margin-bottom:8px}body.experience .experience-education h3{margin:0 0 2px}body.experience .experience-education p{margin:0;color:var(--color-muted)}body.experience #main-content ul{margin:6px 0 0 16px;padding:0;list-style-type:disc}body.experience li{margin-bottom:3px;line-height:1.4;font-size:13px;color:var(--color-fg);display:list-item}@media print{body.experience{font-size:.75rem;line-height:1.3}body.experience .experience-layout{padding:2rem;max-width:none}body.experience .company-group,body.experience .job{page-break-inside:avoid}body.experience section{page-break-after:avoid}#main-nav,.site-footer{display:none}}section h1{font-size:18px}body:not(.experience) .hero h1{font-family:Monaco,Menlo,Ubuntu Mono,Consolas,source-code-pro,monospace;font-size:18px;font-weight:400;margin:0 0 8px;color:var(--color-accent);background:transparent;padding:0;border:none;display:inline-block;position:relative}body:not(.experience) .hero h1:before{content:"$ ";color:var(--color-muted)}body:not(.experience) .hero h1:after{content:"";display:inline-block;width:8px;height:18px;background:var(--color-accent);margin-left:4px;margin-bottom:2px;animation:blink 1s infinite;vertical-align:text-bottom}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.tagline{font-size:14px;margin:0 0 1.5rem;color:var(--color-muted);font-style:italic}.about{line-height:1.4;font-size:14px}.colophon{padding-top:1rem;border-top:1px solid var(--color-border)}.colophon h2{font-size:14px;letter-spacing:.05em}.colophon code{font-family:Monaco,Menlo,Ubuntu Mono,Consolas,source-code-pro,monospace;font-size:11px;background:var(--color-code-bg);padding:1px 4px;border-radius:2px}.theme-toggle{background:none;border:none;cursor:pointer;padding:6px;border-radius:4px;transition:background-color .2s ease;display:flex;align-items:center;justify-content:center}.theme-toggle:hover{background-color:var(--color-border)}.theme-toggle:focus{outline:2px solid var(--color-accent);outline-offset:2px}.theme-toggle svg{width:18px;height:18px;stroke:var(--color-fg);transition:stroke .2s ease}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.colophon a{color:var(--color-fg);text-decoration:underline}.site-footer{margin:auto auto 0;padding:2rem 3rem 1rem}.footer-content{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--color-muted);padding:1rem 0}.footer-content p{margin:0}.footer-content a{color:var(--color-muted);text-decoration:none;font-weight:400;display:flex;align-items:center;justify-content:center;padding:4px;border-radius:4px;transition:background-color .2s ease,color .2s ease}.footer-content a:hover{background-color:var(--color-border);color:var(--color-fg)}.footer-content a svg{width:18px;height:18px;stroke:currentColor}.footer-links{display:flex;gap:12px;align-items:center}.post-header{margin-bottom:2rem}.post-title{font-size:28px;font-weight:600;margin:0 0 .5rem;color:var(--color-fg);line-height:1.2}.post-meta{font-size:14px;color:var(--color-muted);margin-bottom:.5rem}.post-excerpt{font-size:16px;color:var(--color-muted);font-style:italic;margin:0 0 2rem;padding:1rem 0;border-bottom:1px solid var(--color-border)}.post-tags{margin-top:1rem;display:flex;flex-wrap:wrap;gap:.5rem}.post-tag{background:var(--color-code-bg);color:var(--color-muted);padding:.25rem .5rem;border-radius:3px;font-size:12px;text-decoration:none;border:1px solid var(--color-border);transition:background-color .2s ease,color .2s ease}.post-tag:hover{background:var(--color-border);color:var(--color-fg)}.post-content{line-height:1.6;font-size:15px;color:var(--color-fg)}.post-content h1,.post-content h2,.post-content h3,.post-content h4,.post-content h5,.post-content h6{color:var(--color-fg);margin:1.5rem 0 1rem;line-height:1.3}.post-content h1{font-size:24px;font-weight:600}.post-content h2{font-size:20px;font-weight:600}.post-content h3{font-size:18px;font-weight:500}.post-content h4{font-size:16px;font-weight:500}.post-content p{margin:0 0 1rem}.post-content ul,.post-content ol{margin:1rem 0;padding-left:1.5rem}.post-content li{margin-bottom:.5rem}.post-content blockquote{margin:1.5rem 0;padding:1rem 1.5rem;border-left:4px solid var(--color-accent);background:var(--color-code-bg);color:var(--color-muted);font-style:italic}.post-content blockquote p{margin:0}.post-content a{color:var(--color-accent);text-decoration:underline;transition:opacity .2s ease}.post-content a:hover{opacity:.8}.post-content strong{font-weight:600;color:var(--color-fg)}.post-content em{font-style:italic}.post-content table{width:100%;border-collapse:collapse;margin:1.5rem 0}.post-content th,.post-content td{padding:.75rem;text-align:left;border-bottom:1px solid var(--color-border)}.post-content th{font-weight:500;background:var(--color-code-bg)}.post-content .header-anchor{opacity:0;color:var(--color-muted);text-decoration:none;margin-left:.5rem;transition:opacity .2s ease}.post-content h1:hover .header-anchor,.post-content h2:hover .header-anchor,.post-content h3:hover .header-anchor,.post-content h4:hover .header-anchor,.post-content h5:hover .header-anchor,.post-content h6:hover .header-anchor{opacity:1}.post-content .header-anchor:hover{color:var(--color-accent);opacity:1}.blog-header{margin-bottom:2.5rem;text-align:center}.blog-title{font-size:36px;font-weight:600;margin:0 0 .75rem;color:var(--color-fg)}.blog-description{font-size:16px;color:var(--color-muted);margin:0;font-style:italic}.posts-grid{display:grid;grid-template-columns:1fr;gap:2rem;margin-bottom:3rem}.post-card{background:transparent;border:1px solid var(--color-border);border-radius:8px;padding:1.5rem;transition:border-color .2s ease,box-shadow .2s ease}.post-card:hover{border-color:var(--color-accent);box-shadow:0 2px 8px #0000001a}[data-theme=dark] .post-card:hover{box-shadow:0 2px 8px #0000004d}.post-card-header{margin-bottom:1rem}.post-card-title{margin:0 0 .5rem;font-size:20px;font-weight:600;line-height:1.3}.post-card-title a{color:var(--color-fg);text-decoration:none;transition:color .2s ease}.post-card-title a:hover{color:var(--color-accent)}.post-card-meta{font-size:14px;color:var(--color-muted);display:flex;align-items:center;flex-wrap:wrap;gap:.25rem}.meta-separator{margin:0 .25rem}.post-card-tag-count{font-size:13px}.post-card-excerpt{margin-bottom:1rem}.post-card-excerpt p{margin:0;color:var(--color-muted);line-height:1.5;font-size:15px}.post-card-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.post-card-tag,.post-card-tag-more{background:var(--color-code-bg);color:var(--color-muted);padding:.2rem .4rem;border-radius:3px;font-size:11px;text-transform:lowercase;border:1px solid transparent}.post-card-tag-more{font-style:italic;opacity:.8}.post-card-footer{display:flex;justify-content:flex-end;margin-top:auto}.post-card-link{color:var(--color-accent);text-decoration:none;font-size:14px;font-weight:500;display:flex;align-items:center;gap:.5rem;transition:opacity .2s ease}.post-card-link:hover{opacity:.8}.post-card-arrow{transition:transform .2s ease}.post-card-link:hover .post-card-arrow{transform:translate(2px)}.no-posts{text-align:center;padding:3rem 0}.no-posts p{color:var(--color-muted);font-size:16px;font-style:italic}.pagination{margin-top:3rem;padding-top:2rem;border-top:1px solid var(--color-border)}.pagination-links{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.pagination-link{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border:1px solid var(--color-border);border-radius:6px;text-decoration:none;color:var(--color-fg);font-size:14px;font-weight:500;transition:all .2s ease;min-width:100px;justify-content:center}.pagination-link:hover:not(.pagination-disabled){border-color:var(--color-accent);background:var(--color-accent);color:#fff}.pagination-disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.pagination-arrow{font-size:12px;transition:transform .2s ease}.pagination-prev:hover:not(.pagination-disabled) .pagination-arrow{transform:translate(-2px)}.pagination-next:hover:not(.pagination-disabled) .pagination-arrow{transform:translate(2px)}.pagination-info{text-align:center;color:var(--color-fg);font-size:14px;font-weight:500}.pagination-count{display:block;font-size:12px;color:var(--color-muted);font-weight:400;margin-top:.25rem}.pagination-pages{display:flex;justify-content:center;gap:.5rem;flex-wrap:wrap}.pagination-page{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid var(--color-border);border-radius:6px;text-decoration:none;color:var(--color-fg);font-size:14px;font-weight:500;transition:all .2s ease}.pagination-page:hover{border-color:var(--color-accent);background:var(--color-accent);color:#fff}.pagination-current{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}@media (min-width: 768px){.posts-grid{grid-template-columns:repeat(auto-fit,minmax(350px,1fr))}.pagination-info{flex:1;text-align:center}.pagination-links{align-items:center}}code[class*=language-],pre[class*=language-]{color:var(--color-fg);background:none;font-family:Monaco,Menlo,Ubuntu Mono,Consolas,source-code-pro,monospace;font-size:13px;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.4;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=language-]{padding:1rem;margin:1rem 0;overflow:auto;background:var(--color-code-bg);border:1px solid var(--color-border);border-radius:6px}:not(pre)>code[class*=language-]{padding:2px 6px;border-radius:3px;background:var(--color-code-bg);color:var(--color-fg);white-space:normal}:root{--prism-comment: #6a737d;--prism-keyword: #d73a49;--prism-string: #032f62;--prism-function: #6f42c1;--prism-number: #005cc5;--prism-operator: #d73a49;--prism-punctuation: #24292e;--prism-property: #005cc5;--prism-tag: #22863a;--prism-attr-name: #6f42c1;--prism-attr-value: #032f62;--prism-regex: #032f62}[data-theme=dark]{--prism-comment: #8b949e;--prism-keyword: #ff7b72;--prism-string: #a5d6ff;--prism-function: #d2a8ff;--prism-number: #79c0ff;--prism-operator: #ff7b72;--prism-punctuation: #e6edf3;--prism-property: #79c0ff;--prism-tag: #7ee787;--prism-attr-name: #d2a8ff;--prism-attr-value: #a5d6ff;--prism-regex: #a5d6ff}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:var(--prism-comment);font-style:italic}.token.punctuation{color:var(--prism-punctuation)}.token.property,.token.tag,.token.boolean,.token.number,.token.constant,.token.symbol,.token.deleted{color:var(--prism-property)}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:var(--prism-string)}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string{color:var(--prism-operator)}.token.atrule,.token.attr-value,.token.keyword{color:var(--prism-keyword);font-weight:500}.token.function,.token.class-name{color:var(--prism-function);font-weight:500}.token.regex,.token.important,.token.variable{color:var(--prism-regex)}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}pre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid var(--color-border);-webkit-user-select:none;-moz-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:var(--prism-comment);display:block;padding-right:.8em;text-align:right}pre[class*=language-]:before{content:attr(data-language);position:absolute;top:0;right:0;padding:.3rem .5rem;font-size:11px;color:var(--prism-comment);background:var(--color-border);border-bottom-left-radius:4px;text-transform:uppercase;font-weight:500;letter-spacing:.5px}pre[class*=language-]::-webkit-scrollbar{height:8px}pre[class*=language-]::-webkit-scrollbar-track{background:transparent}pre[class*=language-]::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}pre[class*=language-]::-webkit-scrollbar-thumb:hover{background:var(--prism-comment)}@media (max-width: 768px){body #main-content{padding:1.5rem}#main-nav{padding:1rem 1.5rem}.site-footer{padding:1rem}.footer-content{flex-direction:column;gap:8px;text-align:center}body.experience .experience-header h1,body:not(.experience) .hero h1{font-size:20px}.nav-content{flex-direction:row;justify-content:space-between}}
