:root{--global-bg-color:#f5ead2;--global-card-bg-color:#fbf3e3;--global-text-color:#34281f;--global-text-color-light:#6b5544;--global-theme-color:#7d302d;--global-hover-color:#a04b35;--global-divider-color:#cdb891;--notebook-accent:#84342d;--notebook-soft:#9a702d;--notebook-heading:#6e302c;--notebook-navy:#334b66;--notebook-nav-bg:#ebd9b8;--notebook-wash:rgba(201,164,104,0.13)}html[data-theme="dark"]{--global-bg-color:#261c1a;--global-card-bg-color:#362623;--global-text-color:#f0e1c5;--global-text-color-light:#cfb99a;--global-theme-color:#e5bd79;--global-hover-color:#f2d79f;--global-divider-color:#725348;--notebook-accent:#e3ba75;--notebook-soft:#c59b60;--notebook-heading:#efcf91;--notebook-navy:#a9c0d4;--notebook-nav-bg:#3a2622;--notebook-wash:rgba(135,72,51,0.16)}body{--medieval-margin-width:min(clamp(32px,7vw,72px),calc((100vh - 100px) * .222));--medieval-margin-space:calc(var(--medieval-margin-width)+20px);position:relative;min-height:100vh;background-color:var(--global-bg-color);background-image:radial-gradient(ellipse at 15% 0%,var(--notebook-wash),transparent 55%);background-attachment:fixed}body.sticky-bottom-footer{padding-bottom:3rem}.medieval-margin-filter{position:absolute;width:0;height:0;overflow:hidden}.medieval-margin{display:block;position:absolute;z-index:0;top:76px;bottom:0;left:8px;width:var(--medieval-margin-width);overflow:hidden;pointer-events:none;-webkit-mask-image:linear-gradient(to right,#000 0%,#000 86%,transparent 100%);mask-image:linear-gradient(to right,#000 0%,#000 86%,transparent 100%)}.medieval-margin-art{position:absolute;inset:0;box-sizing:border-box;border-style:solid;border-color:transparent;border-width:calc(var(--medieval-margin-width) * 1.555172) 0 calc(var(--medieval-margin-width) * .872414) var(--medieval-margin-width);border-image-source:var(--medieval-margin-image);border-image-slice:451 446 253 290;border-image-repeat:stretch round;filter:url(#medieval-remove-paper)}html[data-theme="dark"] .medieval-margin-art{filter:url(#medieval-remove-paper) drop-shadow(0 0 1.5px rgba(244,217,165,0.7))}@media(min-width:1120px){body{--medieval-margin-width:min(145px,calc((100vw - 930px) / 2 - 22px),calc((100vh - 100px) * .222))}}@media(max-width:1119px){body>.container[role="main"],body>.post.distill{width:calc(100% - var(--medieval-margin-space));margin-left:var(--medieval-margin-space);margin-right:0}}.post .post-title,.post article h2,.resume-page h1,.resume-page h2{font-family:Georgia,"Times New Roman",serif;letter-spacing:-0.02em}.resume-page{position:relative}.resume-monk{position:relative;z-index:0;isolation:isolate;float:right;width:min(310px,36%);margin:0 0 1rem 1.4rem;pointer-events:none}.resume-monk::before{content:"";position:absolute;inset:0;z-index:-1;background:url("../img/monk-paper-grain.svg") repeat;opacity:.65;-webkit-mask-image:radial-gradient(ellipse,#000 10%,transparent 72%);mask-image:radial-gradient(ellipse,#000 10%,transparent 72%)}.resume-monk img{display:block;width:100%;height:auto}html[data-theme="dark"] .resume-monk img{filter:drop-shadow(0 0 2px rgba(244,217,165,0.7))}html[data-theme="dark"] .resume-monk::before{filter:brightness(0) invert(1);opacity:.3}@media(max-width:767px){.resume-monk{width:min(180px,34%);margin-left:1rem}}@media(max-width:480px){.resume-monk{width:min(125px,36%);margin-left:.75rem}.resume-page .resume-contact{clear:right}.resume-page .resume-header h1{font-size:clamp(1.1rem,5vw,1.4rem);line-height:1.2}}@media print{.resume-monk{display:none}}.bookshelf{position:relative;z-index:0}.bookshelf-illustration{position:fixed;z-index:-1;top:85px;right:0;width:clamp(260px,30vw,420px);pointer-events:none}.bookshelf-illustration img{display:block;width:100%;height:auto;opacity:.8}html[data-theme="dark"] .bookshelf-illustration img{filter:drop-shadow(0 0 2px rgba(244,217,165,0.8))}@media(max-width:767px){.bookshelf-illustration{top:76px;width:min(220px,50vw)}.bookshelf-illustration img{opacity:.4}}@media(max-width:480px){.bookshelf-illustration{-webkit-mask-image:linear-gradient(to right,transparent 45%,#000 80%);mask-image:linear-gradient(to right,transparent 45%,#000 80%)}}.post .post-title{line-height:1.15}.post article h2{font-weight:400;color:var(--notebook-heading)}.post article h2 strong{color:inherit}.post article .clearfix h2::before{content:"";display:inline-block;width:.3em;height:.3em;margin-right:.5em;vertical-align:.15em;background:var(--notebook-soft);transform:rotate(45deg)}.post-header .desc{color:var(--global-text-color-light)}.ascii-portrait{width:100%}.ascii-portrait-frame{position:relative;overflow:hidden;width:100%;aspect-ratio:4 / 5;background:#11182d;border:1px solid var(--notebook-soft)}.profile .ascii-portrait-sky{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:70% center;filter:brightness(var(--ascii-sky-brightness,1.18))}
.profile .ascii-portrait-figure{position:absolute;bottom:0;left:50%;width:90%;height:auto;transform:translateX(-50%)}.ascii-portrait-canvas{position:absolute;inset:0;width:100%;height:100%}.ascii-portrait-canvas[hidden]{display:none}.ascii-portrait-frame.is-ascii .ascii-portrait-source{visibility:hidden}.ascii-portrait-star{position:absolute;color:#f3d27b;font:.7rem/1 Georgia,serif;pointer-events:none;animation:ascii-star-glow 4.5s ease-in-out infinite alternate}.ascii-portrait-star-one{top:9%;left:12%}.ascii-portrait-star-two{top:15%;right:11%;animation-delay:-1.5s}.ascii-portrait-star-three{top:31%;right:7%;font-size:.5rem;animation-delay:-3s}@keyframes ascii-star-glow{from{opacity:.35}to{opacity:.9}}.ascii-portrait-controls{display:flex;align-items:center;gap:.55rem;margin-top:.65rem;color:var(--global-text-color-light);font-size:.72rem}.ascii-portrait-controls[hidden]{display:none}.ascii-portrait-controls label,.ascii-portrait-controls span{margin:0;color:inherit}.ascii-portrait-controls label{color:var(--notebook-heading);font-weight:600}.ascii-portrait-controls input{flex:1;min-width:0;accent-color:var(--notebook-accent)}@media(prefers-reduced-motion:reduce){.ascii-portrait-star{animation:none}}.navbar{border-bottom-color:var(--global-divider-color);background-color:var(--notebook-nav-bg)}.navbar.navbar-light .navbar-nav .nav-item.active>.nav-link{color:var(--notebook-heading);text-decoration:underline;text-decoration-color:var(--notebook-soft);text-underline-offset:.4em;text-decoration-thickness:1px}.post article hr{border-color:var(--global-divider-color)}.post article p a,.post article li a{color:var(--notebook-navy)}.post article p a:hover,.post article li a:hover,.post article p a:focus-visible,.post article li a:focus-visible{color:var(--notebook-accent)}.social .contact-icons a i::before{color:var(--notebook-navy)}.social .contact-icons a:hover i::before,.social .contact-icons a:focus-visible i::before{color:var(--notebook-accent)}.career-ladder li::before{border-color:var(--notebook-soft)}.career-ladder li>strong{color:var(--notebook-accent)}.projects .card .card-text{color:var(--global-text-color-light)}.project-card-layout{display:flex;align-items:center;gap:1.25rem;padding:1.25rem}.project-card-layout .card-body{min-width:0;padding:0}.project-card .card-title{margin-bottom:.4rem;font-family:Georgia,"Times New Roman",serif;font-size:1.35rem}.project-initial{display:inline-grid;flex:0 0 104px;width:104px;height:104px;place-items:center;overflow:hidden;border:1px solid #b68b48;background:#6e302d}.project-initial>*{grid-area:1 / 1}.project-initial-fallback{color:#f0e1c1;font:4.5rem/1 Georgia,"Times New Roman",serif}.project-initial-art{display:none}.project-initial.is-ready .project-initial-art{display:block}.project-initial.is-ready .project-initial-fallback{display:none}.notebook-scene-canvas{display:block;width:100%;height:auto}.notebook-footer-art[hidden]{display:none}.notebook-footer-art{margin:0;padding:0;overflow:visible;background:transparent;border:0;color:var(--notebook-accent);font:12px/1.12 "Courier New",monospace;font-weight:600;text-align:left;white-space:pre}
@media(max-width:575px){.social .contact-icons{font-size:clamp(2rem,8.5vw,3.5rem)}.project-card-layout{gap:.9rem;padding:1rem}.project-initial{flex-basis:76px;width:76px;height:76px}.project-initial-fallback{font-size:3.2rem}.post-header .profile.float-right{float:none!important;width:min(100%,300px);margin:0 auto 1.5rem}.post .post-title{font-size:clamp(1.9rem,8vw,2.5rem)}.notebook-footer-art{font-size:11px}}@media(max-width:420px){.projects>.container{padding-right:0;padding-left:0}.projects>.container>.row{margin-right:0;margin-left:0}.projects>.container>.row>.col{padding-right:0;padding-left:0}.project-card-layout{gap:.65rem;padding:.75rem}.project-initial{flex-basis:56px;width:56px;height:56px}.project-initial-fallback{font-size:2.7rem}}