@import "https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,400;0,6..72,500;0,6..72,600;1,6..72,400&family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600&family=Noto+Sans+TC:wght@400;500;700&family=Noto+Serif+TC:wght@500;600&display=swap";.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}:root{color-scheme:light;--bg:#faf7f1;--bg-tint:#f2ecdf;--surface:#fffdf8;--ink:#16130e;--ink-2:#4b453a;--ink-3:#857d6e;--rule:#e2dacb;--rule-strong:#c7bda8;--accent:#a2440f;--accent-hover:#86380c;--accent-soft:#f2e2d3;--accent-ink:#fff;--shadow:0 1px 0 var(--rule), 0 6px 24px -18px #16130e80;--font-display:"Newsreader", "Noto Serif TC", ui-serif, Georgia, "Times New Roman", serif;--font-sans:"IBM Plex Sans", "Noto Sans TC", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--step--1:clamp(.78rem, .75rem + .15vw, .85rem);--step-0:clamp(.98rem, .94rem + .2vw, 1.06rem);--step-1:clamp(1.15rem, 1.08rem + .35vw, 1.35rem);--step-2:clamp(1.4rem, 1.25rem + .75vw, 1.85rem);--step-3:clamp(1.75rem, 1.45rem + 1.5vw, 2.6rem);--step-4:clamp(2.3rem, 1.6rem + 3.4vw, 4.6rem);--page:74rem;--measure:40rem;--gutter:clamp(1.15rem, 4vw, 3rem);--radius:3px;--dur:.22s;--ease:cubic-bezier(.2, .6, .25, 1)}:root[data-theme=dark]{color-scheme:dark;--bg:#0d0e11;--bg-tint:#14161b;--surface:#14161b;--ink:#ece7dd;--ink-2:#b2aca1;--ink-3:#837d72;--rule:#23262d;--rule-strong:#363c46;--accent:#e08a52;--accent-hover:#f0a06c;--accent-soft:#2a1d14;--accent-ink:#16130e;--shadow:0 1px 0 var(--rule), 0 8px 30px -20px #000000e6}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:6rem}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:var(--step-0);font-feature-settings:"kern", "liga";text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;flex-direction:column;min-height:100dvh;line-height:1.65;display:flex;overflow-x:hidden}img,svg,video{max-width:100%;height:auto;display:block}input,button,textarea,select{font:inherit;color:inherit}::selection{background:var(--accent);color:var(--accent-ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:1px}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.012em;text-wrap:balance;font-weight:500;line-height:1.15}:lang(zh-Hant-TW) h1,:lang(zh-Hant-TW) h2,:lang(zh-Hant-TW) h3{letter-spacing:0}p,li{text-wrap:pretty}a{color:inherit;text-decoration:none}.link,.prose a{color:var(--ink);background-image:linear-gradient(var(--accent), var(--accent));transition:background-size var(--dur) var(--ease), color var(--dur) var(--ease);background-position:0 100%;background-repeat:no-repeat;background-size:100% 1px;padding-bottom:1px}.link:hover,.prose a:hover{color:var(--accent);background-size:100% 2px}.mono{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.02em}.label{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);font-size:.7rem}.muted{color:var(--ink-2)}.skip-link{z-index:100;background:var(--accent);color:var(--accent-ink);font-family:var(--font-mono);font-size:var(--step--1);padding:.6rem 1rem;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}.wrap{width:100%;max-width:var(--page);padding-inline:var(--gutter);margin-inline:auto}main{flex:1 0 auto;padding-bottom:clamp(4rem,10vw,8rem)}.stack>*+*{margin-block-start:var(--flow,1rem)}.section{margin-block-start:clamp(3.5rem,9vw,6.5rem)}.section-head{border-block-end:1px solid var(--rule-strong);align-items:baseline;gap:.9rem;margin-block-end:1.75rem;padding-block-end:.6rem;display:flex}.section-head .no{font-family:var(--font-mono);letter-spacing:.1em;color:var(--accent);flex:none;padding-block-start:.2rem;font-size:.72rem}.section-head h2{font-size:var(--step-2);flex:none}.section-head .rule{flex:auto}.section-head .more{font-family:var(--font-mono);font-size:var(--step--1);color:var(--ink-3);transition:color var(--dur) var(--ease);flex:none}.section-head .more:hover{color:var(--accent)}.section-head .more:after{content:" →"}.site-header{z-index:40;background:color-mix(in oklab, var(--bg) 88%, transparent);backdrop-filter:blur(10px)saturate(1.2);border-block-end:1px solid var(--rule);position:sticky;top:0}.site-header .bar{align-items:center;gap:1rem;min-height:3.75rem;display:flex}.brand{align-items:center;gap:.55rem;margin-inline-end:auto;padding:.25rem 0;display:inline-flex}.brand-chip{color:inherit;cursor:pointer;background:0 0;border:0;align-items:center;padding:0;display:inline-flex}.brand-name{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.08em;color:var(--ink);transition:color var(--dur) var(--ease)}.brand-name:hover{color:var(--accent)}.brand .chip{width:15px;height:15px;color:var(--accent);flex:none}.brand-chip:hover .chip{animation:pulse 1.1s var(--ease) infinite}@keyframes pulse{50%{opacity:.35}}.nav{align-items:center;gap:clamp(.65rem,2vw,1.4rem);display:flex}.nav a{font-family:var(--font-mono);font-size:var(--step--1);color:var(--ink-2);transition:color var(--dur) var(--ease);white-space:nowrap;padding:.35rem 0;position:relative}.nav a:hover{color:var(--ink)}.nav a[aria-current=page]{color:var(--accent)}.nav a[aria-current=page]:before{content:"";inset-inline:0;background:var(--accent);height:1.5px;position:absolute;bottom:-.15rem}.toolbar{border-inline-start:1px solid var(--rule);align-items:center;gap:.35rem;margin-inline-start:.25rem;padding-inline-start:.5rem;display:flex}.tool-btn{border-radius:var(--radius);cursor:pointer;color:var(--ink-3);font-family:var(--font-mono);font-size:var(--step--1);transition:color var(--dur) var(--ease), border-color var(--dur) var(--ease), background var(--dur) var(--ease);background:0 0;border:1px solid #0000;align-items:center;gap:.3rem;padding:.4rem .45rem;line-height:1;display:inline-flex}.tool-btn:hover{color:var(--ink);border-color:var(--rule-strong);background:var(--bg-tint)}.tool-btn[aria-pressed=true],.tool-btn.is-on{color:var(--accent)}@media (width<=46rem){.nav a.is-secondary{display:none}}.hero{padding-block:clamp(2.5rem,7vw,5rem) 0;position:relative}.hero+.wrap>.section:first-child{margin-block-start:clamp(2.5rem,7vw,4.5rem)}.hero-grid{grid-template-columns:1fr;align-items:start;gap:clamp(1.75rem,5vw,3.5rem);display:grid}@media (width>=62rem){.hero-grid{grid-template-columns:minmax(0,1.4fr) minmax(15rem,.72fr);grid-template-areas:"main side""spec side";gap:clamp(1.9rem,4vw,2.6rem) clamp(1.75rem,5vw,3.5rem)}.hero-main{grid-area:main}.hero-side{grid-area:side}.hero-spec{grid-area:spec}.hero-grid.no-portrait{grid-template-columns:minmax(0,1fr);grid-template-areas:"main""spec"}}.hero-spec .spec{max-width:30rem}.hero h1{font-size:var(--step-4);letter-spacing:-.03em;font-weight:500;line-height:.98}.hero h1 .alt{letter-spacing:.01em;color:var(--ink-2);margin-block-start:.35em;font-size:.42em;display:block}.hero .tagline{font-family:var(--font-display);font-size:var(--step-2);color:var(--ink-2);max-width:22ch;margin-block-start:1.1rem;font-style:italic}:lang(zh-Hant-TW) .hero .tagline{max-width:20ch;font-style:normal}.hero .intro{max-width:46ch;color:var(--ink-2);margin-block-start:1.5rem}.hero .caret{background:var(--accent);vertical-align:-.16em;width:.5em;height:1.05em;margin-inline-start:.15em;animation:1.15s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.hero-side{align-content:start;gap:clamp(1rem,2.5vw,1.5rem);display:grid}.portrait{border:1px solid var(--rule-strong);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);margin:0;overflow:hidden}.portrait-title{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);border-block-end:1px solid var(--rule);background:var(--bg-tint);justify-content:space-between;gap:1rem;padding:.7rem 1rem;font-size:.68rem;display:flex}.portrait-frame{padding:.75rem;position:relative}.portrait-frame img{aspect-ratio:3/4;object-fit:cover;border-radius:var(--radius);background:var(--bg-tint);width:100%;display:block}.portrait-frame:before,.portrait-frame:after{content:"";border:1px solid var(--accent);opacity:.45;pointer-events:none;width:11px;height:11px;position:absolute}.portrait-frame:before{border-bottom:0;border-right:0;top:4px;left:4px}.portrait-frame:after{border-top:0;border-left:0;bottom:4px;right:4px}@media (width<=61.99rem){.portrait{max-width:19rem}}.spec{border:1px solid var(--rule-strong);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);position:relative;overflow:hidden}.spec:before{content:"";background:var(--accent);opacity:.75;border-radius:50%;width:6px;height:6px;position:absolute;top:8px;left:8px}.spec-title{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);border-block-end:1px solid var(--rule);background:var(--bg-tint);justify-content:space-between;gap:1rem;padding:.7rem 1rem .7rem 1.6rem;font-size:.68rem;display:flex}.spec dl{grid-template-columns:minmax(6.5rem,auto) 1fr;display:grid}.spec dt,.spec dd{font-family:var(--font-mono);font-size:var(--step--1);border-block-end:1px dotted var(--rule);padding:.6rem 1rem}.spec dt{color:var(--ink-3);letter-spacing:.06em;border-inline-end:1px solid var(--rule);background:color-mix(in oklab, var(--bg-tint) 45%, transparent)}.spec dd{color:var(--ink)}.spec dl>:nth-last-child(-n+2){border-block-end:0}.traces{z-index:-1;pointer-events:none;position:absolute;inset:0;overflow:hidden;mask-image:linear-gradient(#000 55%,#0000)}.traces svg{width:100%;height:100%;position:absolute;inset:0}.traces path{fill:none;stroke:var(--accent);stroke-width:1px;opacity:.11;stroke-dasharray:1400;stroke-dashoffset:1400px;animation:draw 2.6s var(--ease) forwards}.traces path:nth-child(2){animation-delay:.18s}.traces path:nth-child(3){animation-delay:.36s}.traces circle{fill:var(--accent);opacity:.22}@keyframes draw{to{stroke-dashoffset:0}}@media (prefers-reduced-motion:reduce){.traces path{stroke-dashoffset:0}}.now-list{max-width:var(--measure);gap:.9rem;padding:0;list-style:none;display:grid}.now-list li{color:var(--ink-2);grid-template-columns:1.25rem 1fr;gap:.65rem;display:grid}.now-list li:before{content:"▸";color:var(--accent);font-family:var(--font-mono);line-height:1.65}.cards{background:var(--rule);border:1px solid var(--rule);border-radius:var(--radius);grid-template-columns:1fr;gap:1px;display:grid;overflow:hidden}@media (width>=48rem){.cards.two{grid-template-columns:repeat(2,1fr)}}.card{background:var(--bg);transition:background var(--dur) var(--ease);flex-direction:column;gap:.6rem;padding:1.4rem 1.5rem 1.5rem;display:flex;position:relative}.card:hover{background:var(--surface)}.card:hover .card-title{color:var(--accent)}.card-meta{font-family:var(--font-mono);letter-spacing:.06em;color:var(--ink-3);flex-wrap:wrap;gap:.5rem .9rem;font-size:.72rem;display:flex}.card-title{font-family:var(--font-display);font-size:var(--step-1);transition:color var(--dur) var(--ease);font-weight:500;line-height:1.2}.card p{color:var(--ink-2);font-size:var(--step-0)}.card .stretch:after{content:"";position:absolute;inset:0}.tags{flex-wrap:wrap;gap:.35rem;margin-block-start:auto;padding:0;padding-block-start:.6rem;list-style:none;display:flex}.tag{font-family:var(--font-mono);letter-spacing:.04em;color:var(--ink-2);border:1px solid var(--rule-strong);border-radius:var(--radius);background:var(--bg-tint);padding:.1rem .45rem;font-size:.68rem}.log{border-inline-start:1px solid var(--rule-strong);margin-inline-start:.4rem;padding:0;list-style:none}.log>li{padding:0 0 2rem 1.75rem;position:relative}.log>li:before{content:"";background:var(--bg);border:1.5px solid var(--rule-strong);border-radius:50%;width:8px;height:8px;position:absolute;top:.62em;left:-4.5px}.log>li.is-highlight:before{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.log-date{font-family:var(--font-mono);letter-spacing:.1em;color:var(--ink-3);margin-block-end:.2rem;font-size:.72rem;display:block}.log-title{font-family:var(--font-display);font-size:var(--step-1);font-weight:500;display:inline}.log-result{font-family:var(--font-mono);letter-spacing:.06em;border:1px solid var(--accent);color:var(--accent);border-radius:var(--radius);vertical-align:.15em;white-space:nowrap;align-items:center;margin-inline-start:.6rem;padding:.05rem .4rem;font-size:.7rem;display:inline-flex}.log-result.is-plain{border-color:var(--rule-strong);color:var(--ink-3)}.log-body{color:var(--ink-2);max-width:var(--measure);margin-block-start:.45rem}.log-fields{font-family:var(--font-mono);font-size:var(--step--1);color:var(--ink-3);flex-wrap:wrap;gap:.25rem 1.1rem;margin-block-start:.5rem;display:flex}.log-fields b{color:var(--ink-3);opacity:.75;font-weight:400}.log-fields span{color:var(--ink-2)}.post-list{padding:0;list-style:none}.post-list li{border-block-end:1px solid var(--rule)}.post-list a{transition:padding-inline-start var(--dur) var(--ease), background var(--dur) var(--ease);grid-template-columns:1fr;gap:.15rem 1.5rem;padding:1.15rem .4rem 1.2rem 0;display:grid}@media (width>=40rem){.post-list a{grid-template-columns:7.5rem 1fr;align-items:baseline}}.post-list a:hover{background:linear-gradient(90deg, var(--accent-soft), transparent 70%);padding-inline-start:.7rem}.post-list a:hover .post-title{color:var(--accent)}.post-date{font-family:var(--font-mono);letter-spacing:.08em;color:var(--ink-3);padding-block-start:.3em;font-size:.72rem}.post-title{font-family:var(--font-display);font-size:var(--step-1);transition:color var(--dur) var(--ease);font-weight:500;line-height:1.25;display:block}.post-summary{color:var(--ink-2);font-size:var(--step-0);max-width:var(--measure);margin-block-start:.3rem;display:block}@media (width>=40rem){.post-summary,.post-list .tags{grid-column:2}}.repos{border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface);font-family:var(--font-mono);overflow:hidden}.repos-head{border-block-end:1px solid var(--rule);background:var(--bg-tint);letter-spacing:.1em;color:var(--ink-3);align-items:center;gap:.5rem;padding:.6rem 1rem;font-size:.7rem;display:flex}.repos-head .dot{background:var(--rule-strong);border-radius:50%;flex:none;width:8px;height:8px}.repo{border-block-end:1px dotted var(--rule);transition:background var(--dur) var(--ease);grid-template-columns:1fr;gap:.15rem 1rem;padding:.85rem 1rem;display:grid}.repo:last-child{border-block-end:0}.repo:hover{background:var(--bg-tint)}.repo:hover .repo-name{color:var(--accent)}.repo-name{font-size:var(--step-0);transition:color var(--dur) var(--ease);font-weight:500}.repo-name:before{content:"/";color:var(--ink-3);margin-inline-end:.15em}.repo-desc{font-family:var(--font-sans);font-size:var(--step--1);color:var(--ink-2)}.repo-meta{color:var(--ink-3);flex-wrap:wrap;align-items:center;gap:.35rem 1rem;margin-block-start:.3rem;font-size:.7rem;display:flex}.lang-dot{vertical-align:-.05em;background:var(--rule-strong);border-radius:50%;width:8px;height:8px;margin-inline-end:.35em;display:inline-block}.timeline{padding:0;list-style:none}.timeline>li{border-block-end:1px solid var(--rule);grid-template-columns:1fr;gap:.3rem 2rem;padding-block:1.5rem;display:grid}@media (width>=46rem){.timeline>li{grid-template-columns:11rem 1fr}}.timeline .when{font-family:var(--font-mono);font-size:var(--step--1);color:var(--ink-3);letter-spacing:.04em;align-items:baseline;gap:.5rem;display:flex}.timeline .kind{background:var(--rule-strong);border-radius:1px;flex:none;width:7px;height:7px;transform:rotate(45deg)translateY(-.15em)}.timeline .kind[data-kind=research]{background:var(--accent)}.timeline .kind[data-kind=education]{background:var(--ink-2)}.timeline .kind[data-kind=work]{background:var(--rule-strong)}.timeline h3{font-size:var(--step-1)}.timeline .org{font-size:var(--step--1);color:var(--ink-3);font-family:var(--font-mono);margin-block-start:.15rem}.timeline p{color:var(--ink-2);max-width:var(--measure);margin-block-start:.5rem}.page-head{border-block-end:1px solid var(--rule-strong);margin-block-end:2.5rem;padding-block:clamp(2.5rem,7vw,4.5rem) 1.5rem}.page-head h1{font-size:var(--step-3);max-width:22ch}.page-head .lede{color:var(--ink-2);max-width:var(--measure);font-size:var(--step-1);font-family:var(--font-display);margin-block-start:.8rem}:lang(zh-Hant-TW) .page-head .lede{font-family:var(--font-sans);font-size:var(--step-0)}.prose{max-width:var(--measure);font-size:var(--step-0)}.prose>*+*{margin-block-start:1.3em}.prose h2{font-size:var(--step-2);border-block-end:1px solid var(--rule);margin-block-start:2.4em;padding-block-end:.25em}.prose h3{font-size:var(--step-1);margin-block-start:1.9em}.prose ul,.prose ol{padding-inline-start:1.3em}.prose li+li{margin-block-start:.45em}.prose blockquote{border-inline-start:2px solid var(--accent);color:var(--ink-2);font-family:var(--font-display);font-size:var(--step-1);padding-inline-start:1.15em}:lang(zh-Hant-TW) .prose blockquote{font-family:var(--font-sans);font-size:var(--step-0)}.prose code{font-family:var(--font-mono);background:var(--bg-tint);border:1px solid var(--rule);border-radius:var(--radius);padding:.08em .35em;font-size:.875em}.prose pre{border:1px solid var(--rule-strong);border-radius:var(--radius);font-size:var(--step--1);padding:1rem 1.15rem;line-height:1.6;overflow-x:auto}.prose pre code{font-size:inherit;background:0 0;border:0;padding:0}.prose img{border:1px solid var(--rule);border-radius:var(--radius);width:100%}.prose hr{border:0;border-block-start:1px solid var(--rule);margin-block:2.5em}.prose table{border-collapse:collapse;width:100%;font-size:var(--step--1);display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--rule);text-align:start;padding:.5rem .7rem}.prose th{background:var(--bg-tint);font-family:var(--font-mono);font-weight:500}.prose :is(h2,h3,h4){scroll-margin-top:5rem}.prose .heading-anchor{color:var(--accent);font-family:var(--font-mono);opacity:0;transition:opacity var(--dur) var(--ease);margin-inline-start:.4em;font-weight:400}.prose :is(h2,h3,h4):hover .heading-anchor{opacity:1}@media (hover:none){.prose .heading-anchor{opacity:.35}}.callout{border:1px solid var(--rule);border-inline-start:3px solid var(--rule-strong);border-radius:var(--radius);background:var(--bg-tint);font-size:var(--step--1);padding:.9rem 1.1rem}.callout>*+*{margin-block-start:.7em}.callout>:last-child{margin-block-end:0}.callout-title{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);font-size:.68rem}.callout-warning,.callout-danger{border-inline-start-color:var(--accent)}.callout-warning .callout-title,.callout-danger .callout-title{color:var(--accent)}.callout-danger{border-inline-start-width:5px}.code-block{border:1px solid var(--rule-strong);border-radius:var(--radius);overflow:hidden}.code-block pre.astro-code{border:0;border-radius:0;margin:0}.code-bar{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;background:var(--bg-tint);border-block-end:1px solid var(--rule);align-items:center;gap:.4rem;padding:.4rem .6rem;font-size:.65rem;display:flex}.code-lang{color:var(--ink-3)}.code-copy{font:inherit;letter-spacing:inherit;text-transform:inherit;color:var(--ink-3);background:var(--bg);border:1px solid var(--rule);border-radius:var(--radius);cursor:pointer;transition:color var(--dur) var(--ease), border-color var(--dur) var(--ease);margin-inline-start:auto;padding:.2rem .45rem}.code-copy:hover{color:var(--ink);border-color:var(--rule-strong)}.code-copy.is-done{color:var(--accent);border-color:var(--accent)}.prose ul:has(>.task-list-item){padding-inline-start:0;list-style:none}.prose .task-list-item{align-items:baseline;gap:.55em;display:flex}.prose .task-list-item input{accent-color:var(--accent);translate:0 .1em}.prose .footnotes{border-block-start:1px solid var(--rule);font-size:var(--step--1);color:var(--ink-2);margin-block-start:3em;padding-block-start:1.2em}.prose .footnotes h2{font-size:var(--step-0);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;border:0;margin-block-start:0}.prose sup a{color:var(--accent);font-family:var(--font-mono)}.prose kbd{font-family:var(--font-mono);border:1px solid var(--rule-strong);border-radius:var(--radius);background:var(--bg-tint);border-block-end-width:2px;padding:.1em .4em;font-size:.8em}.astro-code,.astro-code span{color:var(--shiki-light)!important;background-color:var(--shiki-light-bg)!important}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}.btn-row{flex-wrap:wrap;gap:.6rem;margin-block-start:1.5rem;display:flex}.btn{font-family:var(--font-mono);font-size:var(--step--1);border:1px solid var(--rule-strong);border-radius:var(--radius);background:var(--bg);cursor:pointer;transition:all var(--dur) var(--ease);align-items:center;gap:.4rem;padding:.45rem .85rem;display:inline-flex}.btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--accent-ink)}.note{border:1px dashed var(--rule-strong);border-radius:var(--radius);color:var(--ink-2);font-size:var(--step--1);background:var(--bg-tint);padding:.8rem 1rem}.empty{border:1px dashed var(--rule-strong);border-radius:var(--radius);text-align:center;color:var(--ink-3);font-family:var(--font-mono);font-size:var(--step--1);padding:2.5rem 1.5rem}.site-footer{border-block-start:1px solid var(--rule);font-size:var(--step--1);color:var(--ink-3);margin-block-start:auto;padding-block:2.5rem 3.5rem}.site-footer .rows{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem 2rem;display:flex}.site-footer .links{font-family:var(--font-mono);flex-wrap:wrap;gap:.4rem 1.2rem;display:flex}.site-footer a:hover{color:var(--accent)}.site-footer .admin-link{border-inline-start:1px solid var(--rule);opacity:.65;transition:opacity var(--dur) var(--ease), color var(--dur) var(--ease);padding-inline-start:1.2rem}.site-footer .admin-link:hover{opacity:1}.site-footer .sig{font-family:var(--font-mono);opacity:.7;letter-spacing:.04em;margin-block-start:1.75rem;font-size:.7rem}:root[data-probe=on] [data-probe-label]{outline:1px dashed color-mix(in oklab, var(--accent) 55%, transparent);outline-offset:4px;position:relative}:root[data-probe=on] [data-probe-label]:after{content:attr(data-probe-label);top:-.6rem;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent-ink);background:var(--accent);pointer-events:none;z-index:30;white-space:nowrap;border-radius:2px;padding:.1rem .35rem;font-size:.6rem;position:absolute;inset-inline-start:0;transform:translateY(-100%)}:root[data-crt=on]{--bg:#04120a;--bg-tint:#071c0f;--surface:#061a0d;--ink:#7dfcae;--ink-2:#4fd489;--ink-3:#2f9c63;--rule:#0f3d24;--rule-strong:#1c6b3f;--accent:#c6ff6b;--accent-hover:#dcff9a;--accent-soft:#0d2e18;--accent-ink:#04120a;color-scheme:dark}:root[data-crt=on] body{font-family:var(--font-mono);text-shadow:0 0 6px color-mix(in oklab, var(--ink) 45%, transparent)}:root[data-crt=on] h1,:root[data-crt=on] h2,:root[data-crt=on] h3,:root[data-crt=on] .card-title,:root[data-crt=on] .post-title,:root[data-crt=on] .log-title{font-family:var(--font-mono);letter-spacing:0}:root[data-crt=on] body:after{content:"";pointer-events:none;z-index:999;background:repeating-linear-gradient(#00000029 0 1px,#0000 1px 3px);position:fixed;inset:0}@media print{.site-header,.site-footer,.traces,.toolbar{display:none!important}body{color:#000;background:#fff}.prose a:after{content:" (" attr(href) ")";color:#555;font-size:.8em}}
