:root{--bg: #f8f5ef;--bg-2: #f1ece2;--surface: #fffdf9;--text: #22201c;--muted: #6f6a61;--faint: #a29b8f;--border: #e7e0d3;--accent: #b4532a;--accent-ink: #fff;--accent-soft: #f5e6dc;--code-bg: #f3efe7;--shadow: 0 1px 2px rgb(60 40 20 / .05), 0 8px 24px -8px rgb(60 40 20 / .1);--shadow-lg: 0 24px 64px -16px rgb(40 25 10 / .3);--tint-l: 94%;--tint-c: .035;--ink-l: 48%;--sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;--serif: "Noto Serif SC", "Songti SC", "Source Han Serif SC", serif;--mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #141413;--bg-2: #1b1a18;--surface: #1d1c1a;--text: #ebe7df;--muted: #a39d92;--faint: #6f6a61;--border: #2e2c28;--accent: #e8895e;--accent-ink: #1a120d;--accent-soft: #3a2a21;--code-bg: #1a1918;--shadow: 0 0 0 1px rgb(255 255 255 / .02);--shadow-lg: 0 24px 64px -12px rgb(0 0 0 / .7);--tint-l: 28%;--tint-c: .05;--ink-l: 78%;color-scheme:dark}}:root[data-theme=dark]{--bg: #141413;--bg-2: #1b1a18;--surface: #1d1c1a;--text: #ebe7df;--muted: #a39d92;--faint: #6f6a61;--border: #2e2c28;--accent: #e8895e;--accent-ink: #1a120d;--accent-soft: #3a2a21;--code-bg: #1a1918;--shadow: 0 0 0 1px rgb(255 255 255 / .02);--shadow-lg: 0 24px 64px -12px rgb(0 0 0 / .7);--tint-l: 28%;--tint-c: .05;--ink-l: 78%;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.8 var(--sans);-webkit-font-smoothing:antialiased;min-height:100vh;display:flex;flex-direction:column}body.no-scroll{overflow:hidden}main{flex:1}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}::selection{background:color-mix(in srgb,var(--accent) 30%,transparent)}.wrap{max-width:1120px;margin:0 auto;padding:0 16px}.narrow{max-width:820px}kbd{font:600 .72rem/1 var(--mono);padding:3px 5px;border-radius:5px;color:var(--muted);border:1px solid var(--border);border-bottom-width:2px;background:var(--surface)}button{font:inherit;color:inherit}[style*=--h]{--cat: oklch(var(--ink-l) .13 var(--h));--cat-soft: oklch(var(--tint-l) var(--tint-c) var(--h))}#progress{position:fixed;inset:0 0 auto;height:3px;z-index:30;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--accent),color-mix(in srgb,var(--accent) 50%,#f2b33d))}.site-header{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(1.4) blur(12px);-webkit-backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid color-mix(in srgb,var(--border) 70%,transparent)}.header-inner{display:flex;align-items:center;justify-content:space-between;height:62px;gap:12px}.brand{display:flex;align-items:center;gap:10px;font:900 1.2rem var(--serif);color:var(--text);letter-spacing:.06em;white-space:nowrap}.brand:hover{text-decoration:none}.brand-mark{display:block;width:32px;height:32px;flex:none}.brand-mark svg{display:block;width:100%;height:100%}nav{display:flex;align-items:center;gap:2px}nav>a{color:var(--muted);padding:6px 10px;border-radius:8px;font-size:.94rem;white-space:nowrap}nav>a:hover,nav>a.active{color:var(--text);background:var(--bg-2);text-decoration:none}.icon-btn{display:inline-flex;align-items:center;gap:8px;background:none;border:0;color:var(--muted);cursor:pointer;padding:7px;border-radius:8px}.icon-btn:hover{color:var(--text);background:var(--bg-2)}.search-trigger{border:1px solid var(--border);background:var(--surface);padding:5px 6px 5px 10px;margin:0 6px;font-size:.88rem}.search-trigger .label{margin-right:18px}#theme-toggle .sun{display:none}:root[data-theme=dark] #theme-toggle .sun{display:block}:root[data-theme=dark] #theme-toggle .moon{display:none}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) #theme-toggle .sun{display:block}:root:not([data-theme=light]) #theme-toggle .moon{display:none}}@media(max-width:640px){.search-trigger .label,.search-trigger kbd{display:none}.search-trigger{border:0;background:none;padding:7px;margin:0}nav>a{padding:6px 7px}.brand{font-size:1.05rem}}@media(max-width:430px){.header-inner{gap:6px}.brand{gap:8px;letter-spacing:.02em}.brand-mark{width:28px;height:28px}nav>a{padding:6px 5px}nav .icon-btn{padding:6px 5px}:lang(en) .brand{font-size:.95rem;letter-spacing:0}}@media(max-width:360px){:lang(en) .brand-name{display:none}}.site-footer{border-top:1px solid var(--border);color:var(--muted);font-size:.85rem;padding:28px 0 36px;margin-top:80px;text-align:center}.site-footer p{margin:4px 0}.site-footer .hint{color:var(--faint)}.site-footer .hint kbd{margin:0 2px}@media(hover:none){.site-footer .hint{display:none}}.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border-radius:10px;cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:.95rem;font-weight:500;box-shadow:var(--shadow);transition:transform .15s,box-shadow .15s}.btn:hover{transform:translateY(-1px);text-decoration:none}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:transparent}.btn.primary kbd{background:#ffffff2e;color:inherit;border-color:#ffffff40}.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--border)}.hero-bg{position:absolute;inset:0;pointer-events:none;background:radial-gradient(600px 300px at 85% 10%,color-mix(in srgb,var(--accent) 16%,transparent),transparent 70%),radial-gradient(500px 300px at 5% 100%,color-mix(in srgb,#3c7bd9 10%,transparent),transparent 70%)}.hero-bg:after{content:"";position:absolute;inset:0;opacity:.5;background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);background-size:44px 44px;mask-image:radial-gradient(ellipse at 70% 30%,#000 10%,transparent 65%);-webkit-mask-image:radial-gradient(ellipse at 70% 30%,#000 10%,transparent 65%)}.hero-inner{position:relative;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:48px;align-items:center;padding-top:80px;padding-bottom:72px}@media(min-width:861px){.hero-inner:has(.pinned-card){grid-template-columns:minmax(0,1fr) minmax(0,1.12fr)}.hero-inner:has(.pinned-card) h1:lang(en){font-size:clamp(2.4rem,4.4vw,3.6rem);white-space:nowrap}}@media(max-width:860px){.hero-inner{grid-template-columns:minmax(0,1fr);padding-top:48px;padding-bottom:48px;gap:32px}}.eyebrow{margin:0 0 14px;font-size:.8rem;letter-spacing:.18em;color:var(--accent);font-weight:600;text-transform:uppercase}.hero h1{font:900 clamp(2.6rem,8vw,4.2rem)/1.1 var(--serif);margin:0 0 18px;letter-spacing:.04em}.lead{color:var(--muted);font-size:1.12rem;margin:0;max-width:32em}.hero-actions{display:flex;gap:12px;margin-top:28px;flex-wrap:wrap}.stats{display:flex;gap:36px;margin-top:40px;flex-wrap:wrap}.stats div{display:flex;flex-direction:column}.stats b{font:900 2rem/1.1 var(--serif);font-variant-numeric:tabular-nums}.stats span{color:var(--muted);font-size:.85rem}.pick-card{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:22px 24px 24px;box-shadow:var(--shadow-lg);transform:rotate(1deg);transition:transform .3s}.pick-card:hover{transform:rotate(0) translateY(-2px)}.pinned-link{display:block;color:var(--text)}.pinned-link:hover{text-decoration:none}.pinned-link:hover .pick-title{color:var(--accent)}.latest-item{display:flex;flex-direction:column;gap:8px;margin:56px 0;padding:22px 26px;border-radius:16px;color:var(--text);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);transition:border-color .2s,transform .2s;--cat: oklch(var(--ink-l) .13 var(--h))}.latest-item:hover{text-decoration:none;transform:translateY(-2px);border-color:color-mix(in srgb,var(--cat) 45%,var(--border))}.latest-item .pick-label{margin-bottom:4px}.latest-meta{font-size:.82rem;color:var(--cat);font-weight:600}.latest-meta time{color:var(--faint);font-weight:500}.latest-title{font:900 1.45rem/1.4 var(--serif);transition:color .15s}.latest-item:hover .latest-title{color:var(--accent)}.latest-ex{color:var(--muted);font-size:.92rem;line-height:1.7;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.latest-min{font-size:.85rem;color:var(--muted);margin-top:4px}.latest-item.is-read .latest-title{color:var(--muted)}.pick-label{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;color:var(--faint);letter-spacing:.12em;margin-bottom:12px}.pick-cat{font-size:.8rem;color:var(--accent);font-weight:600}.pick-title{display:block;font:900 1.5rem/1.35 var(--serif);margin:6px 0 10px;transition:color .15s}.pick-ex{color:var(--muted);font-size:.92rem;line-height:1.7;margin:0 0 16px;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.pick-min{font-size:.85rem;color:var(--muted)}.continue{margin-top:32px}.continue a{display:grid;grid-template-columns:auto minmax(0,1fr) 120px auto;align-items:center;gap:20px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:14px 20px;color:var(--text);box-shadow:var(--shadow)}.continue a:hover{text-decoration:none;border-color:var(--accent)}.c-label{font-size:.78rem;font-weight:700;color:var(--accent-ink);background:var(--accent);padding:3px 9px;border-radius:6px;white-space:nowrap}.c-main{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c-cat{color:var(--muted);font-size:.85rem;margin-right:10px}.c-bar{height:6px;border-radius:3px;background:var(--bg-2);position:relative;overflow:hidden}.c-bar:after{content:"";position:absolute;inset:0;width:var(--p, 0%);background:var(--accent);border-radius:3px}.c-go{color:var(--accent)}@media(max-width:560px){.continue a{grid-template-columns:auto minmax(0,1fr) auto}.c-bar{display:none}}.section-title{display:flex;align-items:center;gap:12px;font:900 1.4rem var(--serif);margin:56px 0 20px}.section-title:after{content:"";flex:1;height:1px;background:var(--border)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:16px}.card{position:relative;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:22px;color:var(--text);box-shadow:var(--shadow);overflow:hidden;transition:border-color .2s,transform .2s,box-shadow .2s}.card:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:var(--cat);opacity:0;transition:opacity .2s}.card:hover{border-color:color-mix(in srgb,var(--cat) 45%,var(--border));text-decoration:none;transform:translateY(-3px);box-shadow:var(--shadow-lg)}.card:hover:before{opacity:1}.card-top{display:flex;align-items:center;gap:14px;margin-bottom:12px}.card h3{margin:0;font-size:1.12rem}.card p{margin:0 0 18px;color:var(--muted);font-size:.92rem;line-height:1.65;flex:1}.badge{display:inline-grid;place-items:center;flex:none;width:40px;height:40px;border-radius:11px;background:var(--cat-soft);color:var(--cat);font:900 1.15rem var(--serif)}.badge.big{width:52px;height:52px;font-size:1.5rem;border-radius:14px}.progress{display:flex;align-items:center;gap:12px}.progress-track{flex:1;height:5px;border-radius:3px;background:var(--bg-2);overflow:hidden}.progress-fill{height:100%;width:var(--p, 0%);background:var(--cat, var(--accent));border-radius:3px;transition:width .6s ease}.progress-label{font-size:.8rem;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.page-head{padding:48px 0 8px}.page-head h1{font:900 2.2rem/1.3 var(--serif);margin:6px 0 8px;display:flex;align-items:center;gap:16px}.page-head p{color:var(--muted);margin:0}.page-head .sub{font-size:.88rem;color:var(--faint);margin:4px 0 20px}.cat-head{padding-bottom:12px}.cat-head .progress{max-width:420px}.btn.start{margin-top:24px}.crumbs{font-size:.88rem;color:var(--muted);display:flex;align-items:center;gap:12px;flex-wrap:wrap}.crumbs a{color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;font-size:.88rem;background:var(--cat-soft);color:var(--cat)}.chip span{opacity:.7;font-size:.8rem}.chip:hover{text-decoration:none;filter:brightness(.97)}.cat-section{scroll-margin-top:80px}.cat-title{display:flex;align-items:center;gap:12px;font-size:1.3rem;margin:56px 0 12px}.cat-title a{color:var(--text)}.cat-section .progress{max-width:360px}.post-list{list-style:none;padding:0;margin:24px 0 0}.post-list li{border-bottom:1px solid var(--border)}.post-list a{display:flex;gap:16px;align-items:baseline;padding:14px 10px;color:var(--text);border-radius:10px;transition:background .15s}.post-list a:hover{text-decoration:none;background:var(--surface)}.post-list .num{color:var(--faint);font:600 .82rem var(--mono);min-width:2em}.post-list .t{flex:1;min-width:0;font-weight:500}.post-list .t small{display:block;font-weight:400;color:var(--muted);font-size:.86rem;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.post-list .rt{color:var(--faint);font-size:.8rem;white-space:nowrap}.post-list .check{width:20px;height:20px;flex:none;align-self:center;border-radius:50%;display:grid;place-items:center;font-size:.7rem;border:1.5px solid var(--border);color:transparent}.post-list li.is-read .check{background:var(--cat, var(--accent));border-color:transparent;color:#fff}.post-list li.is-read .t{color:var(--muted)}.tag{display:inline-block;font-size:.72rem;padding:0 7px;border-radius:5px;background:var(--accent-soft);color:var(--accent);margin-left:8px;vertical-align:2px;font-weight:500;line-height:1.7}@media(max-width:560px){.post-list .rt{display:none}}.post-layout{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:64px;padding-top:44px}@media(max-width:1000px){.post-layout{grid-template-columns:minmax(0,1fr)}}article{max-width:760px}.post-head{padding-bottom:28px;margin-bottom:8px;border-bottom:1px solid var(--border)}.cat-pill{background:var(--cat-soft);color:var(--cat)!important;padding:2px 12px;border-radius:999px;font-weight:600;font-size:.82rem}.cat-pill:hover{text-decoration:none}.post-title{font:900 clamp(1.9rem,5.5vw,2.7rem)/1.3 var(--serif);margin:16px 0;letter-spacing:.02em}.post-meta{display:flex;align-items:center;gap:16px;color:var(--muted);font-size:.88rem;flex-wrap:wrap}.post-actions{margin-left:auto;display:flex;align-items:center;gap:8px}.mark-read{background:none;border:1px solid var(--border);border-radius:999px;padding:3px 12px;cursor:pointer;color:var(--muted);font-size:.82rem;transition:all .2s}.mark-read:hover{border-color:var(--cat);color:var(--cat)}.mark-read.done{background:var(--cat);border-color:transparent;color:#fff}.share-menu{position:relative;font-size:.82rem}.share-menu summary{list-style:none;display:inline-flex;align-items:center;gap:6px;cursor:pointer;user-select:none;border:1px solid var(--border);border-radius:999px;padding:3px 12px;color:var(--muted);transition:all .2s}.share-menu summary::-webkit-details-marker{display:none}.share-menu summary:hover,.share-menu[open] summary{border-color:var(--cat, var(--accent));color:var(--cat, var(--accent))}.share-menu ul{position:absolute;right:0;top:calc(100% + 6px);z-index:30;list-style:none;margin:0;padding:6px;min-width:170px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-lg)}.share-menu li a,.share-menu li button{display:flex;align-items:center;gap:10px;width:100%;padding:8px 12px;border:0;border-radius:8px;background:none;color:var(--text);font:inherit;font-size:.92rem;text-align:left;cursor:pointer}.share-menu li a:hover,.share-menu li button:hover{background:var(--bg-2);text-decoration:none}.share-menu li a svg,.share-menu li button svg{flex:none;color:var(--muted)}.share-menu [data-wechat][aria-expanded=true]{background:var(--bg-2)}.share-qr{padding:8px 12px 10px;text-align:center}.share-qr[hidden]{display:none}.share-qr svg{display:block;width:148px;height:148px;margin:0 auto 6px;border-radius:6px}.share-qr small{display:block;max-width:160px;margin:0 auto;color:var(--muted);font-size:.76rem;line-height:1.4}.share-sep{border-top:1px solid var(--border);margin-top:4px;padding-top:4px}.share-end{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;margin-top:56px;padding:18px;border-top:1px solid var(--border);color:var(--muted);font-size:.92rem}.share-end .share-menu ul{right:auto;left:50%;transform:translate(-50%)}.share-end+.pager{margin-top:24px}.sidebar{position:sticky;top:86px;align-self:start;max-height:calc(100vh - 110px);display:flex;flex-direction:column;gap:28px;font-size:.85rem}@media(max-width:1000px){.sidebar{display:none}}.sidebar h4{margin:0 0 10px;font-size:.78rem;letter-spacing:.12em;color:var(--faint)}.sidebar h4 a{color:inherit}.toc{min-height:0;overflow:auto;flex:0 1 auto}.toc ul{list-style:none;padding:0;margin:0;border-left:2px solid var(--border)}.toc li a{display:block;color:var(--muted);padding:4px 0 4px 14px;margin-left:-2px;border-left:2px solid transparent;line-height:1.5;transition:color .15s}.toc li.d3 a{padding-left:26px;font-size:.82rem}.toc li a:hover{color:var(--text);text-decoration:none}.toc li a.active{color:var(--cat);border-left-color:var(--cat);font-weight:600}.series{min-height:0;overflow:auto;flex:0 1 auto;max-height:40vh;padding-top:20px;border-top:1px solid var(--border)}.series ol{list-style:none;padding:0;margin:0}.series li a{display:flex;gap:8px;color:var(--muted);padding:4px 8px;border-radius:6px;line-height:1.5}.series li a:before{content:"";flex:none;width:7px;height:7px;border-radius:50%;border:1.5px solid var(--faint);margin-top:.45em}.series li.is-read a:before{background:var(--cat);border-color:var(--cat)}.series li a:hover{background:var(--bg-2);text-decoration:none;color:var(--text)}.series li.current a{background:var(--cat-soft);color:var(--cat);font-weight:600}.prose{font-size:1.05rem;overflow-wrap:anywhere}.prose h1,.prose h2,.prose h3,.prose h4{line-height:1.45;margin:2.2em 0 .8em;scroll-margin-top:84px}.prose h1{font:900 1.65rem var(--serif)}.prose h2{font:900 1.45rem var(--serif);padding-left:14px;border-left:4px solid var(--cat, var(--accent))}.prose h3{font-size:1.18rem}.prose h4{font-size:1.04rem}.prose p,.prose ul,.prose ol{margin:1em 0}.prose li{margin:.3em 0}.prose li::marker{color:var(--faint)}.prose strong{color:var(--text);background:linear-gradient(transparent 62%,color-mix(in srgb,var(--accent) 22%,transparent) 62%)}.prose img{max-width:100%;height:auto;border-radius:10px;display:block;margin:1.6em auto;cursor:zoom-in;box-shadow:var(--shadow);border:1px solid var(--border)}.prose blockquote{margin:1.4em 0;padding:.6em 1.2em;border-left:3px solid var(--accent);background:var(--bg-2);border-radius:0 10px 10px 0;color:var(--muted)}.prose code{font-family:var(--mono);font-size:.86em;background:var(--code-bg);border:1px solid var(--border);padding:.1em .4em;border-radius:5px}.prose pre{font-size:.87rem;line-height:1.65;padding:16px 18px;margin:0;overflow-x:auto}.prose pre code{background:none;border:0;padding:0;font-size:inherit}.code-wrap{margin:1.4em 0;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--code-bg)}.code-head{display:flex;justify-content:space-between;align-items:center;padding:6px 10px 6px 16px;border-bottom:1px solid var(--border);font:600 .75rem var(--mono);color:var(--faint);text-transform:lowercase}.code-head button{background:none;border:0;cursor:pointer;color:var(--muted);font:500 .78rem var(--sans);padding:3px 8px;border-radius:6px}.code-head button:hover{background:var(--surface);color:var(--text)}.prose table{border-collapse:collapse;display:block;overflow-x:auto;margin:1.4em 0;font-size:.93rem}.prose th,.prose td{border:1px solid var(--border);padding:7px 13px;text-align:left}.prose th{background:var(--bg-2)}.prose hr{border:0;text-align:center;margin:2.4em 0}.prose hr:after{content:"· · ·";color:var(--faint);letter-spacing:.6em}.prose .katex-display{overflow-x:auto;overflow-y:hidden}.prose h5,.prose h6{font-size:.98rem;color:var(--muted)}.prose del{color:var(--muted)}.prose mark{background:color-mix(in srgb,var(--accent) 25%,transparent);color:inherit;border-radius:3px;padding:0 2px}.prose .contains-task-list{list-style:none;padding-left:.4em}.prose .task-list-item input{margin:0 .55em 0 0;vertical-align:-1px;accent-color:var(--cat, var(--accent))}.prose .footnotes{margin-top:3em;padding-top:1em;border-top:1px solid var(--border);font-size:.9rem;color:var(--muted)}.prose [data-footnote-ref]{padding:0 1px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.astro-code{background-color:var(--code-bg)!important}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .astro-code,:root:not([data-theme=light]) .astro-code span{color:var(--shiki-dark)!important}}.pager{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:64px}.pager a{border:1px solid var(--border);border-radius:14px;padding:14px 18px;color:var(--text);background:var(--surface);font-weight:500;transition:border-color .15s,transform .15s}.pager a:hover{border-color:var(--cat, var(--accent));text-decoration:none;transform:translateY(-2px)}.pager small{display:block;color:var(--faint);font-size:.78rem;font-weight:400;margin-bottom:2px}.pager .next{text-align:right;grid-column:2}#search-modal{position:fixed;inset:0;z-index:50;display:flex;justify-content:center;align-items:flex-start;padding:12vh 16px 16px}#search-modal[hidden]{display:none}.sm-backdrop{position:absolute;inset:0;background:#140f0a73;backdrop-filter:blur(3px);animation:fade .15s}.sm-panel{position:relative;width:100%;max-width:640px;max-height:72vh;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-lg);overflow:hidden;animation:pop .18s ease-out}.sm-input{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--border);color:var(--muted)}.sm-input input{flex:1;min-width:0;border:0;outline:0;background:none;font:1.1rem var(--sans);color:var(--text)}.sm-input input::-webkit-search-cancel-button{display:none}.sm-input kbd{cursor:pointer}#sm-results{list-style:none;margin:0;padding:8px;overflow-y:auto}#sm-results:empty{display:none}#sm-results li a{display:block;padding:10px 14px;border-radius:10px;color:var(--text)}#sm-results li a:hover{text-decoration:none}#sm-results li.active a{background:var(--accent-soft)}#sm-results strong{display:block;font-size:1rem}.sm-cat{float:right;font-size:.75rem;color:var(--faint);margin-left:12px}.sm-ex{display:block;color:var(--muted);font-size:.86rem;line-height:1.6;margin-top:2px}.sm-ex mark{background:none;color:var(--accent);font-weight:600}.sm-empty{padding:24px;text-align:center;color:var(--muted)}.sm-foot{display:flex;gap:16px;padding:10px 18px;border-top:1px solid var(--border);font-size:.78rem;color:var(--faint)}.sm-foot kbd{margin-right:3px}@keyframes pop{0%{opacity:0;transform:translateY(-8px) scale(.98)}}@keyframes fade{0%{opacity:0}}#to-top{position:fixed;right:20px;bottom:24px;z-index:15;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:var(--surface);border:1px solid var(--border);color:var(--muted);cursor:pointer;box-shadow:var(--shadow);opacity:0;transform:translateY(10px);pointer-events:none;transition:all .25s}#to-top.show{opacity:1;transform:none;pointer-events:auto}#to-top:hover{color:var(--accent);border-color:var(--accent)}html.game-in-view #to-top{opacity:0;pointer-events:none}.lightbox{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:24px;background:#0a0806d9;cursor:zoom-out;animation:fade .2s}.lightbox[hidden]{display:none}.lightbox img{max-width:100%;max-height:100%;border-radius:8px;box-shadow:0 20px 60px #00000080;animation:pop .2s}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.progress-track,.c-bar{background:color-mix(in srgb,var(--text) 9%,transparent)}.prose p:has(.katex){overflow-x:auto;overflow-y:hidden}@media(max-width:860px){.pick-card{transform:none}}@media(hover:none){.btn kbd{display:none}}.lang-switch{gap:4px;text-decoration:none}.lang-switch:hover{text-decoration:none}.lang-short{font:700 .72rem var(--sans);letter-spacing:.04em}.lang-banner{background:var(--accent-soft);border-bottom:1px solid var(--border);font-size:.9rem}.lang-banner-inner{display:flex;align-items:center;gap:14px;padding-top:8px;padding-bottom:8px;flex-wrap:wrap}.lb-text{flex:1;min-width:200px}.btn.small{padding:5px 12px;font-size:.86rem}.lb-dismiss{background:none;border:0;color:var(--muted);cursor:pointer;font-size:.86rem;padding:5px 4px}.lb-dismiss:hover{color:var(--text);text-decoration:underline}.untranslated{display:flex;align-items:flex-start;gap:10px;margin:20px 0 0;padding:12px 16px;border-radius:10px;background:var(--bg-2);color:var(--muted);font-size:.92rem;line-height:1.6}.untranslated svg{flex:none;margin-top:3px}.tag.muted-tag{background:var(--bg-2);color:var(--faint)}:lang(en) .post-title,:lang(en) .hero h1{letter-spacing:0}.footer-links{display:flex;justify-content:center;gap:16px;flex-wrap:wrap}.footer-links a{color:var(--muted)}.legal-links a{font-size:.8rem}.legal-address{line-height:1.8}.legal-updated{color:var(--muted);font-size:.88rem}.about-links{list-style:none;padding:0;margin:28px 0 0;display:flex;gap:10px;flex-wrap:wrap}.about-links a{display:inline-block;padding:6px 14px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text);font-size:.92rem}.about-links a:hover{border-color:var(--accent);text-decoration:none}.hero-inner:not(:has(.pick-card)){grid-template-columns:minmax(0,1fr)}.post-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.tag-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 11px;border-radius:999px;font-size:.84rem;color:var(--muted);background:var(--surface);border:1px solid var(--border);transition:border-color .15s,color .15s}.tag-chip:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}.tag-chip span{font-size:.76rem;color:var(--faint);font-variant-numeric:tabular-nums}.tag-chip.big{padding:6px 14px;font-size:calc(.92rem * var(--w, 1));color:var(--text)}.tag-cloud{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.tag-cloud.all{margin-top:24px}.tag-hash{color:var(--accent);margin-right:2px}.tag.cat-tag{background:var(--bg-2);color:var(--muted)}.games{margin-top:64px}.game-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}.game-tab{border:1px solid var(--border);background:var(--surface);color:var(--muted);border-radius:999px;padding:7px 16px;font:600 .9rem var(--sans, sans-serif);cursor:pointer;transition:all .15s}.game-tab:hover{color:var(--text);border-color:color-mix(in srgb,var(--accent) 40%,var(--border))}.game-tab[aria-selected=true]{background:var(--accent);border-color:transparent;color:var(--accent-ink, #fff)}.game-stage{position:relative;max-width:960px;margin:0 auto;padding:10px;border-radius:18px;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-lg, 0 10px 30px rgb(0 0 0 / .08))}.game-hint{margin:10px 4px 0;color:var(--muted);font-size:.82rem;text-align:center}.game-install{display:flex;justify-content:center;margin-top:12px}.game-install[hidden]{display:none}.install-btn{display:inline-flex;align-items:center;gap:12px;padding:9px 18px 9px 12px;border-radius:14px;cursor:pointer;text-align:left;border:1px solid color-mix(in srgb,var(--accent) 35%,var(--border));background:var(--accent-soft);color:var(--text);font:inherit;-webkit-tap-highlight-color:transparent;transition:transform .15s}.install-btn:active{transform:scale(.97)}.install-btn-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--accent);color:var(--accent-ink);flex:none}.install-btn strong{display:block;font-size:.95rem;line-height:1.3}.install-btn small{display:block;color:var(--muted);font-size:.78rem;line-height:1.3}.install-sheet{width:min(420px,calc(100vw - 24px));max-height:calc(100dvh - 24px);margin:auto auto max(12px,env(safe-area-inset-bottom));padding:26px 22px 20px;border:1px solid var(--border);border-radius:22px;background:var(--surface);color:var(--text);box-shadow:var(--shadow-lg);text-align:center}.install-sheet[open]{animation:sheet-up .28s cubic-bezier(.2,.8,.2,1)}.install-sheet::backdrop{background:#0a080680}@keyframes sheet-up{0%{transform:translateY(30px);opacity:0}}@media(prefers-reduced-motion:reduce){.install-sheet[open]{animation:none}}.install-app{display:block;margin:0 auto 10px;border-radius:14px;box-shadow:var(--shadow)}.install-sheet h3{margin:0 0 4px;font:900 1.2rem var(--serif)}.install-lead{margin:0 0 16px;color:var(--muted);font-size:.88rem;line-height:1.55}.install-steps{list-style:none;margin:0;padding:0;counter-reset:step;text-align:left}.install-steps li{counter-increment:step;display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--border);font-size:.92rem;line-height:1.45}.install-steps li:first-child{border-top:0}.install-steps li:before{content:counter(step);flex:none;display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--accent);color:var(--accent-ink);font-size:.75rem;font-weight:700}.step-icon{flex:none;display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:var(--bg-2);color:var(--accent)}.install-where{margin:6px 0 0;color:var(--faint);font-size:.78rem;line-height:1.5;text-align:left}.install-where[hidden],.install-steps[hidden]{display:none}.install-ok{margin-top:16px;width:100%;justify-content:center}.game-canvas{display:block;width:100%;height:auto;aspect-ratio:16 / 9;image-rendering:pixelated;touch-action:none;outline:none;border-radius:12px}.game-fs{position:absolute;top:18px;right:18px;z-index:2;width:34px;height:34px;border-radius:10px;cursor:pointer;border:1px solid rgb(255 255 255 / .35);background:#14121073;color:#fff;font-size:1rem;line-height:1;backdrop-filter:blur(4px);opacity:.75;transition:opacity .15s}.game-fs:hover,.game-fs:focus-visible{opacity:1}.game-snd{right:58px;font-size:.9rem}.game-stage.is-full{max-width:none;margin:0;border:0;border-radius:0;box-shadow:none;background:#141413;padding:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:none;overscroll-behavior:none;-webkit-tap-highlight-color:transparent;animation:game-full-in .35s ease-out}.game-stage.is-full>*{animation:game-full-grow .45s cubic-bezier(.2,.8,.2,1)}@keyframes game-full-in{0%{opacity:0}}@keyframes game-full-grow{0%{transform:scale(.92)}}@media(prefers-reduced-motion:reduce){.game-stage.is-full,.game-stage.is-full>*{animation:none}}.game-stage.is-full{position:fixed;top:0;left:0;width:100dvw;height:100dvh;z-index:100;padding:0}.game-shell:fullscreen{background:#141413}.game-shell::backdrop{background:#141413}.game-stage.is-full .game-canvas{flex:1 1 0;min-height:0;width:100%;height:100%;aspect-ratio:auto;object-fit:contain;border-radius:0;scroll-padding:0 env(safe-area-inset-right) 0 env(safe-area-inset-left)}.game-stage.is-full .game-fs{top:max(12px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right))}.game-stage.is-full .game-snd{right:calc(max(12px,env(safe-area-inset-right)) + 42px)}.game-rot{display:none}.game-stage.is-full .game-rot{right:auto;left:max(12px,env(safe-area-inset-left));width:auto;padding:0 12px 0 9px;gap:6px;align-items:center;font:600 .84rem var(--sans);background:#b4532ae0;border-color:#ffffff73;opacity:1}.game-rot svg{flex:none}.game-stage .game-rot.game-off{display:none!important}.game-stage.is-full .game-rot.nudge{animation:rot-nudge 1.4s ease-in-out .6s 3}@keyframes rot-nudge{0%,60%,to{transform:none}15%{transform:rotate(-10deg)}30%{transform:rotate(10deg) scale(1.06)}45%{transform:rotate(-4deg)}}@media(prefers-reduced-motion:reduce){.game-stage.is-full .game-rot.nudge{animation:none}}.game-tip{position:absolute;left:0;right:0;top:calc(max(12px,env(safe-area-inset-top)) + 46px);z-index:2;margin:0 auto;width:fit-content;max-width:min(88%,440px);padding:8px 14px;border-radius:12px;pointer-events:none;background:#141210d1;border:1px solid rgb(255 255 255 / .25);color:#fff;font-size:.85rem;line-height:1.45;text-align:center}html:has(.game-stage.is-full){overflow:hidden;overscroll-behavior:none}@media(orientation:portrait){.game-stage.is-full.is-rotated{top:0;left:100%;width:100dvh;height:100dvw;transform-origin:0 0;transform:rotate(90deg)}}.game-touch{display:none}@media(pointer:coarse){.game-stage{padding:6px}.game-touch{display:flex;justify-content:space-between;align-items:flex-end;gap:10px;padding:14px 2px 4px;user-select:none;-webkit-user-select:none}.game-wheel{--size: 156px;position:relative;flex:none;width:var(--size);height:var(--size);border-radius:50%;border:1px solid var(--border);background:radial-gradient(circle,var(--bg-2) 0 34%,color-mix(in srgb,var(--text) 6%,var(--bg-2)) 35% 100%);touch-action:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.game-wheel>*{pointer-events:none}.wheel-mark{position:absolute;color:var(--muted);font-size:1.05rem;line-height:1;transform:translate(-50%,-50%);transition:color .1s}.wheel-mark.on{color:var(--accent)}.w-up{left:50%;top:15%}.w-down{left:50%;top:85%}.w-left{left:15%;top:50%}.w-right{left:85%;top:50%}.wheel-knob{position:absolute;left:50%;top:50%;width:40%;height:40%;margin:-20% 0 0 -20%;border-radius:50%;background:color-mix(in srgb,var(--accent) 30%,var(--bg-2));border:1px solid var(--border);box-shadow:0 2px 6px #00000026;transition:transform .08s ease-out}.game-wheel.on .wheel-knob{background:var(--accent);transition:none}.game-actions{display:grid;grid-template-columns:repeat(2,74px);gap:10px;justify-content:end;direction:rtl}.game-btn{width:100%;height:100%;border-radius:16px;border:1px solid var(--border);background:var(--bg-2);color:var(--text);font:700 1.35rem var(--sans, sans-serif);touch-action:none;-webkit-tap-highlight-color:transparent}.game-actions .game-btn{width:74px;height:74px;border-radius:50%;direction:ltr;background:color-mix(in srgb,var(--accent) 22%,var(--bg-2))}.game-btn.on{background:var(--accent);color:var(--accent-ink, #fff);transform:scale(.96)}.game-hint .keys{display:none}.game-stage.is-full .game-touch{position:absolute;left:0;right:0;bottom:0;pointer-events:none;padding:0 max(12px,calc(env(safe-area-inset-right) - 20px)) max(12px,env(safe-area-inset-bottom)) max(12px,calc(env(safe-area-inset-left) - 20px))}.game-stage.is-full .game-touch .game-btn,.game-stage.is-full .game-wheel{pointer-events:auto;opacity:.55;backdrop-filter:blur(2px)}.game-stage.is-full .game-wheel.on,.game-stage.is-full .game-touch .game-btn.on{opacity:.85}.game-stage.is-full .game-wheel{--size: 176px}.game-stage.is-full .game-actions{grid-template-columns:repeat(2,82px);gap:12px}.game-stage.is-full .game-actions .game-btn{width:82px;height:82px}.game-stage.is-full .game-rot{display:inline-flex}}@media(pointer:coarse)and (orientation:portrait){.game-stage.is-full:not(.is-rotated){padding:env(safe-area-inset-top) 0 calc(190px + env(safe-area-inset-bottom))}}.game-stage.is-side{--sl: env(safe-area-inset-left);--sr: env(safe-area-inset-right);--sb: env(safe-area-inset-bottom);--cl: max(136px, calc(var(--sl) + 96px));--cr: max(136px, calc(var(--sr) + 96px));padding:0 var(--cr) 0 var(--cl);background:radial-gradient(90% 120% at 50% 0%,#2c2620,#1a1816 55%,#121110)}.game-stage.is-side.is-rotated{--sl: env(safe-area-inset-top);--sr: env(safe-area-inset-bottom);--sb: 0px}.game-stage.is-side .game-canvas{flex:none;width:100%;height:auto;max-height:100%;aspect-ratio:16 / 9;scroll-padding:0;border-radius:10px;box-shadow:0 0 0 1px #ffffff14,0 14px 40px #0000008c,0 0 60px #e8895e14}.game-stage.is-side .game-touch{top:0;padding:0}.game-stage.is-side .game-wheel{--size: 116px;position:absolute;top:50%;bottom:auto;margin-top:calc(var(--size) / -2);left:max(calc((var(--cl) - var(--size)) / 2),calc(var(--sl) - 24px));border-color:#ffffff24;background:radial-gradient(circle,#2a2622 0 34%,#221f1c 35% 100%)}.game-stage.is-side .wheel-mark{color:#ffffff73;font-size:.9rem}.game-stage.is-side .wheel-mark.on{color:#e8895e}.game-stage.is-side .wheel-knob{background:linear-gradient(#5a4334,#3e2f25);border-color:#ffffff2e}.game-stage.is-side .game-wheel.on .wheel-knob{background:#c8693f}.game-stage.is-side .game-actions{position:absolute;top:50%;bottom:auto;transform:translateY(-50%);grid-template-columns:60px;gap:10px;right:max(calc((var(--cr) - 60px) / 2),calc(var(--sr) - 24px))}.game-stage.is-side .game-actions .game-btn{width:60px;height:60px;font-size:1.2rem;color:#f3e6d8;border-color:#ffffff29;background:radial-gradient(circle at 35% 30%,#a65a36,#6e3a22);box-shadow:0 3px #3e2116,0 6px 14px #0006}.game-stage.is-side .game-actions .game-btn.on{background:#e8895e;box-shadow:0 1px #3e2116;transform:translateY(2px)}.game-stage.is-side .game-wheel,.game-stage.is-side .game-touch .game-btn{opacity:1;backdrop-filter:none}.game-stage.is-side .game-fs{top:16px;width:28px;height:28px;font-size:.8rem;right:calc((var(--cr) - 96px) / 2 + 2px);opacity:.85}.game-stage.is-side .game-snd{right:calc((var(--cr) - 96px) / 2 + 36px)}.game-stage.is-side .game-rot{left:auto;right:calc((var(--cr) - 96px) / 2 + 70px);padding:0;justify-content:center;background:#14121073;border-color:#ffffff59}.game-stage.is-side .game-rot span{display:none}.game-stage.is-side .game-rot svg{width:15px;height:15px}.game-stage.is-side .game-tip{top:12px}.game-side{display:none}.game-stage.is-side .game-side{display:contents;color:#cfc7b9;font-size:.66rem;line-height:1.4;pointer-events:none}.game-stage.is-side .game-side>*{position:absolute;margin:0;animation:game-full-in .5s ease-out}.game-stage.is-side .side-l>*{left:max(12px,calc(var(--sl) - 44px));width:calc(var(--cl) - max(12px,calc(var(--sl) - 44px)) - 10px)}.game-stage.is-side .side-r>*{right:max(12px,calc(var(--sr) - 44px));width:calc(var(--cr) - max(12px,calc(var(--sr) - 44px)) - 10px)}.game-side .side-title{top:20px;font:700 .9rem/1.2 var(--serif, serif);color:#f0e6d8;letter-spacing:.04em}.game-stage.is-side .side-r>.side-best{top:54px;padding:3px 7px;border-radius:8px;width:fit-content;font-weight:700;color:#f3d48a;background:#e3a83a1f;border:1px solid rgb(227 168 58 / .25)}.game-side .side-text{bottom:max(14px,var(--sb))}.game-side .side-text p{margin:0 0 3px}.game-side .side-h{margin:0 0 3px;font-size:.6rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#e8895e}@media(prefers-reduced-motion:reduce){.game-stage.is-side .game-side{animation:none}}
