@font-face{font-family:"Source Sans 3";src:url(/fonts/SourceSansPro/SourceSans3-Regular.otf.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}.blog-page,.editor-page,.post-page{--ink:#1d2923;--muted-ink:#68756e;--paper:#fffdf8;--paper-deep:#f3f0e8;--sage:#8fb88c;--sage-dark:#315d4d;--line:#315d4d24;background:#f3f1ea}.blog-page #header,.post-page #header{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#fffdf8e6;border-bottom:1px solid #315d4d1a;box-shadow:0 8px 35px #26372e0d}.blog-page .blog-main{background:radial-gradient(circle at 8% 20%,#8fb88c2b,#0000 25rem),linear-gradient(#f8f6f0 0%,#f1efe8 100%);padding-top:5rem}.blog-hero{color:#fff;background:radial-gradient(circle at 84% 18%,#b8dead3d,#0000 22rem),linear-gradient(135deg,#203e34 0%,#315d4d 52%,#29483e 100%);border-radius:28px;grid-template-columns:minmax(0,1fr) 180px;gap:3rem;width:min(1180px,100% - 3rem);min-height:340px;margin:2rem auto 0;padding:clamp(2.4rem,6vw,5rem);display:grid;position:relative;overflow:hidden;box-shadow:0 28px 70px #1e3c302e}.blog-hero:before,.blog-hero:after{content:"";border:1px solid #ffffff1f;border-radius:50%;position:absolute}.blog-hero:before{width:420px;height:420px;top:-250px;right:-80px}.blog-hero:after{width:240px;height:240px;bottom:-175px;right:65px}.blog-hero-copy,.blog-hero-index{z-index:1;position:relative}.blog-hero-kicker{letter-spacing:.12em;text-transform:uppercase;color:#c8e4c3;align-items:center;gap:.75rem;margin-bottom:1.35rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.68rem;font-weight:600;display:flex}.blog-hero-kicker:before{content:"";background:currentColor;width:2.5rem;height:1px}.blog-hero h2{letter-spacing:-.055em;color:#fff;max-width:760px;margin:0;font-size:clamp(2rem,5vw,4.15rem);font-weight:500;line-height:1.08}.blog-hero h2 em{color:#bce2b7;font-family:Georgia,Times New Roman,serif;font-weight:400}.blog-hero-intro{color:#ffffffb8;max-width:590px;margin:1.5rem 0 0;font-size:1rem;line-height:1.7}.blog-hero-index{color:#fff9;border-left:1px solid #ffffff2e;align-self:end;padding:1.2rem 0 0 1.4rem;font-size:.76rem}.blog-hero-index strong{color:#fff;margin:.15rem 0 .35rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:3.1rem;font-weight:400;line-height:1;display:block}.blog-hero-index-label{letter-spacing:.12em;text-transform:uppercase;color:#bce2b7;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.62rem;display:block}.blog-page .blog-container{gap:2.5rem;width:min(1180px,100%);max-width:none;padding-top:3rem}.blog-page .blog-sidebar{flex-basis:240px;align-self:flex-start;position:sticky;top:6.5rem}.blog-page .sidebar-card{border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffdf8bd;border-radius:18px;box-shadow:0 12px 35px #2a3d330e}.blog-page .sidebar-card h3{letter-spacing:.11em;color:var(--sage-dark);align-items:center;gap:.6rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.68rem;display:flex}.blog-page .sidebar-card h3:before{content:"";background:var(--sage);border-radius:50%;width:6px;height:6px;box-shadow:0 0 0 4px #8fb88c29}.blog-page .category-list li a{color:#526159;border-radius:10px;padding:.65rem .8rem .65rem 1rem;position:relative}.blog-page .category-list li a:after{content:"→";op:50%;opacity:0;transition:all .2s;position:absolute;right:.8rem;transform:translate(-5px,-50%)}.blog-page .category-list li a:hover:after,.blog-page .category-list li a.active:after{opacity:1;transform:translateY(-50%)}.blog-page .category-list li a.active{color:#295744;background:#dfeedd}.blog-page .tag-cloud .tag,.blog-page .post-tags .tag{color:#66736c;background:#ffffffad;border:1px solid #315d4d1a}.blog-page .blog-posts{gap:1.15rem}.blog-page .post-card{animation-delay:calc(var(--post-order) * 55ms);background:#fffdf8e8;border:1px solid #315d4d1c;border-radius:20px;padding:2rem 2.2rem 1.8rem 2.5rem;position:relative;overflow:hidden;box-shadow:0 12px 40px #26372e11}.blog-page .post-card:before{content:"";background:linear-gradient(180deg, var(--sage), #c6d9b9);transform-origin:bottom;width:4px;transition:transform .32s;position:absolute;top:0;bottom:0;left:0;transform:scaleY(0)}.blog-page .post-card:hover{transform:translateY(-4px);box-shadow:0 22px 55px #26372e21}.blog-page .post-card:hover:before{transform:scaleY(1)}.post-sequence{color:#315d4d57;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.68rem;position:absolute;top:1.9rem;right:2rem}.blog-page .post-card .post-meta{padding-right:2.5rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.7rem}.blog-page .post-category,.post-page .post-category{border-radius:999px;padding:.35em .8em;box-shadow:inset 0 0 0 1px #ffffff38}.blog-page .post-card .post-title{letter-spacing:-.03em;max-width:85%;color:var(--ink);margin:.85rem 0 .7rem;font-size:clamp(1.18rem,2vw,1.48rem);font-weight:600;line-height:1.35}.blog-page .post-excerpt{color:#5f6b65;max-width:720px}.blog-page .read-more-btn{color:#315d4d;background:#dfeedd73;border:1px solid #315d4d2b;border-radius:999px;align-items:center;min-height:2.2rem;padding:0 .9rem;display:inline-flex}.blog-page .read-more-btn:hover{color:#fff;background:#315d4d;border-color:#8fb88c}.blog-dialog{background:var(--paper);border:1px solid #315d4d1f;box-shadow:0 35px 100px #16271f4d}.login-dialog form{padding:2.2rem}.login-dialog:before{content:"";background:linear-gradient(90deg,#315d4d,#8fb88c,#d0c69e);height:7px;display:block}.blog-dialog input,.blog-dialog select,.blog-dialog textarea{background:#fffefa;border-color:#315d4d29;border-radius:10px}.blog-dialog input:focus,.blog-dialog select:focus,.blog-dialog textarea:focus{border-color:#719d73;box-shadow:0 0 0 4px #8fb88c2b}.editor-dialog{border-radius:22px}.editor-dialog form{padding:0}.editor-dialog .editor-heading{background:linear-gradient(90deg,#f7f6ef,#fffdf8);border-bottom:1px solid #315d4d21;margin:0;padding:1.3rem 1.5rem}.editor-dialog .editor-fields{padding:1.25rem 1.5rem 0}.editor-dialog .editor-media-row{margin:0;padding:0 1.5rem 1rem}.editor-dialog .markdown-editor-grid{background:#f7f6ef;border-top:1px solid #315d4d21;gap:0}.editor-dialog .markdown-pane{background:#fffefa;gap:0}.editor-dialog .markdown-pane+.markdown-pane{border-left:1px solid #315d4d21}.pane-heading{color:#53645b;background:#f3f1e9;border-bottom:1px solid #315d4d1a;align-items:center;gap:.5rem;min-height:2.65rem;padding:0 1rem;display:flex}.pane-heading small{color:#315d4d;letter-spacing:.06em;background:#dfeedd;border-radius:999px;margin-left:auto;padding:.22rem .5rem;font-size:.58rem}.pane-status-dot{background:#7ba779;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 4px #7ba77921}#markdown-input{background:linear-gradient(90deg,#0000 31px,#8fb88c1f 32px,#0000 33px),#fffefa;border:0;border-radius:0;padding:1.25rem 1.4rem;line-height:1.8}#markdown-input:focus{box-shadow:inset 3px 0 #8fb88c}.preview-pane .markdown-body{background:#fff;border:0;border-radius:0;padding:1.5rem 1.75rem 3rem}.editor-dialog .editor-message{background:#f7f6ef;border-top:1px solid #315d4d1a;margin:0;padding:.65rem 1.5rem}.media-upload-button{background:#f4f7f1;border-radius:999px}.post-page .post-main{background:radial-gradient(circle at 14% 20%,#8fb88c2e,#0000 28rem),radial-gradient(circle at 88% 65%,#dac99f2e,#0000 26rem),#f4f1e9;max-width:none;padding:8rem 1.5rem 6rem;position:relative;overflow:hidden}.post-ambient{filter:blur(1px);pointer-events:none;border-radius:50%;position:absolute}.post-ambient-one{border:1px solid #315d4d21;width:210px;height:210px;top:11rem;left:-115px}.post-ambient-two{border:1px solid #a08a5329;width:320px;height:320px;bottom:8rem;right:-190px}.post-page .post-container{z-index:1;background:#fffdf8f5;border:1px solid #315d4d1f;border-radius:28px;width:min(900px,100%);margin:0 auto;padding:clamp(2rem,6vw,5.2rem);position:relative;box-shadow:0 32px 90px #25372d21}.post-page .post-header{border-bottom:0;margin-bottom:3.5rem;padding-bottom:2.4rem;position:relative}.post-page .post-header:after{content:"";background:linear-gradient(90deg,#315d4d,#a8c9a2);border-radius:99px;width:4rem;height:3px;position:absolute;bottom:0;left:0}.article-kicker{letter-spacing:.12em;text-transform:uppercase;color:#668b6b;margin:0 0 1.25rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.68rem;font-weight:600}.article-kicker span{color:#aab4ad;margin:0 .4rem}.post-page .post-header .post-title{letter-spacing:-.055em;max-width:760px;color:var(--ink);margin:1.2rem 0 1.5rem;font-size:clamp(2rem,6vw,4rem);font-weight:550;line-height:1.13}.post-page .post-meta{font-family:JetBrains Mono,ui-monospace,monospace;font-size:.72rem}.article-scroll-cue{letter-spacing:.08em;text-transform:uppercase;color:#98a39d;align-items:center;gap:.6rem;margin-top:2rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.61rem;display:flex}.article-scroll-cue span{background:#b8c1bb;width:2.5rem;height:1px}.post-page .markdown-body>p:first-child:first-letter{float:left;color:#315d4d;margin:.12em .12em 0 0;font-family:Georgia,Times New Roman,serif;font-size:3.8em;line-height:.8}.post-page .markdown-body h1,.post-page .markdown-body h2,.post-page .markdown-body h3,.post-page .markdown-body h4{color:#20352b;letter-spacing:-.035em;border:0;position:relative}.post-page .markdown-body h2{margin-top:2.6em;font-size:1.55rem}.post-page .markdown-body h2:before{content:"";background:#8fb88c;border-radius:9px;width:3px;height:1.1em;position:absolute;top:.2em;left:-1rem}.post-page .markdown-body blockquote{color:#46584f;background:linear-gradient(90deg,#e7f0e3,#f7f6ef);border:0;border-radius:0 14px 14px 0;margin:1.8em 0;padding:1.1rem 1.35rem;box-shadow:inset 4px 0 #719d73}.post-page .markdown-body pre{background:#1e2d27;border:1px solid #ffffff14;border-radius:15px;margin:1.8em 0;padding:1.6rem;position:relative;box-shadow:0 18px 35px #1b2d242e}.post-page .markdown-body img{border:8px solid #fff;border-radius:16px;margin:2rem auto;box-shadow:0 20px 50px #23352b29}.post-page .markdown-body table{border:1px solid var(--line);border-radius:12px;overflow:hidden}.reading-progress{z-index:10000;background:#ffffff1f;height:3px;position:fixed;top:0;left:0;right:0}.reading-progress span{transform-origin:0;background:linear-gradient(90deg,#315d4d,#9bc796);width:100%;height:100%;transition:transform 80ms linear;display:block;transform:scaleX(0)}.post-afterword{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;margin-top:4rem;padding-top:1.5rem;display:flex}.post-afterword a,.post-afterword button{color:#476d5b;font:inherit;cursor:pointer;background:0 0;border:0;font-size:.84rem;font-weight:600}.post-afterword button{border:1px solid var(--line);border-radius:999px;padding:.55rem .9rem}.post-afterword a:hover,.post-afterword button:hover{color:#1f4939}@media (width<=768px){.blog-hero{border-radius:21px;grid-template-columns:1fr;gap:2rem;width:calc(100% - 2rem);min-height:auto;margin-top:1rem;padding:2rem 1.5rem}.blog-hero h2{font-size:clamp(2rem,10vw,3rem)}.blog-hero-index{border-top:1px solid #ffffff29;border-left:0;align-items:baseline;gap:.55rem;padding:1rem 0 0;display:flex}.blog-hero-index strong{font-size:2rem}.blog-hero-index-label{display:none}.blog-page .blog-sidebar{position:static}.blog-page .post-card{padding:1.5rem 1.35rem}.blog-page .post-card .post-title{max-width:100%;padding-right:1.5rem}.post-sequence{top:1.45rem;right:1.25rem}.editor-dialog{border-radius:0}.editor-dialog .editor-heading,.editor-dialog .editor-fields,.editor-dialog .editor-media-row{padding-left:1rem;padding-right:1rem}.editor-dialog .markdown-pane+.markdown-pane{border-top:1px solid #315d4d21;border-left:0}.post-page .post-main{padding:6rem .8rem 2rem}.post-page .post-container{border-radius:19px;padding:1.5rem 1.25rem 2rem}.post-page .post-header{margin-bottom:2.4rem}.post-page .post-header .post-title{font-size:clamp(2rem,11vw,3rem)}.post-page .markdown-body h2:before{left:-.65rem}.post-afterword{flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion:reduce){.blog-page .post-card,.reading-progress span{transition:none}}@font-face{font-family:"Source Sans 3";src:url(/fonts/SourceSansPro/SourceSans3-Semibold.otf.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:"Source Sans 3";src:url(/fonts/SourceSansPro/SourceSans3-Black.otf.woff2)format("woff2");font-weight:900;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/JetBrainsMono/JetBrainsMono-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/JetBrainsMono/JetBrainsMono-Medium.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Nunito;src:url(/fonts/Nunito/Nunito-Regular.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Nunito;src:url(/fonts/Nunito/Nunito-SemiBold.ttf)format("truetype");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Nunito;src:url(/fonts/Nunito/Nunito-Bold.ttf)format("truetype");font-weight:700;font-style:normal;font-display:swap}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{font-size:100%;font:inherit;vertical-align:baseline;border:0;margin:0;padding:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}body{-webkit-text-size-adjust:none}mark{color:inherit;background-color:#0000}input::-moz-focus-inner{border:0;padding:0}input,select,textarea{appearance:none}html{box-sizing:border-box;height:100%}*,:before,:after{box-sizing:inherit}body{background:#fff;min-width:320px;min-height:100%}body,input,textarea,select{color:#39454b;font-family:Source Sans Pro,sans-serif;font-size:clamp(14px,1.1vw,18px);font-weight:400;line-height:1.55}h1,h2,h3,h4,h5,h6{color:inherit;font-weight:700;line-height:1.25}h2{letter-spacing:-.02em;margin-bottom:.75em;scroll-margin-top:5rem;font-size:clamp(1.25em,2.2vw,1.8em);font-weight:700}h2:not(:first-child){margin-top:2.5em}p,ul,ol,dl,table{margin-bottom:1em}a{color:#98c593;text-decoration:none;transition:color .2s ease-in-out}strong,b{font-weight:700}em,i{font-style:italic}hr{border:none;border-top:1px solid #e5e6e7}blockquote{color:#555;border-left:4px solid #e5e6e7;padding-left:1em;font-style:italic}input,textarea,select{font-family:inherit;font-size:inherit;border:1px solid #e5e6e7;border-radius:.5em;width:100%;padding:.6em .75em}input:focus,textarea:focus,select:focus{border-color:#9ac8e9;outline:none}textarea{min-height:6em}#header{z-index:10000;background:#fffffff2;align-items:center;width:100%;height:4em;display:flex;position:fixed;top:0;left:0;box-shadow:0 0 .15em #0000001a}#header h1{margin:0;padding-left:1em}#header h1 a{font-size:1.5em;line-height:1}#header nav{margin-left:auto;padding-right:.8em}#header nav ul{align-items:center;margin:0;display:flex}#header nav ul li{margin-left:.75em;font-size:.95em}#header nav ul li a{color:#9aa9c8;align-items:center;height:2.4em;padding:0 .6em;line-height:1;text-decoration:none;display:flex}.menu-toggle{display:none}body{padding-top:0}@media screen and (width<=736px){#header{height:3.25rem;padding:0 .75rem}#header h1{min-width:0;padding-left:0}#header h1 a{max-width:calc(100vw - 4.75rem);font-size:.95rem}#header nav{background:#fffffffa;max-height:0;padding:0;transition:max-height .25s;display:block;position:absolute;top:100%;left:0;right:0;overflow:hidden;box-shadow:0 10px 24px #0000001f}#header.is-menu-open nav{max-height:70vh}#header nav ul{flex-direction:column;align-items:stretch;gap:0;padding:.4rem .75rem .75rem;display:flex}#header nav ul li{margin-left:0;font-size:1rem}#header nav ul li a{color:#39454b;border-radius:6px;height:auto;min-height:2.75rem;padding:0 .75rem}#header nav ul li a:hover{background:#eef5ee}.menu-toggle{cursor:pointer;background:0 0;border:0;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:2.4rem;height:2.4rem;margin-left:auto;padding:0;display:inline-flex}.menu-toggle span{background:#39454b;border-radius:999px;width:1.25rem;height:2px;transition:transform .2s,opacity .2s;display:block}#header.is-menu-open .menu-toggle span:first-child{transform:translateY(6px)rotate(45deg)}#header.is-menu-open .menu-toggle span:nth-child(2){opacity:0}#header.is-menu-open .menu-toggle span:nth-child(3){transform:translateY(-6px)rotate(-45deg)}body{padding-top:0}}.main{margin:0;padding:6rem 0;display:flex;position:relative;overflow-x:hidden}.main>.content{width:min(72rem,100% - 2rem);margin:0 auto}.main.reveal{opacity:0;transition:opacity .6s,transform .6s;transform:translateY(40px)}.main.reveal.active{opacity:1;transform:none}.main.dark{color:#fff}.main.dark a{color:inherit}body.is-touch .main{background-attachment:scroll!important}@media screen and (width<=736px){.main{padding:4rem 0}.main>.content br{display:none}.main.reveal{opacity:1;transform:none}}@media screen and (width<=480px){.main>.content{width:calc(100% - 1.5rem)}}#footer{color:#b9babb99;background:#39454b;justify-content:space-between;align-items:center;gap:1rem;padding:2rem 1.5rem;font-size:.9rem;display:flex}#footer a{color:inherit;text-decoration:none}#footer a:hover{color:#fff}#footer .menu{gap:1.2rem;margin:0;padding:0;list-style:none;display:flex}@media (width<=736px){#footer{text-align:center;flex-direction:column}#footer .menu{flex-direction:column;gap:.5rem}}.reveal-up{opacity:0;transition:opacity .8s,transform .8s;transform:translateY(60px)}.reveal-up.active{opacity:1;transform:translateY(0)}#tag{background:-webkit-image-set(url(/images/tag.webp) 1x type("image/webp"),url(/images/tag.jpg) 1x type("image/jpeg")) 50%/cover no-repeat;background:image-set("/images/tag.webp" 1x type("image/webp"),"/images/tag.jpg" 1x type("image/jpeg")) 50%/cover no-repeat;min-height:100vh;position:relative}#tag:before{content:"";z-index:0;background:linear-gradient(#ffffffeb,#fff6);position:absolute;inset:0}#tag>*{z-index:1;position:relative}.home-clock{z-index:2;color:#39454b;text-align:right;text-shadow:0 1px 2px #ffffffeb,0 8px 20px #39454b38;pointer-events:none;flex-direction:column;align-items:flex-end;gap:.15rem;font-family:JetBrains Mono,ui-monospace,monospace;line-height:1.25;display:flex;position:absolute;top:5.25rem;right:2rem}.home-clock time{white-space:nowrap;font-size:.9rem;font-weight:500}.home-clock span{white-space:nowrap;font-family:"Source Sans 3",system-ui,sans-serif;font-size:.82rem}@media (width<=736px){.home-clock{max-width:calc(100% - 1.5rem);top:3.4rem;right:.75rem}.home-clock time{font-size:.78rem}.home-clock span{font-size:.74rem}}#cloudDrieve{background:-webkit-image-set(url(/images/cloudDrieve.webp) 1x type("image/webp"),url(/images/cloudDrieve.jpg) 1x type("image/jpeg")) 50%/cover no-repeat;background:image-set("/images/cloudDrieve.webp" 1x type("image/webp"),"/images/cloudDrieve.jpg" 1x type("image/jpeg")) 50%/cover no-repeat;min-height:100vh;position:relative}#cloudDrieve:before{content:"";z-index:0;background:linear-gradient(#ffffffeb,#fff6);position:absolute;inset:0}#cloudDrieve>*{z-index:1;position:relative}#agent{--agent-input-height:220px;background:-webkit-image-set(url(/images/agent.webp) 1x type("image/webp"),url(/images/agent.jpg) 1x type("image/jpeg")) 50%/cover no-repeat;background:image-set("/images/agent.webp" 1x type("image/webp"),"/images/agent.jpg" 1x type("image/jpeg")) 50%/cover no-repeat;min-height:100vh;position:relative}#agent:before{content:"";z-index:0;background:linear-gradient(#ffffffeb,#fff6);position:absolute;inset:0}#agent>*{z-index:1;position:relative}#agent .agent-box{background:#ffffff4d;padding:2em 2em 2.5em;overflow:hidden}#chat-window{max-height:60vh;padding-bottom:var(--agent-input-height);flex-direction:column;gap:8px;display:flex;overflow-y:auto}#chat-window .msg{white-space:pre-wrap;word-break:break-word;border-radius:18px;max-width:70%;margin:4px 0;padding:12px 16px;line-height:1.5;display:inline-block}#chat-window .msg.user{color:#333;background:#dff1ff;border-bottom-right-radius:6px;margin-left:auto}#chat-window .msg.agent{color:#333;background:#ffffffe6;border-bottom-left-radius:6px;margin-right:auto}#agent .agent-input{align-items:center;gap:12px;width:100%;max-width:720px;display:flex;position:absolute;bottom:2rem;left:50%;transform:translate(-50%)}#agent .agent-input textarea{resize:none;background:#ffffffe6;border:1px solid #00000026;border-radius:24px;flex:1;min-height:48px;max-height:140px;padding:12px 16px;font-family:inherit;font-size:14px;line-height:1.4;overflow-y:auto}#agent .agent-mode-controls{z-index:2;justify-content:center;width:min(720px,100% - 2rem);display:flex;position:absolute;bottom:6.75rem;left:50%;transform:translate(-50%)}#agent .agent-mode-buttons{justify-content:center;align-items:center;gap:.75rem;width:100%;display:flex}#agent .agent-mode-btn,#agent .agent-mode-exit{text-transform:none;letter-spacing:0;cursor:pointer;border:1px solid #39454b29;border-radius:14px;min-height:44px;font:600 .88rem Nunito,system-ui,sans-serif;transition:transform .18s,box-shadow .18s,background-color .18s;box-shadow:0 6px 20px #27343a17}#agent .agent-mode-btn{color:#39454b;background:#ffffffe6;flex:1 1 0;justify-content:center;align-items:center;gap:.55rem;max-width:180px;padding:.65rem 1rem;display:inline-flex}#agent .agent-mode-btn svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:1.35rem;height:1.35rem}#agent .email-mode-btn{color:#b54b50}#agent .fortune-mode-btn{color:#8064a8}#agent .calendar-mode-btn{color:#4f8468}#agent .agent-mode-exit{color:#fff;background:#39454be6;justify-content:center;align-items:center;gap:.45rem;min-width:132px;padding:.65rem 1.3rem;display:inline-flex}#agent .agent-mode-exit[hidden],#agent .agent-mode-buttons[hidden]{display:none}#agent .agent-mode-btn:hover,#agent .agent-mode-exit:hover{transform:translateY(-2px);box-shadow:0 9px 24px #27343a26}#agent .agent-mode-btn:focus-visible,#agent .agent-mode-exit:focus-visible{outline-offset:2px;outline:3px solid #4285f459}#agent .agent-mode-btn:disabled,#agent .agent-mode-exit:disabled{opacity:.55;cursor:wait;transform:none}@media (width<=540px){#agent .agent-mode-buttons{gap:.45rem}#agent .agent-mode-btn{flex-direction:column;gap:.2rem;min-width:0;padding:.5rem .35rem;font-size:.76rem}}.msg.enter{opacity:0;transform-origin:top;transform:scaleY(.92)}.msg.enter-active{opacity:1;transition:opacity .25s ease-out,transform .25s ease-out;transform:scaleY(1)}.typing-cursor:after{content:"▋";margin-left:2px;animation:1s infinite blink}@keyframes blink{0%,50%{opacity:1}50.01%,to{opacity:0}}#intro{background-color:#0000;background-image:-webkit-linear-gradient(#ffffff26,#ffffff26),-webkit-image-set(url(/images/intro.jpg) 1x type("image/jpeg"));background-image:linear-gradient(#ffffff26,#ffffff26),image-set("/images/intro.jpg" 1x type("image/jpeg"));background-position:50%;background-repeat:repeat,repeat;background-size:cover;background-attachment:fixed;background-origin:padding-box,padding-box;background-clip:border-box,border-box}#contact{padding-bottom:0;overflow:hidden}#contact .box{-moz-transition:-moz-transform 1s;-webkit-transition:-webkit-transform 1s;-ms-transition:-ms-transform 1s;transition:transform 1s;position:relative;transform:translateY(0)}@media screen and (width<=736px){#contact .box{padding:1.5em 1.5em 2em}}@media screen and (width<=480px){#contact .box{padding:1em 1em 2em}}#header h1.logo a{color:inherit;align-items:center;gap:10px;text-decoration:none;display:flex}#header h1.logo img{flex:none;width:auto;height:52px}#header h1.logo span{white-space:nowrap;text-overflow:ellipsis;font-size:1.2em;font-weight:600;overflow:hidden}@media (width<=736px){#header h1.logo{max-width:calc(100% - 3rem)}#header h1.logo img{height:2.25rem}#header h1.logo span{font-size:.95rem}}#tag .tag-layout{width:100%;max-width:1100px;margin-left:0;margin-right:auto;padding:3rem 4rem}#tag .tag-group{margin-bottom:3rem}#tag .tag-title{text-align:left;margin-bottom:1rem}#tag .numti_line_button{flex-wrap:wrap;justify-content:center;gap:14px;width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);display:flex}#tag .numti_line_button .btn{border-radius:6px;align-items:center;gap:.5em;padding:.6em 1em;font-family:Nunito,system-ui,sans-serif;font-size:1em;font-weight:600;line-height:1.1;text-decoration:none;transition:transform .15s,box-shadow .15s;display:inline-flex}@media (height<=500px) and (orientation:landscape){#tag .numti_line_button .btn{padding:.45em .75em;font-size:.85em}.btn-icon{width:1em;height:1em}}#tag .numti_line_button .btn:hover{transform:translateY(-2px)}#tag{flex-direction:column}#tag .tag-buttons{opacity:0;transform:translateY(60px);transition:opacity .3s ease-in,transform .3s ease-in!important}#tag .tag-buttons.active{opacity:1!important;transition:opacity 1.2s ease-out,transform 1.2s ease-out!important;transform:translateY(0)!important}.btn.google{color:#fff;background:#4285f4}.btn.gmail{color:#fff;background:#ea4335}.btn.scholar{color:#fff;background:#1a73e8}.btn.gpt{color:#fff;background:#10a37f}.btn.bilibili{color:#fff;background:#fb7299}.btn.deepl{color:#fff;background:#2b5f8e}.btn.arxiv{color:#fff;background:#b31b1b}.btn.wakatime{color:#fff;background:#6c47ff}.btn.csdn{color:#fff;background:#fc5531}.btn.github{color:#fff;background:#3a3f45}.btn.moodle{color:#fff;background:#f98012}.btn.portal{color:#fff;background:#003a8f}.btn.timetable{color:#fff;background:#2f80ed}.btn.library{color:#fff;background:#555}.btn-icon{flex-shrink:0;width:1.2em;height:1.2em}.lantern-btn{transform-origin:top;flex-direction:column;align-items:center;gap:.35rem;width:80px;text-decoration:none;transition:transform .3s,filter .3s;animation:5s ease-in-out infinite lantern-sway;display:flex;position:relative}.lantern-btn img{width:70%;height:auto;display:block}@media (hover:hover){.lantern-btn:hover{filter:drop-shadow(0 0 8px #dc000059)drop-shadow(0 10px 18px #00000040);transform:translateY(-4px)}}@keyframes lantern-sway{0%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}to{transform:rotate(-4deg)}}@media (width<=736px){.lantern-btn{width:52px}}#send-btn{cursor:pointer;color:#0000;background:url(/images/agent_button2.png) 50%/contain no-repeat;border:none;width:56px;height:56px;padding:0;font-size:0}body{font-family:"Source Sans 3",system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:400}h1,h2,h3,h4,h5,h6{letter-spacing:-.01em;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:500}.back-link{font-weight:600;transition:color .2s;color:#98c593!important}.back-link:hover{color:#6fa86b!important}.blog-main{background:#f8f9fa;min-height:100vh;padding-top:5rem}.blog-container{gap:2rem;max-width:1100px;margin:0 auto;padding:2rem 1.5rem 4rem;display:flex}.blog-sidebar{flex-direction:column;flex:0 0 260px;gap:1.5rem;display:flex}.sidebar-card{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 1px 4px #0000000f}.sidebar-card h3{color:#39454b;text-transform:uppercase;letter-spacing:.04em;margin-bottom:1rem;font-size:.95rem;font-weight:600}.category-list{margin:0;padding:0;list-style:none}.category-list li{margin-bottom:.35rem}.category-list li a{color:#555;border-radius:6px;padding:.5rem .75rem;font-size:.9rem;text-decoration:none;transition:background .15s,color .15s;display:block}.category-list li a:hover{color:#39454b;background:#f0f4f0}.category-list li a.active{color:#2a7a2a;background:#e8f4e8;font-weight:600}.tag-cloud{flex-wrap:wrap;gap:.4rem;display:flex}.tag-cloud .tag{color:#555;cursor:default;background:#eef2f7;border-radius:20px;padding:.3em .7em;font-size:.78rem;transition:background .15s;display:inline-block}.tag-cloud .tag:hover{background:#dde4f0}.blog-posts{flex-direction:column;flex:1;gap:1.5rem;display:flex}.post-card{cursor:pointer;background:#fff;border-radius:12px;padding:1.8rem 2rem;transition:box-shadow .25s,transform .25s;box-shadow:0 1px 4px #0000000f}.post-card:hover{transform:translateY(-2px);box-shadow:0 4px 20px #0000001a}.post-meta{color:#888;align-items:center;gap:.8rem;margin-bottom:.75rem;font-size:.82rem;display:flex}.post-category{text-transform:uppercase;letter-spacing:.03em;color:#fff;border-radius:4px;padding:.2em .65em;font-size:.75rem;font-weight:600}.cat-tech{background:#4285f4}.cat-life{background:#ea4335}.cat-notes{background:#f98012}.cat-projects{background:#10a37f}.post-date{font-family:JetBrains Mono,monospace}.post-readtime{margin-left:auto;font-style:italic}.post-title{color:#1a1a2e;margin-bottom:.5rem;font-size:1.25rem;font-weight:600;line-height:1.4}.post-excerpt{color:#555;margin-bottom:1rem;font-size:.92rem;line-height:1.65}.post-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.post-tags{flex-wrap:wrap;gap:.35rem;display:flex}.post-tags .tag{color:#666;background:#eef2f7;border-radius:4px;padding:.2em .6em;font-size:.72rem;display:inline-block}.read-more-btn{color:#98c593;cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;font-size:.88rem;font-weight:600;transition:color .2s}.read-more-btn:hover{color:#6fa86b}.post-card-actions{align-items:center;gap:.85rem;display:flex}.edit-post-btn,.blog-login-link,.admin-text-btn{color:#607068;font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-size:.86rem;font-weight:600}.edit-post-btn:hover,.blog-login-link:hover,.admin-text-btn:hover{color:#6fa86b}.blog-login-link{color:#98c593;align-items:center;height:2.4em;padding:0 .6em;display:flex}.blog-admin-card[hidden]{display:none}.blog-admin-user{color:#728078;margin:-.25rem 0 1rem;font-size:.82rem}.admin-primary-btn{color:#fff;min-height:2.55rem;font:inherit;cursor:pointer;background:#39454b;border:0;border-radius:7px;justify-content:center;align-items:center;padding:0 1rem;font-size:.88rem;font-weight:600;transition:background .2s,opacity .2s;display:inline-flex}.admin-primary-btn:hover{background:#6fa86b}.admin-primary-btn:disabled{opacity:.55;cursor:wait}.blog-admin-card .admin-primary-btn{width:100%}.blog-admin-card .admin-text-btn{margin-top:.85rem}.blog-dialog{color:#39454b;background:#fff;border:0;border-radius:14px;width:min(460px,100vw - 2rem);max-height:calc(100vh - 2rem);padding:0;box-shadow:0 24px 80px #141e193d}.blog-dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#19211d8c}.blog-dialog form{padding:1.6rem}.blog-dialog label{color:#53615a;gap:.4rem;margin-bottom:1rem;font-size:.78rem;font-weight:600;display:grid}.blog-dialog input,.blog-dialog select,.blog-dialog textarea{color:#27332d;width:100%;font:inherit;background:#fff;border:1px solid #dce3df;border-radius:7px;margin:0;font-size:.9rem}.blog-dialog input,.blog-dialog select{height:2.6rem;padding:0 .75rem}.blog-dialog textarea{resize:vertical;padding:.7rem .75rem}.blog-dialog input:focus,.blog-dialog select:focus,.blog-dialog textarea:focus{border-color:#98c593;outline:0;box-shadow:0 0 0 3px #98c5932e}.dialog-heading{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.4rem;display:flex}.dialog-heading h2{color:#26312c;margin:0;font-size:1.25rem}.dialog-kicker{color:#6fa86b;text-transform:uppercase;letter-spacing:.08em;margin:0 0 .25rem;font-family:JetBrains Mono,monospace;font-size:.67rem}.dialog-close{color:#89938e;cursor:pointer;background:0 0;border:0;width:2rem;height:2rem;padding:0;font-size:1.6rem;line-height:1}.form-message{color:#b55245;min-height:1.3rem;margin:.3rem 0 .8rem;font-size:.8rem}.editor-dialog{width:min(1180px,100vw - 2rem);height:min(880px,100vh - 2rem)}.editor-dialog form{flex-direction:column;height:100%;display:flex;overflow:hidden}.editor-heading{align-items:center;margin-bottom:1rem}.editor-heading-actions{align-items:center;gap:1rem;display:flex}.editor-fields{grid-template-columns:minmax(0,2fr) minmax(150px,.7fr);column-gap:1rem;display:grid}.editor-wide-field{grid-column:1/-1}.label-hint{color:#94a099;font-weight:400}.editor-media-row{color:#7c8882;align-items:center;gap:.8rem;margin-bottom:.8rem;font-size:.76rem;display:flex}.media-upload-button{cursor:pointer;background:#f8faf8;border:1px solid #cdd8d1;border-radius:6px;justify-content:center;align-items:center;min-width:7rem;min-height:2.15rem;padding:0 .8rem;margin:0!important;display:inline-flex!important}.media-upload-button:hover{color:#548250;border-color:#98c593}.media-upload-button:has(input:disabled){opacity:.5;cursor:not-allowed}.media-upload-button input{display:none}.markdown-editor-grid{flex:1;grid-template-columns:1fr 1fr;gap:1rem;min-height:0;display:grid}.markdown-pane{min-height:0;margin:0!important;display:flex!important}.markdown-pane>span{text-transform:uppercase;letter-spacing:.06em;font-family:JetBrains Mono,monospace;font-size:.7rem}#markdown-input,.preview-pane .markdown-body{height:100%;min-height:0;overflow:auto}#markdown-input{resize:none;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.82rem;line-height:1.65}.preview-pane .markdown-body{background:#fbfcfb;border:1px solid #e2e7e4;border-radius:7px;padding:.8rem 1rem;font-size:.88rem;overflow:auto}.editor-message{min-height:1rem;margin:.7rem 0 0}.post-main{max-width:860px;margin:0 auto;padding:2rem 1.5rem 4rem}.post-container{background:#fff;border-radius:12px;padding:2.5rem 3rem;box-shadow:0 1px 4px #0000000f}.post-header{border-bottom:1px solid #eee;margin-bottom:2rem;padding-bottom:1.5rem}.post-header .post-title{margin:.75rem 0;font-size:1.8rem}.markdown-body{color:#333;font-size:1rem;line-height:1.8}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4{color:#1a1a2e;margin-top:1.8em;margin-bottom:.6em;font-weight:600}.markdown-body h1{border-bottom:2px solid #f0f0f0;padding-bottom:.3em;font-size:1.6rem}.markdown-body h2{border-bottom:1px solid #f0f0f0;padding-bottom:.25em;font-size:1.35rem}.markdown-body h3{font-size:1.15rem}.markdown-body p{margin-bottom:1em}.markdown-body img{border-radius:8px;max-width:100%;height:auto;margin:1.2em 0;display:block;box-shadow:0 2px 8px #00000014}.markdown-body code{color:#d63384;background:#f4f4f8;border-radius:4px;padding:.15em .4em;font-family:JetBrains Mono,monospace;font-size:.88em}.markdown-body pre{color:#cdd6f4;background:#1e1e2e;border-radius:8px;margin:1.2em 0;padding:1.2rem 1.5rem;overflow-x:auto}.markdown-body pre code{color:inherit;background:0 0;padding:0;font-size:.85rem;line-height:1.6}.markdown-body blockquote{color:#555;background:#f8faf8;border-left:4px solid #98c593;margin:1.2em 0;padding:.5em 1em}.markdown-body blockquote p:last-child{margin-bottom:0}.markdown-body ul,.markdown-body ol{margin:.8em 0;padding-left:1.5em}.markdown-body li{margin-bottom:.3em}.markdown-body a{color:#4285f4;text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body hr{border:none;border-top:1px solid #eee;margin:2em 0}.markdown-body table{border-collapse:collapse;width:100%;margin:1.2em 0}.markdown-body th,.markdown-body td{text-align:left;border:1px solid #ddd;padding:.5em .8em}.markdown-body th{background:#f5f5f5;font-weight:600}.markdown-body strong{color:#1a1a2e}.empty-state,.loading-spinner{text-align:center;color:#999;padding:4rem 2rem;font-size:1rem}.loading-spinner:before{content:"";border:3px solid #e5e6e7;border-top-color:#98c593;border-radius:50%;width:32px;height:32px;margin:0 auto 1rem;animation:.7s linear infinite spin;display:block}@keyframes spin{to{transform:rotate(360deg)}}.blog-page .reveal-up{opacity:0;transition:opacity .5s,transform .5s;transform:translateY(30px)}.blog-page .reveal-up.active{opacity:1;transform:translateY(0)}.whoami-main{background:-webkit-linear-gradient(#f8f9faf5,#f8f9fae0),-webkit-image-set(url(/images/intro.jpg) 1x type("image/jpeg")) 50%/cover fixed;background:linear-gradient(#f8f9fae0,#f8f9faf5),image-set("/images/intro.jpg" 1x type("image/jpeg")) 50%/cover fixed;min-height:100vh;padding:7rem 1.5rem 4rem}.whoami-container{background:#ffffffeb;border-radius:12px;width:min(860px,100%);margin:0 auto;padding:2.5rem 3rem;box-shadow:0 1px 12px #00000014}.whoami-kicker{color:#98c593;text-transform:uppercase;letter-spacing:.08em;margin-bottom:.75rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.85rem}.whoami-container h1{color:#1a1a2e;margin-bottom:2rem;font-size:clamp(1.8rem,4vw,3rem)}.whoami-section{border-top:1px solid #e8ecef;margin-top:2rem;padding-top:1.5rem}.whoami-section h2{color:#39454b;margin:0 0 1rem;font-size:1.15rem}.whoami-section p{color:#3f4b52;font-size:1rem;line-height:1.8}.cv-list{gap:1.25rem;display:grid}.cv-block{background:#f8faf8b8;border:1px solid #e8ecef;border-radius:8px;padding:1.1rem 1.25rem}.cv-block h3{color:#1a1a2e;margin-bottom:.75rem;font-size:.98rem}.cv-block ul{gap:.75rem;margin:0;padding-left:1.1rem;list-style:outside;display:grid}.cv-block li,.cv-block p{color:#3f4b52;margin:0;font-size:.95rem;line-height:1.7}.cv-block span{color:#657178;margin-top:.25rem;display:block}.cv-block a{color:#2f7f6f;text-decoration:none}.cv-block a:hover{text-decoration:underline}.timeline-block{background:linear-gradient(145deg,#faf9fcf5,#f7faf8e6);padding:1.25rem 1.5rem 1.5rem;overflow:hidden}.timeline-graph{--timeline-axis-x:7.75rem;height:48rem;margin-top:.65rem;position:relative}.timeline-trunk{top:1.2rem;bottom:1.2rem;left:var(--timeline-axis-x);background:linear-gradient(#7356a5,#9b83c2 52%,#7356a5);border-radius:999px;width:3px;position:absolute;transform:translate(-50%);box-shadow:0 0 0 1px #6548930f}.timeline-trunk-node,.timeline-branch-node{z-index:2;border:2px solid #fff;border-radius:50%;width:.86rem;height:.86rem;position:absolute;left:50%;transform:translate(-50%)}.timeline-trunk-node{background:#7559a8;box-shadow:0 0 0 2px #7559a847}.timeline-trunk-node-start{top:-.25rem}.timeline-trunk-node-end{bottom:-.25rem}.timeline-axis-date{width:calc(var(--timeline-axis-x) - .9rem);color:#626d73;text-align:right;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.73rem;line-height:1.45;position:absolute;left:0}.timeline-axis-date-start{top:.78rem}.timeline-axis-date-end{bottom:.45rem}.timeline-axis-date span{color:#7559a8;text-transform:uppercase;letter-spacing:.06em;font-size:.65rem;display:block}.timeline-main-event{top:.6rem;left:calc(var(--timeline-axis-x) + 1.65rem);position:absolute;right:0}.timeline-main-event:before{content:"";background:#b2a2cd;width:1.65rem;height:2px;position:absolute;top:1.7rem;left:-1.65rem}.timeline-branch{--branch-color:#4e9b86;left:var(--timeline-axis-x);position:absolute;right:0}.timeline-branch-2025{height:6.7%;top:46.7%}.timeline-branch-2026{--branch-color:#c9825f;height:6.7%;top:20%}.timeline-branch-2024{--branch-color:#4c87ad;height:5.4%;top:74%}.timeline-branch-2024 .timeline-branch-path{min-height:0}.timeline-branch-path{border-top:2px solid var(--branch-color);border-right:2px solid var(--branch-color);border-bottom:2px solid var(--branch-color);border-radius:0 2rem 2rem 0;width:4.25rem;height:100%;min-height:2.25rem;position:absolute;top:0;left:0}.timeline-branch-node{background:var(--branch-color);box-shadow:0 0 0 2px color-mix(in srgb, var(--branch-color) 28%, transparent);left:0}.timeline-branch-node-start{top:-.43rem}.timeline-branch-node-end{bottom:-.43rem}.timeline-point-date{color:#626d73;white-space:nowrap;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.69rem;line-height:1;position:absolute;right:calc(100% + .75rem)}.timeline-point-date-start{top:-.35rem}.timeline-point-date-end{bottom:-.35rem}.timeline-card{background:#ffffffe0;border:1px solid #7559a821;border-radius:10px;padding:.9rem 1.05rem;position:relative;box-shadow:0 8px 24px #39454b0e}.timeline-main-event .timeline-card{background:linear-gradient(100deg,#7559a816,#ffffffe6 58%);border-left:3px solid #7559a8}.timeline-branch-card{border-color:color-mix(in srgb, var(--branch-color) 22%, transparent);border-left:3px solid var(--branch-color);background:linear-gradient(100deg, color-mix(in srgb, var(--branch-color) 9%, white), #fffffff0 62%);position:absolute;top:50%;left:5.2rem;right:0;transform:translateY(-50%)}.timeline-branch-card:before{content:"";background:var(--branch-color);width:.95rem;height:2px;position:absolute;top:50%;left:-1.05rem;transform:translateY(-50%)}.timeline-type{color:#79a976;text-transform:uppercase;letter-spacing:.07em;margin-bottom:.35rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.64rem;font-weight:500;display:block}.timeline-card h4{color:#1a1a2e;margin:0 0 .15rem;font-size:.98rem}.timeline-card p{color:#59666d;margin:0;font-size:.86rem;line-height:1.55}.whoami-actions{margin-top:2.25rem}.cv-download{color:#fff;background:#39454b;border-radius:6px;justify-content:center;align-items:center;min-height:2.75rem;padding:0 1.15rem;font-weight:600;text-decoration:none;transition:background .2s,transform .2s;display:inline-flex}.cv-download:hover{color:#fff;background:#98c593;transform:translateY(-1px)}@media (width<=768px){.blog-login-link{width:100%;height:auto;min-height:2.75rem;padding:0 .75rem}.blog-container{flex-direction:column;padding:1rem 1rem 3rem}.blog-sidebar{flex-flow:wrap;flex:none;gap:1rem;width:100%}.sidebar-card{flex:200px}.post-card{padding:1.2rem}.post-title{font-size:1.1rem}.editor-dialog{border-radius:0;width:100vw;height:100vh;max-height:100vh}.editor-dialog form{padding:1rem;overflow-y:auto}.editor-fields,.markdown-editor-grid{grid-template-columns:1fr}.markdown-editor-grid{flex:none;min-height:700px}.markdown-pane{min-height:330px}.editor-heading-actions .admin-text-btn{display:none}.whoami-main{padding:5rem 1rem 3rem}.whoami-container{padding:1.5rem}.cv-block{padding:1rem}.timeline-graph{--timeline-axis-x:5.7rem;height:52rem}.timeline-axis-date{font-size:.66rem}.timeline-axis-date span{font-size:.58rem}.timeline-main-event{left:calc(var(--timeline-axis-x) + 1rem)}.timeline-main-event:before{width:1rem;left:-1rem}.timeline-branch-path{width:2rem}.timeline-branch-card{padding:.8rem .85rem;left:2.65rem}.timeline-branch-card:before{width:.65rem;left:-.75rem}.timeline-point-date{font-size:.62rem;right:calc(100% + .55rem)}.timeline-card h4{font-size:.92rem}.timeline-card p{font-size:.82rem}}.blog-page .login-dialog form{padding:2.2rem}.blog-page .editor-dialog form{padding:0}.blog-page .preview-pane .markdown-body{background:#fff;border:0;border-radius:0;padding:1.5rem 1.75rem 3rem}@media (width<=768px){.blog-page .editor-dialog{border-radius:0}}.editor-page{background:radial-gradient(circle at 10% 15%,#8fb88c29,#0000 26rem),linear-gradient(#f8f6f0,#eeece4);min-height:100vh}.editor-topbar{z-index:100;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#fffdf8eb;border-bottom:1px solid #315d4d1f;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;min-height:4.5rem;padding:.75rem clamp(1rem,3vw,2.5rem);display:grid;position:sticky;top:0;box-shadow:0 10px 35px #26372e0f}.editor-brand{width:max-content;color:var(--ink);align-items:center;gap:.7rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.9rem;font-weight:600;display:inline-flex}.editor-brand img{object-fit:cover;border-radius:10px;width:2.25rem;height:2.25rem}.editor-document-state{letter-spacing:.04em;color:#718078;align-items:center;gap:.5rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.65rem;display:inline-flex}.editor-state-dot{background:#d39a62;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 4px #d39a6221}.editor-document-state[data-state=saved] .editor-state-dot{background:#6fa86b;box-shadow:0 0 0 4px #6fa86b21}.editor-document-state[data-state=saving] .editor-state-dot{background:#708fc4;animation:1s ease-in-out infinite editor-pulse}.editor-document-state[data-state=error] .editor-state-dot{background:#c36255}@keyframes editor-pulse{50%{opacity:.35}}.editor-topbar-actions{justify-content:flex-end;align-items:center;gap:1rem;display:flex}.editor-account{color:#78857e;border-right:1px solid #315d4d1f;padding-right:1rem;font-size:.75rem}.editor-page-main{width:min(1420px,100%);margin:0 auto;padding:clamp(1rem,3vw,2.5rem)}.editor-workspace{background:var(--paper);border:1px solid #315d4d1f;border-radius:24px;overflow:hidden;box-shadow:0 28px 80px #24362c1f}.editor-document-header{background:radial-gradient(circle at 92% 0,#8fb88c29,#0000 20rem),linear-gradient(90deg,#f7f5ed,#fffdf8);border-bottom:1px solid #315d4d1a;justify-content:space-between;align-items:flex-end;gap:2rem;padding:clamp(1.5rem,4vw,2.5rem);display:flex}.editor-document-header h1{letter-spacing:-.045em;color:var(--ink);margin:0;font-size:clamp(1.6rem,4vw,2.7rem);font-weight:550}.editor-view-link{color:var(--sage-dark);flex:none;font-size:.78rem;font-weight:600}.editor-metadata{grid-template-columns:minmax(0,2fr) minmax(160px,.65fr);gap:1rem;padding:1.5rem clamp(1.25rem,3vw,2rem) 0;display:grid}.editor-metadata label{letter-spacing:.025em;color:#526159;gap:.45rem;font-size:.72rem;font-weight:650;display:grid}.editor-metadata label>span{justify-content:space-between;display:flex}.editor-metadata label small{color:#96a19a;font-weight:400}.editor-metadata input,.editor-metadata select,.editor-metadata textarea{color:#27332d;width:100%;font:inherit;background:#fffefa;border:1px solid #315d4d29;border-radius:11px;margin:0;font-size:.9rem}.editor-metadata input,.editor-metadata select{height:2.8rem;padding:0 .85rem}.editor-metadata textarea{resize:vertical;padding:.75rem .85rem}.editor-metadata input:focus,.editor-metadata select:focus,.editor-metadata textarea:focus{border-color:#719d73;outline:0;box-shadow:0 0 0 4px #8fb88c29}.editor-page-media{margin:0;padding:1rem clamp(1.25rem,3vw,2rem) 1.25rem}.editor-page-grid{border-top:1px solid #315d4d1f;border-bottom:1px solid #315d4d1f;gap:0;height:min(64vh,720px);min-height:500px}.editor-page-grid .markdown-pane{background:#fffefa;gap:0}.editor-page-grid .markdown-pane+.markdown-pane{border-left:1px solid #315d4d1f}.editor-page-grid #markdown-input{border:0;border-radius:0;padding:1.4rem 1.5rem}.editor-page-grid .preview-pane .markdown-body{background:#fff;border:0;border-radius:0;padding:1.5rem 1.8rem 4rem}.editor-page-footer{color:#89958e;background:#f7f5ed;justify-content:space-between;align-items:center;gap:1rem;min-height:3.25rem;padding:.55rem 1.5rem;font-size:.7rem;display:flex}.editor-page-footer .editor-message{background:0 0;border:0;margin:0;padding:0}.editor-page-footer kbd{background:#fff;border:1px solid #315d4d26;border-radius:4px;padding:.12rem .34rem;font-family:JetBrains Mono,ui-monospace,monospace;box-shadow:0 1px #315d4d1f}@media (width<=768px){.editor-topbar{grid-template-columns:auto 1fr;min-height:4rem}.editor-brand span,.editor-account,.editor-document-state{display:none}.editor-topbar-actions{gap:.7rem}.editor-page-main{padding:0}.editor-workspace{box-shadow:none;border:0;border-radius:0}.editor-document-header{flex-direction:column;align-items:flex-start;padding:1.4rem 1rem}.editor-metadata{grid-template-columns:1fr;padding:1.25rem 1rem 0}.editor-page-media{flex-direction:column;align-items:flex-start;padding:1rem}.editor-page-grid{grid-template-columns:1fr;height:auto;min-height:0}.editor-page-grid .markdown-pane{min-height:430px}.editor-page-grid .markdown-pane+.markdown-pane{border-top:1px solid #315d4d1f;border-left:0}.editor-page-footer>span{display:none}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}body.editor-page{background:#f6f8fa;flex-direction:column;height:100vh;display:flex;overflow:hidden}.editor-page .editor-topbar{background:#fffffff5;flex:none;min-height:4rem;padding-top:.55rem;padding-bottom:.55rem;position:relative}.editor-page .editor-page-main{flex:auto;width:100%;min-height:0;margin:0;padding:0}.editor-page .editor-workspace{width:100%;height:100%;box-shadow:none;background:#fff;border:0;border-radius:0;flex-direction:column;display:flex;overflow:hidden}.editor-page .editor-document-header{background:#fff;flex:none;align-items:center;min-height:4.4rem;padding:.8rem 2rem}.editor-page .editor-document-header .dialog-kicker{display:none}.editor-page .editor-document-header h1{letter-spacing:-.035em;font-size:clamp(1.2rem,2vw,1.7rem)}.editor-page .editor-metadata{background:#f6f8fa;border-bottom:1px solid #d0d7de;flex:none;grid-template-columns:minmax(240px,1.5fr) minmax(130px,.45fr) minmax(260px,1.4fr) minmax(220px,.85fr);gap:.85rem;padding:.85rem 2rem 1rem}.editor-page .editor-metadata .editor-wide-field{grid-column:auto}.editor-page .editor-metadata label{gap:.3rem;margin:0;font-size:.68rem}.editor-page .editor-metadata input,.editor-page .editor-metadata select,.editor-page .editor-metadata textarea{background:#fff;border-color:#d0d7de;border-radius:6px;height:2.45rem;padding:0 .7rem;font-size:.82rem}.editor-page .editor-metadata textarea{resize:none;padding-top:.55rem}.editor-composer{background:#fff;flex-direction:column;flex:auto;min-height:0;display:flex}.editor-composer-toolbar{background:#f6f8fa;border-bottom:1px solid #d0d7de;flex:none;justify-content:space-between;align-items:stretch;min-height:3.2rem;padding:0 1.1rem;display:flex}.editor-tabs{align-items:flex-end;gap:.15rem;display:flex}.editor-tabs button{color:#57606a;height:100%;font:inherit;cursor:pointer;background:0 0;border:0;border-left:1px solid #0000;border-right:1px solid #0000;align-items:center;gap:.45rem;padding:0 1.15rem;font-size:.82rem;font-weight:600;display:inline-flex;position:relative}.editor-tabs button:after{content:"";background:0 0;border-radius:99px 99px 0 0;height:2px;position:absolute;bottom:-1px;left:.7rem;right:.7rem}.editor-tabs button:hover{color:#24292f}.editor-tabs button[aria-selected=true]{color:#24292f;background:#fff}.editor-tabs button[aria-selected=true]:after{background:#8fb88c}.editor-toolbar-media{color:#6e7781;align-items:center;gap:.85rem;font-size:.68rem;display:flex}.editor-toolbar-media .media-upload-button{color:#24292f;background:#fff;border-color:#d0d7de;border-radius:6px;min-width:auto;min-height:2rem;font-size:.72rem;font-weight:600}.editor-tab-panels{flex:auto;min-height:0;display:flex;position:relative;overflow:hidden}.editor-tab-panel{background:#fff;width:100%;height:100%;min-height:0;margin:0}.editor-tab-panel[hidden]{display:none!important}.editor-tab-panel.write-panel{display:block}.editor-tab-panel #markdown-input{resize:none;width:100%;height:100%;box-shadow:none;color:#24292f;background:linear-gradient(90deg,#0000 47px,#8fb88c24 48px,#0000 49px),#fff;border:0;border-radius:0;outline:0;margin:0;padding:1.5rem clamp(1.25rem,4vw,4rem);font-family:JetBrains Mono,ui-monospace,monospace;font-size:.9rem;line-height:1.8;display:block}.editor-tab-panel #markdown-input:focus{box-shadow:inset 3px 0 #8fb88c}.editor-tab-panel.preview-panel{background:#fff;overflow-y:auto}.editor-tab-panel.preview-panel .markdown-body{background:#fff;border:0;width:min(980px,100% - 3rem);min-height:100%;margin:0 auto;padding:2.5rem 1rem 6rem}.editor-page .editor-page-footer{background:#f6f8fa;border-top:1px solid #d0d7de;flex:none;min-height:2.6rem;padding:.4rem 1.25rem}@media (width<=900px){body.editor-page{height:auto;min-height:100vh;overflow:auto}.editor-page .editor-page-main,.editor-page .editor-workspace{height:auto}.editor-page .editor-metadata{grid-template-columns:1fr 1fr;padding:.85rem 1rem 1rem}.editor-page .editor-metadata .editor-wide-field{grid-column:1/-1}.editor-composer{min-height:65vh}.editor-tab-panels{min-height:60vh}.editor-toolbar-media>span{display:none}}@media (width<=560px){.editor-page .editor-document-header{min-height:3.7rem;padding:.7rem 1rem}.editor-page .editor-metadata{grid-template-columns:1fr}.editor-page .editor-metadata .editor-wide-field{grid-column:auto}.editor-composer-toolbar{padding:0 .55rem}.editor-tabs button{padding:0 .8rem}.editor-toolbar-media .media-upload-button{font-size:0}.editor-toolbar-media .media-upload-button>span{font-size:1rem}.editor-tab-panel #markdown-input{background:#fff;padding:1.2rem 1rem}}body.editor-page{height:auto;min-height:100vh;overflow:auto}.editor-page .editor-page-main{flex:1 0 auto;min-height:calc(100vh - 4rem);display:flex}.editor-page .editor-workspace{height:auto;min-height:calc(100vh - 4rem);overflow:visible}.editor-page .editor-composer{height:auto;min-height:420px}.editor-page .editor-composer.is-height-resized{flex:0 0 var(--editor-composer-height);height:var(--editor-composer-height)}.editor-split-panes{background:#fff;border-top:1px solid #d0d7de;border-bottom:1px solid #d0d7de;flex:auto;min-width:0;min-height:0;display:flex;overflow:hidden}.editor-split-pane{background:#fff;flex-direction:column;min-width:0;min-height:0;display:flex}.editor-write-pane{flex:0 0 var(--write-pane-width,50%)}.editor-preview-pane{flex:1 1 0}.editor-pane-toolbar{background:#f6f8fa;border-bottom:1px solid #d0d7de;flex:0 0 3.2rem;justify-content:space-between;align-items:center;gap:1rem;min-width:0;padding:0 1rem;display:flex}.editor-pane-toolbar h2{color:#24292f;white-space:nowrap;align-items:center;gap:.45rem;margin:0;font-size:.82rem;font-weight:650;display:flex}.editor-pane-toolbar .editor-toolbar-media{min-width:0}.editor-pane-toolbar .editor-toolbar-media>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.editor-live-label{color:#6e7781;white-space:nowrap;align-items:center;gap:.4rem;font-size:.68rem;display:inline-flex}.editor-live-label>span{background:#4f9d69;border-radius:50%;width:.42rem;height:.42rem;box-shadow:0 0 0 3px #4f9d691f}.editor-pane-content{flex:auto;min-width:0;min-height:0;margin:0;display:block;overflow:hidden}.editor-pane-content #markdown-input{resize:none;width:100%;height:100%;box-shadow:none;color:#24292f;background:#fff;border:0;border-radius:0;outline:0;margin:0;padding:1.5rem clamp(1.1rem,2.5vw,2.5rem);font-family:JetBrains Mono,ui-monospace,monospace;font-size:.9rem;line-height:1.8;display:block}.editor-pane-content #markdown-input:focus{box-shadow:inset 3px 0 #8fb88c}.editor-pane-content.preview-panel{over-y:auto;background:#fff}.editor-pane-content.preview-panel .markdown-body{background:#fff;border:0;width:min(760px,100% - 2rem);min-height:100%;margin:0 auto;padding:1.5rem .75rem 5rem}.editor-column-resizer{z-index:2;cursor:col-resize;touch-action:none;background:#f6f8fa;border-left:1px solid #d0d7de;border-right:1px solid #d0d7de;flex:0 0 9px;position:relative}.editor-column-resizer:after{content:"";background:#afb8c1;border-radius:99px;width:3px;height:44px;transition:height .16s,background .16s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.editor-column-resizer:hover:after,.editor-column-resizer:focus-visible:after{background:#4f8f72;height:68px}.editor-height-resizer{cursor:row-resize;touch-action:none;background:#f6f8fa;flex:0 0 11px;justify-content:center;align-items:center;display:flex;position:relative}.editor-height-resizer span{background:#afb8c1;border-radius:99px;width:52px;height:3px;transition:width .16s,background .16s}.editor-height-resizer:hover span,.editor-height-resizer:focus-visible span{background:#4f8f72;width:76px}.editor-column-resizer:focus-visible,.editor-height-resizer:focus-visible{outline-offset:-2px;outline:2px solid #4f8f72}body.is-resizing-editor{-webkit-user-select:none;user-select:none}body.is-resizing-editor *{cursor:inherit!important}@media (width<=1100px){.editor-pane-toolbar .editor-toolbar-media>span{display:none}}@media (width<=700px){.editor-page .editor-composer,.editor-page .editor-composer.is-height-resized{flex:none;height:auto;min-height:0}.editor-split-panes{flex-direction:column;overflow:visible}.editor-write-pane,.editor-preview-pane{flex:none;height:58vh;min-height:420px}.editor-column-resizer,.editor-height-resizer{display:none}.editor-preview-pane{border-top:1px solid #d0d7de}.editor-pane-toolbar{flex-basis:3rem}}.blog-page,.post-page{--notebook-paper:#fff;--notebook-ink:#202421;--notebook-muted:#69716b;--notebook-accent:#254f43;--notebook-line:#d8d8d0;background:var(--notebook-paper);color:var(--notebook-ink)}.blog-page #header.notebook-header,.post-page #header.notebook-header{border-bottom:1px solid var(--notebook-line);height:4rem;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:#fffffff7;padding-inline:max(1.25rem,50vw - 520px)}.notebook-header h1.logo{padding:0}.notebook-header h1.logo a{color:var(--notebook-ink);gap:.65rem}.notebook-header h1.logo img{object-fit:contain;filter:grayscale(.15);width:2rem;height:2rem}.notebook-header h1.logo span{letter-spacing:0;align-items:baseline;gap:.42rem;font-family:Georgia,Times New Roman,serif;font-size:1rem;font-weight:600;display:flex}.notebook-header h1.logo small{letter-spacing:.02em;color:var(--notebook-muted);font-family:JetBrains Mono,ui-monospace,monospace;font-size:.6rem;font-weight:400}.notebook-header nav{padding:0}.notebook-header nav ul{gap:1.35rem}.notebook-header nav ul li{margin:0;font-size:.82rem}.notebook-header nav ul li a,.notebook-header .blog-login-link{height:auto;font:inherit;background:0 0;border:0;padding:.25rem 0;font-weight:400;text-decoration:none;position:relative;color:#4f5752!important}.notebook-header nav ul li a:after{content:"";background:var(--notebook-accent);transform-origin:100%;height:1px;transition:transform .14s;position:absolute;bottom:-.2rem;left:0;right:0;transform:scaleX(0)}.notebook-header nav ul li a:hover,.notebook-header nav ul li a[aria-current=page],.notebook-header .blog-login-link:hover{color:var(--notebook-accent)!important}.notebook-header nav ul li a:hover:after,.notebook-header nav ul li a[aria-current=page]:after{transform-origin:0;transform:scaleX(1)}.blog-page .blog-main{background:var(--notebook-paper);min-height:100vh;padding:4rem 0 0}.blog-page .blog-hero{border:0;border-bottom:1px solid var(--notebook-line);width:min(1040px,100% - 3rem);min-height:0;box-shadow:none;color:var(--notebook-ink);background:0 0;border-radius:0;margin:0 auto;padding:3.6rem 0 2.3rem;display:block;overflow:visible}.blog-page .blog-hero:before,.blog-page .blog-hero:after{display:none}.blog-page .blog-hero-copy,.blog-page .blog-hero-index{position:static}.blog-page .blog-hero-kicker{letter-spacing:.01em;text-transform:none;color:var(--notebook-accent);margin:0 0 2.1rem;font-family:Snell Roundhand,Segoe Script,Brush Script MT,cursive;font-size:clamp(1.25rem,2.4vw,1.75rem);font-weight:400;line-height:1.35;display:block}.blog-page .blog-hero-kicker:before{display:none}.blog-page .blog-quote-source{letter-spacing:.015em;color:var(--notebook-muted);margin:0 0 .75rem;font-family:Georgia,Times New Roman,serif;font-size:.9rem;font-style:italic}.blog-page .blog-hero h2{letter-spacing:-.018em;max-width:860px;color:var(--notebook-ink);margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.8rem,3.7vw,2.85rem);font-weight:400;line-height:1.3}.blog-page .blog-hero-intro{color:#555d58;max-width:670px;margin:1.15rem 0 0;font-size:.98rem;line-height:1.7}.blog-page .blog-hero-index{color:var(--notebook-muted);border:0;align-items:center;gap:.65rem;margin-top:1.4rem;padding:0;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.63rem;display:flex}.blog-page .blog-hero-index span+span:before{content:"·";color:#a2a69f;margin-right:.65rem}.blog-page .blog-hero-index strong{font:inherit;color:inherit;margin:0;display:inline}.blog-page .blog-container{grid-template-columns:190px minmax(0,1fr);gap:3.5rem;width:min(1040px,100% - 3rem);max-width:none;margin:0 auto;padding:2.6rem 0 5rem;display:grid}.blog-page .blog-sidebar{border-right:1px solid var(--notebook-line);min-width:0;padding-right:1.5rem;display:block;position:static}.blog-page .sidebar-card{border:0;border-bottom:1px solid var(--notebook-line);box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border-radius:0;margin:0 0 1.8rem;padding:0 0 1.6rem}.blog-page .sidebar-card h3{letter-spacing:.09em;text-transform:uppercase;color:var(--notebook-muted);margin:0 0 .8rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.62rem;font-weight:500;display:block}.blog-page .sidebar-card h3:before{display:none}.blog-page .category-list li{margin:0}.blog-page .category-list li a{color:#555d58;border-radius:0;justify-content:space-between;padding:.32rem 0;font-size:.84rem;text-decoration:none;transition:color .12s;display:flex}.blog-page .category-list li a:after{display:none}.blog-page .category-list li a:hover,.blog-page .category-list li a.active{color:var(--notebook-accent);background:0 0;font-weight:600}.blog-page .category-list li a.active:before{content:"—";margin-right:.4rem}.blog-page .category-list a span{color:#989d98;margin-left:auto;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.66rem;font-weight:400}.blog-page .tag-cloud,.blog-page .post-tags{flex-wrap:wrap;gap:.25rem 0;display:flex}.blog-page .tag-cloud .tag,.blog-page .post-tags .tag{color:#626a65;background:0 0;border:0;border-radius:0;padding:0;font-size:.72rem}.blog-page .tag-cloud .tag:not(:last-child):after,.blog-page .post-tags .tag:not(:last-child):after{content:"·";color:#a4a8a3;margin:0 .42rem}.garden-note{color:#7b827d;margin:0;font-family:Georgia,Times New Roman,serif;font-size:.75rem;font-style:italic;line-height:1.55}.blog-page .blog-admin-user{margin:0 0 .65rem;font-size:.72rem}.blog-page .blog-admin-card .admin-primary-btn{background:var(--notebook-accent);border-radius:2px;width:auto;min-height:2rem;padding:0 .65rem;font-size:.72rem}.blog-page .blog-admin-card .admin-text-btn{margin:0 0 0 .6rem;font-size:.72rem}.blog-page .blog-posts{min-width:0;display:block}.blog-page .post-card{border:0;border-bottom:1px solid var(--notebook-line);box-shadow:none;cursor:default;background:0 0;border-radius:0;margin:0;padding:0 0 2.25rem;transition:none;position:static;overflow:visible}.blog-page .post-card+.post-card{padding-top:2.15rem}.blog-page .post-card:before,.blog-page .post-sequence{display:none}.blog-page .post-card:hover{box-shadow:none;background:0 0;transform:none}.blog-page .post-card .post-meta{letter-spacing:.01em;color:#777e79;align-items:center;gap:.48rem;margin:0 0 .65rem;padding:0;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.64rem;font-style:normal;display:flex}.blog-page .post-category{box-shadow:none;color:var(--notebook-accent);font-size:inherit;letter-spacing:0;text-transform:none;border-radius:0;padding:0;font-weight:500;background:0 0!important}.blog-page .post-readtime{margin:0;font-style:normal}.blog-page .post-card .post-title{letter-spacing:-.015em;max-width:760px;margin:0 0 .58rem;padding:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.38rem,2.4vw,1.8rem);font-weight:400;line-height:1.28}.blog-page .post-card .post-title a{color:var(--notebook-ink);text-underline-offset:.16em;text-decoration:none;text-decoration-thickness:1px;transition:color .12s}.blog-page .post-card .post-title a:hover{color:var(--notebook-accent);text-decoration:underline}.blog-page .post-excerpt{color:#525954;max-width:720px;margin:0 0 .9rem;font-size:.93rem;line-height:1.7}.blog-page .post-footer{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.post-tags-label{color:#858b86;margin-right:.42rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.64rem}.blog-page .post-card-actions{flex:none;gap:.7rem}.blog-page .read-more-btn,.blog-page .edit-post-btn{min-height:0;color:var(--notebook-accent);background:0 0;border:0;border-radius:0;padding:0;font-size:.74rem;font-weight:600;text-decoration:none}.blog-page .read-more-btn:hover,.blog-page .edit-post-btn:hover{color:#102f27;background:0 0;text-decoration:underline}.blog-page .loading-spinner,.blog-page .empty-state{text-align:left;color:var(--notebook-muted);padding:2rem 0;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.72rem}.blog-page .loading-spinner:before{display:none}.blog-page .blog-dialog{background:#fbfaf6;border:1px solid #bfc2bc;border-radius:2px;box-shadow:0 18px 48px #1a201c2e}.blog-page .blog-dialog::backdrop{-webkit-backdrop-filter:none;backdrop-filter:none;background:#1c1f1d7a}.blog-page .login-dialog:before{display:none}.blog-page .blog-dialog input{background:#fff;border-radius:2px}.blog-page #footer{border-top:1px solid var(--notebook-line);background:var(--notebook-paper);color:var(--notebook-muted);padding:1.3rem 1.5rem}.post-page .post-main{background:var(--notebook-paper);min-height:100vh;padding:4rem 1.5rem 5rem;overflow:visible}.post-page .post-ambient{display:none}.post-page .post-container{width:min(760px,100%);box-shadow:none;background:0 0;border:0;border-radius:0;margin:0 auto;padding:4rem 0 0}.post-page .post-header{border-bottom:1px solid var(--notebook-line);margin-bottom:3rem;padding-bottom:2rem}.post-page .post-header:after{display:none}.post-page .article-kicker{letter-spacing:.08em;color:var(--notebook-accent);margin:0 0 1rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.62rem;font-weight:500}.post-page .post-header .post-meta{color:var(--notebook-muted);gap:.5rem;margin:0 0 .8rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.64rem;font-style:normal;display:flex}.post-page .post-header .post-title{letter-spacing:-.025em;max-width:none;color:var(--notebook-ink);margin:0 0 1.15rem;font-family:Georgia,Times New Roman,serif;font-size:clamp(2.15rem,6vw,3.65rem);font-weight:400;line-height:1.12}.post-page .post-tags{color:var(--notebook-muted);flex-wrap:wrap;gap:0;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.66rem;display:flex}.post-page .post-tags .tag{color:var(--notebook-accent);font-size:inherit;background:0 0;border:0;border-radius:0;padding:0}.post-page .post-tags .tag:not(:last-child):after{content:"·";color:#9ca19c;margin:0 .42rem}.post-page .markdown-body{color:#303632;font-family:"Source Sans 3",system-ui,sans-serif;font-size:clamp(1rem,1.3vw,1.08rem);line-height:1.82}.post-page .markdown-body>p:first-child:first-letter{float:none;font:inherit;color:inherit;margin:0}.post-page .markdown-body h1,.post-page .markdown-body h2,.post-page .markdown-body h3,.post-page .markdown-body h4{letter-spacing:-.012em;color:#202722;font-family:Georgia,Times New Roman,serif;font-weight:600;position:static}.post-page .markdown-body h2{border-bottom:1px solid var(--notebook-line);margin-top:2.4em;padding-bottom:.38rem;font-size:1.55rem}.post-page .markdown-body h2:before{display:none}.post-page .markdown-body a{color:#245b4b;text-underline-offset:.15em;text-decoration-thickness:1px}.post-page .markdown-body blockquote{box-shadow:none;color:#555e58;background:0 0;border:0;border-left:3px solid #98a69e;border-radius:0;margin:1.6em 0;padding:.25rem 0 .25rem 1.2rem}.post-page .markdown-body pre{box-shadow:none;background:#222824;border:1px solid #303733;border-radius:2px;margin:1.6em 0;padding:1.2rem 1.35rem}.post-page .markdown-body :not(pre)>code{color:#303a34;background:#efeee8;border:1px solid #dedfd9;border-radius:2px;padding:.08em .3em}.post-page .markdown-body img{border:1px solid var(--notebook-line);box-shadow:none;border-radius:0;margin:2rem auto}.post-page .markdown-body table{border:1px solid var(--notebook-line);border-radius:0}.post-page .markdown-body th{background:#eeede7}.post-page .reading-progress{background:0 0;height:2px}.post-page .reading-progress span{background:var(--notebook-accent)}.post-page .post-afterword{border-top:1px solid var(--notebook-line);margin-top:4rem;padding-top:1rem}.post-page .post-afterword a,.post-page .post-afterword button{color:var(--notebook-accent);background:0 0;border:0;border-radius:0;padding:0;font-size:.76rem}.post-page .post-afterword a:hover,.post-page .post-afterword button:hover{text-decoration:underline}@media (width<=736px){.blog-page #header.notebook-header,.post-page #header.notebook-header{height:3.5rem;padding:0 1rem}.notebook-header h1.logo img{width:1.75rem;height:1.75rem}.notebook-header h1.logo span{font-size:.9rem}.notebook-header h1.logo small{display:none}.notebook-header nav{border-bottom:1px solid var(--notebook-line);background:var(--notebook-paper);box-shadow:none}.notebook-header nav ul{gap:0;padding:.35rem 1rem .8rem}.notebook-header nav ul li a,.notebook-header .blog-login-link{border-bottom:1px solid #e5e4de;border-radius:0;width:100%;min-height:2.5rem;padding:0 .25rem}.notebook-header nav ul li a:after{display:none}.blog-page .blog-main{padding-top:3.5rem}.blog-page .blog-hero{border-radius:0;width:calc(100% - 2rem);margin:0 auto;padding:2.4rem 0 1.8rem}.blog-page .blog-hero h2{font-size:clamp(1.85rem,9vw,2.5rem)}.blog-page .blog-hero-index{border:0;flex-direction:column;align-items:flex-start;gap:.2rem;margin-top:1.1rem}.blog-page .blog-hero-index span+span:before{display:none}.blog-page .blog-container{width:calc(100% - 2rem);padding:1.8rem 0 3.5rem;display:block}.blog-page .blog-sidebar{border-right:0;border-bottom:1px solid var(--notebook-line);grid-template-columns:1fr 1fr;gap:1.5rem;width:100%;margin-bottom:2.2rem;padding:0 0 1.2rem;display:grid}.blog-page .sidebar-card{border:0;margin:0;padding:0}.blog-page .blog-admin-card,.blog-page .garden-note{grid-column:1/-1}.blog-page .post-card{padding-bottom:1.8rem}.blog-page .post-card+.post-card{padding-top:1.7rem}.blog-page .post-footer{flex-direction:column;align-items:flex-start;gap:.75rem}.post-page .post-main{padding:3.5rem 1rem 3rem}.post-page .post-container{padding-top:2.6rem}.post-page .post-header{margin-bottom:2.2rem;padding-bottom:1.6rem}.post-page .post-header .post-title{font-size:clamp(2rem,10vw,2.8rem)}.post-page .post-header .post-meta{flex-wrap:wrap}}@media (width<=430px){.blog-page .blog-sidebar{display:block}.blog-page .sidebar-card{margin-bottom:1.5rem}}@media (prefers-reduced-motion:reduce){.notebook-header nav ul li a:after,.blog-page .post-card .post-title a{transition:none}}
