:root{font-family: "Segoe UI","Microsoft YaHei",system-ui,sans-serif;color:#303438;font-size:14px;font-synthesis:none;--accent:#327ced;--chrome:#f3f3f3;--line:#eaecef;--muted:#93989d}
*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:var(--cursor-pointer, pointer)}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:3px}button{border:0;background:none}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.icon-library{position:absolute;width:0;height:0;overflow:hidden}[hidden]{display:none!important}.wallpaper{position:fixed;inset:0;background-image:var(--wallpaper);background-size:cover;background-position:center;z-index:-1}.dock{position:fixed;z-index:1000;left:12px;top:16px;bottom:16px;width:48px;display:flex;align-items:center;flex-direction:column;padding:10px 4px;gap:9px;border:1px solid #ffffff26;border-radius:9px;background:#53645340;backdrop-filter:blur(20px);box-shadow:0 4px 24px #10261c18;color:#fff}.dock-button{position:relative;width:38px;height:38px;display:grid;place-items:center;border-radius:6px;transition:background .18s}.dock-button:hover,.dock-button.is-focused{background:#ffffff26}.dock-button svg{width:21px;height:21px}.running-dot{display:none;position:absolute;left:0;width:3px;height:12px;background:#d1e6dd;border-radius:3px}.dock-button.is-running .running-dot{display:block}.dock-divider{height:1px;width:23px;background:#ffffff26}.dock-space{flex:1}.dock-avatar{width:28px;height:28px;border-radius:50%;background:#e1e9da;color:#4d6254;display:grid;place-items:center;font-family:Georgia,serif;font-size:20px}.desktop-status{position:fixed;right:20px;top:18px;display:flex;align-items:center;gap:10px;padding:8px 13px;background:#ffffffdf;backdrop-filter:blur(12px);border:1px solid #ffffff66;border-radius:20px;font-size:11px;color:#526153;box-shadow:0 2px 10px #182d2410}.status-dot{display:inline-block;width:6px;height:6px;background:#77ab79;border-radius:50%;vertical-align:middle}.status-divider{height:11px;width:1px;background:#cfd6cd}#clock{font-variant-numeric:tabular-nums}.app-window{position:fixed;display:flex;flex-direction:column;overflow:hidden;min-width:380px;min-height:320px;border:1px solid #ffffffab;border-radius:13px;background:var(--chrome);box-shadow:0 20px 70px #0d231849,0 3px 12px #00000014;outline:none;transition:box-shadow .15s}.app-window.is-focused{box-shadow:0 25px 80px #0d231862,0 4px 16px #00000020}.welcome-window{left:43%;top:19%;width: min(740px,54vw);height: min(680px,74vh)}.reader-window{left:12%;top:9%;width:82vw;height:84vh}.titlebar{height:45px;flex:0 0 45px;display:flex;justify-content:space-between;align-items:center;padding-left:16px;user-select:none;touch-action:none;cursor:var(--cursor-default, default)}.window-caption{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:600;min-width:0}.app-badge{display:grid;place-items:center;font-size:16px;width:23px;height:23px}.welcome-badge{background:linear-gradient(145deg,#719a7b,#3c6856);color:#fff;border-radius:6px;font-family:Georgia,serif}.markdown-badge{font-family:Georgia,serif;font-size:21px;font-weight:700}.window-controls{display:flex;height:100%;padding-right:3px}.window-controls button{width:43px;display:grid;place-items:center}.window-controls button:hover{background:#e4e5e6}.window-controls button[data-action=close]:hover{background:#e46260;color:#fff}.window-controls svg{width:16px;height:16px;stroke-width:1.3}.welcome-content{flex:1;overflow:auto;margin:0 8px;background:#fff;border-radius:8px;padding:32px 38px 22px}.eyebrow{font-size:10px;letter-spacing:2.1px;font-weight:600;color:#8b9690}.welcome-mark{font-family:Georgia,serif;color:#41664f;font-size:48px;line-height:1;margin:18px 0 14px;letter-spacing:-5px}.welcome-mark span{color:#95b798}.welcome-intro h1{font-size:clamp(21px,2vw,28px);font-weight:600;letter-spacing:-.6px;margin:0 0 12px}.welcome-intro p{color:#858b88;font-size:13px;line-height:1.9;margin:0 0 21px}.primary-button{display:inline-flex;align-items:center;gap:22px;background:#52755d;color:white;border-radius:6px;padding:10px 15px;font-size:12px;transition:background .2s}.primary-button:hover{background:#3c6047}.primary-button svg{width:16px;height:16px}.intro-note{font-size:11px;color:#a0a7a2;margin-left:14px}.recent-posts{margin-top:30px;border-top:1px solid var(--line);padding-top:18px}.section-label{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.section-label h2{font-size:12px;font-weight:600;margin:0;color:#5c655f}.section-label>span{font-size:9px;letter-spacing:1.4px;color:#adb3ae}.recent-post{display:flex;align-items:center;gap:13px;padding:12px 4px;border-bottom:1px solid #f0f2f0;border-radius:4px}.recent-post:last-child{border-bottom:0}.recent-post:hover{background:#f6f8f6}.file-icon{position:relative;width:30px;height:35px;display:grid;place-items:center;border:1px solid #dde3df;border-radius:4px;color:#6f8275;font-family:Georgia,serif;font-size:15px;background:linear-gradient(145deg,#fff,#f0f4f0)}.file-icon span{position:absolute;bottom:2px;right:3px;font-size:9px}.recent-post-text{flex:1;min-width:0}.recent-post strong{display:block;font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recent-post small{display:block;font-size:10px;color:#a1a6a2;margin-top:5px}.recent-post>svg{width:15px;height:15px;color:#a4ada6}.window-status{flex:0 0 29px;display:flex;justify-content:space-between;align-items:center;padding:0 15px;font-size:10px;color:#909690;border-top:1px solid #e8eae8;gap:10px}.window-status .status-dot{width:5px;height:5px;margin-right:5px}.welcome-window .window-status{border-top:0}.file-bar{display:flex;align-items:center;gap:10px;min-height:50px;padding:10px 22px;background:#fff;border-bottom:1px solid var(--line)}.file-bar strong{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.readonly-label{font-size:10px;border-radius:20px;padding:3px 8px;background:#f0f1f2;color:#8b9299;white-space:nowrap}.file-encoding{margin-left:auto;font-size:11px;color:#9ba0a4;white-space:nowrap}.file-encoding span{margin-left:9px}.reader-toolbar{height:38px;flex:0 0 38px;background:#fff;border-bottom:1px solid var(--line)}.reading-layout{display:flex;flex:1;min-height:0;background:#fff}.article-scroll{flex:1;min-width:0;overflow:auto;overscroll-behavior:contain;scroll-behavior:smooth;scroll-padding-top:28px}.markdown-body{width:100%;max-width:880px;margin:0 auto;padding:38px 46px 65px;font-size:15px;line-height:1.95;color:#414b54;overflow-wrap:anywhere}.article-heading{margin-bottom:30px;padding-bottom:25px;border-bottom:1px solid var(--line)}.article-heading .eyebrow{margin:0 0 14px}.post-title{font-size:30px;line-height:1.45;color:#2f383c;letter-spacing:-.5px;margin:0 0 14px}.article-meta{display:flex;gap:15px;flex-wrap:wrap;font-size:11px;color:#969d9e}.post-content h1,.post-content h2,.post-content h3,.post-content h4,.post-content h5,.post-content h6{line-height:1.5;color:#35434d;margin:1.7em 0 .65em;scroll-margin-top:24px}.post-content h1{font-size:28px}.post-content h2{font-size:23px}.post-content h3{font-size:19px}.post-content h4{font-size:17px}.post-content h5{font-size:15px}.post-content h6{font-size:14px}.post-content p{margin:.85em 0}.post-content a{color:#3782cf;text-underline-offset:4px}.post-content a:hover{text-decoration:underline}.post-content img,.post-content video{max-width:100%;height:auto;border-radius:5px}.post-content iframe{max-width:100%;border:0}.post-content pre{overflow:auto;padding:18px 20px;background:#f5f7f8;border:1px solid #e9edef;border-radius:6px;line-height:1.65;font-size:12px;tab-size:2}.post-content code{font-family:Consolas,"Cascadia Code",monospace;background:#f1f4f5;border-radius:3px;padding:2px 5px;font-size:.9em}.post-content pre code{background:none;padding:0}.post-content blockquote{margin:20px 0;border-left:3px solid #93ae98;padding:5px 18px;background:#f6f8f6;color:#718077}.post-content table{border-collapse:collapse;display:block;max-width:100%;overflow:auto;font-size:13px}.post-content th,.post-content td{padding:9px 14px;border:1px solid #e3e8e9}.post-content th{background:#f3f6f5}.post-content hr{border:0;border-top:1px solid var(--line);margin:28px 0}.post-content li{margin:5px 0}.post-content input[type=checkbox]{accent-color:#71957a}.post-content details{border:1px solid var(--line);padding:12px 16px;border-radius:6px;margin:16px 0}.post-content summary{cursor:var(--cursor-pointer, pointer);font-size:13px;color:#547760}.post-content .legacy-note{border-left:3px solid #d7b464;padding:10px 17px;background:#fbf8f1;border-radius:4px}.post-content .gallery{display:flex;gap:12px;flex-wrap:wrap}.post-content .gallery p{flex:1 1 220px}.post-content kbd{border:1px solid #dce0e1;border-bottom-width:2px;padding:2px 6px;border-radius:4px}.spoiler{background:#414b54;color:transparent;border-radius:3px;cursor:var(--cursor-pointer, pointer)}.spoiler:hover,.spoiler:focus{background:#edf2ed;color:inherit}.hljs-keyword,.hljs-selector-tag{color:#ac6096}.hljs-string,.hljs-attr{color:#5b885d}.hljs-comment{color:#929b9e}.hljs-number,.hljs-literal{color:#b98147}.toc-panel{flex:0 0 215px;border-left:1px solid var(--line);padding:25px 16px 30px;overflow:auto;overscroll-behavior:contain}.toc-heading{font-size:11px;color:#8c9692;margin:0 6px 18px;display:flex;justify-content:space-between;align-items:center}.toc-heading span{font-size:8px;letter-spacing:1px;color:#b4bbb8}#toc a{position:relative;display:block;padding:7px 7px 7px calc(10px + var(--level)*11px);font-size:12px;line-height:1.65;border-radius:4px;color:#818b90;overflow-wrap:anywhere}#toc a:hover{background:#f5f7f5}#toc a.active{background:#f3f7f1;color:#68984e}#toc a.active:before{content:"";position:absolute;left:0;top:9px;bottom:9px;width:3px;background:#89bb66;border-radius:2px}.empty-toc{font-size:12px;color:#9ca39e}.reader-window>.window-status{background:#fff}.mobile-toc-toggle{display:none}.resize-handle{position:absolute;z-index:4;touch-action:none}.resize-n,.resize-s{left:12px;right:12px;height:6px;cursor:var(--cursor-ns-resize, ns-resize)}.resize-n{top:0}.resize-s{bottom:0}.resize-e,.resize-w{top:12px;bottom:12px;width:6px;cursor:var(--cursor-ew-resize, ew-resize)}.resize-e{right:0}.resize-w{left:0}.resize-ne,.resize-nw,.resize-se,.resize-sw{width:12px;height:12px}.resize-ne{right:0;top:0;cursor:var(--cursor-nesw-resize, nesw-resize)}.resize-nw{left:0;top:0;cursor:var(--cursor-nwse-resize, nwse-resize)}.resize-se{right:0;bottom:0;cursor:var(--cursor-nwse-resize, nwse-resize)}.resize-sw{left:0;bottom:0;cursor:var(--cursor-nesw-resize, nesw-resize)}.app-window.is-maximized{left:76px!important;top:10px!important;width:calc(100vw - 88px)!important;height:calc(100dvh - 20px)!important;border-radius:9px}.is-maximized .resize-handle{display:none}.toast{position:fixed;z-index:2000;bottom:25px;left:50%;transform:translateX(-50%);background:#fdfef9;color:#53634f;padding:12px 20px;border:1px solid #dce5d8;border-radius:8px;box-shadow:0 5px 30px #0002;max-width:85vw;font-size:13px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:#d9dddb;border-radius:8px}::-webkit-scrollbar-track{background:transparent}.noscript-notice,.noscript-posts{position:relative;z-index:2000;background:#fff;padding:15px;margin:15px 80px}.noscript-posts{max-height:150px;overflow:auto}
@media(min-width:1500px){.welcome-window{top:20%;height:650px}.welcome-content{padding:38px 44px 24px}.welcome-mark{margin-top:22px;margin-bottom:20px;font-size:54px}.recent-posts{margin-top:35px}.recent-post{padding:15px 4px}}
@media(max-height:760px) and (min-width:761px){.welcome-window{top:11%;height:83vh}.welcome-content{padding-top:23px}.welcome-mark{font-size:36px;margin:12px 0}.welcome-intro p{margin-bottom:15px}.recent-posts{margin-top:20px;padding-top:13px}.recent-post{padding:10px 4px}}
@media(max-width:1100px){.welcome-window{left:32%;width:62vw}.welcome-content{padding-left:26px;padding-right:26px}.intro-note{display:none}.reader-window{left:85px;top:8%;width:calc(100vw - 110px);height:86vh}.markdown-body{padding:30px}.toc-panel{flex-basis:185px}}
@media(max-width:760px){.wallpaper{background-position:38% center}.dock{left:8px;top:12px;bottom:12px;width:43px;padding:7px 2px}.dock-button{width:34px}.desktop-status{right:13px;top:14px;font-size:10px}.app-window,.welcome-window,.reader-window{left:62px;top:62px;width:calc(100vw - 74px);height:calc(100dvh - 78px);min-width:0;min-height:0;border-radius:10px}.titlebar{padding-left:10px;height:42px;flex-basis:42px}.window-caption{font-size:11px;gap:6px}.window-controls button{width:29px}.window-controls button[data-action=maximize]{display:none}.welcome-content{margin:0 5px;padding:25px 19px}.welcome-intro h1{font-size:24px;line-height:1.5}.welcome-intro p{font-size:12px}.eyebrow{font-size:8px;letter-spacing:1.4px}.recent-posts{margin-top:26px}.section-label>span{font-size:7px;letter-spacing:.5px}.recent-post{gap:9px;padding:14px 0}.recent-post strong{font-size:11px}.recent-post small span{display:none}.welcome-mark{font-size:42px}.window-status{padding:0 9px;font-size:9px}.welcome-window .window-status>span:last-child{display:none}.reader-window,.reader-window.is-maximized{left:58px!important;top:8px!important;width:calc(100vw - 66px)!important;height:calc(100dvh - 16px)!important}.file-bar{padding:9px 12px;min-height:43px;gap:7px}.file-bar strong{font-size:12px}.file-encoding{display:none}.reader-toolbar{height:34px;flex-basis:34px}.markdown-body{padding:25px 20px 45px;font-size:14px;line-height:1.9}.post-title{font-size:25px}.post-content h1{font-size:24px}.post-content h2{font-size:21px}.post-content pre{padding:12px}.toc-panel{display:none;position:absolute;right:0;top:119px;bottom:29px;width:min(250px,90%);background:#fffffff5;backdrop-filter:blur(12px);box-shadow:-10px 0 30px #0001;z-index:5}.toc-panel.is-open{display:block}.mobile-toc-toggle{display:block;font-size:10px;color:#547760;padding:4px 9px}.resize-handle{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}

/* Group mobile scrolling apps without changing the desktop dock layout. */
.dock-apps,.dock-tools { display:contents; }

/* Reuse desktop artwork at dock scale, retaining the running indicator. */
.dock-app-icon { width:28px; height:28px; display:flex; align-items:center; justify-content:center; pointer-events:none; color:#fff; }
.dock-app-icon > .folder-art,
.dock-app-icon > .music-icon-art { flex-shrink:0; transform:scale(.6); margin:0; }
