@font-face{font-family:Noto Sans TC;src:url(/fonts/NotoSansTC-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Noto Sans TC;src:url(/fonts/NotoSansTC-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:"Noto Serif TC";src:url(/fonts/NotoSerifTC-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:"Noto Serif TC";src:url(/fonts/NotoSerifTC-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Source Code Pro;src:url(/fonts/SourceCodePro-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{color-scheme:light;--bg: #faf8f5;--surface: #ffffff;--surface-muted: #f2efe9;--surface-elevated: #ffffff;--text: #1a1a1e;--text-strong: #0c0c0e;--muted: #6b6b70;--line: #e5e1da;--line-subtle: #ede9e2;--accent: #2d7d4d;--accent-soft: #e6f2eb;--accent-muted: #d1e7d8;--accent-text: #1b5e38;--code-bg: #1a1a1e;--code-text: #f2efe9;--code-inline-bg: #f2efe9;--shadow-soft: 0 24px 70px color-mix(in srgb, #6b5f4a, transparent 88%);--shadow-tight: 0 8px 28px color-mix(in srgb, #6b5f4a, transparent 90%);--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-snap: cubic-bezier(.16, 1, .3, 1);--font-sans: "Noto Sans TC", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-serif: "Noto Serif TC", "Songti TC", "Source Han Serif", serif;--font-mono: "Source Code Pro", "SFMono-Regular", Consolas, "Liberation Mono", monospace}:root[data-theme=dark]{color-scheme:dark;--bg: #111113;--surface: #18181b;--surface-muted: #27272a;--surface-elevated: #1e1e22;--text: #f4f4f5;--text-strong: #ffffff;--muted: #a1a1aa;--line: #3f3f46;--line-subtle: #323238;--accent: #4ade80;--accent-soft: #1a2f1e;--accent-muted: #2a3f2e;--accent-text: #6ee7a0;--code-bg: #0c0c0e;--code-text: #e4e4e7;--code-inline-bg: #27272a;--shadow-soft: 0 24px 70px color-mix(in srgb, #020617, transparent 58%);--shadow-tight: 0 8px 28px color-mix(in srgb, #020617, transparent 68%)}*{box-sizing:border-box}html{background:var(--bg);color:var(--text);font-family:var(--font-sans);line-height:1.7;scroll-behavior:smooth;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-height:100dvh;background:radial-gradient(circle at 18% 0%,color-mix(in srgb,var(--accent-soft),transparent 30%),transparent 32rem),radial-gradient(circle at 90% 12%,color-mix(in srgb,var(--surface-muted),transparent 8%),transparent 26rem),var(--bg)}body:before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.28;background-image:radial-gradient(circle at 1px 1px,color-mix(in srgb,var(--text),transparent 88%) 1px,transparent 0);background-size:18px 18px;mask-image:linear-gradient(180deg,black,transparent 78%)}.night-sky{position:fixed;inset:0;z-index:0;pointer-events:auto;overflow:hidden;opacity:0;background:linear-gradient(180deg,#070b1d 0%,#111827 56%,var(--bg) 100%);transition:opacity .42s var(--ease-out);-webkit-mask-image:radial-gradient(ellipse at center,black 0%,black 68%,transparent 100%);mask-image:radial-gradient(ellipse at center,black 0%,black 68%,transparent 100%)}.star{position:absolute;top:var(--star-y);left:var(--star-x);width:var(--star-size);height:var(--star-size);border-radius:999px;background:#fff;box-shadow:0 0 8px #ffffff6b;opacity:var(--star-opacity);animation:star-twinkle var(--twinkle-duration) ease-in-out var(--twinkle-delay) infinite alternate}.meteor{position:absolute;top:var(--meteor-top);left:var(--meteor-left);width:var(--meteor-width);height:1px;border-radius:999px;background:linear-gradient(90deg,rgb(255 255 255 / .9),rgb(173 213 255 / .38) 42%,transparent);box-shadow:0 0 12px #ffffff73;transform:rotate(-24deg);opacity:0;animation:meteor-shower var(--meteor-duration) cubic-bezier(.22,1,.36,1) var(--meteor-delay) infinite}.meteor-once{animation-delay:0s;animation-iteration-count:1;animation-name:meteor-click}:root[data-theme=dark] .night-sky{opacity:1}.site-header,.site-main,.site-footer,.search-overlay{position:relative;z-index:1}@keyframes star-twinkle{0%{opacity:.38}to{opacity:.9}}@keyframes meteor-shower{0%,72%{opacity:0;transform:translateZ(0) rotate(-24deg)}76%{opacity:1}86%{opacity:0;transform:translate3d(var(--meteor-x),var(--meteor-y),0) rotate(-24deg)}to{opacity:0;transform:translate3d(var(--meteor-x),var(--meteor-y),0) rotate(-24deg)}}@keyframes meteor-click{0%{opacity:1;transform:translateZ(0) rotate(-24deg)}10%{opacity:0;transform:translate3d(var(--meteor-x),var(--meteor-y),0) rotate(-24deg)}to{opacity:0;transform:translate3d(var(--meteor-x),var(--meteor-y),0) rotate(-24deg)}}@media(prefers-reduced-motion:reduce){.star,.meteor{animation:none}.meteor{display:none}}a{color:inherit;text-decoration-color:color-mix(in srgb,var(--accent),transparent 55%);text-underline-offset:.18em;transition:color .22s var(--ease-out),text-decoration-color .22s var(--ease-out)}a:hover{color:var(--accent)}.site-header,.site-footer{display:flex;align-items:center;justify-content:space-between;gap:1rem;max-width:1120px;margin:0 auto;padding:1rem clamp(1rem,4vw,2rem)}.site-header{position:sticky;top:.75rem;z-index:10;margin-top:.75rem;border:1px solid color-mix(in srgb,var(--line),transparent 20%);border-radius:18px;background:color-mix(in srgb,var(--bg),var(--surface) 68%);box-shadow:var(--shadow-tight);backdrop-filter:blur(16px) saturate(1.15)}.brand{font-family:var(--font-serif);font-size:1.3rem;font-weight:700;text-decoration:none;color:var(--text-strong);letter-spacing:-.02em;position:relative}.brand:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:2px;background:var(--accent);transition:width .32s var(--ease-out)}.brand:hover{color:var(--accent)}.brand:hover:after{width:100%}.site-nav,.site-footer nav,.header-actions{display:flex;align-items:center;gap:.75rem}.site-nav a,.site-footer a{color:var(--muted);font-size:.95rem;text-decoration:none;position:relative;padding:.25rem 0;transition:color .22s var(--ease-out)}.site-nav a[aria-current=page]{color:var(--text-strong)}.site-nav a[aria-current=page]:before{content:"";position:absolute;left:50%;bottom:-.38rem;width:.3rem;height:.3rem;border-radius:999px;background:var(--accent);transform:translate(-50%)}.site-nav a:after,.site-footer a:after{content:"";position:absolute;bottom:0;left:0;width:0;height:1.5px;background:var(--accent);transition:width .26s var(--ease-out)}.site-nav a:hover,.site-footer a:hover{color:var(--text)}.site-nav a:hover:after,.site-footer a:hover:after{width:100%}.icon-button{display:inline-grid;width:2.25rem;height:2.25rem;place-items:center;border:1px solid color-mix(in srgb,var(--line),transparent 10%);border-radius:10px;color:var(--text);background:color-mix(in srgb,var(--surface),transparent 8%);cursor:pointer;transition:border-color .26s var(--ease-out),color .26s var(--ease-out),background .26s var(--ease-out),transform .26s var(--ease-out),box-shadow .26s var(--ease-out)}.icon-button:hover,.icon-button:focus-visible{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent-soft),transparent 25%)}.icon-button:active{transform:scale(.96)}:focus-visible{outline:2px solid color-mix(in srgb,var(--accent),transparent 20%);outline-offset:3px}.icon-button svg{width:1.1rem;height:1.1rem;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.site-main{max-width:960px;margin:0 auto;padding:clamp(2rem,5vw,4rem) clamp(1rem,4vw,2rem)}.home-intro,.page-heading,.article-header{margin-bottom:clamp(2.5rem,6vw,4rem)}.home-intro{position:relative}.eyebrow{margin:0 0 .6rem;color:var(--accent);font-size:.78rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}h1,h2,h3{font-family:var(--font-serif);line-height:1.25;letter-spacing:-.01em;color:var(--text-strong)}h1{max-width:14em;margin:0;font-size:clamp(2.2rem,5vw,4.5rem)}.home-intro p:last-child,.page-heading p:last-child{max-width:42rem;color:var(--muted);font-size:1.1rem;line-height:1.75;margin-top:1rem}.post-list{display:grid;gap:0;padding:0;list-style:none;border-top:1px solid color-mix(in srgb,var(--line-subtle),transparent 12%)}.post-item{display:grid;grid-template-columns:5.5rem minmax(0,1fr) auto;gap:1.25rem;padding:1.55rem 0;border-bottom:1px solid color-mix(in srgb,var(--line-subtle),transparent 12%);position:relative;transition:background .26s var(--ease-out),transform .26s var(--ease-out)}.post-item:hover{background:color-mix(in srgb,var(--accent-soft),transparent 85%);transform:translate(.25rem)}.post-item:before{content:"";position:absolute;left:-1rem;top:1.5rem;bottom:1.5rem;width:3px;background:var(--accent);border-radius:2px;opacity:0;transition:opacity .26s var(--ease-out)}.post-item:hover:before{opacity:1}.post-date-badge{width:5.5rem;text-align:left;font-variant-numeric:tabular-nums}.post-date-badge .day{display:block;font-family:var(--font-mono);font-size:1.5rem;font-weight:600;color:var(--text-strong);line-height:1;letter-spacing:-.02em}.post-date-badge .month-year{display:block;font-size:.78rem;color:var(--muted);margin-top:.15rem;letter-spacing:.03em}.post-body{flex:1;min-width:0}.post-title-link{font-family:var(--font-serif);font-size:clamp(1.3rem,2vw,1.7rem);font-weight:700;text-decoration:none;color:var(--text-strong);line-height:1.35;display:block;margin-bottom:.35rem;text-wrap:pretty}.post-title-link:hover{color:var(--accent)}.post-meta{display:flex;flex-wrap:wrap;gap:.4rem .7rem;margin:0;color:var(--muted);font-size:.88rem}.post-meta time{color:var(--muted)}.post-meta a{color:var(--accent-text);text-decoration:none;font-size:.82rem;padding:0;border-radius:0;background:transparent;transition:color .22s var(--ease-out),text-decoration-color .22s var(--ease-out)}.post-meta a:hover{color:var(--accent);text-decoration:underline}.post-item p{margin:.5rem 0 0;color:var(--muted);font-size:.96rem;line-height:1.65;max-width:52ch}.post-thumb{width:7.5rem;height:5rem;border-radius:12px;overflow:hidden;border:1px solid color-mix(in srgb,var(--line),transparent 8%);box-shadow:var(--shadow-tight);transition:border-color .26s var(--ease-out),transform .26s var(--ease-out)}.post-thumb:hover{border-color:var(--accent);transform:scale(1.03)}.post-thumb img{width:100%;height:100%;object-fit:cover;display:block}.pager,.article-nav{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;margin-top:3.5rem;padding-top:1.5rem}.pager a,.article-nav a{padding:.7rem 1rem;border:1px solid var(--line);border-radius:8px;text-decoration:none;font-size:.92rem;color:var(--text);background:var(--surface);transition:border-color .26s var(--ease-out),color .26s var(--ease-out),background .26s var(--ease-out),transform .26s var(--ease-out)}.pager a:hover,.article-nav a:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);transform:translateY(-1px)}.pager a:last-child,.article-nav a:last-child{text-align:right}.article-shell{position:relative}.prose{max-width:720px;font-size:1.04rem;line-height:1.75}.prose :is(p,ul,ol,blockquote,pre,table,figure){margin:1.25rem 0}.prose h2{margin-top:2.8rem;font-size:1.6rem;font-weight:700;color:var(--text-strong)}.prose h3{margin-top:2rem;font-size:1.25rem;font-weight:700;color:var(--text-strong)}.prose blockquote{margin:1.5rem 0;padding:1rem 1.25rem;border-left:3px solid var(--accent);background:var(--surface-muted);border-radius:0 8px 8px 0;font-style:italic;color:var(--muted)}.prose :is(p,figure)>img{max-width:100%;height:auto;border-radius:8px;box-shadow:0 1px 2px color-mix(in srgb,var(--text),transparent 92%)}.prose pre{overflow-x:auto;padding:1.1rem 1.25rem;border-radius:8px;background:var(--code-bg);color:var(--code-text);font-size:.92rem;line-height:1.65;box-shadow:0 1px 3px color-mix(in srgb,var(--text),transparent 85%)}.prose code{font-family:var(--font-mono);font-size:.9em}.prose :not(pre)>code{padding:.15rem .4rem;border-radius:4px;background:var(--code-inline-bg);color:var(--accent-text);font-weight:500}.table-scroll{overflow-x:auto;border-radius:8px;border:1px solid var(--line)}.prose table{width:100%;border-collapse:collapse;font-size:.94rem}.prose th,.prose td{padding:.65rem .8rem;border:1px solid var(--line);vertical-align:top}.prose th{background:var(--surface-muted);font-weight:600;color:var(--text-strong)}.prose tr:nth-child(2n){background:var(--surface-muted)}.post-figure{display:grid;justify-items:center;gap:.65rem}.post-figure figcaption{color:var(--muted);font-size:.88rem}.toc{display:grid;gap:.25rem;margin:0 0 2.5rem;padding:1.25rem;border-left:3px solid var(--accent);background:var(--surface-muted);border-radius:0 8px 8px 0}.toc-title{font-family:var(--font-sans);font-size:.85rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:.5rem}.toc a{padding-left:calc((var(--depth) - 2) * 1rem);color:var(--muted);font-size:.92rem;text-decoration:none;padding-top:.15rem;padding-bottom:.15rem;border-radius:4px;transition:color .22s var(--ease-out),background .22s var(--ease-out)}.toc a:hover{color:var(--accent);background:var(--accent-soft)}.tag-cloud{display:flex;flex-wrap:wrap;gap:.7rem;padding:0;list-style:none}.tag-cloud li{display:flex}.tag-cloud a{display:inline-flex;align-items:center;gap:.45rem;padding:.6rem 1rem;border:1px solid color-mix(in srgb,var(--line),transparent 10%);border-radius:999px;background:var(--surface);text-decoration:none;font-size:.95rem;transition:border-color .26s var(--ease-out),background .26s var(--ease-out),color .26s var(--ease-out),transform .26s var(--ease-out)}.tag-cloud a:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);transform:translateY(-1px)}.tag-cloud small{color:var(--muted);font-size:.78rem;font-weight:600;min-width:1.2em;text-align:center}.archive-list{display:grid;gap:2.5rem}.archive-list section{padding:1.5rem 0;border-top:1px solid var(--line)}.archive-list section:first-child{border-top:none}.archive-list h2{font-size:1.8rem;margin:0 0 1.25rem;color:var(--text-strong)}.archive-list ol{display:grid;gap:.5rem;padding:0;list-style:none}.archive-list li{display:flex;align-items:baseline;gap:1.25rem;padding:.6rem 0;border-bottom:1px solid var(--line-subtle)}.archive-list li:last-child{border-bottom:none}.archive-list time{flex-shrink:0;width:6.5rem;color:var(--muted);font-size:.88rem;font-family:var(--font-mono)}.archive-list a{text-decoration:none;color:var(--text);font-size:1.05rem;transition:color .22s var(--ease-out)}.archive-list a:hover{color:var(--accent)}.search-dialog{width:min(720px,calc(100vw - 2rem));padding:0;border:1px solid color-mix(in srgb,var(--line),transparent 15%);border-radius:18px;background:linear-gradient(180deg,color-mix(in srgb,var(--surface),white 8%),var(--surface)),var(--surface);color:var(--text);box-shadow:var(--shadow-soft)}.search-dialog::backdrop{background:#00000073;backdrop-filter:blur(4px)}.search-panel{padding:1.35rem}.search-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.search-head label{display:block;color:var(--text-strong);font-family:var(--font-serif);font-size:1.35rem;font-weight:700;line-height:1.2}.search-head p{margin:.2rem 0 0;color:var(--muted);font-size:.9rem}.search-panel input,.tool-input{width:100%;min-height:2.6rem;padding:.55rem .85rem;border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--text);font:inherit;outline:none;transition:border-color .26s var(--ease-out),box-shadow .26s var(--ease-out)}.search-panel input:focus,.tool-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.search-results{display:grid;gap:.7rem;margin-top:1rem;padding-top:.2rem;max-height:400px;overflow-y:auto}.search-result{display:grid;gap:.15rem;padding:.9rem 1rem;border:1px solid color-mix(in srgb,var(--line-subtle),transparent 5%);border-radius:12px;text-decoration:none;background:var(--bg);transition:border-color .26s var(--ease-out),background .26s var(--ease-out),transform .26s var(--ease-out)}.search-result:hover{border-color:var(--accent);background:var(--accent-soft);transform:translateY(-1px)}.search-result span,.empty-state{color:var(--muted)}.tool-widget{display:grid;gap:1rem;max-width:960px;margin:2rem 0;padding:1.25rem;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.tool-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.tool-label,.tool-grid label{display:grid;gap:.35rem;color:var(--muted);font-size:.92rem}.tool-output{font-family:var(--font-serif);font-size:1.35rem;font-weight:700}.ascii-results{display:grid;gap:.75rem}.ascii-card{display:grid;grid-template-columns:5rem 1fr auto auto;gap:.75rem;align-items:center;padding:.75rem;border:1px solid var(--line);border-radius:8px}.market-head{display:flex;justify-content:space-between;gap:1rem;color:var(--muted)}.site-footer{border-top:1px solid var(--line);color:var(--muted);padding:1.5rem clamp(1rem,4vw,2rem)}.site-footer p{margin:0;font-size:.92rem}.hero-decoration{position:relative;overflow:hidden}.hero-decoration:before{content:"";position:absolute;top:-30%;right:-10%;width:300px;height:300px;background:radial-gradient(circle,var(--accent-soft) 0%,transparent 70%);opacity:.5;pointer-events:none;z-index:0}.home-intro h1{position:relative;z-index:1}.article-header h1{font-size:clamp(1.8rem,4vw,2.8rem);margin-bottom:.75rem}.article-header .post-meta{margin:0}.post-hero-figure{margin:0 0 2.5rem;border-radius:12px;overflow:hidden;border:1px solid var(--line)}.post-hero-figure img{width:100%;height:auto;display:block}.post-hero-figure figcaption{padding:.75rem 1rem;text-align:center;font-size:.92rem;color:var(--muted);background:var(--surface-muted)}@media(max-width:700px){.site-header,.site-footer,.site-nav{flex-wrap:wrap}.site-header{top:0;margin-top:0;border-top:none;border-right:none;border-left:none;border-radius:0 0 16px 16px}.site-nav{order:3;width:100%;gap:1rem}.post-item{grid-template-columns:1fr;gap:.75rem;transform:none}.post-item:hover{transform:none}.post-date-badge{width:auto;text-align:left}.post-date-badge .day{display:inline;font-size:.88rem;font-weight:500}.post-date-badge .month-year{display:inline;margin-left:.25rem;margin-top:0}.post-item:before{display:none}.post-thumb{width:100%;height:8rem;order:-1;margin-bottom:.25rem}.archive-list li{flex-direction:column;gap:.2rem}.archive-list time{width:auto}.pager,.article-nav{grid-template-columns:1fr}.pager a:first-child,.article-nav a:first-child{text-align:center}.pager a:last-child,.article-nav a:last-child{text-align:center}.hero-decoration:before{width:200px;height:200px;top:-20%;right:-20%}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}
