:root{--bg_h:#f9f5d7;--bg:#fbf1c7;--bg_s:#f2e5bc;--bg1:#ebdbb2;--bg2:#d5c4a1;--bg3:#bdae93;--bg4:#a89984;--fg:#282828;--fg1:#3c3836;--fg2:#504945;--fg3:#665c54;--fg4:#7c6f64;--red:#9d0006;--green:#79740e;--yellow:#b57614;--blue:#076678;--purple:#8f3f71;--aqua:#427b58;--orange:#af3a03;--gray:#928374;--red-dim:#cc2412;--green-dim:#98971a;--yellow-dim:#d79921;--blue-dim:#458598;--purple-dim:#b16286;--aqua-dim:#689d6a;--orange-dim:#d65d0e;--gray-dim:#7c6f64}.darkmode{--bg_h:#1d2021;--bg:#282828;--bg_s:#32302f;--bg1:#3c3836;--bg2:#504945;--bg3:#665c54;--bg4:#7c6f64;--fg:#fbf1c7;--fg1:#ebdbb2;--fg2:#d5c4a1;--fg3:#bdae93;--fg4:#a89984;--red:#fb4934;--green:#b8bb26;--yellow:#fabd2f;--blue:#83a598;--purple:#d3869b;--aqua:#8ec07c;--gray:#928374;--orange:#fe8019;--red-dim:#cc2412;--green-dim:#98971a;--yellow-dim:#d79921;--blue-dim:#458588;--purple-dim:#b16286;--aqua-dim:#689d6a;--gray-dim:#a89984;--orange-dim:#d65d0e}@font-face{font-display:swap;font-family:latin modern mono;font-style:normal;font-weight:700;src:url(../fonts/lmmono-bold.woff)}@font-face{font-display:swap;font-family:latin modern mono;font-style:italic;font-weight:700;src:url(../fonts/lmmono-bolditalic.woff)}@font-face{font-display:swap;font-family:latin modern mono;font-style:italic;font-weight:400;src:url(../fonts/lmmono-italic.woff)}@font-face{font-display:swap;font-family:latin modern mono;font-style:normal;font-weight:400;src:url(../fonts/lmmono-normal.woff)}@font-face{font-display:swap;font-family:latin modern roman;font-style:normal;font-weight:700;src:url(../fonts/lmroman-bold.woff)}@font-face{font-display:swap;font-family:latin modern roman;font-style:italic;font-weight:700;src:url(../fonts/lmroman-bolditalic.woff)}@font-face{font-display:swap;font-family:latin modern roman;font-style:italic;font-weight:400;src:url(../fonts/lmroman-italic.woff)}@font-face{font-display:swap;font-family:latin modern roman;font-style:normal;font-weight:400;src:url(../fonts/lmroman-normal.woff)}.bg{color:#3c3836;background-color:#fbf1c7}.chroma{color:#3c3836;background-color:#fbf1c7}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#e1d8b3}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#9d9b9a}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#9d9b9a}.chroma .line{display:flex}.chroma .k{color:#af3a03}.chroma .kc{color:#af3a03}.chroma .kd{color:#af3a03}.chroma .kn{color:#af3a03}.chroma .kp{color:#af3a03}.chroma .kr{color:#af3a03}.chroma .kt{color:#b57614}.chroma .na{color:#79740e;font-weight:700}.chroma .nb{color:#b57614}.chroma .no{color:#d3869b}.chroma .ni{color:#b57614}.chroma .ne{color:#fb4934}.chroma .nf{color:#b57614}.chroma .nl{color:#9d0006}.chroma .nt{color:#9d0006}.chroma .s{color:#79740e}.chroma .sa{color:#79740e}.chroma .sb{color:#79740e}.chroma .sc{color:#79740e}.chroma .dl{color:#79740e}.chroma .sd{color:#79740e}.chroma .s2{color:#79740e}.chroma .se{color:#79740e}.chroma .sh{color:#79740e}.chroma .si{color:#79740e}.chroma .sx{color:#79740e}.chroma .sr{color:#79740e}.chroma .s1{color:#79740e}.chroma .ss{color:#076678}.chroma .m{color:#8f3f71}.chroma .mb{color:#8f3f71}.chroma .mf{color:#8f3f71}.chroma .mh{color:#8f3f71}.chroma .mi{color:#8f3f71}.chroma .il{color:#8f3f71}.chroma .mo{color:#8f3f71}.chroma .o{color:#af3a03}.chroma .ow{color:#af3a03}.chroma .c{color:#928374;font-style:italic}.chroma .ch{color:#928374;font-style:italic}.chroma .cm{color:#928374;font-style:italic}.chroma .c1{color:#928374;font-style:italic}.chroma .cs{color:#928374;font-style:italic}.chroma .cp{color:#427b58}.chroma .cpf{color:#427b58;font-style:italic}.chroma .gd{color:#282828;background-color:#9d0006}.chroma .ge{color:#076678;text-decoration:underline}.chroma .gr{background-color:#9d0006;font-weight:700}.chroma .gh{color:#79740e;font-weight:700}.chroma .gi{color:#282828;background-color:#79740e}.chroma .go{color:#504945}.chroma .gu{color:#79740e;font-weight:700}.chroma .gt{background-color:#3c3836;font-weight:700}.darkmode{}.darkmode .bg{color:#ebdbb2;background-color:#282828}.darkmode .chroma{color:#ebdbb2;background-color:#282828}.darkmode .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.darkmode .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.darkmode .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.darkmode .chroma .hl{background-color:#3d3d3d}.darkmode .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#756d59}.darkmode .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#756d59}.darkmode .chroma .line{display:flex}.darkmode .chroma .k{color:#fe8019}.darkmode .chroma .kc{color:#fe8019}.darkmode .chroma .kd{color:#fe8019}.darkmode .chroma .kn{color:#fe8019}.darkmode .chroma .kp{color:#fe8019}.darkmode .chroma .kr{color:#fe8019}.darkmode .chroma .kt{color:#fabd2f}.darkmode .chroma .na{color:#b8bb26;font-weight:700}.darkmode .chroma .nb{color:#fabd2f}.darkmode .chroma .no{color:#d3869b}.darkmode .chroma .ni{color:#fabd2f}.darkmode .chroma .ne{color:#fb4934}.darkmode .chroma .nf{color:#fabd2f}.darkmode .chroma .nl{color:#fb4934}.darkmode .chroma .nt{color:#fb4934}.darkmode .chroma .s{color:#b8bb26}.darkmode .chroma .sa{color:#b8bb26}.darkmode .chroma .sb{color:#b8bb26}.darkmode .chroma .sc{color:#b8bb26}.darkmode .chroma .dl{color:#b8bb26}.darkmode .chroma .sd{color:#b8bb26}.darkmode .chroma .s2{color:#b8bb26}.darkmode .chroma .se{color:#b8bb26}.darkmode .chroma .sh{color:#b8bb26}.darkmode .chroma .si{color:#b8bb26}.darkmode .chroma .sx{color:#b8bb26}.darkmode .chroma .sr{color:#b8bb26}.darkmode .chroma .s1{color:#b8bb26}.darkmode .chroma .ss{color:#83a598}.darkmode .chroma .m{color:#d3869b}.darkmode .chroma .mb{color:#d3869b}.darkmode .chroma .mf{color:#d3869b}.darkmode .chroma .mh{color:#d3869b}.darkmode .chroma .mi{color:#d3869b}.darkmode .chroma .il{color:#d3869b}.darkmode .chroma .mo{color:#d3869b}.darkmode .chroma .o{color:#fe8019}.darkmode .chroma .ow{color:#fe8019}.darkmode .chroma .c{color:#928374;font-style:italic}.darkmode .chroma .ch{color:#928374;font-style:italic}.darkmode .chroma .cm{color:#928374;font-style:italic}.darkmode .chroma .c1{color:#928374;font-style:italic}.darkmode .chroma .cs{color:#928374;font-style:italic}.darkmode .chroma .cp{color:#8ec07c}.darkmode .chroma .cpf{color:#8ec07c;font-style:italic}.darkmode .chroma .gd{color:#282828;background-color:#fb4934}.darkmode .chroma .ge{color:#83a598;text-decoration:underline}.darkmode .chroma .gr{background-color:#fb4934;font-weight:700}.darkmode .chroma .gh{color:#b8bb26;font-weight:700}.darkmode .chroma .gi{color:#282828;background-color:#b8bb26}.darkmode .chroma .go{color:#504945}.darkmode .chroma .gu{color:#b8bb26;font-weight:700}.darkmode .chroma .gt{background-color:#fb4934;font-weight:700}:root{--bg_h:#f9f5d7;--bg:#fbf1c7;--bg_s:#f2e5bc;--bg1:#ebdbb2;--bg2:#d5c4a1;--bg3:#bdae93;--bg4:#a89984;--fg:#282828;--fg1:#3c3836;--fg2:#504945;--fg3:#665c54;--fg4:#7c6f64;--red:#9d0006;--green:#79740e;--yellow:#b57614;--blue:#076678;--purple:#8f3f71;--aqua:#427b58;--orange:#af3a03;--gray:#928374;--red-dim:#cc2412;--green-dim:#98971a;--yellow-dim:#d79921;--blue-dim:#458598;--purple-dim:#b16286;--aqua-dim:#689d6a;--orange-dim:#d65d0e;--gray-dim:#7c6f64}.darkmode{--bg_h:#1d2021;--bg:#282828;--bg_s:#32302f;--bg1:#3c3836;--bg2:#504945;--bg3:#665c54;--bg4:#7c6f64;--fg:#fbf1c7;--fg1:#ebdbb2;--fg2:#d5c4a1;--fg3:#bdae93;--fg4:#a89984;--red:#fb4934;--green:#b8bb26;--yellow:#fabd2f;--blue:#83a598;--purple:#d3869b;--aqua:#8ec07c;--gray:#928374;--orange:#fe8019;--red-dim:#cc2412;--green-dim:#98971a;--yellow-dim:#d79921;--blue-dim:#458588;--purple-dim:#b16286;--aqua-dim:#689d6a;--gray-dim:#a89984;--orange-dim:#d65d0e}:root{--bg:#fff4e3 !important}body{background-color:var(--bg)}.home .home-section-card{max-width:1280px;margin:0 auto;padding:.8rem 1.5rem 1rem;background:linear-gradient(to bottom,#fefafc,#fff);background-color:rgba(177,98,134,6%);border-left:4px solid rgba(177,98,134,.25);border-radius:18px 18px 12px 12px;box-shadow:0 3px 8px rgba(0,0,0,3%)}.home .home-content{font-size:1rem;line-height:1.1;color:#2b2b2b;font-family:lora,serif}.home .home-content p{margin-bottom:1.1rem;line-height:1.7}.home .home-content ul{list-style:none;padding-left:1.2rem;margin-top:.5rem;margin-bottom:1rem}.home .home-content ul li{position:relative;margin-bottom:.4rem;padding-left:1.2rem;font-size:.96rem}.home .home-content ul li::before{content:"➝";position:absolute;left:0;color:#8c4d67;font-weight:700}.home .home-content a{text-decoration:underline;text-underline-offset:2px;color:inherit}.home .home-content a:hover{color:#b16286}.home .home-content h3 a{text-decoration:none;color:inherit}.home .home-content h3{font-family:lora,serif;font-size:1.3rem;font-weight:600;color:#2c2c2c;border-bottom:1px solid #e3d4db;padding-bottom:.2rem;margin-top:2.2rem;margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.icon-links.vertical{display:flex;flex-direction:column;gap:.7rem;padding-top:.2rem;margin-top:0;border-top:none!important}.icon-links.vertical a{display:inline-flex;align-items:center;gap:.5rem;font-size:1.9rem;text-decoration:none;color:#2b2b2b;transition:color .2s ease}.icon-links.vertical a:hover{color:#b16286}.icon-links.vertical i{font-size:1.4rem;opacity:.8}.home .home-content ul{list-style:none;padding-left:0;margin-top:.5rem;margin-bottom:.5rem}.home .home-content ul{list-style:none;padding-left:0;margin-top:.9rem;margin-bottom:1rem;display:grid;gap:.8rem}.home .home-content ul li{position:relative;padding:.4rem 1.4rem .4rem 3rem;font-size:1rem;line-height:1.85rem;background:linear-gradient(to right,rgba(245,223,232,.3),rgba(254,250,252,.6));border-left:4px solid rgba(177,98,134,.4);border-bottom:2px solid rgba(177,98,134,.15);border-radius:8px;box-shadow:0 1px 3px rgba(177,98,134,6%);transition:all .25s ease}.home .home-content ul li:hover{background:linear-gradient(to right,rgba(245,223,232,.5),rgba(254,250,252,.8));border-left-color:#b16286;box-shadow:0 2px 6px rgba(177,98,134,.12);transform:translateX(2px)}.home .home-content ul li::before{content:"◆";position:absolute;left:.9rem;top:50%;transform:translateY(-50%);font-size:1.25rem;color:#b16286;opacity:.8}.home .home-content ul li a{text-decoration:none;color:#2b2b2b;font-weight:500;line-height:.6;transition:color .2s ease;display:inline}.home .home-content ul li a:hover{color:#b16286}@media(max-width:768px){.home .home-section-card{padding:.6rem 1rem .8rem;margin:0 .5rem}.home .home-content ul li{padding:.5rem 1rem .5rem 2.2rem;font-size:.95rem;line-height:1.6rem}.home .home-content ul li::before{left:.7rem;font-size:1rem}.home .home-content h3{font-size:1.15rem}}@media(max-width:480px){.home .home-content ul li{padding:.5rem .8rem .5rem 2rem}.home .home-content ul li::before{left:.6rem;font-size:.9rem}}@media(min-width:1400px){.home .home-section-card{max-width:1100px;padding:1rem 2rem 1.2rem}.home .home-content ul li{font-size:1.05rem;padding:.5rem 1.6rem .5rem 3.2rem}}@media(min-width:1920px){.home .home-section-card{max-width:1200px;margin:0 auto}.home .home-content{font-size:1.08rem}.home .home-content ul li{font-size:1.08rem}}.navbar-container{display:flex;flex-direction:column;align-items:center;border-bottom:.5px solid rgba(0,0,0,8%);padding:0 0 .95rem;margin:0 auto;margin-bottom:1rem;width:100%;box-sizing:border-box;font-family:georgia,serif!important}.signature{font-size:.85rem;color:#5e5e5e;letter-spacing:.5px;font-weight:400;margin-bottom:.65rem;padding-bottom:.25rem;padding-top:-.25rem;margin-top:-1rem;border-bottom:.5px solid rgba(0,0,0,8%);text-transform:none;text-align:right;width:100%;font-family:lora;font-style:italic}.navbar{position:relative;width:100%;display:flex;justify-content:space-between;align-items:center;font-family:lora,serif}.nav-left,.nav-right{display:flex;gap:1.5rem;align-items:center;font-family:georgia,serif;font-weight:500;font-size:1.2rem}.nav-left{justify-content:flex-end}.nav-right{justify-content:flex-start}.nav-center{position:absolute;left:50%;transform:translateX(-50%);font-family:georgia,serif;font-weight:700;font-size:1.2rem;padding:0 1rem;text-align:center;white-space:nowrap;pointer-events:none}.navbar a,.navbar span{display:inline-block;color:#000;text-decoration:none;transition:color .2s;font-size:1.35rem;font-family:lora,serif;font-weight:550;letter-spacing:.5px;text-transform:uppercase}.navbar a:hover{color:#000}.active span{position:relative;color:#000}.active span::after{content:"";position:absolute;left:0;bottom:-4px;height:1.6px;width:100%;background:#000}h2{font-size:clamp(1.4rem,1.75vw,2rem);font-weight:520;letter-spacing:-.25px;font-family:georgia,serif}.category-scroll-nav{display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;overflow:hidden;gap:.4rem;padding:.4rem .6rem;margin:0 auto 1.5rem;background-color:#f8f5f0;border:1px solid #e4e0db;border-radius:10px;font-size:.85rem;max-width:1000px}.category-scroll-nav a{display:inline-flex;align-items:center;padding:.3rem .55rem;text-decoration:none;color:#444;font-weight:500;border-radius:6px;cursor:pointer;transition:background .2s ease-in-out;flex-shrink:1;min-width:0}.category-scroll-nav a.active{background-color:#e8dce2;color:#5e2a52;font-weight:600}.category-scroll-nav a .emoji{font-size:.85rem;margin-right:.25rem;opacity:.75}.menu-toggle{display:none;background:0 0;border:none;font-size:1.8rem;cursor:pointer;margin-bottom:.5rem}@media(max-width:768px){.menu-toggle{display:block;align-self:flex-end}.navbar{flex-direction:column;align-items:flex-start;gap:.8rem;display:none;width:100%}.navbar.show{display:flex}.nav-left,.nav-right{flex-direction:column;align-items:flex-start;width:100%;gap:.5rem}.nav-center{position:static;transform:none;text-align:left;width:100%;padding:.5rem 0}.navbar a,.navbar span{font-size:1rem;text-transform:none}}@media(max-width:768px){.navbar{overflow:hidden;max-height:0;transition:max-height .3s ease-out}.navbar.show{max-height:500px;transition:max-height .4s ease-in}}.writeup-section-card{max-width:1280px;width:100%;margin:0 auto 1rem;padding:1rem 1rem .5rem;background:linear-gradient(to bottom,#fdf5f8,#fff);background-color:rgba(177,98,134,7%);border-left:4px solid rgba(177,98,134,.3);border-radius:16px 16px 10px 10px;box-shadow:0 3px 8px rgba(0,0,0,4%);transition:background .3s ease-in-out}.writeup-section-title{font-family:lora,serif;font-size:1.4rem;font-weight:600;color:#2c2c2c;border-bottom:2px solid #e8dce2;padding-bottom:.5rem;display:flex;align-items:center;gap:.6rem}.writeup-section{margin-bottom:.25rem;padding-left:0}.writeup-entry{background:0 0;border:none;box-shadow:none;padding:.85rem .5rem .7rem;margin-top:.5rem;margin-bottom:1.2rem;border-bottom:1px dashed rgba(177,98,134,.2)}.writeup-entry:hover{background:#fcf9f9;box-shadow:0 4px 10px rgba(0,0,0,5%)}.writeup-entry:last-child{border-bottom:none}.writeup-title{font-family:lora,serif;font-size:1.05rem;font-weight:600;margin-bottom:.25rem;color:#1e1e1e;display:flex;align-items:baseline;gap:.4rem}.writeup-title a{color:inherit;text-decoration:none}.writeup-title a:hover{text-decoration:underline;color:#b16286}.writeup-meta{font-style:italic;font-size:.9rem;color:#444;margin-bottom:.25rem;line-height:1.5}.writeup-summary{margin-top:0;font-size:.879rem;color:#2e2e2e;line-height:1.4;font-family:lora,serif}.writeup-links{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.1rem;justify-content:flex-end}.writeups-page .pill{display:inline-flex;align-items:center;font-size:.85rem;padding:.25rem .6rem;margin-left:.4rem;margin-top:.3rem;border-radius:6px;font-weight:500;text-decoration:none;background:#ffe8e8;color:#a22c2c;transition:background .2s ease}.writeups-page .pill:hover{background-color:rgba(177,98,134,.15)}.writeup-type-icon{font-size:.9rem;margin-right:.4rem;opacity:.65;color:#8c4d67}.writeup-tags{font-size:.85rem;margin-top:.3rem}.writeup-tags a{margin-right:.4rem;text-decoration:none;color:#689d6a;opacity:.9}.writeup-tags a:hover{text-decoration:underline;opacity:1}.writeups-page{display:flex;flex-direction:column;align-items:center;width:100%}.writeups-page .category-scroll-nav{max-width:1200px;align-items:center;display:flex;flex-wrap:nowrap;gap:.1rem;padding:.3rem;scroll-behavior:smooth;margin-bottom:.8rem}.writeups-page .category-scroll-nav a{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .7rem;font-size:.9rem;border-radius:8px;text-decoration:none;white-space:nowrap;flex-shrink:0;color:#333;transition:background .2s ease-in-out}.writeups-page .category-scroll-nav .nav-icon{font-size:.85rem;opacity:.65;color:#555;flex-shrink:0;transition:opacity .2s ease}.writeups-page .category-scroll-nav a.active{background:0 0!important;color:inherit!important;font-weight:inherit!important;box-shadow:none!important;border-radius:0!important;backdrop-filter:none!important}.writeups-page .category-scroll-nav a.active .nav-icon{opacity:.65!important;color:#555!important}#main.writeups .category-scroll-nav .nav-icon{color:#2ca04f;opacity:.85}#main.writeups .writeup-section-title .writeup-type-icon{color:#a927b0;opacity:.85}.writeup-single-page{min-height:100vh;background:0 0!important;box-shadow:none!important;border:none!important;padding:2rem 1rem}.writeup-container{max-width:1400px;margin:0 auto;background:#fff;padding:2rem;border-radius:20px;box-shadow:0 4px 20px rgba(177,98,134,8%);border:1px solid rgba(177,98,134,.15)}.writeup-header{text-align:center;margin-bottom:2rem;margin-top:-1rem;padding-bottom:.1rem}.writeup-title{font-family:lora,serif;font-size:2rem!important;align-items:center;font-weight:600;color:#2c2c2c;margin-bottom:0;padding-bottom:.6rem;text-align:center!important;line-height:1.2;border-bottom:2px solid rgba(177,98,134,.15);display:block}.writeup-metadata{display:inline-block;font-family:lora,serif;font-size:.95rem;font-style:italic;color:#8c4d67;background:rgba(177,98,134,.12);padding:.4rem 1rem;border-radius:20px;margin-top:.5rem}.writeup-toc{margin:2rem 0;padding:1.5rem;background:rgba(177,98,134,5%);border-left:4px solid rgba(177,98,134,.4);border-radius:8px}.writeup-toc summary{cursor:pointer;font-family:lora,serif;font-size:1.1rem;font-weight:600;color:#8c4d67;margin-bottom:.5rem}.writeup-toc summary:hover{color:#b16286}.writeup-toc .toc{margin-top:1rem}.writeup-toc .toc nav{font-family:lora,serif}.writeup-toc .toc nav ul{list-style:none;padding-left:0}.writeup-toc .toc nav ul li{margin:.5rem 0}.writeup-toc .toc nav ul li a{color:#555;text-decoration:none;transition:color .2s}.writeup-toc .toc nav ul li a:hover{color:#b16286}.writeup-toc .toc nav ul li ul{padding-left:1.5rem;margin-top:.5rem}.writeup-content{font-family:lora,serif;font-size:1.05rem!important;line-height:1.8;color:#333;text-align:left}.writeup-content p{margin:1.5rem 0;color:#444}.writeup-content h1,.writeup-content h2,.writeup-content h3,.writeup-content h4,.writeup-content h5,.writeup-content h6{font-family:lora,serif;font-weight:600;color:#2c2c2c;margin:2.5rem 0 1rem}.writeup-content h2{font-size:1.75rem;padding-bottom:.5rem;border-bottom:2px solid rgba(177,98,134,.2)}.writeup-content h3{font-size:1.5rem;color:#8c4d67}.writeup-content h4{font-size:1.25rem}.writeup-content blockquote{font-size:1.1rem;line-height:1.8;color:#555;margin:2rem 0;padding:1.5rem 2rem;background:linear-gradient(to right,rgba(177,98,134,3%),transparent);border-left:4px solid rgba(177,98,134,.4);border-radius:8px;font-style:italic}.writeup-content blockquote p{margin:.8rem 0}.writeup-content ul,.writeup-content ol{margin:1.5rem 0;padding-left:2rem}.writeup-content ul li,.writeup-content ol li{margin:.8rem 0;line-height:1.7}.writeup-content pre{background:#f5f5f5;border:1px solid rgba(177,98,134,.15);border-radius:8px;padding:1.5rem;overflow-x:auto;margin:2rem 0}.writeup-content pre code{font-family:courier new,monospace;font-size:.9rem;line-height:1.6}.writeup-content code{background:rgba(177,98,134,.1);color:#8c4d67;padding:.2rem .4rem;border-radius:4px;font-family:courier new,monospace;font-size:.9em}.writeup-content a{color:#b16286;text-decoration:none;border-bottom:1px solid rgba(177,98,134,.3);transition:all .2s ease}.writeup-content a:hover{color:#8c4d67;border-bottom-color:rgba(177,98,134,.8)}.writeup-content img{max-width:100%;height:auto;border-radius:8px;margin:2rem 0;box-shadow:0 2px 8px rgba(0,0,0,.1)}.writeup-content em{font-style:italic;color:#8c4d67}.writeup-content strong{font-weight:600;color:#2c2c2c}.writeup-content hr{border:none;border-top:2px solid rgba(177,98,134,.2);margin:3rem 0}.writeup-content table{width:100%;border-collapse:collapse;margin:2rem 0}.writeup-content table th,.writeup-content table td{padding:.75rem;text-align:left;border-bottom:1px solid rgba(177,98,134,.15)}.writeup-content table th{background:rgba(177,98,134,.1);font-weight:600;color:#2c2c2c}.writeup-content table tr:hover{background:rgba(177,98,134,3%)}.writeup-content.numbered-subtitles{counter-reset:h2}.writeup-content.numbered-subtitles h2{counter-reset:h3}.writeup-content.numbered-subtitles h2::before{counter-increment:h2;content:counter(h2)". "}.writeup-content.numbered-subtitles h3{counter-reset:h4}.writeup-content.numbered-subtitles h3::before{counter-increment:h3;content:counter(h2)"." counter(h3)". "}.writeup-content.numbered-subtitles h4::before{counter-increment:h4;content:counter(h2)"." counter(h3)"." counter(h4)". "}.writeup-categories,.writeup-tags{display:flex;flex-wrap:wrap;gap:.75rem;margin:3rem 0 2rem;padding-top:2rem;border-top:1px solid rgba(177,98,134,.15)}.writeup-category,.writeup-tag{font-family:lora,serif;font-size:.9rem;color:#8c4d67;background:rgba(177,98,134,.1);padding:.4rem 1rem;border-radius:20px;text-decoration:none;transition:all .2s ease}.writeup-category:hover,.writeup-tag:hover{background:rgba(177,98,134,.2);color:#b16286;transform:translateY(-2px)}.writeup-navigation{margin-top:3rem;padding-top:2rem;border-top:1px solid rgba(0,0,0,.1)}.writeup-nav-links{display:grid;grid-template-columns:1fr 1fr;align-items:center;width:100%;gap:2rem}.writeup-nav-link{text-decoration:none;color:#444;font-size:1.05rem;font-family:lora,serif;transition:color .2s}.writeup-nav-link:hover{color:#b16286}.writeup-nav-link.prev{text-align:left;justify-self:start}.writeup-nav-link.next{text-align:right;justify-self:end}.writeup-nav-link.spacer{visibility:hidden}.download-link{font-size:1.3em;margin:1.5em 0;font-weight:700;text-align:center}.download-link a{text-decoration:underline;color:#06c}.download-link a:hover{color:#049}@media(max-width:768px){.writeup-single-page{padding:1.5rem 1rem}.writeup-container{padding:2rem 1.5rem;border-radius:16px}.writeup-title{font-size:1.75rem}.writeup-metadata{font-size:.85rem}.writeup-content{font-size:1rem}.writeup-content h2{font-size:1.5rem}.writeup-content h3{font-size:1.25rem}.writeup-content pre{padding:1rem;font-size:.85rem}.writeup-nav-links{grid-template-columns:1fr;gap:.75rem}.writeup-nav-links .writeup-nav-link{justify-self:stretch!important;text-align:center!important}}@media(min-width:1200px){.writeup-container{max-width:1400px}.writeup-content{font-size:1.1rem}}.cv-wrapper{background:#fefbf8;padding:2rem 1rem;font-family:georgia,serif}.cv{max-width:1900px;margin:0;padding:2rem;background:#fff;border-radius:2px;box-shadow:0 4px 10px rgba(0,0,0,4%);color:#2c2c2c}.cv h1,.cv h2,.cv h3{font-family:lora,serif;color:#221b1b;border-bottom:.5px solid #e0dbe2;padding-bottom:.25rem;margin-top:1rem}.cv a{color:#a05b7a;text-decoration:none;font-weight:500;display:inline-flex;align-items:center;gap:.3rem;font-size:.95rem;line-height:1.4}.cv ul{list-style:disc;margin-left:.2rem}.cv-grid{display:grid;grid-template-columns:170px 1fr;gap:2rem;max-width:14900px;margin:0;margin-left:-4rem;margin-right:-4rem;line-height:1.4;margin-top:-1.5rem;padding:.2rem 0;font-family:georgia,serif}.cv-main{padding:.5rem 0}.cv-main h2{border-bottom:1.5px solid #d8c8b8;padding-bottom:.1rem;margin-top:0}.cv-main section+section{margin-top:1.3rem}.cv-main hr{border:none;border-bottom:1px solid #e4d4c4;margin:0 0}.cv-sidebar{background:#fdf6f0;padding:.5rem;border-radius:16px;box-shadow:0 2px 8px rgba(0,0,0,4%);font-size:.72rem}.cv-sidebar h3{font-size:.95rem;margin-top:1.8rem;border-bottom:1px solid #000;padding-bottom:.3rem}.cv-sidebar ul{padding-left:1em;list-style:square}.cv-sidebar ul li{margin-bottom:.3rem}.cv-sidebar a{color:#5e2a52}.cv-sidebar a:hover{text-decoration:underline}.contact-links{list-style:none;padding-left:0;margin:0;font-size:.7}.contact-links li{list-style:none!important;padding-left:0!important;margin:0!important;margin-bottom:.4rem;line-height:1.7}.contact-links a{display:inline-flex;align-items:center;gap:.25rem;text-decoration:none;color:#333;margin-left:-.925rem!important}.contact-links a i{color:#5e2a52}.cv-name h1{margin:0;font-size:1.1rem;font-family:lora,serif;border-bottom:none!important}.cv-name p{font-size:1rem;color:#555;margin-top:.2rem}.cv-entry{margin-bottom:.5rem}.cv-entry-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.1rem}.cv-l1{font-size:.95rem;font-weight:700;color:#221b1b}.cv-l2{font-size:.9rem;font-weight:600;color:#5e5e5e;margin-bottom:.11rem}.cv-l3{font-size:.85rem;font-weight:400;color:#2e2e2e;line-height:1.4}.cv-l3 li{margin-bottom:.042rem}.cv-date{font-size:.85rem;font-weight:500;color:#777;white-space:nowrap}.cv-edu-title{font-size:1.4rem;font-family:lora,serif;font-weight:600;border-bottom:1px solid #e4dce2;margin-bottom:.3rem;display:flex;align-items:center;gap:.6rem}.cv-achievements .cv-l2{margin-bottom:.05rem}.cv-achievements .cv-l3{margin-bottom:0}.cv-achievements .cv-entry{margin-bottom:.3rem}@media print{nav,footer,.site-header,.topbar,.navbar,.navbar-container,.nav-left,.nav-right,.nav-center,.signature,.category-scroll-nav{display:none!important;visibility:hidden!important;height:0!important;margin:0!important;padding:0!important;border:none!important}p,li,.cv-l3{word-break:normal;overflow-wrap:break-word;hyphens:auto}.cv-sidebar{box-shadow:none!important;border-radius:0!important;padding-top:.8rem;padding-left:.32rem;padding-right:.2rem;margin-top:.5rem;margin-left:.1rem;border-right:1px solid #ccc!important;background:0 0!important}.cv-section{page-break-inside:avoid!important;page-break-before:avoid!important;page-break-after:auto;margin-bottom:.5rem!important;margin-left:0!important;margin-right:0!important;padding-left:.3rem}.cv-section h2{margin-top:0!important;padding-top:0!important}.cv-section.nobreak{page-break-inside:avoid!important;page-break-before:avoid!important}.cv-section[data-section=skills],.cv-section[data-section=projects],.cv-section[data-section=talks],.cv-section[data-section=crypto]{page-break-inside:avoid!important;page-break-before:avoid!important}.cv-entry,.cv-entry-header,.cv-achievements,.cv-entry .cv-l1,.cv-entry .cv-l2,.cv-entry .cv-l3{page-break-inside:avoid!important}}*:focus,*:active,*:visited,*:hover{outline:none!important;box-shadow:none!important;border-color:transparent!important}a,a:focus,a:active,a:hover,button,button:focus,button:active,button:hover,input,input:focus,textarea,textarea:focus{outline:none!important;box-shadow:none!important;border:none!important;background-image:none!important;background-color:transparent!important;color:inherit!important}button::-moz-focus-inner,input::-moz-focus-inner{border:0!important;padding:0!important}fieldset{border:none!important;outline:none!important}@page{size:A4;margin:.4in .3in .3in 0}@media print{.cv-grid{grid-template-columns:150px 1fr;margin-top:-3rem}}@media print{html{font-size:12pt}body{font-size:10pt}.cv-l1{font-size:10.5pt}.cv-l2{font-size:10pt}.cv-l3{font-size:9.5pt}.cv-date{font-size:9pt}.cv-sidebar{font-size:7pt}.cv-sidebar h3{font-size:7pt}.cv a{font-size:10pt}.cv-name h1{font-size:15pt}.cv-name p{font-size:11pt}.cv-edu-title{font-size:13pt}.cv-main h2{font-size:12.5pt}.cv h3{font-size:11pt}ul,li{font-size:10pt;margin-left:0}}@media print{.cv-grid{grid-template-columns:5cm auto;gap:1.5rem;line-height:1.34!important}.cv-sidebar{font-size:7pt;padding-top:.8cm;padding-bottom:.8cm;padding-left:.4cm;padding-right:.4cm;border-right:1.8px solid #aba6a6!important;margin-right:.8rem;background:0 0!important;box-shadow:none!important;border-radius:0!important;line-height:1.3}.cv-sidebar h3{font-size:8pt;margin-top:.8rem;padding-bottom:.2rem;border-bottom:1px solid #bbb}.cv-sidebar ul{padding-left:.5rem}.cv-sidebar ul li{font-size:7pt;margin-bottom:.25rem;margin:0 0 .25rem;padding:0;text-indent:0}.cv-sidebar a{font-size:7pt;color:#444;text-decoration:underline}}.page-break{display:none}.print-only{display:none}@media print{.page-break{page-break-before:always;display:block;height:0}.print-only{display:block}.second-half{padding-top:0}}.page-break{display:none}@media print{.page-break.print-only{display:block;page-break-before:always;height:0}.cv-sidebar{page-break-after:avoid}}.cv-bullet-wrap{display:flex;gap:.15rem}.cv-bullet{color:#5e2a52;font-size:.65rem;margin-top:.25rem;flex-shrink:0;line-height:1.4}.cv-l1{color:#221b1b;position:relative;padding-left:0;margin-left:0 rem}.cv-l1::before{content:"◆";position:absolute;left:-1rem;top:.1rem;font-size:.75rem;color:#5e2a52;opacity:.8}.cv-l2::before{content:none}.cv-achievements .cv-l2-title{position:relative;padding-left:0}.cv-achievements .cv-l2-title::before{content:"◆";position:absolute;left:-1rem;top:.1rem;font-size:.65rem;color:#5e2a52;opacity:.6}.cv-l3{padding-left:0}.cv-l3 li{list-style:none;padding-left:0;margin-left:0;position:relative}.cv-l3 li::before{content:"▸";position:absolute;left:-1.1rem;color:#5e2a52;font-size:.85rem;opacity:.75;line-height:1.4;vertical-align:middle}.cv-l3 li::before,li.cv-l3::before{content:"▸";position:absolute;left:-1rem;font-size:.85rem;color:#5e2a52;opacity:.75;line-height:1.4}.cv-l3 li,li.cv-l3{list-style:none;position:relative;padding-left:0}.profile-picture{border-radius:50%;width:120px;height:120px;object-fit:cover;margin-bottom:1rem;display:block}*:focus,*:active,*:visited,*:hover{outline:none!important;box-shadow:none!important;border-color:transparent!important}a,a:focus,a:active,a:hover,button,button:focus,button:active,button:hover,input,input:focus,textarea,textarea:focus{outline:none!important;box-shadow:none!important;border:none!important;background-image:none!important;background-color:transparent!important;color:inherit!important}button::-moz-focus-inner,input::-moz-focus-inner{border:0!important;padding:0!important}fieldset{border:none!important;outline:none!important}.cv-sidebar h3{border:none!important;border-bottom:none!important;outline:none!important;box-shadow:none!important}@media print{.cv-sidebar h3,.cv-sidebar section,.cv-sidebar ul,.cv-sidebar li{border:none!important;outline:none!important;box-shadow:none!important}.cv-sidebar *{background:0 0!important}.contact-links{list-style:none;padding-left:0;margin:0;font-size:.695}.contact-links li{list-style:none!important;margin:0!important;margin-bottom:.4rem;line-height:1.7}.contact-links a{display:inline-flex;align-items:center;gap:.25rem;text-decoration:none;color:#333}.contact-links a i{color:#5e2a52}.cv-sidebar h3::after,.cv-sidebar section::after,.cv-sidebar h3::before,.cv-sidebar section::before{content:none!important;display:none!important}.cv-bullet-wrap{display:flex;align-items:flex-start;gap:.25rem}.cv-bullet{color:#5e2a52;font-size:.65rem;margin-top:.25rem;flex-shrink:0;line-height:1.4}}@media print{p,li,.cv-l3{word-break:normal;overflow-wrap:normal;hyphens:none}}.about-section-card{max-width:1280px;margin:0 auto;padding:.8rem 1.5rem 1rem;background:linear-gradient(to bottom,#fefafc,#fff);background-color:rgba(177,98,134,6%);border-left:4px solid rgba(177,98,134,.25);border-radius:18px 18px 12px 12px;box-shadow:0 3px 8px rgba(0,0,0,3%)}.about-content{font-size:1rem;line-height:1.1;color:#2b2b2b;font-family:lora,serif}.about-content p{margin-bottom:1.1rem;line-height:1.7}.about-content h3{font-family:lora,serif;font-size:1.3rem;font-weight:600;color:#2c2c2c;border-bottom:1px solid #e3d4db;padding-bottom:.2rem;margin-top:2.2rem;margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.about-content h3 a{text-decoration:none;color:inherit}.about-content ul{list-style:none;padding-left:0;margin-top:.9rem;margin-bottom:1rem;display:grid;gap:.8rem}.about-content ul li{position:relative;padding:.4rem 1.4rem .4rem 3rem;font-size:1rem;line-height:1.85rem;background:linear-gradient(to right,rgba(245,223,232,.3),rgba(254,250,252,.6));border-left:4px solid rgba(177,98,134,.4);border-bottom:2px solid rgba(177,98,134,.15);border-radius:8px;box-shadow:0 1px 3px rgba(177,98,134,6%);transition:all .25s ease}.about-content ul li:hover{background:linear-gradient(to right,rgba(245,223,232,.5),rgba(254,250,252,.8));border-left-color:#b16286;box-shadow:0 2px 6px rgba(177,98,134,.12);transform:translateX(2px)}.about-content ul li::before{content:"◆";position:absolute;left:.9rem;top:50%;transform:translateY(-50%);font-size:1.25rem;color:#b16286;opacity:.8}.about-content a{text-decoration:underline;text-underline-offset:2px;color:inherit}.about-content a:hover{color:#b16286}.about-content ul li a{text-decoration:none;color:#2b2b2b;font-weight:500;transition:color .2s ease}.about-content ul li a:hover{color:#b16286}.icon-links.vertical{display:flex;flex-direction:column;gap:.7rem;padding-top:.2rem;margin-top:0}.icon-links.vertical a{display:inline-flex;align-items:center;gap:.5rem;font-size:1.9rem;text-decoration:none;color:#2b2b2b;transition:color .2s ease}.icon-links.vertical a:hover{color:#b16286}.icon-links.vertical i{font-size:1.4rem;opacity:.8}@media(max-width:768px){.about-section-card{padding:.6rem 1rem .8rem;margin:0 .5rem}.about-content h3{font-size:1.15rem}.about-content ul li{padding:.5rem 1rem .5rem 2.2rem;font-size:.95rem;line-height:1.6rem}.about-content ul li::before{left:.7rem;font-size:1rem}}@media(max-width:480px){.about-content ul li{padding:.5rem .8rem .5rem 2rem}.about-content ul li::before{left:.6rem;font-size:.9rem}}@media(min-width:1400px){.about-section-card{max-width:1100px;padding:1rem 2rem 1.2rem}.about-content ul li{font-size:1.05rem;padding:.5rem 1.6rem .5rem 3.2rem}}@media(min-width:1920px){.about-section-card{max-width:1200px;margin:0 auto}.about-content{font-size:1.08rem}.about-content ul li{font-size:1.08rem}}.about-content .icon-links.vertical{display:flex;flex-direction:column;gap:.7rem;padding-top:.2rem;margin-top:0;background:0 0}.about-content .icon-links.vertical li{background:0 0;border:none;box-shadow:none;padding:0;margin:0;transform:none}.about-content .icon-links.vertical li:hover{background:0 0;border:none;box-shadow:none;transform:none}.about-content .icon-links.vertical li::before{content:none}.about-content .icon-links.vertical a{display:inline-flex;align-items:center;gap:.5rem;font-size:1rem;text-decoration:none;color:#2b2b2b;font-weight:400;transition:color .2s ease}.about-content .icon-links.vertical a:hover{color:#b16286}.about-content .icon-links.vertical i{font-size:1.1rem;opacity:.8}@media(max-width:768px){.about-content .icon-links.vertical{gap:.5rem}.about-content .icon-links.vertical a{font-size:.95rem}.about-content .icon-links.vertical i{font-size:1rem}}@media(max-width:480px){.about-content .icon-links.vertical a{font-size:.9rem;gap:.4rem}.about-content .icon-links.vertical i{font-size:.95rem}}@media(min-width:1400px){.about-content .icon-links.vertical a{font-size:1.05rem}.about-content .icon-links.vertical i{font-size:1.15rem}}@media(min-width:1920px){.about-content .icon-links.vertical a{font-size:1.08rem}.about-content .icon-links.vertical i{font-size:1.2rem}}.research{max-width:1298px;margin:0 auto;align-items:center}.publications-page{display:flex;flex-direction:column;align-items:center;width:100%}.pub-section-card{max-width:1280px;width:100%;margin:0 auto 1rem;padding:1rem 1rem .5rem;background:linear-gradient(to bottom,#fdf5f8,#fff);background-color:rgba(177,98,134,7%);border-left:4px solid rgba(177,98,134,.3);border-radius:16px 16px 10px 10px;box-shadow:0 3px 8px rgba(0,0,0,4%);transition:background .3s ease-in-out}.pub-section{margin-bottom:.25rem;max-width:1280px;padding-left:0}.pub-section h2{display:inline-block;font-size:1.3rem;font-weight:400;margin:1rem 0 .75rem;padding-bottom:0;border-bottom:.5px solid rgba(0,0,0,5%);font-family:lora,serif;letter-spacing:.01em}.pub-section-title{font-family:lora,serif;font-size:1.4rem;font-weight:600;margin-bottom:0;color:#2c2c2c;border-bottom:2px solid #e8dce2;padding-bottom:.25rem;display:flex;align-items:center;gap:.6rem}.pub-section-title i{margin-right:.5rem;opacity:.8;font-size:1.1rem;color:#b16286}.pub-section-title .fa-project-diagram{color:#7b6b9e}.pub-section-title .emoji{font-size:1.3rem;opacity:.7}.pub-entry{padding:.4rem;margin:0 0 .2rem;border-bottom:1px dashed rgba(177,98,134,.2);background:0 0;border-radius:0;box-shadow:none;font-family:lora,serif}.pub-entry:hover{background:#fcf9f9;box-shadow:0 4px 10px rgba(0,0,0,5%)}.pub-entry:last-child{border-bottom:none}.pub-title{font-family:lora,serif;font-size:1rem;font-weight:600;margin-bottom:.25rem;color:#1e1e1e;display:flex;align-items:baseline;gap:.4rem}.pub-title .emoji{background:#f0e0e5;padding:.1rem .3rem;border-radius:6px;font-size:1rem;margin-right:.5rem}.pub-title .year{font-size:.85rem;font-weight:500;margin-left:.4rem;color:#944d6e;background:0 0!important;border-radius:6px;padding:.1rem .5rem;box-shadow:none!important}.pub-meta{font-style:italic;font-size:.9rem;color:#444;margin-bottom:.01rem;line-height:1}.pub-meta strong{font-weight:600;color:#1e1e1e;font-style:normal}.pub-meta em{font-style:italic}.pub-summary{margin-top:0;font-size:.879rem;color:#2e2e2e;line-height:1.4;font-family:lora,serif!important}.pub-links{display:flex;flex-wrap:nowrap;gap:.5rem;margin-top:.1rem;justify-content:flex-end;overflow-x:auto}.research-page .pill{display:inline-flex!important;align-items:center!important;font-size:.85rem!important;padding:.25rem .6rem!important;margin:.3rem .7rem!important;border-radius:6px!important;font-weight:500!important;text-decoration:none!important;box-shadow:0 1px 3px rgba(0,0,0,8%)!important;transition:transform .2s ease,box-shadow .2s ease!important}.research-page .pill i{margin-right:.4rem!important;font-size:.9rem!important;opacity:.9!important;vertical-align:middle!important}.research-page .pill:hover{filter:brightness(.95)!important;background-color:rgba(177,98,134,.15)!important}.research-page .pill-journal,.research-page .pill-journal:visited,.research-page .pill-journal:active,.research-page .pill-journal:focus{background:#e6eef5!important;color:#327e00!important}.research-page .pill-arxiv,.research-page .pill-arxiv:visited,.research-page .pill-arxiv:active,.research-page .pill-arxiv:focus{background:#e6eef5!important;color:#0c007b!important}.research-page .pill-pdf,.research-page .pill-pdf:visited,.research-page .pill-pdf:active,.research-page .pill-pdf:focus{background:#ffe8e8!important;color:#a22c2c!important}.research-page .pill-poster,.research-page .pill-poster:visited,.research-page .pill-poster:active,.research-page .pill-poster:focus{background:#fff4e6!important;color:#c77700!important}.research-page .pill-thesis-doi{background:#e8e6ff!important;color:#327e00!important}html{scroll-behavior:smooth}.arxiv-icon{width:16px!important;height:16px!important;margin-right:.4rem!important;vertical-align:text-bottom!important;filter:brightness(0)saturate(100%)invert(22%)sepia(75%)saturate(533%)hue-rotate(321deg)brightness(91%)contrast(85%)}.pub-type-icon{font-size:.95rem!important;opacity:.75!important;margin-right:.4rem!important;color:#a05b7a!important}.category-scroll-nav .nav-icon{font-size:.85rem;margin-right:.35rem;opacity:.6;color:#555;transition:opacity .2s ease}.category-scroll-nav a:hover .nav-icon{opacity:.95;color:#2c2c2c}@media(max-width:768px){html,body{max-width:100%;overflow-x:hidden}.pub-entry,.pub-section,.pub-meta,.pub-summary{max-width:100%!important;overflow-wrap:break-word;word-wrap:break-word;word-break:normal;box-sizing:border-box;padding-left:1rem;padding-right:1rem}.pub-entry .badge,.pub-entry .tag,.pub-entry .slides-button,.pub-entry a{max-width:100%;white-space:normal;word-break:break-word;overflow-wrap:break-word}.pub-entry>*,.pub-section>*{flex-wrap:wrap;max-width:100%}}@media(max-width:768px){.pub-entry strong{white-space:normal!important;overflow-wrap:break-word;word-break:break-word}}@media(max-width:768px){.category-scroll-nav{overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap;padding:.4rem .5rem;margin:0 auto;scroll-behavior:smooth}.category-scroll-nav a{white-space:nowrap;flex-shrink:0;min-width:fit-content}}@media(max-width:768px){.category-scroll-nav{overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap;scroll-behavior:smooth;padding-left:1rem;padding-right:1rem;margin-bottom:1rem}.category-scroll-nav a{display:inline-flex;align-items:center;white-space:nowrap;flex-shrink:0;min-width:fit-content;padding:.4rem .75rem}}