:root{--font-serif:Georgia, "Times New Roman", serif;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif;--font-body:var(--font-serif);--font-size-body:17px;--line-height:1.75;--c-bg:#1a0f07;--c-bg-page:linear-gradient(160deg, #1a0f07 0%, #2d1810 55%, #1a0f07 100%);--c-header-bg:#080402eb;--c-header-border:#d4af371a;--c-rule:#d4af372e;--c-text:#e8d5b7;--c-text-2:#c4a882;--c-text-muted:#9a7a55;--c-accent:#d4af37;--c-logo:#6a4e28;--c-logo-hover:#b89040;--c-caret:#5a3e20;--c-nav:#8a7050;--c-nav-hover:#d8c8a0;--c-nav-active:#e8d8b0;--c-card-bg:#2d1810;--c-card-border:#d4af3721;--c-card-hover:#d4af3780;--c-timeline:#d4af3733;--c-tag-bg:#d4af3714;--c-tag:#d4af37;--c-divider:#d4af37;--c-ornament:#d4af37;--c-h1:#d4af37;--c-h2:#d4af37;--c-period:#9a7a55;--c-company:#d4af37;--c-post-date:#9a7a55;--c-read-more:#d4af37;--c-dd-bg:#0a0602f7;--c-dd-border:#d4af3738;--c-dd-label:#6a4a28;--c-dd-item:#d0be98;--c-dd-hover-bg:#ffffff0a;--c-dd-hover:#f0e0c0;--c-toggle:#7a6040;--c-toggle-hover:#d0b870}[data-theme=light]{--font-body:var(--font-sans);--font-size-body:16px;--line-height:1.6;--c-bg:#fff;--c-bg-page:#f6f8fa;--c-header-bg:#fffffff7;--c-header-border:#d0d7de;--c-rule:#d0d7de;--c-text:#1f2328;--c-text-2:#57606a;--c-text-muted:#6e7781;--c-accent:#0969da;--c-logo:#57606a;--c-logo-hover:#24292f;--c-caret:#8c959f;--c-nav:#57606a;--c-nav-hover:#24292f;--c-nav-active:#24292f;--c-card-bg:#f6f8fa;--c-card-border:#d0d7de;--c-card-hover:#0969da;--c-timeline:#d0d7de;--c-tag-bg:#0969da12;--c-tag:#0550ae;--c-divider:#d0d7de;--c-ornament:#8c959f;--c-h1:#1f2328;--c-h2:#1f2328;--c-period:#6e7781;--c-company:#0969da;--c-post-date:#6e7781;--c-read-more:#0969da;--c-dd-bg:#fffffffc;--c-dd-border:#d0d7de;--c-dd-label:#6e7781;--c-dd-item:#1f2328;--c-dd-hover-bg:#f6f8fa;--c-dd-hover:#0969da;--c-toggle:#57606a;--c-toggle-hover:#24292f}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;font-family:var(--font-sans);background:#1a0f07;overflow:hidden}.site-header{z-index:100;background:var(--c-header-bg);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--c-header-border);align-items:center;gap:.4rem;height:52px;padding:0 .6rem;transition:background .3s,border-color .3s;display:flex;position:fixed;top:0;left:0;right:0}@media (min-width:640px){.site-header{gap:1.2rem;padding:0 1.75rem}}.sh-logo-wrap{position:relative}.sh-logo-btn{cursor:pointer;color:var(--c-logo);font-family:var(--font-sans);letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;background:0 0;border:none;align-items:center;gap:.2rem;padding:.2rem 0;font-size:.7rem;font-weight:600;transition:color .2s;display:flex}@media (min-width:640px){.sh-logo-btn{letter-spacing:.22em;gap:.3rem;padding:.2rem .1rem}}.sh-logo-btn:hover{color:var(--c-logo-hover)}.sh-logo-caret{color:var(--c-caret);font-size:.6rem;transition:transform .22s;display:inline-block}.sh-logo-dropdown{background:var(--c-dd-bg);border:1px solid var(--c-dd-border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:3px;min-width:190px;transition:opacity .18s,transform .18s,background .3s,border-color .3s;position:absolute;top:calc(100% + .45rem);left:0;overflow:hidden;box-shadow:0 8px 32px #00000059}.sh-dd-label{border-bottom:1px solid var(--c-dd-border);color:var(--c-dd-label);font-family:var(--font-sans);letter-spacing:.18em;text-transform:uppercase;padding:.45rem .85rem;font-size:.67rem;transition:color .3s,border-color .3s}.sh-dd-item{color:var(--c-dd-item);font-family:var(--font-sans);letter-spacing:.03em;align-items:center;gap:.65rem;padding:.72rem .85rem;font-size:.88rem;text-decoration:none;transition:background .15s,color .15s;display:flex}.sh-dd-item:hover{background:var(--c-dd-hover-bg);color:var(--c-dd-hover)}.sh-dd-ornament{opacity:.55;flex-shrink:0;font-size:.65rem}.site-header-rule{background:var(--c-rule);flex-shrink:0;width:1px;height:17px;transition:background .3s}.site-header-nav{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;flex:1;align-items:center;gap:0;display:flex;overflow-x:auto}.site-header-nav::-webkit-scrollbar{display:none}.site-header-link{height:52px;color:var(--c-nav);font-family:var(--font-sans);letter-spacing:.025em;white-space:nowrap;align-items:center;padding:0 .75rem;font-size:.875rem;text-decoration:none;transition:color .2s;display:flex;position:relative}.site-header-link:after{content:"";background:var(--glow,var(--c-accent));opacity:0;transform-origin:0;height:2px;transition:opacity .2s,transform .22s;position:absolute;bottom:0;left:.75rem;right:.75rem;transform:scaleX(.3)}.site-header-link:hover{color:var(--c-nav-hover)}.site-header-link:hover:after{opacity:.55;transform:scaleX(1)}.site-header-link.active{color:var(--c-nav-active)}.site-header-link.active:after{opacity:1;transform:scaleX(1)}[data-theme=light] .site-header-link:after{background:var(--c-accent)}.site-header-link{cursor:grab}.site-header-link.sh-dragging{opacity:.35;cursor:grabbing}.site-header-link.sh-drag-target{box-shadow:inset 2px 0 0 var(--c-accent)}.sh-logo-wrap,.site-header-rule{flex-shrink:0}.theme-toggle{cursor:pointer;width:32px;min-width:44px;height:32px;min-height:44px;color:var(--c-toggle);background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;transition:color .2s,background .2s;display:flex}.theme-toggle:hover{color:var(--c-toggle-hover);background:#8080801a}.page-container{-webkit-overflow-scrolling:touch;background:var(--c-bg-page);height:100vh;padding:calc(52px + 1.75rem) 1rem 3rem;transition:background .3s;overflow-y:auto}@media (min-width:640px){.page-container{padding-inline:1.75rem}}@media (min-width:1024px){.page-container{padding:calc(52px + 2.75rem) 2rem 4rem}}.page-content{max-width:68ch;color:var(--c-text);font-family:var(--font-body);font-size:15px;line-height:var(--line-height);margin:0 auto;transition:color .3s,font-family .1s}@media (min-width:640px){.page-content{font-size:16px}}@media (min-width:1024px){.page-content{font-size:var(--font-size-body)}}.chapter-ornament{text-align:center;color:var(--c-ornament);margin-bottom:1rem;font-size:1.3rem;transition:color .3s}h1{color:var(--c-h1);text-align:center;letter-spacing:.08em;font-size:clamp(2rem,5vw,2.8rem);font-weight:400;line-height:1.2;transition:color .3s}.divider{background:var(--c-divider);width:60px;height:1px;margin:1.5rem auto;transition:background .3s}.intro{color:var(--c-text-2);text-align:center;margin-bottom:2.5rem;font-size:1.15em;font-style:italic;transition:color .3s}section{margin-bottom:2.25rem}section h2{color:var(--c-h2);letter-spacing:.04em;margin-bottom:.75rem;font-size:1.35em;font-weight:400;transition:color .3s}section p{margin-bottom:1rem}section ul{padding-left:1.5rem}section li{color:var(--c-text-2);margin-bottom:.45rem}.projects-grid{grid-template-columns:1fr;gap:1.1rem;margin-top:2rem;display:grid}@media (min-width:640px){.projects-grid{grid-template-columns:1fr 1fr;gap:1.25rem}}.project-card{background:var(--c-card-bg);border:1px solid var(--c-card-border);border-radius:4px;padding:1.4rem;transition:border-color .25s,background .3s}.project-card:hover{border-color:var(--c-card-hover)}.project-card h3{color:var(--c-accent);margin-bottom:.5rem;font-size:1.1em;transition:color .3s}.project-card p{color:var(--c-text-2);margin-bottom:1rem;font-size:.95em}.tags{flex-wrap:wrap;gap:.35rem;display:flex}.tag{background:var(--c-tag-bg);color:var(--c-tag);font-size:.78em;font-family:var(--font-sans);letter-spacing:.03em;border-radius:3px;padding:.2rem .55rem;transition:background .3s,color .3s}.timeline{padding-left:2rem;position:relative}.timeline:before{content:"";background:var(--c-timeline);width:1px;transition:background .3s;position:absolute;top:0;bottom:0;left:0}.timeline-item{margin-bottom:2.5rem;position:relative}.timeline-marker{background:var(--c-accent);border:2px solid var(--c-bg);border-radius:50%;width:10px;height:10px;transition:background .3s,border-color .3s;position:absolute;top:.35rem;left:-2.45rem}.timeline-content{padding-bottom:.5rem}.role-header{flex-wrap:wrap;align-items:baseline;gap:.7rem;margin-bottom:.2rem;display:flex}.role-header h3{color:var(--c-text);font-size:1.05em;font-weight:400}.company{color:var(--c-company);font-size:1em;transition:color .3s}.period{color:var(--c-period);letter-spacing:.05em;margin-bottom:.5rem;font-size:.82em;transition:color .3s;display:block}.blog-list{margin-top:2rem}.blog-post{border-bottom:1px solid var(--c-card-border);padding:1.5rem 0;transition:border-color .3s}.post-date{color:var(--c-post-date);letter-spacing:.1em;text-transform:uppercase;font-size:.8em;font-family:var(--font-sans);margin-bottom:.4rem;transition:color .3s;display:block}.blog-post h3{color:var(--c-accent);margin-bottom:.5rem;font-size:1.2em;font-weight:400;transition:color .3s}.blog-post p{color:var(--c-text-2);margin-bottom:.75rem}.read-more{color:var(--c-read-more);font-size:.88em;font-family:var(--font-sans);cursor:pointer;transition:color .3s}.prose{margin-top:1.5rem}.prose h2{color:var(--c-h2);letter-spacing:.04em;margin:2rem 0 .75rem;font-size:1.35em;font-weight:400;transition:color .3s}.prose h3{color:var(--c-h2);margin:1.5rem 0 .5rem;font-size:1.15em;font-weight:400}.prose p{line-height:var(--line-height);margin-bottom:1rem}.prose ul,.prose ol{margin-bottom:1rem;padding-left:1.5rem}.prose li{margin-bottom:.4rem}.prose strong{color:var(--c-text);font-weight:600}.prose em{font-style:italic}.prose blockquote{border-left:3px solid var(--c-accent);color:var(--c-text-2);margin:1.5rem 0;padding-left:1rem;font-style:italic}.prose pre{background:var(--c-card-bg);border:1px solid var(--c-card-border);border-radius:4px;margin:1.25rem 0;padding:1rem 1.25rem;font-size:.88em;line-height:1.6;overflow-x:auto}.prose code{background:var(--c-card-bg);border:1px solid var(--c-card-border);border-radius:3px;padding:.15em .4em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.88em}.prose pre code{background:0 0;border:none;padding:0;font-size:1em}.back-to-list{color:var(--c-text-muted);font-family:var(--font-sans);margin-bottom:1.5rem;font-size:.85rem;text-decoration:none;transition:color .2s;display:inline-block}.back-to-list:hover{color:var(--c-accent)}.post-header{margin-bottom:.5rem}.post-title-link{color:var(--c-accent);text-decoration:none;transition:opacity .2s}.post-title-link:hover{opacity:.8}.status-badge{font-family:var(--font-sans);border:1px solid;border-radius:20px;flex-shrink:0;margin-top:.15em;padding:.15em .6em;font-size:.72em}.status-badge[data-status=active]{color:#3fb950}.status-badge[data-status=wip]{color:#d29922}.status-badge[data-status=archived]{color:var(--c-text-muted)}@keyframes contact-pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--c-accent) 40%, transparent)}70%{box-shadow:0 0 0 10px #0000}to{box-shadow:0 0 #0000}}@keyframes contact-slide-up{0%{opacity:0;transform:translateY(14px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.contact-fab{z-index:200;cursor:pointer;background:var(--c-accent);color:#1a0f07;width:52px;height:52px;box-shadow:0 4px 20px color-mix(in srgb, var(--c-accent) 45%, transparent), 0 2px 8px #00000059;border:none;border-radius:50%;justify-content:center;align-items:center;transition:transform .2s,box-shadow .2s,background .2s;animation:3s ease-out 2s infinite contact-pulse;display:flex;position:fixed;bottom:1.75rem;right:1.75rem}.contact-fab:hover{box-shadow:0 6px 28px color-mix(in srgb, var(--c-accent) 60%, transparent), 0 3px 10px #0006;transform:scale(1.09)}.contact-fab--open{background:var(--c-card-bg);color:var(--c-text);border:1px solid var(--c-card-border);animation:none;box-shadow:0 2px 12px #0000004d}.contact-fab--open:hover{transform:scale(1.05)}.contact-fab-icon{justify-content:center;align-items:center;transition:transform .2s;display:flex}.contact-fab--open .contact-fab-icon{transform:rotate(90deg)}[data-theme=light] .contact-fab{color:#fff}.contact-modal{z-index:199;background:var(--c-header-bg);border:1px solid var(--c-card-border);-webkit-backdrop-filter:blur(20px);pointer-events:none;opacity:0;border-radius:14px;width:min(360px,100vw - 2rem);transition:opacity .22s,transform .22s;position:fixed;bottom:calc(1.75rem + 64px);right:1.75rem;overflow:hidden;transform:translateY(14px)scale(.96);box-shadow:0 20px 60px #0000008c,0 4px 16px #00000040}.contact-modal--open{pointer-events:auto;animation:.24s forwards contact-slide-up}.contact-modal[hidden]{display:none}.contact-modal-header{border-bottom:1px solid var(--c-card-border);align-items:center;gap:.85rem;padding:1.1rem 1.25rem .9rem;display:flex}.contact-modal-avatar{background:var(--c-accent);color:#1a0f07;width:42px;height:42px;font-family:var(--font-sans);letter-spacing:.1em;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.72rem;font-weight:700;display:flex}[data-theme=light] .contact-modal-avatar{color:#fff}.contact-modal-name{font-family:var(--font-sans);color:var(--c-text);letter-spacing:.01em;font-size:.94rem;font-weight:600}.contact-modal-status{font-family:var(--font-sans);color:var(--c-text-muted);align-items:center;gap:.4rem;margin-top:.15rem;font-size:.75rem;display:flex}.contact-status-dot{background:#3fb950;border-radius:50%;flex-shrink:0;width:7px;height:7px;box-shadow:0 0 6px #3fb950aa}.contact-modal-body{border-bottom:1px solid var(--c-card-border);padding:1rem 1.25rem}.contact-modal-body p{font-family:var(--font-sans);color:var(--c-text-2);margin:0 0 .65rem;font-size:.875rem;line-height:1.6}.contact-modal-body p:last-child{margin-bottom:0}.contact-cards{flex-direction:column;gap:.3rem;padding:.65rem .75rem .75rem;display:flex}.contact-card{border-radius:9px;align-items:center;gap:.75rem;padding:.65rem .6rem;text-decoration:none;transition:background .15s;display:flex}.contact-card:hover{background:var(--c-dd-hover-bg)}.contact-card-icon{background:var(--c-card-bg);border:1px solid var(--c-card-border);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;transition:border-color .15s;display:flex}.contact-card:hover .contact-card-icon{border-color:var(--c-accent)}.contact-card-text{flex-direction:column;flex:1;min-width:0;display:flex}.contact-card-label{font-family:var(--font-sans);letter-spacing:.1em;text-transform:uppercase;color:var(--c-text-muted);font-size:.7rem;font-weight:600}.contact-card-value{font-family:var(--font-sans);color:var(--c-text);white-space:nowrap;text-overflow:ellipsis;margin-top:.05rem;font-size:.855rem;overflow:hidden}.contact-card-arrow{color:var(--c-text-muted);flex-shrink:0;font-size:.75rem;transition:color .15s,transform .15s}.contact-card:hover .contact-card-arrow{color:var(--c-accent);transform:translate(2px,-2px)}
