﻿.inline{display:inline}.block{display:block}.inline-block{display:inline-block}.table{display:table}.table-cell{display:table-cell}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-auto{overflow:auto}.clearfix:before,.clearfix:after{display:table;content:" "}.clearfix:after{clear:both}.left{float:left}.right{float:right}.fit{max-width:100%}.truncate{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.max-width-1{max-width:24rem}.max-width-2{max-width:32rem}.max-width-3{max-width:48rem}.max-width-4{max-width:64rem}.border-box{box-sizing:border-box}.m0{margin:0}.mt0{margin-top:0}.mr0{margin-right:0}.mb0{margin-bottom:0}.ml0{margin-left:0}.mx0{margin-right:0;margin-left:0}.my0{margin-top:0;margin-bottom:0}.m1{margin:.5rem}.mt1{margin-top:.5rem}.mr1{margin-right:.5rem}.mb1{margin-bottom:.5rem}.ml1{margin-left:.5rem}.mx1{margin-right:.5rem;margin-left:.5rem}.my1{margin-top:.5rem;margin-bottom:.5rem}.m2{margin:1rem}.mt2{margin-top:1rem}.mr2{margin-right:1rem}.mb2{margin-bottom:1rem}.ml2{margin-left:1rem}.mx2{margin-right:1rem;margin-left:1rem}.my2{margin-top:1rem;margin-bottom:1rem}.m3{margin:2rem}.mt3{margin-top:2rem}.mr3{margin-right:2rem}.mb3{margin-bottom:2rem}.ml3{margin-left:2rem}.mx3{margin-right:2rem;margin-left:2rem}.my3{margin-top:2rem;margin-bottom:2rem}.m4{margin:4rem}.mt4{margin-top:4rem}.mr4{margin-right:4rem}.mb4{margin-bottom:4rem}.ml4{margin-left:4rem}.mx4{margin-right:4rem;margin-left:4rem}.my4{margin-top:4rem;margin-bottom:4rem}.mxn1{margin-right:-.5rem;margin-left:-.5rem}.mxn2{margin-right:-1rem;margin-left:-1rem}.mxn3{margin-right:-2rem;margin-left:-2rem}.mxn4{margin-right:-4rem;margin-left:-4rem}.ml-auto{margin-left:auto}.mr-auto{margin-right:auto}.mx-auto{margin-right:auto;margin-left:auto}.p0{padding:0}.pt0{padding-top:0}.pr0{padding-right:0}.pb0{padding-bottom:0}.pl0{padding-left:0}.px0{padding-right:0;padding-left:0}.py0{padding-top:0;padding-bottom:0}.p1{padding:.5rem}.pt1{padding-top:.5rem}.pr1{padding-right:.5rem}.pb1{padding-bottom:.5rem}.pl1{padding-left:.5rem}.py1{padding-top:.5rem;padding-bottom:.5rem}.px1{padding-right:.5rem;padding-left:.5rem}.p2{padding:1rem}.pt2{padding-top:1rem}.pr2{padding-right:1rem}.pb2{padding-bottom:1rem}.pl2{padding-left:1rem}.py2{padding-top:1rem;padding-bottom:1rem}.px2{padding-right:1rem;padding-left:1rem}.p3{padding:2rem}.pt3{padding-top:2rem}.pr3{padding-right:2rem}.pb3{padding-bottom:2rem}.pl3{padding-left:2rem}.py3{padding-top:2rem;padding-bottom:2rem}.px3{padding-right:2rem;padding-left:2rem}.p4{padding:4rem}.pt4{padding-top:4rem}.pr4{padding-right:4rem}.pb4{padding-bottom:4rem}.pl4{padding-left:4rem}.py4{padding-top:4rem;padding-bottom:4rem}.px4{padding-right:4rem;padding-left:4rem}h1,.h1{display:block;margin-top:3rem;margin-bottom:1rem;color:#2bbc8a;letter-spacing:.01em;font-weight:700;font-style:normal;font-size:1.5em;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}h2,.h2{position:relative;display:block;margin-top:2rem;margin-bottom:.5rem;color:#383838;text-transform:none;letter-spacing:normal;font-weight:bold;font-size:1rem}h3{color:#383838;text-decoration:underline;font-weight:bold;font-size:.9rem}h4 h5 h6{display:inline;text-decoration:none;color:#8c8c8c;font-weight:bold;font-size:.9rem}h3 h4 h5 h6{margin-top:.9rem;margin-bottom:.5rem}hr{border:0.5px dashed #8c8c8c;opacity:.5;margin:0;margin-top:20px;margin-bottom:20px}strong{font-weight:bold}em cite{font-style:italic}sup sub{position:relative;vertical-align:baseline;font-size:.75em;line-height:0}sup{top:-.5em}sub{bottom:-.2em}small{font-size:.85em}acronym abbr{border-bottom:1px dotted}ul ol dl{line-height:1.725}ul ul,ol ul,ul ol,ol ol{margin-top:0;margin-bottom:0}ol{list-style:decimal}dt{font-weight:bold}table{width:100%;border-collapse:collapse;text-align:left;font-size:12px;overflow:auto;display:block}th{padding:8px;border-bottom:1px dashed #666;color:#383838;font-weight:bold;font-size:13px}td{padding:0 8px;border-bottom:none}@font-face{font-style:normal;font-family:"JetBrains Mono";font-display:swap;src:local("JetBrains Mono"),local("JetBrains-Mono"),url("../lib/JetBrainsMono/web/woff2/JetBrainsMono-Regular.woff2") format("woff2"),url("../lib/JetBrainsMono/web/woff/JetBrainsMono-Regular.woff") format("woff"),url("../lib/JetBrainsMono/web/eot/JetBrainsMono-Regular.eot") format("embedded-opentype"),url("../lib/JetBrainsMono/ttf/JetBrainsMono-Regular.ttf") format("truetype")}:root{--color-background: #fff;--color-footer-mobile-1: #fafafa;--color-footer-mobile-2: #e6e6e6;--color-background-code: #fafafa;--color-border: #666;--color-meta: #666;--color-meta-code: gray;--color-link: #d480aa;--color-text: #383838;--color-accent-1: #2bbc8a;--color-accent-2: #383838;--color-accent-3: #8c8c8c;--color-quote: #2bbc8a;--font-family-body: JetBrains Mono,monospace;--font-family-mono: JetBrains Mono,monospace;--font-size: 14px;--line-height: 1.725;--page-width: 60rem}html.theme-dark,.theme-dark{--color-background: #1d1f21;--color-footer-mobile-1: #1f2123;--color-footer-mobile-2: #2d2f31;--color-background-code: #1f2123;--color-border: #666;--color-meta: #666;--color-meta-code: #666;--color-link: rgba(212, 128, 170, 1);--color-text: #c9cacc;--color-accent-1: #2bbc8a;--color-accent-2: #eeeeee;--color-accent-3: #cccccc;--color-quote: #ccffb6}html.theme-light,.theme-light{--color-background: #FFFFFF;--color-footer-mobile-1: #f5f5f5;--color-footer-mobile-2: #e5e5e5;--color-background-code: #f5f5f5;--color-border: #666;--color-meta: #666;--color-meta-code: #767676;--color-link: rgba(212, 128, 170, 1);--color-text: #383838;--color-accent-1: #2bbc8a;--color-accent-2: #383838;--color-accent-3: #8c8c8c;--color-quote: #2bbc8a}body{background-color:var(--color-background);color:var(--color-text);font-size:var(--font-size);font-family:var(--font-family-body);line-height:var(--line-height)}.content a:hover{background-image:linear-gradient(transparent, transparent 4px, var(--color-link) 4px, var(--color-link))}.content a.icon:hover{color:var(--color-link)}.content h1 a:hover,.h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover{background-image:linear-gradient(transparent, transparent 6px, var(--color-link) 6px, var(--color-link))}.max-width{max-width:var(--page-width)}*,*:before,*:after{box-sizing:border-box}html{margin:0;padding:0;height:100%;border-top:2px solid var(--color-text);-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0;height:100%;background-color:var(--color-background);color:var(--color-text);font-display:swap;font-weight:400;font-size:var(--font-size);font-family:var(--font-family-body);line-height:var(--line-height);text-rendering:geometricPrecision;flex:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.content{position:relative;display:flex;flex-direction:column;min-height:100%;overflow-wrap:break-word}.content p{hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;-webkit-hyphens:auto}.content code{hyphens:manual;-moz-hyphens:manual;-ms-hyphens:manual;-webkit-hyphens:manual}.content a{color:var(--color-text);text-decoration:none;background-image:linear-gradient(transparent, transparent 5px, var(--color-text) 5px, var(--color-text));background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}.content a:hover{background-image:linear-gradient(transparent, transparent 4px, var(--color-link) 4px, var(--color-link))}.content a.icon{background:none}.content a.icon:hover{color:var(--color-link)}.content h1 a,.content .h1 a,.content h2 a,.content h3 a,.content h4 a,.content h5 a,.content h6 a{background:none;color:inherit;text-decoration:none}.content h1 a:hover,.content .h1 a:hover,.content h2 a:hover,.content h3 a:hover,.content h4 a:hover,.content h5 a:hover,.content h6 a:hover{background-image:linear-gradient(transparent, transparent 6px, var(--color-link) 6px, var(--color-link));background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}.content h6 a{background:none;color:inherit;text-decoration:none}.content h6 a:hover{background-image:linear-gradient(transparent, transparent 6px, var(--color-link) 6px, var(--color-link));background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}@media (min-width: 540px){.image-wrap{flex-direction:row;margin-bottom:2rem}.image-wrap .image-block{flex:1 0 35%;margin-right:2rem}.image-wrap p{flex:1 0 65%}}.max-width{max-width:var(--page-width)}@media (max-width: 480px){.px3{padding-right:1rem;padding-left:1rem}.my4{margin-top:2rem;margin-bottom:2rem}}@media (min-width: 480px){p{text-align:justify}}#header{margin:0 auto 2rem;width:100%}#header h1,#header .h1{margin-top:0;margin-bottom:0;color:#383838;letter-spacing:.01em;font-weight:700;font-style:normal;font-size:1.5rem;line-height:2rem;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}#header a{background:none;color:inherit;text-decoration:none}#header #logo{display:inline-block;float:left;margin-right:20px;width:50px;height:50px;border-radius:5px;background-size:50px 50px;background-repeat:no-repeat;filter:grayscale(100%);-webkit-filter:grayscale(100%)}#header #nav{color:#2bbc8a;letter-spacing:.01em;font-weight:200;font-style:normal;font-size:.8rem}#header #nav ul{margin:0;padding:0;list-style-type:none;line-height:15px}#header #nav ul a{margin-right:15px;color:#2bbc8a}#header #nav ul a:hover{background-image:linear-gradient(transparent, transparent 5px, #2bbc8a 5px, #2bbc8a);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}#header #nav ul li{display:inline-block;margin-right:15px;border-right:1px dotted;border-color:#2bbc8a;vertical-align:middle}#header #nav ul .icon{display:none}#header #nav ul li:last-child{margin-right:0;border-right:0}#header #nav ul li:last-child a{margin-right:0}#header:hover #logo{filter:none;-webkit-filter:none}@media screen and (max-width: 480px){#header #title{display:table;margin-right:5rem;min-height:50px}#header #title h1{display:table-cell;vertical-align:middle}#header #nav ul a:hover{background:none}#header #nav ul li{display:none;border-right:0}#header #nav ul li.icon{position:absolute;top:77px;right:1rem;display:inline-block}#header #nav ul.responsive li{display:block}#header #nav li:not(:first-child){padding-top:1rem;padding-left:70px;font-size:1rem}}#header-post{position:fixed;top:2rem;right:0;display:inline-block;float:right;z-index:100}#header-post a{background:none;color:inherit;text-decoration:none}#header-post a.icon{background:none;transition:all 0.2s ease;display:inline-flex;align-items:center;justify-content:center}#header-post a.icon:hover{color:#d480aa;transform:scale(1.1)}#header-post a.icon:active{transform:scale(0.95)}#header-post nav ul{display:block;list-style-image:none;list-style-position:outside;list-style-type:none;padding-inline-start:40px}#header-post nav ul li{display:list-item;margin-right:0px}#header-post nav>ul{margin-block-end:1em;margin-block-start:1em}#header-post ul{display:inline-block;margin:0;padding:0;list-style-type:none}#header-post ul li{display:inline-block;margin-right:15px;vertical-align:middle}#header-post ul li:last-child{margin-right:0}#header-post #menu-icon{float:right;margin-right:2rem;margin-left:15px}#header-post #menu-icon:hover{color:#2bbc8a}#header-post #menu-icon-tablet{float:right;margin-right:2rem;margin-left:15px}#header-post #menu-icon-tablet:hover{color:#2bbc8a;transform:scale(1.1)}#header-post #top-icon-tablet{position:fixed;right:2rem;bottom:2rem;margin-right:2rem;margin-left:15px;transition:all 0.2s ease}#header-post #top-icon-tablet:hover{color:#2bbc8a;transform:translateY(-2px)}#header-post #top-icon-tablet:active{transform:translateY(0)}#header-post .active{color:#2bbc8a}#header-post #menu{visibility:hidden;margin-right:2rem}#header-post #nav{color:#2bbc8a;letter-spacing:.01em;font-weight:200;font-style:normal;font-size:.8rem}#header-post #nav ul{line-height:15px}#header-post #nav ul a{margin-right:15px;color:#2bbc8a}#header-post #nav ul a:hover{background-image:linear-gradient(transparent, transparent 5px, #2bbc8a 5px, #2bbc8a);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}#header-post #nav ul li{border-right:1px dotted #2bbc8a}#header-post #nav ul li:last-child{margin-right:0;border-right:0}#header-post #nav ul li:last-child a{margin-right:0}#header-post #actions{float:right;margin-top:1.5rem;margin-right:1.5rem;width:100%;text-align:right}#header-post #actions ul{display:block}#header-post #actions .info{display:block;font-style:italic;font-size:0.75rem;color:#666}#header-post #share{clear:both;padding-top:0.8rem;padding-right:1.5rem;text-align:right}#header-post #share li{display:block;margin:0}#header-post #share a{transition:all 0.2s ease}#header-post #share a:hover{transform:translateX(-2px)}#header-post #toc{float:right;clear:both;overflow-y:auto;overflow-x:visible;margin-top:0.5rem;padding:0.4rem 0.8rem;max-width:18em;max-height:calc(95vh - 7rem);scrollbar-width:thin;scrollbar-color:rgba(128,128,128,0.3) transparent}#header-post #toc::-webkit-scrollbar{width:4px}#header-post #toc::-webkit-scrollbar-thumb{background-color:rgba(128,128,128,0.3);border-radius:4px}#header-post #toc nav ul{padding:0;margin:0;list-style:none}#header-post #toc #TableOfContents>ul>li{font-size:0.7rem;font-weight:600;padding:0.12rem 0;padding-left:0.4rem;margin-bottom:0.1rem;color:#383838;border-left:2px solid #2bbc8a;line-height:1.3}#header-post #toc #TableOfContents>ul>li a{color:inherit;transition:color 0.2s ease, transform 0.2s ease;display:inline-block}#header-post #toc #TableOfContents>ul>li a:hover{color:#d480aa;transform:translateX(-1px)}#header-post #toc #TableOfContents>ul>li>ul>li{font-size:0.65rem;font-weight:500;padding:0.1rem 0;padding-left:0.9rem;margin-left:0.25rem;color:#666;border-left:1px solid rgba(128,128,128,0.3);line-height:1.3}#header-post #toc #TableOfContents>ul>li>ul>li a{color:inherit;transition:color 0.2s ease}#header-post #toc #TableOfContents>ul>li>ul>li a:hover{color:#d480aa}#header-post #toc #TableOfContents>ul>li>ul>li>ul>li{font-size:0.62rem;font-weight:400;padding:0.08rem 0;padding-left:1.2rem;margin-left:0.5rem;color:#666;border-left:1px solid rgba(128,128,128,0.2);line-height:1.3}#header-post #toc #TableOfContents>ul>li>ul>li>ul>li a{color:inherit;transition:color 0.2s ease}#header-post #toc #TableOfContents>ul>li>ul>li>ul>li a:hover{color:#d480aa}#header-post #toc #TableOfContents>ul>li>ul>li>ul>li>ul>li{font-size:0.6rem;font-weight:400;padding:0.06rem 0;padding-left:1.4rem;margin-left:0.7rem;color:#8c8c8c;border-left:1px solid rgba(128,128,128,0.15);line-height:1.3}#header-post #toc #TableOfContents>ul>li>ul>li>ul>li>ul>li a{color:inherit;transition:color 0.2s ease}#header-post #toc #TableOfContents>ul>li>ul>li>ul>li>ul>li a:hover{color:#d480aa}#header-post #toc .toc-level-5,#header-post #toc .toc-level-6{display:none}#header-post #toc .toc-number{display:none}#header-post #toc a.active{color:#2bbc8a !important;font-weight:600;position:relative}#header-post #toc a.active::before{content:"▸";position:absolute;left:-0.9em;color:#2bbc8a}@media screen and (max-width: 500px){#header-post{display:none}}@media screen and (max-width: 900px){#header-post #menu-icon{display:none}#header-post #actions{display:none}}@media screen and (max-width: 1199px){#header-post #toc{display:none}}@media screen and (min-width: 900px){#header-post #menu-icon-tablet{display:none !important}#header-post #top-icon-tablet{display:none !important}}@media screen and (min-width: 1199px){#header-post #actions{width:auto}#header-post #actions ul{display:inline-block;float:right}#header-post #actions .info{display:inline;float:left;margin-right:1.5rem;font-style:italic;font-size:0.75rem;color:#666}}#footer-post{position:fixed;right:0;bottom:0;left:0;z-index:5000000;width:100%;border-top:1px solid #666;background:#fafafa;transition:opacity .2s}#footer-post a{background:none;color:inherit;text-decoration:none}#footer-post a.icon{background:none;transition:all 0.2s ease}#footer-post a.icon:hover{color:#d480aa;transform:scale(1.1)}#footer-post a.icon:active{transform:scale(0.95)}#footer-post #nav-footer{padding-right:1rem;padding-left:1rem;background:#e6e6e6;text-align:center}#footer-post #nav-footer a{color:#2bbc8a;font-size:1em;transition:all 0.2s ease}#footer-post #nav-footer a:hover{background-image:linear-gradient(transparent, transparent 5px, #2bbc8a 5px, #2bbc8a);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x;transform:translateY(-1px)}#footer-post #nav-footer a:active{transform:translateY(0)}#footer-post #nav-footer ul{display:table;margin:0;padding:0;width:100%;list-style-type:none}#footer-post #nav-footer ul li{display:inline-table;padding:8px;width:20%;vertical-align:middle}#footer-post #actions-footer{overflow:auto;margin-top:0.8rem;margin-bottom:0.8rem;padding-right:1rem;padding-left:1rem;width:100%;text-align:center;white-space:nowrap}#footer-post #actions-footer a{display:inline-block;padding:0 0.8rem;color:#2bbc8a;transition:all 0.2s ease}#footer-post #actions-footer a:hover{transform:translateY(-1px)}#footer-post #actions-footer a:active{transform:translateY(0)}#footer-post #share-footer{padding-right:1rem;padding-left:1rem;background:#e6e6e6;text-align:center}#footer-post #share-footer ul{display:table;margin:0;padding:0;width:100%;list-style-type:none}#footer-post #share-footer ul li{display:inline-table;padding:8px;width:20%;vertical-align:middle}#footer-post #share-footer ul li a{transition:all 0.2s ease}#footer-post #share-footer ul li a:hover{transform:scale(1.1)}#footer-post #share-footer ul li a:active{transform:scale(0.95)}#footer-post #toc-footer{clear:both;padding-top:0.6rem;padding-bottom:0.6rem;background:#e6e6e6;text-align:left}#footer-post #toc-footer #TableOfContents ul{margin:0;padding:0;padding-left:15px;list-style-type:none}#footer-post #toc-footer a:hover{color:#d480aa}#footer-post #toc-footer #TableOfContents>ul>li{color:#383838;font-size:0.75rem;font-weight:600;padding:0.12rem 0;border-left:2px solid #2bbc8a;padding-left:0.4rem;margin-bottom:0.1rem;line-height:1.3}#footer-post #toc-footer #TableOfContents>ul>li>ul>li{color:#666;font-size:0.7rem;padding:0.1rem 0;padding-left:0.9rem;margin-left:0.25rem;border-left:1px solid rgba(128,128,128,0.3);line-height:1.3}#footer-post #toc-footer #TableOfContents>ul>li>ul>li>ul>li{display:none}@media screen and (min-width: 500px){#footer-post-container{display:none}}.post-list{padding:0}.post-list .post-item{margin-bottom:1rem;margin-left:0;list-style-type:none}.post-list .post-item .meta{display:block;margin-right:16px;min-width:100px;color:#666;font-size:14px}@media (min-width: 480px){.post-list .post-item{display:flex;margin-bottom:5px}.post-list .post-item .meta{text-align:left}}.project-list{padding:0;list-style:none}.project-list .project-item{margin-bottom:5px}.project-list .project-item p{display:inline}#projects{margin-top:3rem;margin-bottom:3rem}#projects .projects-grid{display:grid;grid-template-columns:1fr;gap:1.5rem;margin-top:1.5rem}#projects .project-item{padding:1.5rem;border:2px solid transparent;background:linear-gradient(var(--color-background), var(--color-background)) padding-box,linear-gradient(135deg, rgba(212,128,170,0.3), rgba(43,188,138,0.2)) border-box;border-radius:12px;text-align:center;transition:all 0.3s ease}#projects .project-item:hover{transform:translateY(-4px);background:linear-gradient(var(--color-background), var(--color-background)) padding-box,linear-gradient(135deg, rgba(212,128,170,0.6), rgba(43,188,138,0.5)) border-box;box-shadow:0 8px 24px rgba(212,128,170,0.15)}#projects .project-icon{font-size:2.5rem;margin-bottom:0.75rem}#projects .project-item h3{margin-top:0;margin-bottom:0.5rem;font-size:1.1rem}#projects .project-item h3 a{color:var(--color-accent-1);text-decoration:none}#projects .project-item h3 a:hover{text-decoration:underline}#projects .project-item p{margin:0;color:var(--color-text);font-size:0.9rem;line-height:1.5}@media (min-width: 480px){#projects .projects-grid{grid-template-columns:repeat(2, 1fr)}}@media (min-width: 768px){#projects .projects-grid{grid-template-columns:repeat(3, 1fr)}}article header .posttitle{margin-top:0;margin-bottom:0;text-transform:none;font-size:1.5em;line-height:1.25}article header .meta{margin-top:0;margin-bottom:1rem}article header .meta *{color:#8c8c8c;font-size:.85rem}article header .author{text-transform:uppercase;letter-spacing:.01em;font-weight:700}article header .postdate{display:inline}article .content h1{font-size:1.8em;margin-top:1.5em;margin-bottom:0.8em;line-height:1.2}article .content h2{font-size:1.5em;margin-top:1.5em;margin-bottom:0.8em;line-height:1.3;position:relative}article .content h2:before{position:absolute;top:-4px;left:-1rem;color:#2bbc8a;content:"#";font-weight:bold;font-size:1.2rem}article .content h3{font-size:1.3em;margin-top:1.3em;margin-bottom:0.6em;line-height:1.4}article .content h4{font-size:1.1em;margin-top:1.2em;margin-bottom:0.5em}article .content h5{font-size:1em;margin-top:1em;margin-bottom:0.4em}article .content h6{font-size:0.9em;margin-top:1em;margin-bottom:0.4em;color:var(--color-meta)}article .content p{margin-top:0;margin-bottom:1em}article .content ul,article .content ol{margin-top:0;margin-bottom:1em;padding-left:2em}article .content li{margin-bottom:0.5em}article .content ul li{list-style-type:disc}article .content ol li{list-style-type:decimal}article .content table{border-collapse:collapse;width:100%;margin:1.5em 0;font-size:0.95em}article .content table th,article .content table td{padding:0.75em 1em;border:1px solid var(--color-border);text-align:left}article .content table th{background-color:var(--color-background-code);font-weight:600}article .content table tr:nth-child(even){background-color:rgba(0,0,0,0.02)}.theme-dark article .content table tr:nth-child(even){background-color:rgba(255,255,255,0.02)}article .content hr{border:0;border-top:1px solid var(--color-border);margin:2em 0}article .content strong,article .content b{font-weight:600}article .content em,article .content i{font-style:italic}article .content dl{margin:1.5em 0}article .content dl dt{font-weight:600;margin-top:0.5em}article .content dl dd{margin-left:1.5em;margin-bottom:0.5em}article .content img,article .content video{display:block;margin:auto;max-width:100%;height:auto}article .content .video-container{position:relative;overflow:hidden;padding-top:56.25%;height:0}article .content .video-container iframe,article .content .video-container object,article .content .video-container embed{position:absolute;top:0;left:0;margin-top:0;width:100%;height:100%}article .content blockquote{margin:1rem 10px;padding:.5em 10px;background:inherit;color:#2bbc8a;quotes:"\201C" "\201D" "\2018" "\2019";font-weight:bold}article .content blockquote p{margin:0}article .content blockquote:before{margin-right:.25em;color:#2bbc8a;content:"\201C";vertical-align:-.4em;font-size:2em;line-height:.1em}article .content blockquote footer{margin:line-height 0;color:#666;font-size:11px}article .content blockquote footer a{background-image:linear-gradient(transparent, transparent 5px, #666 5px, #666);color:#666}article .content blockquote footer a:hover{background-image:linear-gradient(transparent, transparent 4px, #999 4px, #999);color:#999}article .content blockquote footer cite:before{padding:0 .5em;content:"—"}article .content .pullquote{margin:0;width:45%;text-align:left}article .content .pullquote.left{margin-right:1em;margin-left:.5em}article .content .pullquote.right{margin-right:.5em;margin-left:1em}article .content .caption{position:relative;display:block;margin-top:.5em;color:#666;text-align:center;font-size:.9em}.posttitle{text-transform:none;font-size:1.5em;line-height:1.25}.article-tag .tag-link:before{content:"#";background-image:linear-gradient(transparent, transparent 10px, #d480aa 10px, #d480aa);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}.article-category .category-link{background-image:linear-gradient(transparent, transparent 10px, #d480aa 10px, #d480aa);background-position:bottom;background-size:100% 6px;background-repeat:repeat-x}@media (min-width: 480px){.article-read-time,.article-tag,.article-category{display:inline}.article-read-time:before,.article-tag:before,.article-category:before{content:"|"}}.article-gallery{display:grid;grid-template-columns:repeat(auto-fill, minmax(150px, 1fr));gap:4px;margin:2rem 0}.article-gallery.native-gallery{grid-auto-rows:140px;grid-auto-flow:dense}.article-gallery .gallery-item{position:relative;overflow:hidden;border-radius:2px;cursor:pointer;background:#fafafa}.article-gallery .gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform 0.3s ease}.article-gallery .gallery-item img:hover{transform:scale(1.05)}.article-gallery .gallery-item:nth-child(3n+1){grid-column:span 2}@media (max-width: 768px){.article-gallery{grid-template-columns:repeat(auto-fill, minmax(100px, 1fr));grid-auto-rows:100px}.article-gallery .gallery-item:nth-child(3n+1){grid-column:span 1}}.lightbox{position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;display:flex;align-items:center;justify-content:center}.lightbox .lightbox-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.9)}.lightbox .lightbox-content{position:relative;max-width:90%;max-height:90%;z-index:10000}.lightbox .lightbox-content img{max-width:100%;max-height:90vh;display:block;border-radius:4px}.lightbox .lightbox-content .lightbox-close{position:absolute;top:-40px;right:0;background:transparent;border:none;color:white;font-size:30px;cursor:pointer;padding:5px 10px}.lightbox .lightbox-content .lightbox-close:hover{opacity:0.7}#archive .post-list{padding:0}#archive .post-list .post-item{margin-bottom:1rem;margin-left:0;list-style-type:none}#archive .post-list .post-item .meta{display:block;margin-right:16px;min-width:100px;color:#666;font-size:14px}@media (min-width: 480px){#archive .post-list .post-item{display:flex;margin-bottom:5px;margin-left:1rem}#archive .post-list .post-item .meta{text-align:left}}#books{margin-top:3rem;margin-bottom:3rem}.books-grid{display:grid;grid-template-columns:1fr;gap:2rem;margin-top:2rem}.book-card{display:flex;flex-direction:column;padding:0.75rem;border:2px solid transparent;background:linear-gradient(var(--color-background), var(--color-background)) padding-box,linear-gradient(135deg, rgba(212,128,170,0.3), rgba(43,188,138,0.2)) border-box;border-radius:12px;transition:all 0.3s ease}.book-card:hover{transform:translateY(-4px);background:linear-gradient(var(--color-background), var(--color-background)) padding-box,linear-gradient(135deg, rgba(212,128,170,0.6), rgba(43,188,138,0.5)) border-box;box-shadow:0 8px 24px rgba(212,128,170,0.15)}.book-cover{width:100%;aspect-ratio:2/2.8;border-radius:6px;overflow:hidden;background-color:var(--color-border);margin-bottom:0.6rem;box-shadow:0 2px 8px rgba(0,0,0,0.1)}.book-cover img{width:100%;height:100%;object-fit:cover;transition:transform 0.3s ease}.book-cover img:hover{transform:scale(1.05)}.book-cover a{display:block;width:100%;height:100%}.book-cover-placeholder{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:3rem;color:var(--color-accent-3);background:linear-gradient(135deg, var(--color-accent-1) 0%, var(--color-accent-2) 100%);opacity:0.3}.book-info{display:flex;flex-direction:column;align-items:center;text-align:center}.book-title{margin:0 0 0.35rem 0;font-size:0.95rem;font-weight:700;line-height:1.1;max-height:2.2em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-wrap:break-word;overflow-wrap:break-word}.book-title a{color:var(--color-text);text-decoration:none}.book-title a:hover{color:var(--color-accent-1)}.book-author{margin:0 0 0.5rem 0;font-size:0.8rem;line-height:1.1;color:var(--color-meta)}.book-rating{margin-bottom:0.35rem}.stars{display:inline-flex;gap:2px;font-size:0.9rem;line-height:1}.star.filled{color:#f5c518}.star.empty{color:var(--color-accent-3)}.book-meta{display:flex;flex-wrap:wrap;gap:0.5rem;font-size:0.75rem;line-height:1.2;color:var(--color-meta)}.book-date,.book-duration{display:inline-flex;align-items:center;gap:0.25rem}.book-single{margin-top:3rem}.book-detail{display:flex;gap:2rem;margin-bottom:3rem;padding-bottom:2rem;border-bottom:1px solid var(--color-border)}@media (max-width: 600px){.book-detail{flex-direction:column;align-items:center;text-align:center}}.book-cover-large{flex-shrink:0;width:200px;height:300px;border-radius:8px;overflow:hidden;box-shadow:0 4px 12px rgba(0,0,0,0.15)}.book-cover-large img{width:100%;height:100%;object-fit:cover}@media (max-width: 600px){.book-cover-large{width:160px;height:240px}}.book-cover-placeholder-large{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:4rem;color:var(--color-accent-3);background:linear-gradient(135deg, var(--color-accent-1) 0%, var(--color-accent-2) 100%);opacity:0.3}.book-info-large{flex:1;display:flex;flex-direction:column}.book-info-large h1{margin-top:0;margin-bottom:0.5rem;color:var(--color-accent-1)}.book-info-large .author{font-size:1.1rem;color:var(--color-accent-2);margin-bottom:1rem}.book-info-large .rating{margin-bottom:1.5rem}.book-info-large .meta{margin-bottom:1.5rem}.book-info-large .meta p{margin:0.25rem 0;color:var(--color-meta)}.book-info-large .external-links{display:flex;flex-wrap:wrap;gap:1rem}.book-info-large .external-link{display:inline-flex;align-items:center;padding:0.5rem 1rem;background-color:var(--color-accent-1);color:#fff;text-decoration:none;border-radius:4px;font-size:0.9rem;transition:opacity 0.2s ease}.book-info-large .external-link:hover{opacity:0.8}.book-review h2{color:var(--color-accent-1);margin-bottom:1rem}@media (min-width: 640px){.books-grid{grid-template-columns:repeat(2, 1fr);gap:1.5rem}}@media (min-width: 1024px){.books-grid{grid-template-columns:repeat(3, 1fr);gap:1.5rem}}@media (min-width: 1280px){.books-grid{grid-template-columns:repeat(4, 1fr);gap:1.5rem}}.blog-post-comments{margin-top:4rem}#footer{position:absolute;bottom:0;margin-bottom:10px;width:100%;color:#666;vertical-align:top;text-align:center;font-size:11px}#footer ul{margin:0;padding:0;list-style:none}#footer li{display:inline-block;margin-right:15px;border-right:1px solid;border-color:#666;vertical-align:middle}#footer li a{margin-right:15px}#footer li:last-child{margin-right:0;border-right:0}#footer li:last-child a{margin-right:0}#footer a{color:#666;text-decoration:underline;background-image:none}#footer a:hover{color:#999}#footer .footer-left{height:20px;vertical-align:middle;line-height:20px}@media (min-width: 39rem){#footer{display:flex;flex-flow:row wrap;justify-content:space-between;align-items:center;align-content:center;margin-bottom:20px}#footer .footer-left{align-self:flex-start;margin-right:20px}#footer .footer-right{align-self:flex-end}}.pagination{display:inline-block;margin-top:2rem;width:100%;text-align:center}.pagination .page-number{color:#383838;font-size:.8rem}.pagination a{padding:4px 6px;border-radius:5px;background-image:none;color:#383838;text-decoration:none}.pagination a:hover{background-image:none}.pagination a:hover:not(.active){color:#383838}.search-input{padding:4px 7px;width:100%;outline:none;border:solid 1px #8c8c8c;border-radius:5px;background-color:#fff;color:#383838;font-size:1.2rem;-webkit-border-radius:5px;-moz-border-radius:5px}.search-input:focus{border:solid 1px #2bbc8a}#search-result ul.search-result-list{padding:0;list-style-type:none}#search-result li{margin:2em auto}#search-result a.search-result-title{background-image:none;color:#383838;text-transform:capitalize;font-weight:bold;line-height:1.2}#search-result p.search-result{overflow:hidden;margin:.4em auto;max-height:13em;text-align:justify;font-size:.8em}#search-result em.search-keyword{border-bottom:1px dashed #d480aa;color:#d480aa;font-weight:bold}.search-no-result{display:none;padding-bottom:.5em;color:#383838}#tag-cloud .tag-cloud-title{color:#666}#tag-cloud .tag-cloud-tags{clear:both;text-align:center}#tag-cloud .tag-cloud-tags a{display:inline-block;margin:10px}.tooltipped{position:relative}.tooltipped::after{position:absolute;z-index:1000000;display:none;padding:.2em .5em;-webkit-font-smoothing:subpixel-antialiased;color:#fff;font-display:swap;font-weight:400;font-size:11.2px;font-family:"JetBrains Mono",monospace;line-height:1.725;text-rendering:geometricPrecision;text-align:center;word-wrap:break-word;white-space:pre;content:attr(aria-label);background:#383838;border-radius:3px;opacity:0}.tooltipped::before{position:absolute;z-index:1000001;display:none;width:0;height:0;color:#383838;pointer-events:none;content:'';border:6px solid transparent;opacity:0}@keyframes tooltip-appear{from{opacity:0}to{opacity:1}}.tooltipped:hover::before,.tooltipped:hover::after,.tooltipped:active::before,.tooltipped:active::after,.tooltipped:focus::before,.tooltipped:focus::after{display:inline-block;text-decoration:none;animation-name:tooltip-appear;animation-duration:0.1s;animation-fill-mode:forwards;animation-timing-function:ease-in}.tooltipped-s::after,.tooltipped-sw::after{top:100%;right:50%;margin-top:6px}.tooltipped-s::before,.tooltipped-sw::before{top:auto;right:50%;bottom:-7px;margin-right:-6px;border-bottom-color:#383838}.tooltipped-sw::after{margin-right:-16px}.tooltipped-s::after{transform:translateX(50%)}#categories .category-list-title{color:#666}#categories .category-list .category-list-item .category-list-count{color:#666}#categories .category-list .category-list-item .category-list-count:before{content:" ("}#categories .category-list .category-list-item .category-list-count:after{content:")"}.theme-switcher{position:fixed;bottom:30px;right:30px;z-index:1000}.theme-toggle-switch{position:relative;display:inline-flex;align-items:center;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent}.theme-toggle-switch input{position:absolute;opacity:0;width:0;height:0}.theme-toggle-switch .switch-track{position:relative;width:50px;height:26px;background-color:rgba(0,0,0,0.2);border-radius:26px;transition:background-color 0.3s ease;box-shadow:inset 0 2px 4px rgba(0,0,0,0.2),0 1px 2px rgba(0,0,0,0.05)}.theme-toggle-switch .switch-track .switch-thumb{position:absolute;top:2px;left:2px;width:22px;height:22px;background-color:white;border-radius:50%;transition:transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);box-shadow:0 2px 4px rgba(0,0,0,0.2),0 1px 2px rgba(0,0,0,0.1);display:flex;align-items:center;justify-content:center;font-size:12px;line-height:1}.theme-toggle-switch input:checked~.switch-track{background-color:var(--color-accent-1, #2bbc8a);box-shadow:inset 0 2px 4px rgba(0,0,0,0.1),0 1px 2px rgba(43,188,138,0.2)}.theme-toggle-switch input:checked~.switch-track .switch-thumb{transform:translateX(24px)}.theme-toggle-switch input:focus-visible~.switch-track{outline:2px solid var(--color-accent-1, #2bbc8a);outline-offset:3px}.theme-toggle-switch:hover .switch-track{background-color:rgba(0,0,0,0.25);box-shadow:inset 0 2px 4px rgba(0,0,0,0.25),0 2px 8px rgba(0,0,0,0.15)}.theme-toggle-switch input:checked~.switch-track:hover,.theme-toggle-switch:hover input:checked~.switch-track{background-color:var(--color-accent-1, #2bbc8a);filter:brightness(1.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.1),0 2px 8px rgba(43,188,138,0.3)}.theme-toggle-switch:active .switch-thumb{width:27px}.theme-toggle-switch::after{content:'Theme';position:absolute;bottom:100%;right:0;margin-bottom:8px;padding:4px 8px;background-color:rgba(0,0,0,0.8);color:white;font-size:12px;border-radius:4px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity 0.2s ease}.theme-toggle-switch:hover::after{opacity:1}html.theme-dark .theme-toggle-switch .switch-track,.theme-dark .theme-toggle-switch .switch-track{background-color:rgba(255,255,255,0.2);box-shadow:inset 0 2px 4px rgba(0,0,0,0.3),0 1px 2px rgba(255,255,255,0.05)}html.theme-dark .theme-toggle-switch .switch-track .switch-thumb,.theme-dark .theme-toggle-switch .switch-track .switch-thumb{background-color:#2d2f31;box-shadow:0 2px 4px rgba(0,0,0,0.4),0 1px 2px rgba(0,0,0,0.2)}html.theme-dark .theme-toggle-switch:hover .switch-track,.theme-dark .theme-toggle-switch:hover .switch-track{background-color:rgba(255,255,255,0.25)}html.theme-dark .theme-toggle-switch::after,.theme-dark .theme-toggle-switch::after{background-color:rgba(255,255,255,0.9);color:#1d1f21}@media screen and (max-width: 480px){.theme-switcher{bottom:20px;right:20px}.theme-toggle-switch .switch-track{width:46px;height:24px}.theme-toggle-switch .switch-track .switch-thumb{width:20px;height:20px;font-size:11px}.theme-toggle-switch input:checked~.switch-track .switch-thumb{transform:translateX(22px)}.theme-toggle-switch::after{display:none}}pre{overflow-x:auto;padding:15px 15px 10px 15px;border:1px dotted #666;border-radius:2px;-webkit-border-radius:2px;font-size:13px;font-family:"JetBrains Mono",monospace;line-height:22px;position:relative}pre .code-copy-btn{position:absolute;top:0 !important;right:0 !important;left:auto !important;border:0;border-radius:0 2px 0 0;padding:0;font-family:"JetBrains Mono", monospace;font-weight:800;font-size:0.9em;line-height:1.7;color:#fff;background-color:#8c8c8c;min-width:60px;text-align:center;cursor:pointer;letter-spacing:0em;transition:background-color 0.2s ease, color 0.2s ease, transform 0.1s ease}pre .code-copy-btn:hover{background-color:#666;color:#2bbc8a}pre .code-copy-btn:active{transform:scale(0.98)}pre .code-copy-btn:focus-visible{outline:2px solid #2bbc8a;outline-offset:2px}pre .code-copy-btn.copied{background-color:#2bbc8a;color:#fff}pre code{display:block;padding:0;border:none}code{font-family:"JetBrains Mono",monospace;padding:0 5px;border:1px dotted #666;border-radius:2px;-webkit-border-radius:2px}.highlight>div{border-radius:2px;-webkit-border-radius:2px}.highlight pre{border:none;background:none;position:relative}.highlight pre .code-copy-btn{position:absolute !important;top:0 !important;right:0 !important;left:auto !important}.highlight table pre{margin-top:0}.highlight table td:first-child pre{padding-right:0}.highlight table td:last-child pre{padding-left:0}

/*# sourceMappingURL=styles.css.map */