@import "https://cdn.jsdelivr.net/npm/lxgw-wenkai-webfont@1.7.0/style.css";:root{color-scheme:light;--page:#fff9e8;--paper:#fff9e8;--ink:#2b2721;--muted:#756d61;--line:#473b2a29;--red:#9d3f37;--green:#48684f;--blue:#405f82;--gold:#b37a28;--shadow:0 18px 45px #513c2321;--radius:8px}:root[data-theme=paper]{color-scheme:light;--page:#fff9e8;--paper:#fff9e8;--ink:#2b2721;--muted:#756d61;--line:#473b2a29;--red:#9d3f37;--green:#48684f;--blue:#405f82;--gold:#b37a28;--shadow:0 18px 45px #513c2321}:root[data-theme=white]{color-scheme:light;--page:#fff;--paper:#fff;--ink:#2b2721;--muted:#756d61;--line:#473b2a29;--red:#9d3f37;--green:#48684f;--blue:#405f82;--gold:#b37a28;--shadow:0 18px 45px #513c231a}:root[data-theme=pine]{color-scheme:light;--page:#dfe9d8;--paper:#f0f3e8;--ink:#1f3829;--muted:#546756;--line:#b5c8b4;--red:#2d6546;--green:#446c4f;--blue:#3f6766;--gold:#8b7b36;--shadow:0 14px 34px #2d654617}:root[data-theme=dark]{color-scheme:dark;--page:#161c25;--paper:#1e2732;--ink:#e3ebf8;--muted:#9eabc1;--line:#2c3544;--red:#adc6f5;--green:#9fbfaa;--blue:#adc6f5;--gold:#d6c18a;--shadow:none}*{box-sizing:border-box}html{background:var(--page);color:var(--ink);scroll-behavior:smooth;font-family:霞鹜飞楷,LXGW WenKai,LXGW WenKai Screen,STKaiti,KaiTi,serif}body{letter-spacing:0;min-width:320px;margin:0;line-height:1.75}a{color:inherit;text-decoration:none}a:hover{color:var(--red)}.site-shell{flex-direction:column;width:min(1120px,100% - 32px);min-height:100vh;margin:0 auto;display:flex}.site-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:24px;min-height:88px;padding:20px 0 18px;display:flex;position:relative}.brand{align-items:center;gap:12px;min-width:190px;display:inline-flex}.brand-mark{border:1px solid var(--ink);border-radius:var(--radius);background:var(--paper);object-fit:cover;width:42px;height:42px;display:block;box-shadow:3px 3px #2b272117}.brand-text{gap:1px;display:grid}.brand-title{font-size:clamp(1.25rem,4vw,1.8rem);font-weight:700;line-height:1.2}.brand-subtitle{color:var(--muted);font-size:.86rem}.nav{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.nav-link{border-radius:var(--radius);white-space:nowrap;width:38px;height:38px;min-height:38px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:9px;line-height:1.2;display:inline-flex}.nav-link:hover,.nav-link.is-active{color:var(--ink);border-color:var(--line);background:var(--paper)}.nav-link svg{fill:currentColor;width:18px;height:18px;display:block}.nav-fa-icon{justify-content:center;align-items:center;width:23px;height:23px;font-size:23px;line-height:1;display:inline-flex}.nav-button{font:inherit}.nav-travel,.nav-theme{display:inline-flex;position:relative}.nav-travel:after,.nav-theme:after{content:"";height:14px;position:absolute;bottom:-12px;left:0;right:0}.travel-toggle svg,.travel-toggle .nav-fa-icon{transform:rotate(-18deg)}.travel-menu,.theme-menu{z-index:30;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);min-width:174px;box-shadow:var(--shadow);opacity:0;visibility:hidden;pointer-events:none;gap:2px;padding:8px;transition:opacity .16s,transform .16s,visibility .16s;display:grid;position:absolute;top:calc(100% + 9px);right:0;transform:translateY(-4px)}.travel-menu:before,.theme-menu:before{content:"";border-top:1px solid var(--line);border-left:1px solid var(--line);background:var(--paper);width:9px;height:9px;position:absolute;top:-5px;right:14px;transform:rotate(45deg)}.nav-travel:hover .travel-menu,.nav-travel:focus-within .travel-menu,.nav-travel.is-hover-open .travel-menu,.nav-theme:hover .theme-menu,.nav-theme:focus-within .theme-menu,.nav-theme.is-hover-open .theme-menu{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}.travel-menu a,.theme-menu button{border-radius:calc(var(--radius) - 2px);min-width:0;color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;gap:2px;padding:7px 9px;text-decoration:none;display:grid}.travel-menu a:hover,.travel-menu a:focus-visible,.theme-menu button:hover,.theme-menu button:focus-visible,.theme-menu button.is-active{background:var(--page);color:var(--red);outline:none}.travel-menu span,.theme-menu span{font-size:.9rem;line-height:1.25}.travel-menu small,.theme-menu small{color:var(--muted);font-family:var(--font-sans);font-size:.68rem;line-height:1.2}.theme-menu{min-width:188px}.theme-menu button.is-active span:after{content:"✓";color:var(--red);margin-left:6px}.search-panel{z-index:20;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);width:min(360px,100vw - 32px);box-shadow:var(--shadow);padding:14px;position:absolute;top:calc(100% + 10px);right:0}.search-panel[hidden]{display:none}.search-label{color:var(--muted);margin-bottom:8px;font-size:.86rem;display:block}.search-input{border:1px solid var(--line);border-radius:var(--radius);background:var(--page);width:100%;height:40px;color:var(--ink);font:inherit;padding:8px 10px}.search-input:focus{outline:2px solid color-mix(in srgb, var(--red), transparent 65%);outline-offset:2px}.search-results{gap:8px;margin-top:12px;display:grid}.search-result{border-bottom:1px solid var(--line);gap:2px;padding:8px 0;display:grid}.search-result:last-child{border-bottom:0}.search-result small{color:var(--muted)}main{flex:1}.hero-panel{padding:clamp(70px,10vw,118px) 0 clamp(24px,4vw,44px);display:block}.intro-divider{background-image:radial-gradient(circle, var(--line) 2px, transparent 2.3px);background-repeat:repeat-x;background-size:22px 4px;height:4px}.article-card{border:1px solid var(--line);border-radius:var(--radius);background:color-mix(in srgb, var(--paper) 82%, var(--page));box-shadow:var(--shadow)}.profile-card{justify-content:space-between;align-items:center;gap:clamp(24px,8vw,96px);min-height:180px;display:flex}.profile-card:after{display:none}.profile-copy{min-width:0}.profile-title{color:var(--muted);margin-bottom:8px;font-size:.95rem;line-height:1.2}.profile-copy h1{font-size:clamp(1.1rem,2.7vw,1.85rem)}.profile-subtitle{gap:6px;line-height:1.32;display:grid}.profile-subtitle span{display:block}.profile-subtitle span+span{color:var(--muted);font-size:.76em}.hero-logo{background:var(--paper);object-fit:cover;border:0;border-radius:clamp(14px,2.4vw,24px);flex:none;width:clamp(80px,12vw,124px);height:clamp(80px,12vw,124px);display:block}.eyebrow{color:var(--red);text-transform:uppercase;margin:0 0 10px;font-size:.86rem;font-weight:700}h1,h2,h3,p{margin-top:0}h1{margin-bottom:8px;font-size:clamp(2.8rem,8vw,6rem);line-height:1.05}h2{margin-bottom:14px;font-size:clamp(1.7rem,4vw,2.5rem);line-height:1.2}h3{margin-bottom:8px;font-size:1.25rem;line-height:1.35}.profile-role{color:var(--green);margin-bottom:0;font-size:clamp(1.1rem,3vw,1.4rem)}.content-stack{padding:clamp(44px,7vw,84px) 0 28px}.section-kicker{color:var(--red);text-transform:uppercase;margin-bottom:14px;font-size:.78rem;font-weight:700;line-height:1}.note-kicker{margin-top:clamp(86px,12vw,144px)}.section-heading{justify-content:space-between;align-items:end;gap:16px;margin-bottom:16px;display:flex}.section-heading h2,.section-heading .eyebrow{margin-bottom:0}.article-heading{margin-top:38px}.moment-list{gap:10px;display:grid}.home-moment-section{margin-top:0}.moment-item{flex-direction:column;justify-content:space-between;gap:12px;min-height:92px;padding:12px 0;display:flex}.moment-item time,.article-meta,.archive-item time{color:var(--muted);font-size:.9rem}.moment-item time{align-self:flex-end;line-height:1.2}.moment-time-link{color:var(--muted);align-self:flex-end;text-decoration:none}.moment-time-link:hover,.moment-time-link:focus-visible{color:var(--red)}.moment-item h2,.moment-item h3,.moment-item p,.article-card p{margin-bottom:0}.moment-content{gap:8px;display:grid}.moment-content h2{font-size:1.35rem}.moment-content p,.moment-content ul,.moment-content ol,.moment-content blockquote,.moment-content figure{margin:0}.moment-content a{color:var(--red);text-underline-offset:3px;text-decoration-thickness:1px}.moment-content img{border-radius:var(--radius);max-width:100%;height:auto;display:block}.moment-item p,.article-card p,.simple-page p{color:var(--muted)}.simple-page .eyebrow{color:var(--red)}.article-list,.project-grid{gap:5px;display:grid}.article-list{grid-template-columns:1fr}.home-article-section{margin-top:0}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.article-card{min-height:220px;padding:20px}.article-card h2{font-size:1.35rem}.project-link{color:inherit;text-decoration:none}.project-link:hover{color:var(--red)}.project-link:focus-visible{outline:2px solid var(--red);outline-offset:3px}.article-meta{justify-content:space-between;gap:10px;margin-bottom:18px;display:flex}.article-meta span,.article-meta a{color:var(--gold)}.article-row h3{margin-bottom:0}.article-row{grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:16px;min-height:0;padding:6px 0;display:grid}.article-taxonomy{color:var(--muted);flex-wrap:wrap;gap:6px;font-size:.92rem;display:flex}.article-taxonomy a,.archive-taxonomy-list a,.taxonomy-link{color:inherit}.article-taxonomy a:hover,.archive-taxonomy-list a:hover,.taxonomy-link:hover,.article-category:hover{color:var(--red)}.article-title-line{align-items:baseline;gap:10px;min-width:0;display:flex}.article-title-line h3{min-width:0}.article-category{color:var(--gold);flex:none;font-size:.92rem}.article-side-meta{color:var(--muted);justify-content:flex-end;align-items:baseline;gap:12px;display:flex}.timeline-divider{background-image:radial-gradient(circle, var(--line) 2px, transparent 2.3px);background-repeat:repeat-x;background-size:22px 4px;height:4px;margin:clamp(56px,8vw,96px) 0 clamp(40px,6vw,72px)}.timeline-wrap{gap:10px;display:grid}.update-timeline{--timeline-soft:color-mix(in srgb, var(--red), transparent 72%);--timeline-active:var(--red);min-height:78px;color:var(--timeline-active);justify-content:space-between;align-items:center;gap:18px;margin-top:0;padding:0 4px;display:flex;position:relative}.update-timeline:after{content:"";background:var(--timeline-soft);height:1px;transition:height .18s,background-color .18s;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.update-timeline:has(.timeline-node:hover):after,.update-timeline:has(.timeline-node:focus-visible):after{background:color-mix(in srgb, var(--timeline-active), transparent 40%);height:2px}.timeline-node{width:1px;height:var(--node-height);z-index:1;justify-content:center;align-self:center;align-items:flex-end;display:inline-flex;position:relative}.timeline-node.is-above{transform:translateY(calc(var(--node-height) / -2))}.timeline-node.is-below{transform:translateY(calc(var(--node-height) / 2));align-items:flex-start}.timeline-line{background:var(--timeline-soft);transform-origin:50%;border-radius:999px;width:1px;height:100%;transition:width .18s,background-color .18s,transform .18s,box-shadow .18s;display:block;transform:scaleY(.96)}.timeline-node:after{content:"";background:var(--timeline-soft);border-radius:50%;width:4px;height:4px;transition:background-color .18s,box-shadow .18s,transform .18s;position:absolute;bottom:-2px;left:50%;transform:translate(-50%)scale(1)}.timeline-node.is-below:after{top:-2px;bottom:auto}.timeline-node:hover,.timeline-node:focus-visible{z-index:2}.timeline-node:hover .timeline-line,.timeline-node:focus-visible .timeline-line{background:var(--timeline-active);width:3px;box-shadow:0 0 0 4px color-mix(in srgb, var(--timeline-active), transparent 86%);animation:.72s ease-in-out infinite alternate timeline-line-lift;transform:scaleY(1.1)}.timeline-node:hover:after,.timeline-node:focus-visible:after{background:var(--timeline-active);box-shadow:0 0 0 5px color-mix(in srgb, var(--timeline-active), transparent 82%);animation:.72s ease-in-out infinite alternate timeline-dot-pulse;transform:translate(-50%)scale(1.35)}.timeline-edge-labels{color:var(--red);font-family:var(--font-sans);justify-content:space-between;align-items:flex-start;gap:18px;padding:0 4px;font-size:.74rem;font-weight:700;line-height:1;display:flex}.timeline-edge-labels time{writing-mode:vertical-rl;text-orientation:mixed}.timeline-edge-labels time:last-child{margin-left:auto}.timeline-popover{border:1px solid color-mix(in srgb, var(--red), transparent 55%);border-radius:var(--radius);background:var(--paper);min-width:170px;max-width:240px;color:var(--ink);box-shadow:var(--shadow);opacity:0;pointer-events:none;gap:6px;padding:10px 12px;transition:opacity .16s;display:grid;position:absolute;left:50%;transform:translate(-50%)}.timeline-node.is-above .timeline-popover{bottom:calc(100% + 14px)}.timeline-node.is-below .timeline-popover{top:calc(100% + 14px)}.timeline-node:hover .timeline-popover,.timeline-node:focus-visible .timeline-popover{opacity:1}@keyframes timeline-line-lift{0%{transform:scaleY(1.04)}to{transform:scaleY(1.16)}}@keyframes timeline-dot-pulse{0%{box-shadow:0 0 0 4px color-mix(in srgb, var(--timeline-active), transparent 86%)}to{box-shadow:0 0 0 7px color-mix(in srgb, var(--timeline-active), transparent 92%)}}.timeline-popover strong{color:var(--red);font-size:.9rem;line-height:1.2}.timeline-update{gap:2px;line-height:1.35;display:grid}.timeline-update em{color:var(--muted);font-size:.78rem;font-style:normal}.timeline-update span{color:var(--ink);font-size:.92rem}.timeline-comment{flex-wrap:wrap;gap:6px;display:flex}.timeline-comment em:before{content:"· "}.simple-page{width:min(820px,100%);padding:54px 0 64px}.simple-page h1{font-size:clamp(2.3rem,7vw,4rem)}.post-page{width:min(1040px,100%)}.page-list{margin-top:26px}.post-meta{justify-content:flex-start;margin-bottom:24px}.post-body{gap:26px;font-size:1.08rem;display:grid}.post-reading-layout{grid-template-columns:minmax(0,1fr) 180px;align-items:start;gap:clamp(32px,6vw,76px);margin-top:34px;display:grid}.post-reading{min-width:0}.post-body section{scroll-margin-top:24px}.post-body h2{color:var(--red);margin:0 0 10px;font-size:1.26rem}.post-body h3{color:var(--ink);margin:24px 0 8px;font-size:1.04rem}.post-body p,.post-body ul,.post-body ol,.post-body blockquote,.post-body figure{margin:0}.post-body img{border-radius:var(--radius);max-width:100%;height:auto;display:block}.post-body figcaption{color:var(--muted);text-align:center;margin-top:6px;font-size:.88rem;line-height:1.45}.post-body blockquote{border-left:1px solid var(--line);color:var(--muted);padding-left:18px}.post-body .lared-grid-2,.post-body .lared-grid-3,.post-body .lared-grid-4{gap:10px;margin:0;display:grid}.post-body .lared-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.post-body .lared-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.post-body .lared-grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.post-side{align-content:space-between;gap:42px;min-height:calc(100vh - 48px);display:grid;position:sticky;top:24px}.post-toc{color:var(--muted);padding-top:2px}.post-toc-title{color:var(--red);text-transform:uppercase;margin-bottom:14px;font-size:.78rem;font-weight:700;line-height:1}.toc-tree{gap:0;margin:0;padding:0;font-size:.92rem;line-height:1.35;list-style:none;display:grid}.toc-tree li{align-items:center;min-height:32px;padding-left:18px;display:flex;position:relative}.toc-tree li:before{content:"";background:var(--line);width:1px;position:absolute;top:0;bottom:0;left:3px}.toc-tree li:after{content:"";background:var(--line);width:10px;height:1px;position:absolute;top:50%;left:3px}.toc-tree li:first-child:before{top:50%}.toc-tree li:last-child:before{bottom:50%}.toc-tree .is-child{margin-left:18px;font-size:.86rem}.toc-tree a:hover{color:var(--red)}.post-side-actions{z-index:15;flex-direction:column;justify-content:flex-end;gap:8px;padding-bottom:2px;display:flex;position:fixed;bottom:clamp(64px,8vh,104px);right:max(24px,50vw - 560px)}.post-side-action{border:1px solid var(--line);border-radius:var(--radius);width:34px;height:34px;color:var(--muted);background:0 0;place-items:center;display:inline-grid}.post-side-action:hover{border-color:var(--red);color:var(--red)}.post-side-action svg{fill:currentColor;width:17px;height:17px}.comment-section{border-top:1px solid var(--line);margin-top:56px;padding-top:28px}.comment-head{justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:18px;display:flex}.comment-head .eyebrow{margin-bottom:0}.comment-head span{color:var(--muted);font-size:.86rem}.comment-form{border-left:1px solid var(--line);gap:10px;margin-bottom:28px;padding-left:18px;display:grid}.comment-form-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.comment-form input,.comment-form textarea{border:0;border-bottom:1px solid var(--line);width:100%;color:var(--ink);font:inherit;background:0 0;border-radius:0;padding:8px 0}.comment-form textarea{resize:vertical}.comment-form input:focus,.comment-form textarea:focus{border-bottom-color:var(--red);outline:0}.comment-form button{border:1px solid var(--line);border-radius:var(--radius);color:var(--ink);cursor:pointer;font:inherit;background:0 0;justify-self:start;padding:6px 14px}.comment-form button:hover{border-color:var(--red);color:var(--red)}.comment-list,.comment-children{gap:18px;margin:0;padding:0;list-style:none;display:grid}.comment-item{border-left:1px solid var(--line);padding-left:18px;position:relative}.comment-item:before{content:"";border:1px solid var(--red);background:var(--paper);border-radius:50%;width:7px;height:7px;position:absolute;top:.78em;left:-4px}.comment-meta{align-items:baseline;gap:12px;margin-bottom:4px;display:flex}.comment-meta strong{color:var(--ink);font-size:.98rem}.comment-meta time{color:var(--muted);font-size:.82rem}.comment-item p{color:var(--muted);margin-bottom:0}.comment-children{gap:14px;margin-top:16px}.archive-list{gap:24px;margin-top:28px;display:grid}.archive-group{border-bottom:1px solid var(--line);padding-bottom:10px}.archive-group summary{color:var(--red);cursor:pointer;justify-content:space-between;align-items:baseline;gap:16px;padding:8px 0 12px;list-style:none;display:flex}.archive-group summary::-webkit-details-marker{display:none}.archive-group summary:before{content:"+";width:1em;color:var(--muted)}.archive-group[open] summary:before{content:"-"}.archive-group summary span{flex:1;font-size:1.1rem;font-weight:700}.archive-group summary small{color:var(--muted);font-size:.82rem;font-weight:400}.archive-group-list{display:grid}.archive-item{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:20px;padding:14px 0;display:flex}.archive-item:last-child{border-bottom:0}.archive-item a,.archive-item span{min-width:0}.archive-taxonomy{gap:14px;margin-top:36px;display:grid}.archive-taxonomy-row{grid-template-columns:4em minmax(0,1fr);align-items:baseline;gap:18px;display:grid}.archive-taxonomy-row+.archive-taxonomy-row{border-top:1px solid var(--line);padding-top:14px}.archive-taxonomy-row>span{color:var(--red);font-size:.78rem;font-weight:700}.archive-taxonomy-list{color:var(--muted);flex-wrap:wrap;gap:8px 14px;display:flex}.eyebrow.taxonomy-link{display:inline-block}.about-markdown{margin-top:22px}.about-markdown h1{display:none}.about-markdown hr{background:var(--line);border:0;width:100%;height:1px}.about-markdown a{color:var(--red);text-underline-offset:3px;text-decoration-thickness:1px}.about-projects{margin-top:54px}.friends-page{width:min(1080px,100%)}.friend-site-info{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:minmax(310px,.95fr) minmax(0,1.05fr);align-items:start;gap:34px;margin-top:24px;padding:22px 0;display:grid}.friend-site-info-card{gap:16px;display:grid}.friend-site-info-heading{align-items:center;gap:14px;display:flex}.friend-site-info h2{margin:0 0 4px;font-size:1.18rem}.friend-site-info-list{grid-template-columns:1fr;gap:12px;margin:0;display:grid}.friend-site-info-list>div{grid-template-columns:42px minmax(0,1fr);align-items:baseline;gap:10px;display:grid}.friend-site-info-list dt{color:var(--red);font-weight:700}.friend-site-info-list dd{min-width:0;color:var(--ink);align-items:center;gap:8px;margin:0;display:flex}.friend-site-info-value{overflow-wrap:anywhere;min-width:0}.friend-copy-button{border:1px solid var(--line);border-radius:var(--radius);min-height:26px;color:var(--muted);font:inherit;cursor:pointer;background:0 0;flex:none;align-items:center;gap:5px;padding:3px 7px;font-size:.78rem;line-height:1.2;display:inline-flex}.friend-copy-button:hover,.friend-copy-button:focus-visible,.friend-copy-button.is-copied{border-color:var(--red);color:var(--red)}.friend-copy-button:focus-visible{outline:2px solid color-mix(in srgb, var(--red), transparent 65%);outline-offset:2px}.friend-copy-button i{font-size:.86em}.friend-site-info-list a{color:inherit;text-underline-offset:3px;text-decoration-thickness:1px}.friend-link-note{color:var(--ink);gap:14px;line-height:1.9;display:grid}.friend-link-note p{margin:0}.friend-link-note strong{color:var(--red);font-weight:700}.friend-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 34px;margin-top:34px;display:grid}.friend-item{border-bottom:1px solid var(--line);padding-bottom:26px}.friend-head{justify-content:space-between;align-items:baseline;gap:18px;margin-bottom:16px;display:flex}.friend-head h2{margin-bottom:4px;font-size:1.35rem}.friend-head p{color:var(--muted);margin-bottom:0}.friend-url{color:var(--red);flex:none;font-size:.86rem}.friend-feed{border-left:1px solid var(--line);gap:10px;padding-left:18px;display:grid}.friend-feed-meta{color:var(--muted);flex-wrap:wrap;gap:10px;font-size:.84rem;display:flex}.friend-feed-meta span{color:var(--red);font-weight:700}.friend-feed-empty,.friend-feed-meta .friend-feed-empty{color:var(--muted);margin:0;font-weight:400}.friend-updates{gap:8px;margin:0;padding:0;list-style:none;display:grid}.friend-updates li{grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:16px;display:grid;position:relative}.friend-updates li:before{content:"";border:1px solid var(--red);background:var(--paper);border-radius:50%;width:7px;height:7px;position:absolute;top:.76em;left:-22px}.friend-updates time{color:var(--muted);font-size:.84rem}.site-footer{border-top:1px solid var(--line);min-height:52px;color:var(--ink);justify-content:space-between;align-items:center;gap:24px;padding:12px 0 18px;font-size:.95rem;display:flex}.is-home-footer{margin-top:clamp(8px,2vw,22px)}.footer-copy,.footer-meta{white-space:nowrap;align-items:center;gap:7px;display:inline-flex}.footer-separator{color:var(--muted)}.social-links{align-items:center;gap:7px;display:flex}.social-icon{width:20px;height:20px;color:var(--ink);place-items:center;display:inline-grid}.social-icon svg,.footer-tech-icon,.footer-repo-link svg{fill:currentColor;width:100%;height:100%;display:block}.footer-tech-icon,.footer-repo-link{width:21px;height:21px}.footer-repo-link{color:var(--ink);place-items:center;display:inline-grid}.social-icon:hover,.footer-repo-link:hover{color:var(--red)}@media (width<=860px){.site-header{grid-template-columns:1fr;display:grid}.nav,.footer-meta,.social-links{text-align:left;justify-content:flex-start}.search-panel{left:0;right:auto}.hero-panel{padding-top:52px;padding-bottom:72px}.content-stack{padding-top:38px}.article-list,.project-grid{grid-template-columns:1fr}.post-reading-layout{grid-template-columns:1fr;gap:32px}.post-side{order:-1;align-content:start;min-height:0;position:static}.post-side-actions{flex-direction:row;justify-content:flex-start;position:static}}@media (width<=620px){.site-shell{width:min(100% - 24px,1120px)}.brand{min-width:0}.nav{grid-template-columns:repeat(3,minmax(0,1fr));width:100%;display:grid}.nav-link{padding-inline:8px}.profile-card:after{display:none}.profile-card{flex-direction:column-reverse;align-items:flex-start;min-height:150px}.moment-item,.archive-item{grid-template-columns:1fr}.moment-item{gap:6px}.article-row{grid-template-columns:1fr;gap:4px}.article-title-line,.article-side-meta{flex-wrap:wrap;justify-content:flex-start;align-items:flex-start}.update-timeline{gap:12px}.home-moment-section,.home-article-section{margin-top:0}.note-kicker{margin-top:64px}.site-footer{flex-direction:column;align-items:flex-start;gap:8px}.footer-copy,.footer-meta{white-space:normal;flex-wrap:wrap}.comment-form-grid,.post-body .lared-grid-2,.post-body .lared-grid-3,.post-body .lared-grid-4,.friend-site-info,.friend-site-info-list,.friend-list{grid-template-columns:1fr}.friend-site-info-list dd{align-items:flex-start}.friend-head,.friend-updates li{grid-template-columns:1fr;gap:4px;display:grid}.friend-url,.friend-updates time{justify-self:start}.archive-item{gap:2px;display:grid}}
