@lanyundev/blog-static 2.0.1 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_astro/Base.astro_astro_type_script_index_0_lang.DDNTaomt.js +1 -0
- package/_astro/{Base.BiZMZmJG.css → Base.yGIzEZ7G.css} +1 -1
- package/_astro/ClientRouter.astro_astro_type_script_index_0_lang.BrmzWhVV.js +1 -0
- package/_astro/client.ChiJXsfH.js +1 -0
- package/_astro/client.KMIQR-EE.js +1 -0
- package/_astro/page.DPstRSKW.js +1 -0
- package/_astro/prefetch.C1OMzOeV.js +1 -0
- package/package.json +1 -1
- package/_astro/Base.astro_astro_type_script_index_0_lang.DKQyiAY6.js +0 -1
- package/_astro/ClientRouter.astro_astro_type_script_index_0_lang.4A8JW69r.js +0 -1
- package/_astro/page.DdqQKad9.js +0 -1
- package/_astro/prefetch.DxIALaZb.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./client.KMIQR-EE.js";function t(e,t=`info`,n=3200,r){let i=document.getElementById(`toasts`);if(!i)return;let a=document.createElement(`div`);if(a.className=`toast toast-${t}`,a.textContent=e,r){let e=document.createElement(`button`);e.type=`button`,e.className=`toast-action`,e.textContent=r.label,e.onclick=()=>{a.remove(),r.run()},a.append(e)}i.append(a),setTimeout(()=>{a.classList.add(`out`),setTimeout(()=>a.remove(),300)},n)}function n(e=document){e.querySelectorAll(`.tabs:not([data-ready])`).forEach(e=>{e.dataset.ready=`1`;let t=[...e.querySelectorAll(`:scope > section.tab`)];if(!t.length)return;let n=document.createElement(`div`);n.className=`tab-bar`,n.setAttribute(`role`,`tablist`),t.forEach((e,r)=>{let i=document.createElement(`button`);i.type=`button`,i.role=`tab`,i.textContent=e.dataset.title||`Tab ${r+1}`,i.onclick=()=>{t.forEach((e,t)=>{e.hidden=t!==r,n.children[t].setAttribute(`aria-selected`,String(t===r))})},n.append(i)}),e.prepend(n),n.firstElementChild.click()})}function r(e=document){e.querySelectorAll(`figure.code-block.collapsible:not([data-ready])`).forEach(e=>{e.dataset.ready=`1`,e.classList.add(`collapsed`);let t=document.createElement(`button`);t.type=`button`,t.className=`code-expand`,t.textContent=`展开全部 ${e.dataset.lines} 行`,t.onclick=()=>{e.classList.remove(`collapsed`),t.remove()},e.append(t)})}async function i(e){let t=e.closest(`figure`)?.querySelector(`pre`)?.innerText??``;await navigator.clipboard.writeText(t.replace(/\n$/,``)),e.textContent=`已复制`,e.classList.add(`ok`),setTimeout(()=>{e.textContent=`复制`,e.classList.remove(`ok`)},1500)}var a;function o(){a?.disconnect();let e=document.querySelector(`.prose[data-toc-source]`),t=document.querySelector(`[data-toc]`);if(!e||!t)return;let n=[...e.querySelectorAll(`h2[id], h3[id], h4[id]`)],r=t.closest(`.toc-card`);if(n.length<2){r?.setAttribute(`hidden`,``),document.body.classList.add(`no-toc`);return}r?.removeAttribute(`hidden`),document.body.classList.remove(`no-toc`);let i=Math.min(...n.map(e=>+e.tagName[1])),o=[0,0,0];t.innerHTML=`<ol>`+n.map(e=>{let t=+e.tagName[1]-i;o[t]++;for(let e=t+1;e<3;e++)o[e]=0;let n=o.slice(0,t+1).join(`.`);return`<li class="lv${t}"><a href="#${encodeURIComponent(e.id)}"><span class="num">${n}</span>${e.textContent?.replace(/#$/,``)??``}</a></li>`}).join(``)+`</ol>`,n.forEach(e=>{if(e.querySelector(`.anchor`))return;let t=document.createElement(`a`);t.className=`anchor`,t.href=`#`+e.id,t.textContent=`#`,t.ariaLabel=`本节链接`,e.append(t)});let s=new Map(n.map((e,n)=>[e,t.querySelectorAll(`a`)[n]])),c;a=new IntersectionObserver(e=>{for(let n of e)if(n.isIntersecting){c&&s.get(c)?.classList.remove(`active`),c=n.target;let e=s.get(n.target);if(e?.classList.add(`active`),e&&t.scrollHeight>t.clientHeight){let n=e.offsetTop-t.offsetTop,r=e.offsetHeight;n<t.scrollTop?t.scrollTop=n-8:n+r>t.scrollTop+t.clientHeight&&(t.scrollTop=n+r-t.clientHeight+8)}}},{rootMargin:`0px 0px -75% 0px`}),n.forEach(e=>a.observe(e))}function s(){let e={title:document.title,url:location.href};if(navigator.share&&matchMedia(`(pointer: coarse)`).matches)return navigator.share(e).catch(()=>{});navigator.clipboard.writeText(`${document.title}\n${location.href}`).then(()=>t(`链接已复制,快去分享吧~`,`success`))}function c(e=document){e.querySelectorAll(`.prose :is(psw, pwd):not([data-ready])`).forEach(e=>{e.dataset.ready=`1`,e.tabIndex=0;let t=document.createElement(`span`);t.className=`psw-in`,t.append(...e.childNodes),e.append(t)})}function l(e=document){c(e),n(e),r(e),o()}var u;function d(e){u||(u=document.createElement(`dialog`),u.className=`lightbox`,u.innerHTML=`<img alt="" /><p></p>`,u.onclick=()=>u.close(),document.body.append(u));let t=u.querySelector(`img`);t.src=e.currentSrc||e.src,t.alt=e.alt,u.querySelector(`p`).textContent=e.alt&&!/^image/i.test(e.alt)?e.alt:``,u.showModal()}var f=`2.0.17`,p;function m(e){return new Promise((t,n)=>{let r=document.createElement(`script`);r.src=e,r.async=!0,r.onload=()=>t(),r.onerror=n,document.head.append(r)})}var h=[];function g(e){for(let t of[...document.head.children])!e.has(t)&&t.matches(`style, link[rel="stylesheet"]`)&&h.push(t)}document.addEventListener(`astro:after-swap`,()=>{for(let e of h)e.isConnected||document.head.append(e)});function ee(){let e=document.getElementById(`tcomment`);if(!e)return;let t=e.dataset.env;if(/^(localhost|127\.|192\.168\.|\[::1\])/.test(location.hostname)){e.innerHTML=`<p class="muted">本地预览不加载评论(评论服务仅允许线上域名访问),发布后即可正常使用。</p>`;return}let n=async()=>{if(r.disconnect(),!p){let e=new Set(document.head.children);p=m(`https://cdn.jsdelivr.net/npm/twikoo@${f}/dist/twikoo.all.min.js`).catch(()=>m(`https://registry.npmmirror.com/twikoo/${f}/files/dist/twikoo.all.min.js`)),await p,g(e)}await p,e.innerHTML=``,await window.twikoo?.init({envId:t,el:`#tcomment`,path:e.dataset.path||location.pathname})},r=new IntersectionObserver(e=>e[0].isIntersecting&&n(),{rootMargin:`600px`});r.observe(e)}var _=e=>Uint8Array.from(atob(e),e=>e.charCodeAt(0));async function te(e,t){let{salt:n,iv:r,ct:i,iter:a}=e.dataset,o=await crypto.subtle.importKey(`raw`,new TextEncoder().encode(t),`PBKDF2`,!1,[`deriveKey`]),s=await crypto.subtle.deriveKey({name:`PBKDF2`,salt:_(n),iterations:+a,hash:`SHA-256`},o,{name:`AES-GCM`,length:256},!1,[`decrypt`]),c=await crypto.subtle.decrypt({name:`AES-GCM`,iv:_(r)},s,_(i));return new TextDecoder().decode(c)}async function v(e,t,n){let r=await te(e,t),i=e.closest(`.prose`);e.outerHTML=r,i.dataset.tocSource=``,n&&localStorage.setItem(`pw:`+location.pathname,t),l(i),document.dispatchEvent(new Event(`content-unlocked`))}function ne(){let e=document.querySelector(`.encrypted[data-ct]`);if(!e)return;let t=localStorage.getItem(`pw:`+location.pathname);t&&v(e,t,!1).catch(()=>localStorage.removeItem(`pw:`+location.pathname));let n=e.querySelector(`form`);n.onsubmit=async t=>{t.preventDefault();let r=n.querySelector(`input`);try{await v(e,r.value,!0)}catch{n.classList.remove(`shake`),n.offsetWidth,n.classList.add(`shake`),r.select(),n.querySelector(`.err`).textContent=`密码错误,请重试`}}}var y=`ip_info`;function b(e){let t=document.querySelector(`.region-gate`);t&&(t.querySelector(`p`).textContent=e,t.dataset.state=`blocked`,setTimeout(()=>location.assign(`/`),5e3))}function x(){let e=document.querySelector(`.region-gate`);e&&(e.dataset.state=`ok`)}function re(){if(!document.querySelector(`.region-gate`))return;try{let e=JSON.parse(localStorage.getItem(y)||`null`);if(e&&Date.now()-+e.date<864e5)return e.country===`CN`?b(`由于相关规定,本文内容不向中国大陆地区提供,即将返回首页。`):x()}catch{}let e=document.createElement(`script`);e.src=`https://lanyundev.com/api/ip_info`,e.onload=()=>{let e=typeof ip_info<`u`?ip_info?.country:void 0;localStorage.setItem(y,JSON.stringify({country:e,date:Date.now()})),e===`CN`?b(`由于相关规定,本文内容不向中国大陆地区提供,即将返回首页。`):x()},e.onerror=()=>b(`无法确认访问地区,暂时无法展示本文,即将返回首页。`),document.head.append(e)}var S=e=>e==null?`—`:e>1<<30?(e/(1<<30)).toFixed(2)+` GB`:(e/(1<<20)).toFixed(1)+` MB`,C=()=>document.querySelector(`meta[name="blog-version"]`)?.content??`dev`;async function ie(){if(!(`serviceWorker`in navigator))return;let n=await navigator.serviceWorker.register(`/sw.js`);navigator.serviceWorker.addEventListener(`message`,n=>{if(n.data?.type===`updated`&&t(`博客已更新到最新版本`,`success`,5e3),n.data?.type===`content-updated`){let r=new URL(location.href);r.hash=``,r.search=``;let i=new URL(n.data.url);if(i.search=``,r.href!==i.href)return;let a=scrollY>160||document.querySelector(`dialog[open]`)||document.activeElement?.matches(`input, textarea, [contenteditable]`),o=()=>e(location.pathname+location.search,{history:`replace`});a?t(`本页内容已更新`,`info`,1e4,{label:`刷新`,run:o}):o()}}),setTimeout(ae,4e3),setInterval(()=>n.update().catch(()=>{}),18e5)}async function w(){try{return(await(await fetch(`/version.json?t=`+Date.now(),{cache:`no-store`})).json()).version}catch{return}}async function ae(){let e=await w();e&&e!==C()&&await(await navigator.serviceWorker.getRegistration())?.update().catch(()=>{})}async function oe(){let e=(e,t)=>{let n=document.getElementById(e);n&&(n.textContent=t)};if(e(`ver-local`,C()),w().then(t=>e(`ver-latest`,t??`获取失败`)),navigator.storage?.estimate){let{usage:t,quota:n}=await navigator.storage.estimate();e(`cache-used`,S(t)),e(`cache-free`,S(n!=null&&t!=null?n-t:void 0))}}async function se(){document.getElementById(`settings-dialog`)?.close(),t(`正在清除缓存…`,`info`,4e3);let e=[`lanyun:prefs`,`twikoo`,`twikoo-access-token`,`bsz-id`];for(let t of Object.keys(localStorage))!e.includes(t)&&!t.startsWith(`pw:`)&&localStorage.removeItem(t);if(sessionStorage.clear(),`caches`in window)for(let e of await caches.keys())await caches.delete(e);for(let e of await navigator.serviceWorker?.getRegistrations()??[])await e.unregister();t(`缓存已清除,即将刷新页面`,`success`,4e3),setTimeout(()=>location.reload(),1200)}var ce,T=e=>e.normalize(`NFKC`).toLowerCase(),E=()=>ce??=fetch(`/search.json`).then(e=>e.json()).then(e=>e.map(e=>({...e,tl:T(e.t),xl:T(e.x),gl:T([e.c,...e.g].join(` `))}))),D=e=>e.replace(/[&<>"]/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`})[e]),le=e=>/[㐀-鿿豈-]/.test(e);function O(e,t,n=20){let r=0,i=0;for(;r<n&&(i=e.indexOf(t,i))>=0;)r++,i+=t.length;return r}function ue(e){let t=[],n=[];for(let r of e.split(/\s+/).filter(Boolean)){let e=r.match(/[㐀-鿿豈-]+|[a-z0-9_.+#-]+/g)??[];for(let r of e)if(le(r[0])){let e=[...r];t.push(...e);for(let t=0;t<e.length-1;t++)n.push(e[t]+e[t+1])}else t.push(r)}return{chars:[...new Set(t)],grams:[...new Set(n)]}}function k(e,t){let n=t.map(t=>{let n=[],r=0;for(;n.length<300&&(r=e.indexOf(t,r))>=0;)n.push(r),r+=t.length;return n});if(n.some(e=>!e.length))return[1/0,-1];let r=n.map(()=>0),i=1/0,a=-1;for(;;){let e=1/0,o=-1,s=0;for(let i=0;i<n.length;i++){let a=n[i][r[i]];a<e&&(e=a,s=i),a+t[i].length>o&&(o=a+t[i].length)}if(o-e<i&&(i=o-e,a=e),++r[s]>=n[s].length)return[i,a]}}function de(e,t){let n=T(t).trim(),r=n.split(/\s+/).filter(Boolean),{chars:i,grams:a}=ue(n),o=[];for(let t of e){let e=0,s=!1,c;t.tl.includes(n)&&(e+=120,s=!0),t.gl.includes(n)&&(e+=70,s=!0);let l=O(t.xl,n);if(l&&(e+=40+l*4,s=!0),!s&&r.length>1&&r.every(e=>t.tl.includes(e)||t.gl.includes(e)||t.xl.includes(e))&&(s=!0,e+=30+r.reduce((e,n)=>e+(t.tl.includes(n)?20:0)+(t.gl.includes(n)?10:0)+Math.min(O(t.xl,n,10),10),0)),!s&&i.length){let n=i.filter(e=>t.tl.includes(e)).length,r=i.filter(e=>t.tl.includes(e)||t.gl.includes(e)||t.xl.includes(e)).length/i.length,o=a.filter(e=>t.tl.includes(e)||t.xl.includes(e)).length;if(r>=(i.length<=2?1:.6)){let a=i.join(``).length,[s]=k(t.tl,i),[l,u]=k(t.xl,i),d=Math.min(s,l);u>=0&&(c=u),(d<=Math.max(a*4,8)||n===i.length||o>0)&&(e=r*10+n/i.length*12+o*3+(Number.isFinite(d)?Math.max(0,24-(d-a)*2):0))}}e>0&&o.push({doc:t,score:e,exact:s,terms:s?t.xl.includes(n)||t.tl.includes(n)?[n]:r:i,at:c})}return o.sort((e,t)=>Number(t.exact)-Number(e.exact)||t.score-e.score||t.doc.d.localeCompare(e.doc.d))}function A(e,t){let n=T(e),r=[];for(let e of t){let t=0;for(;(t=n.indexOf(e,t))>=0;)r.push([t,t+e.length]),t+=e.length}r.sort((e,t)=>e[0]-t[0]);let i=``,a=0;for(let[t,n]of r)t<a||(i+=D(e.slice(a,t))+`<mark>`+D(e.slice(t,n))+`</mark>`,a=n);return i+D(e.slice(a))}function fe(e){let t=e.doc.x,n=e.doc.xl,r=e.at??-1;if(r<0)for(let t of e.terms){let e=n.indexOf(t);e>=0&&(r<0||e<r)&&(r=e)}if(r<0)return A(t.slice(0,90),e.terms)+(t.length>90?`…`:``);let i=Math.max(0,r-30),a=Math.min(t.length,r+90);return(i>0?`…`:``)+A(t.slice(i,a),e.terms)+(a<t.length?`…`:``)}function pe(e,t,n){if(!n.length){e.innerHTML=`<p class="muted">没有找到与「${D(t)}」相关的文章</p>`;return}let r=n.filter(e=>e.exact),i=n.filter(e=>!e.exact).slice(0,20),a=e=>`<a class="hit" href="${e.doc.u}" role="option"><b>${A(e.doc.t,e.terms)}</b><span>${fe(e)}</span><small>${e.doc.d} · ${D(e.doc.c)}${e.doc.g.length?` · `+e.doc.g.map(D).join(` / `):``}</small></a>`;e.innerHTML=(r.length?`<h4 class="hit-group">精确匹配 · ${r.length}</h4>${r.map(a).join(``)}`:``)+(i.length?`<h4 class="hit-group">${r.length?`其它相关结果`:`没有完全匹配的文章,以下是相关结果`} · ${i.length}</h4>${i.map(a).join(``)}`:``)}function j(){let e=document.getElementById(`search-dialog`),t=document.getElementById(`search-input`),n=document.getElementById(`search-results`);if(e.showModal(),t.select(),E().catch(()=>n.innerHTML=`<p class="muted">搜索索引加载失败,请稍后重试</p>`),e.dataset.ready)return;e.dataset.ready=`1`,e.addEventListener(`click`,t=>t.target===e&&e.close());let r=0,i=-1,a=()=>[...n.querySelectorAll(`a.hit`)],o=e=>{let t=a();t.length&&(i=(e+t.length)%t.length,t.forEach((e,t)=>e.classList.toggle(`active`,t===i)),t[i].scrollIntoView({block:`nearest`}))};t.addEventListener(`keydown`,t=>{if(t.key===`Escape`)t.preventDefault(),e.close();else if(t.key===`ArrowDown`)t.preventDefault(),o(i+1);else if(t.key===`ArrowUp`)t.preventDefault(),o(i-1);else if(t.key===`Enter`){let e=a()[Math.max(i,0)];e&&(t.preventDefault(),e.click())}}),t.addEventListener(`input`,()=>{clearTimeout(r),r=window.setTimeout(async()=>{let e=t.value.trim();i=-1,e?pe(n,e,de(await E(),e)):n.innerHTML=`<p class="muted">输入关键词开始搜索,多个关键词用空格分隔</p>`},120)}),n.addEventListener(`click`,t=>t.target.closest(`a`)&&e.close())}var M=`lanyun:prefs`,N=()=>{try{return JSON.parse(localStorage.getItem(M)||`{}`)}catch{return{}}};function P(e){let t={...N(),...e};localStorage.setItem(M,JSON.stringify(t)),window.__applyPrefs(),document.dispatchEvent(new CustomEvent(`prefs-change`,{detail:t}))}var F=e=>!document.documentElement.classList.contains(`no-`+e),me=()=>document.documentElement.dataset.theme===`dark`;function he(){let e=document.getElementById(`settings-dialog`),t=N(),n=document.documentElement,r=t=>[...e.querySelectorAll(t)];r(`input[name=style]`).forEach(e=>e.checked=e.value===n.dataset.style),r(`input[name=theme]`).forEach(e=>e.checked=e.value===(t.theme??`auto`)),r(`input[name=side]`).forEach(e=>e.checked=e.value===(t.side??`left`)),r(`input[name=wide]`).forEach(e=>e.checked=!!t.wide),r(`input[name=carouselRelease]`).forEach(e=>e.checked=!!t.carouselRelease),r(`input[name=focus]`).forEach(e=>e.checked=!!t.focus);let i=e.querySelector(`input[name=reduce]`);i.checked=n.dataset.motion===`reduce`;let a={...window.__BOOT__.effects,...t.fx??{}};r(`input[name=fx]`).forEach(e=>{e.checked=!!a[e.value],e.disabled=i.checked}),oe(),e.showModal(),e.dataset.ready||(e.dataset.ready=`1`,e.addEventListener(`click`,t=>t.target===e&&e.close()),e.addEventListener(`change`,e=>{let t=e.target;t.name===`style`&&P({style:t.value}),t.name===`theme`&&P({theme:t.value}),t.name===`side`&&P({side:t.value}),t.name===`wide`&&P({wide:t.checked}),t.name===`carouselRelease`&&P({carouselRelease:t.checked}),t.name===`focus`&&P({focus:t.checked}),t.name===`reduce`&&(P({reduce:t.checked}),r(`input[name=fx]`).forEach(e=>e.disabled=t.checked)),t.name===`fx`&&P({fx:{...N().fx??{},[t.value]:t.checked}})}))}function I(e,t,n=`carousel`){let r=e.classList.contains(`vertical`),i=e.querySelector(`.viewport`),a=e.querySelector(`.slides`),o=a.children.length;if(o<2)return;let s=e.querySelector(`.dots`),c=0,l,u=0,d=()=>document.documentElement.dataset.motion===`reduce`?`auto`:`smooth`,f=()=>s?.querySelectorAll(`button`).forEach((e,t)=>e.setAttribute(`aria-current`,String(t===c))),p=(e,t=!1)=>{c=(e+o)%o,r?a.style.transform=`translateY(-${c*100}%)`:i.scrollTo({left:c*i.clientWidth,behavior:d()}),f(),t&&h()};s&&(s.innerHTML=Array.from({length:o},(e,t)=>`<button type="button" aria-label="第 ${t+1} 张"></button>`).join(``),s.onclick=e=>{let t=e.target.closest(`button`);t&&p([...s.children].indexOf(t),!0)});let m=e.closest(`.card`)??e;if(m.querySelector(`.prev, .hist-prev`)?.addEventListener(`click`,()=>p(c-1,!0)),m.querySelector(`.next, .hist-next`)?.addEventListener(`click`,()=>p(c+1,!0)),r&&e.addEventListener(`wheel`,e=>{e.preventDefault(),Date.now()-u<400||Math.abs(e.deltaY)<2||(u=Date.now(),p(c+(e.deltaY>0?1:-1),!0))},{passive:!1}),!r){let e=0;i.addEventListener(`scroll`,()=>{clearTimeout(e),e=window.setTimeout(()=>{c=Math.round(i.scrollLeft/i.clientWidth),f()},80)},{passive:!0}),i.addEventListener(`wheel`,e=>{if(Math.abs(e.deltaX)>Math.abs(e.deltaY))return;let t=e.deltaY>0?1:-1;document.documentElement.dataset.carouselRelease===`1`&&(t>0&&c===o-1||t<0&&c===0)||(e.preventDefault(),Date.now()-u<450||(u=Date.now(),p(c+t,!0)))},{passive:!1})}let h=()=>{g(),(n===null||F(n))&&!document.hidden&&(l=window.setInterval(()=>p(c+1),t))},g=()=>clearInterval(l);e.addEventListener(`pointerenter`,g),e.addEventListener(`pointerleave`,h),e.addEventListener(`focusin`,g),document.addEventListener(`visibilitychange`,h),document.addEventListener(`prefs-change`,h),document.addEventListener(`astro:before-swap`,()=>{g(),document.removeEventListener(`visibilitychange`,h),document.removeEventListener(`prefs-change`,h)},{once:!0}),f(),h()}async function L(e,t,n){try{let n=JSON.parse(localStorage.getItem(e)||`null`);if(n&&Date.now()-n.t<t)return n.v}catch{}let r=await n();return localStorage.setItem(e,JSON.stringify({t:Date.now(),v:r})),r}var R=e=>e.replace(/[&<>"]/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`})[e]);async function ge(e){try{let t=await L(`pixiv`,36e5,async()=>{let t=await fetch(e.dataset.api);if(!t.ok)throw Error(String(t.status));return(await t.json()).slice(0,20)});e.querySelector(`.slides`).innerHTML=t.map((e,t)=>`<a class="slide" href="${R(e.link)}" target="_blank" rel="noopener nofollow"><img src="${R(e.imageUrl)}" alt="${R(e.title)}" loading="${t?`lazy`:`eager`}" decoding="async" referrerpolicy="no-referrer"/><span><b>#${t+1} ${R(e.title)}</b><small>${R(e.author)}</small></span></a>`).join(``),e.classList.add(`ready`),I(e,5e3,null)}catch{e.closest(`.card`)?.setAttribute(`hidden`,``)}}async function _e(e){let t=new Date,n=String(t.getMonth()+1).padStart(2,`0`),r=String(t.getDate()).padStart(2,`0`);try{let t=((await L(`history:`+n,6048e5,async()=>(await fetch(`/other/history/${n}.json`)).json()))[`S`+n+r]??[]).slice(-12).reverse();e.querySelector(`.slides`).innerHTML=t.map(e=>`<div class="slide"><b>${R(e.year)} 年</b><span>${e.title.replace(/<[^>]+>/g,``)}</span></div>`).join(``),I(e,4500,null)}catch{e.closest(`.card`)?.setAttribute(`hidden`,``)}}function ve(){document.querySelectorAll(`[data-widget]:not([data-ready])`).forEach(e=>{e.dataset.ready=`1`;let t=e.dataset.widget,n=()=>t===`pixiv`?ge(e):t===`history`?_e(e):t===`carousel`?I(e,5e3):null;if(t===`carousel`)return n();let r=new IntersectionObserver(e=>{e[0].isIntersecting&&(r.disconnect(),n())},{rootMargin:`200px`});r.observe(e)})}var z=0;function ye(){document.addEventListener(`pointerdown`,e=>{if(!F(`clickHeart`)||z>=15||e.button!==0||e.pointerType!==`mouse`||e.target.closest(`input,textarea,select,[contenteditable],.modal`))return;let t=document.createElement(`i`);t.className=`fx-heart`,t.style.cssText=`left:${e.clientX-5}px;top:${e.clientY-5}px;--c:hsl(${Math.random()*360|0} 85% 60%)`,document.body.append(t),z++,t.addEventListener(`animationend`,()=>{t.remove(),z--},{once:!0})},{passive:!0})}var B=null,V,H=[],U=!1,be=`boxSizing.width.height.overflowX.overflowY.borderTopWidth.borderRightWidth.borderBottomWidth.borderLeftWidth.paddingTop.paddingRight.paddingBottom.paddingLeft.fontStyle.fontVariant.fontWeight.fontSize.lineHeight.fontFamily.textAlign.textTransform.textIndent.letterSpacing.wordSpacing.whiteSpace.wordWrap`.split(`.`);function xe(e){let t=document.createElement(`div`),n=getComputedStyle(e);for(let e of be)t.style[e]=n[e];t.style.position=`absolute`,t.style.visibility=`hidden`,e.tagName===`TEXTAREA`&&(t.style.whiteSpace=`pre-wrap`),t.textContent=e.value.slice(0,e.selectionStart??0);let r=document.createElement(`span`);r.textContent=`.`,t.append(r),document.body.append(t);let i=e.getBoundingClientRect(),a=i.left+r.offsetLeft-e.scrollLeft,o=i.top+r.offsetTop-e.scrollTop+8;return t.remove(),{x:a,y:o}}function W(){B.clearRect(0,0,V.width,V.height),H=H.filter(e=>(e.a-=.02)>0);for(let e of H)e.vy+=.075,e.x+=e.vx,e.y+=e.vy,B.globalAlpha=e.a,B.fillStyle=e.c,B.beginPath(),B.arc(e.x,e.y,e.r,0,6.283),B.fill();H.length?requestAnimationFrame(W):U=!1}function Se(){document.addEventListener(`input`,e=>{let t=e.target;if(!F(`powerMode`)||!t.matches?.(`textarea, input[type=text], input:not([type])`))return;B||=(V=document.createElement(`canvas`),V.className=`fx-canvas`,document.body.append(V),V.getContext(`2d`)),(V.width!==innerWidth||V.height!==innerHeight)&&(V.width=innerWidth,V.height=innerHeight);let{x:n,y:r}=xe(t),i=Math.random()*360;for(let e=0;e<10;e++)H.push({x:n,y:r,vx:(Math.random()-.5)*2,vy:-1.5-Math.random()*2,a:1,r:1.5+Math.random()*1.5,c:`hsl(${i+Math.random()*20-10|0} 100% ${50+Math.random()*30}%)`});H.length>200&&H.splice(0,H.length-200),U||(U=!0,requestAnimationFrame(W))})}function Ce(){let e=document.querySelector(`canvas.fx-bubbles`);if(!e)return;let t=e.getContext(`2d`),n=Math.min(devicePixelRatio||1,1.5),r=0,i=0,a=0,o=0,s=!0,c=[],l=(e={})=>({x:Math.random()*r,y:i+Math.random()*100,r:1+Math.random()*3,v:.15+Math.random()*.85,a:.15+Math.random()*.85,...e}),u=()=>{r=e.clientWidth,i=e.clientHeight,e.width=Math.round(r*n),e.height=Math.round(i*n),t.setTransform(n,0,0,n,0,0);let a=Math.min(320,Math.round(r*.2));c=Array.from({length:a},()=>l())},d=e=>{if(o&&e-o<32){a=requestAnimationFrame(d);return}let n=o?Math.min(3,(e-o)/16.7):1;o=e,t.clearRect(0,0,r,i);let s=Array.from({length:6},()=>new Path2D);for(let e of c){e.y-=e.v*n,e.a-=6e-4*n,(e.a<=.02||e.y<-10)&&Object.assign(e,l());let t=s[Math.min(5,Math.floor(e.a*6))];t.moveTo(e.x+e.r,e.y),t.arc(e.x,e.y,e.r,0,Math.PI*2)}for(let e=0;e<6;e++)t.fillStyle=`rgba(255,255,255,${(e+.5)/6*.55})`,t.fill(s[e]);a=requestAnimationFrame(d)},f=()=>{cancelAnimationFrame(a),o=0,s&&!document.hidden&&F(`bubbles`)?a=requestAnimationFrame(d):t.clearRect(0,0,r,i)};u();let p=new IntersectionObserver(e=>{s=e[0].isIntersecting,f()});p.observe(e);let m=0,h=()=>{clearTimeout(m),m=window.setTimeout(()=>{u(),f()},200)};addEventListener(`resize`,h,{passive:!0}),document.addEventListener(`visibilitychange`,f),document.addEventListener(`prefs-change`,f),document.addEventListener(`astro:before-swap`,()=>{p.disconnect(),cancelAnimationFrame(a),removeEventListener(`resize`,h),document.removeEventListener(`visibilitychange`,f),document.removeEventListener(`prefs-change`,f)},{once:!0})}function we(){let e=document.querySelector(`[data-typing]`);if(!e)return;let t=JSON.parse(e.dataset.typing),n=t[Math.random()*t.length|0];if(!F(`typing`)){e.textContent=n;return}let r=[...n].map(e=>{let t=document.createElement(`span`);return t.textContent=e,t.className=`ch`,t});e.replaceChildren(...r),e.setAttribute(`aria-label`,n),e.classList.add(`typing`);let i=0,a=0,o=()=>{r[i-1]?.classList.remove(`caret`),r[i].classList.add(`on`,`caret`),i++,a=i<r.length?window.setTimeout(o,150+Math.random()*90):window.setTimeout(()=>r[i-1].classList.remove(`caret`),2400)};a=window.setTimeout(o,500),document.addEventListener(`astro:before-swap`,()=>clearTimeout(a),{once:!0})}var G;function Te(){G?.disconnect();let e=document.querySelectorAll(`.reveal:not(.in)`);if(document.documentElement.classList.contains(`no-reveal`)){e.forEach(e=>e.classList.remove(`reveal`));return}let t=e=>setTimeout(()=>e.classList.remove(`reveal`,`in`),700);G=new IntersectionObserver(e=>e.forEach(e=>{e.isIntersecting&&(e.target.classList.add(`in`),G.unobserve(e.target),t(e.target))}),{rootMargin:`0px 0px -8% 0px`}),e.forEach(e=>G.observe(e))}function Ee(e){let t=me()?`light`:`dark`,n=()=>P({theme:t}),r=document.startViewTransition;if(!r||!F(`sunMoon`)||!e)return n();let i=e.getBoundingClientRect(),a=i.left+i.width/2,o=i.top+i.height/2,s=Math.hypot(Math.max(a,innerWidth-a),Math.max(o,innerHeight-o));document.documentElement.classList.add(`theme-vt`);let c=r.call(document,n);c.ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0 at ${a}px ${o}px)`,`circle(${s}px at ${a}px ${o}px)`]},{duration:520,easing:`cubic-bezier(.4,0,.2,1)`,pseudoElement:`::view-transition-new(root)`})}),c.finished.finally(()=>document.documentElement.classList.remove(`theme-vt`))}function De(e){if(e.closest(`.reward`)?.classList.toggle(`open`),!F(`coin`)||e.classList.contains(`flipping`))return;e.classList.add(`flipping`);let t=new Audio(`/other/aowu.m4a`);t.volume=.6,t.play().catch(()=>{}),e.querySelector(`.coin`)?.addEventListener(`animationend`,()=>e.classList.remove(`flipping`),{once:!0})}var K=e=>document.querySelector(e),q={search:()=>j(),settings:()=>he(),theme:e=>Ee(e),"clear-cache":()=>se(),menu:e=>{let t=document.body.classList.toggle(`menu-open`);e.setAttribute(`aria-expanded`,String(t))},top:()=>scrollTo({top:0,behavior:`smooth`}),bottom:()=>scrollTo({top:document.body.scrollHeight,behavior:`smooth`}),"to-comment":()=>K(`#comments`)?.scrollIntoView({behavior:`smooth`}),toc:()=>document.body.classList.toggle(`toc-open`),read:()=>document.body.classList.toggle(`read-mode`),share:()=>s(),"rs-toggle":e=>e.setAttribute(`aria-expanded`,String(document.body.classList.toggle(`rs-open`))),coin:e=>De(e),random:async()=>{try{let t=await(await fetch(`/search.json`)).json(),n=location.pathname,r=t.filter(e=>e.u!==n);e(r[Math.floor(Math.random()*r.length)].u)}catch{location.assign(`/random/`)}}};document.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`[data-action]`);if(n&&q[n.dataset.action]){e.preventDefault(),q[n.dataset.action](n);return}if(t.matches(`figure.code-block button.copy`))return void i(t);let r=t.closest(`.prose img`);if(r&&!r.closest(`a`))return d(r);t.closest(`.toc a`)&&document.body.classList.remove(`toc-open`),t.closest(`.menu, .menu-toggle`)||document.body.classList.remove(`menu-open`)}),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&document.body.classList.contains(`read-mode`)&&!document.querySelector(`dialog[open]`)?document.body.classList.remove(`read-mode`):(e.key===`k`&&(e.metaKey||e.ctrlKey)||e.key===`/`&&!e.target.closest(`input,textarea,[contenteditable]`))&&(e.preventDefault(),j())});var J=0;document.addEventListener(`copy`,()=>{!K(`.prose`)||Date.now()-J<8e3||(J=Date.now(),t(`复制成功,转载请注明出处并保留原文链接~`,`success`))});var Y=0,X=!1;addEventListener(`scroll`,()=>{X||(X=!0,requestAnimationFrame(()=>{let e=scrollY,t=document.documentElement.scrollHeight-innerHeight,n=t>0?Math.min(100,Math.round(e/t*100)):0,r=K(`#scroll-percent`);r&&(r.textContent=String(n));let i=K(`#toc-pct`);i&&(i.textContent=String(n)),document.body.classList.toggle(`scrolled`,e>60),document.body.classList.toggle(`nav-hidden`,e>300&&e>Y&&!document.body.classList.contains(`menu-open`)),document.body.classList.toggle(`show-rightside`,e>300),document.body.classList.toggle(`at-bottom`,t-e<40),document.documentElement.style.setProperty(`--progress`,String(n/100)),Y=e,X=!1}))},{passive:!0}),ye(),Se(),ie();function Z(e,t={}){let n=document.createElement(`script`);n.src=e,n.async=!0;for(let[e,r]of Object.entries(t))n.setAttribute(e,r);document.body.append(n)}(e=>`requestIdleCallback`in window?requestIdleCallback(e,{timeout:4e3}):setTimeout(e,1500))(()=>{let e=window.__BOOT__.ga;e&&(window.dataLayer=window.dataLayer||[],window.gtag=function(){window.dataLayer.push(arguments)},window.gtag(`js`,new Date),window.gtag(`config`,e),Z(`https://www.googletagmanager.com/gtag/js?id=${e}`))}),document.addEventListener(`astro:page-load`,()=>{window.gtag&&window.gtag(`event`,`page_view`,{page_path:location.pathname})});var Q=0;function Oe(){clearInterval(Q);let e=K(`#runtime`);if(!e)return;let t=new Date(e.dataset.since+`T00:00:00+08:00`).getTime(),n=()=>{let n=Math.floor((Date.now()-t)/1e3);e.textContent=`${Math.floor(n/86400)} 天 ${Math.floor(n%86400/3600)} 时 ${Math.floor(n%3600/60)} 分`};n(),Q=window.setInterval(n,6e4)}function ke(){K(`[id^="busuanzi_"]`)&&(document.querySelector(`script[data-bsz]`)?.remove(),Z(`/js/busuanzi.js`,{"data-bsz":`1`,"data-api":`https://busuanzi.lanyundev.com/api`}))}function Ae(){document.querySelectorAll(`.aside .sticky`).forEach(e=>{let t=()=>e.style.setProperty(`--sticky-h`,e.offsetHeight+`px`);t(),new ResizeObserver(t).observe(e)})}addEventListener(`resize`,()=>Ae(),{passive:!0}),document.addEventListener(`content-unlocked`,()=>je());var $;function je(){$?.disconnect(),$=new IntersectionObserver(e=>e.forEach(e=>e.target.classList.toggle(`anim-on`,e.isIntersecting)),{rootMargin:`80px`}),document.querySelectorAll(`.author-card, .avatar-ring, .prose :is(h1,h2,h3,h4,h5,h6), .heartbeat, .hero-down`).forEach(e=>$.observe(e))}document.addEventListener(`astro:page-load`,()=>{document.body.classList.remove(`menu-open`,`toc-open`,`read-mode`,`rs-open`),l(),ne(),re(),ee(),ve(),Te(),Ae(),je(),we(),Ce(),Oe(),ke()});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer astro.images{:where([data-astro-image]){height:auto}:where([data-astro-image=full-width]){width:100%}:where([data-astro-image=constrained]){max-width:100%}[data-astro-image-fit=fill]{object-fit:fill}[data-astro-image-fit=contain]{object-fit:contain}[data-astro-image-fit=cover]{object-fit:cover}[data-astro-image-fit=scale-down]{object-fit:scale-down}[data-astro-image-pos=top]{object-position:top}[data-astro-image-pos=bottom]{object-position:bottom}[data-astro-image-pos=left]{object-position:left}[data-astro-image-pos=right]{object-position:right}[data-astro-image-pos=center]{object-position:center}[data-astro-image-pos=top-left]{object-position:top left}[data-astro-image-pos=top-right]{object-position:top right}[data-astro-image-pos=top-center]{object-position:top center}[data-astro-image-pos=bottom-left]{object-position:bottom left}[data-astro-image-pos=bottom-right]{object-position:bottom right}[data-astro-image-pos=bottom-center]{object-position:bottom center}[data-astro-image-pos=left-top]{object-position:left top}[data-astro-image-pos=left-bottom]{object-position:left bottom}[data-astro-image-pos=left-center]{object-position:left center}[data-astro-image-pos=right-top]{object-position:right top}[data-astro-image-pos=right-bottom]{object-position:right bottom}[data-astro-image-pos=right-center]{object-position:right center}[data-astro-image-pos=center-top]{object-position:center top}[data-astro-image-pos=center-bottom]{object-position:center bottom}[data-astro-image-pos=center-left]{object-position:center left}[data-astro-image-pos=center-right]{object-position:center right}}.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}.post{padding:32px 40px 28px}.post-head{display:none}.post-head h1{margin:0 0 6px;font-size:30px;line-height:1.35}.post-head .post-meta{color:var(--muted);justify-content:flex-start}.post-head .post-meta a{color:inherit}.notice{background:var(--primary-soft);color:var(--text-2);border-radius:10px;align-items:center;gap:8px;margin:0 0 16px;padding:10px 14px;font-size:14px;display:flex}.notice.warn{background:#f0a02024}.notice .icon{color:var(--primary)}.notice.warn .icon{color:#e08a00}.series{background:var(--card-2);border-radius:12px;margin:0 0 18px;padding:10px 16px}.series summary{cursor:pointer;align-items:center;gap:8px;font-weight:600;display:flex}.series ol{margin:8px 0 0;padding-left:26px}.prose{color:var(--text);overflow-wrap:break-word;font-size:16px;line-height:1.85;position:relative}.prose>:first-child{margin-top:0}.prose p{margin:0 0 1.1em}.prose :is(h1,h2,h3,h4,h5,h6){scroll-margin-top:calc(var(--header-h) + 20px);margin:1.9em 0 .8em;line-height:1.4;position:relative}.prose h1{font-size:1.75em}.prose h2{font-size:1.5em}.prose h3{font-size:1.28em}.prose h4{font-size:1.12em}.prose :is(h5,h6){font-size:1em}.prose h2{border-bottom:1px dashed var(--border);padding-bottom:.35em}.prose .anchor{color:var(--muted);opacity:0;margin-left:.4em;font-weight:400;transition:opacity .2s}.prose :is(h2,h3,h4):hover .anchor{opacity:1}.prose a{color:var(--primary);border-bottom:1px solid color-mix(in srgb, var(--primary) 35%, transparent);transition:border-color .2s,color .2s}.prose a:hover{color:var(--primary-2);border-color:currentColor}.prose :is(ul,ol){margin:0 0 1.1em;padding-left:1.6em}.prose li{margin:.25em 0}.prose li::marker{color:var(--primary)}.prose blockquote{border-left:4px solid var(--primary);background:var(--primary-soft);color:var(--text-2);border-radius:0 10px 10px 0;margin:1.2em 0;padding:.8em 1.2em}.prose blockquote>:last-child{margin-bottom:0}.prose hr{background:linear-gradient(90deg, transparent, var(--border), transparent);border:0;height:1px;margin:2em 0;position:relative;overflow:visible}.prose img{cursor:zoom-in;border-radius:8px;max-width:100%;height:auto;margin:1em auto;display:block}[data-theme=dark] .prose img{filter:brightness(.92);background:#eceef1}.prose p>img:only-child{margin:1.2em auto}.prose video{border-radius:8px;max-width:100%;margin:1em auto;display:block}.prose strong{color:color-mix(in srgb, var(--text) 85%, var(--primary))}.prose del{color:var(--muted)}.prose mark{background:var(--mark);color:inherit;border-radius:3px;padding:0 .2em}.prose kbd{font:.85em var(--font-mono);border:1px solid var(--border);background:var(--card-2);border-bottom-width:2px;border-radius:5px;padding:.1em .45em}.prose :not(pre)>code{font:.88em var(--font-mono);background:color-mix(in srgb, var(--primary) 9%, var(--card-2));color:color-mix(in srgb, var(--text) 70%, #d6336c);border-radius:5px;padding:.15em .4em}.table-wrap{border:1px solid var(--border);border-radius:10px;margin:1.2em 0;overflow-x:auto}.prose table{border-collapse:collapse;width:100%;font-size:.94em}.prose :is(th,td){border-bottom:1px solid var(--border);text-align:left;padding:.55em .9em}.prose th{background:var(--card-2);white-space:nowrap;font-weight:600}.prose tr:last-child td{border-bottom:0}.prose tbody tr:hover{background:color-mix(in srgb, var(--primary) 4%, transparent)}.prose dl dt{font-weight:600}.prose dl dd{margin:0 0 .6em 1.5em}.prose center,.prose [align=center]{text-align:center}.prose .katex-display{padding:.3em 0;overflow:auto hidden}.prose :is(psw,pwd){--mask:#a9adb3;background:var(--mask);cursor:help;-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:3px;padding:0 .15em;transition:background-color .28s}[data-theme=dark] .prose :is(psw,pwd){--mask:#3b414b}.prose .psw-in{opacity:0;transition:opacity .28s}.prose :is(psw,pwd):is(:hover,:focus,:active){background:0 0}.prose :is(psw,pwd):is(:hover,:focus,:active) .psw-in{opacity:1}.code-block{background:var(--code-bg);border:1px solid var(--border);border-radius:12px;margin:1.3em 0;position:relative;overflow:hidden}.code-block figcaption{font:12px var(--font-mono);color:var(--muted);background:color-mix(in srgb, var(--code-bg) 80%, var(--border));align-items:center;gap:8px;padding:6px 12px;display:flex}html:not(.no-decor) .code-block figcaption:before{content:"";background:#ff5f57;border-radius:50%;width:10px;height:10px;margin-right:38px;box-shadow:16px 0 #febc2e,32px 0 #28c840}.code-block .lang{text-transform:uppercase;letter-spacing:.05em}.code-block .copy{color:var(--muted);font:inherit;background:0 0;border:0;border-radius:6px;margin-left:auto;padding:2px 8px}.code-block .copy:hover{background:var(--primary-soft);color:var(--primary)}.code-block .copy.ok{color:#2f9e6f}.code-block pre{font:13.5px/1.65 var(--font-mono);tab-size:4;margin:0;padding:14px 16px;overflow-x:auto;background:0 0!important}.code-block code{counter-reset:line;min-width:max-content;display:block}.code-block .line:before{counter-increment:line;content:counter(line);text-align:right;width:2.4em;color:var(--muted);opacity:.55;user-select:none;margin-right:1em;display:inline-block}.code-block[data-lines="1"] .line:before,.code-block[data-lines="0"] .line:before{display:none}.code-block.collapsed pre{max-height:360px;overflow:hidden}.code-block.collapsed:after{content:"";background:linear-gradient(transparent, var(--code-bg));pointer-events:none;height:90px;position:absolute;inset:auto 0 0}.code-expand{z-index:1;background:var(--primary);color:#fff;box-shadow:var(--shadow);border:0;border-radius:999px;padding:4px 14px;font-size:13px;position:absolute;bottom:10px;left:50%;translate:-50%}.astro-code,.astro-code span{color:var(--shiki-light);background-color:#0000!important}[data-theme=dark] .astro-code,[data-theme=dark] .astro-code span{color:var(--shiki-dark)}details.folding{border:1px solid var(--border);background:var(--card-2);border-radius:10px;margin:1em 0;overflow:hidden}details.folding>summary{cursor:pointer;align-items:center;gap:.5em;padding:.6em 1em;font-weight:600;list-style:none;display:flex}details.folding>summary:before{content:"▸";color:var(--fc,var(--primary));transition:transform .2s}details.folding[open]>summary:before{transform:rotate(90deg)}details.folding>summary::-webkit-details-marker{display:none}details.folding>:not(summary){padding:0 1.1em}details.folding[open]{padding-bottom:.4em}details.folding[data-color=green]{--fc:#2f9e6f;border-left:4px solid #2f9e6f}details.folding[data-color=cyan]{--fc:#16a3b8;border-left:4px solid #16a3b8}details.folding[data-color=red]{--fc:#e5484d;border-left:4px solid #e5484d}details.folding[data-color=blue]{--fc:var(--primary);border-left:4px solid var(--primary)}.tabs{border:1px solid var(--border);border-radius:12px;margin:1.2em 0;overflow:hidden}.tab-bar{background:var(--card-2);border-bottom:1px solid var(--border);display:flex;overflow-x:auto}.tab-bar button{white-space:nowrap;color:var(--text-2);background:0 0;border:0;border-bottom:2px solid #0000;padding:.6em 1.1em}.tab-bar button[aria-selected=true]{color:var(--primary);border-bottom-color:var(--primary);background:var(--card);font-weight:600}.tabs>section.tab{padding:1em 1.2em .2em}.tip{--tc:var(--primary);background:color-mix(in srgb, var(--tc) 10%, transparent);border-left:4px solid var(--tc);border-radius:10px;grid-template-columns:1.3em minmax(0,1fr);align-items:start;column-gap:.75em;margin:1em 0;padding:.7em 1.1em;display:grid}.tip:before{content:"i";box-sizing:border-box;width:1.625em;height:1.625em;font:700 .8em/1 var(--font-sans);color:#fff;background:var(--tc);border-radius:50%;grid-area:1/1/99;place-items:center;margin-top:.34em;display:grid}.tip>*{grid-column:2;margin-top:0}.tip[data-kind=success]{--tc:#2f9e6f}.tip[data-kind=success]:before{content:"✓"}.tip[data-kind=warning]{--tc:#e08a00}.tip[data-kind=warning]:before{content:"!"}.tip[data-kind=error]{--tc:#e5484d}.tip[data-kind=error]:before{content:"✕"}.tip>:last-child{margin-bottom:0}.encrypted{place-items:center;padding:40px 10px;display:grid}.unlock{text-align:center;width:min(380px,100%);color:var(--text-2);justify-items:center;gap:10px;display:grid}.unlock .icon{color:var(--primary)}.unlock .hint{margin:0}.unlock .row{gap:8px;width:100%;display:flex}.unlock input{border:1px solid var(--border);background:var(--card-2);min-width:0;color:var(--text);border-radius:999px;flex:1;padding:9px 14px;font-size:15px}.unlock input:focus{outline:2px solid var(--primary);border-color:#0000}.unlock .err{color:#e5484d;min-height:1.5em;margin:0;font-size:14px}.shake{animation:.4s shake}@keyframes shake{20%,60%{transform:translate(-8px)}40%,80%{transform:translate(8px)}}.region-gate{z-index:5;background:color-mix(in srgb, var(--card) 70%, transparent);backdrop-filter:blur(14px);border-radius:12px;place-items:start center;min-height:240px;padding-top:80px;display:grid;position:absolute;inset:-8px}.region-gate p{background:var(--card);box-shadow:var(--shadow);color:var(--text-2);border-radius:12px;margin:0;padding:14px 22px}.region-gate[data-state=blocked] p{color:#e5484d}.region-gate[data-state=ok]{display:none}.post-tags{flex-wrap:wrap;gap:8px;margin:28px 0 0;display:flex}.post-tags :is(a,span){background:var(--primary-soft);color:var(--primary);border-radius:999px;align-items:center;gap:4px;padding:3px 12px;font-size:13px;transition:all .2s;display:inline-flex}.post-tags a:hover{background:var(--primary);color:#fff}.copyright{background:var(--card-2);color:var(--text-2);border-radius:12px;margin:24px 0 0;padding:16px 20px;font-size:14px;position:relative;overflow:hidden}.copyright:after{content:"©";color:var(--primary);opacity:.07;pointer-events:none;font-size:140px;line-height:1;position:absolute;top:-30px;right:-8px}.copyright p{margin:2px 0}.copyright b{color:var(--text);font-size:15px}.copyright a{word-break:break-all}.cr-meta{flex-wrap:wrap;gap:4px 18px;display:flex;margin-top:6px!important}.reward{justify-items:center;gap:14px;margin:28px 0 0;display:grid}.reward-btn{color:#fff;background:linear-gradient(120deg,#ffb347,#ff7eb3);border:0;border-radius:999px;align-items:center;gap:10px;padding:9px 22px 9px 14px;font-weight:600;transition:transform .2s;display:inline-flex;box-shadow:0 6px 18px #ff7eb359}.coin{color:#b37400;background:radial-gradient(circle at 35% 30%,#fff6c2,#ffd23f 45%,#e6a800);border-radius:50%;place-items:center;width:26px;height:26px;font-size:14px;font-weight:800;display:grid;box-shadow:inset 0 -2px #00000026}.flipping .coin{animation:coinflip 1s var(--ease)}.reward-btn{transition:transform .3s var(--ease), box-shadow .3s}@keyframes coinflip{0%{transform:translateY(0)rotateY(0)}45%{transform:translateY(-46px)rotateY(900deg)}70%{transform:translateY(0)rotateY(1440deg)scale(1.1)}85%{transform:translateY(-8px)rotateY(1440deg)}to{transform:none}}.reward-qr{gap:20px;display:none}.reward.open .reward-qr{animation:pop .3s var(--ease);display:flex}.reward-qr a{color:var(--text-2);justify-items:center;gap:4px;font-size:13px;display:grid}.reward-qr img{width:140px;height:140px;box-shadow:var(--shadow);border-radius:10px}.post-nav{grid-template-columns:1fr 1fr;gap:16px;margin-top:20px;display:grid}.post-nav a{color:var(--text);gap:4px;padding:16px 20px;display:grid}.post-nav a:hover{box-shadow:var(--shadow-hover)}.post-nav .next{text-align:right}.post-nav small{color:var(--muted);align-items:center;gap:4px;display:inline-flex}.post-nav .next small{justify-content:flex-end}.post-nav b{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:600;display:-webkit-box;overflow:hidden}.comments{margin-top:20px;padding:24px 30px}.comments h2{align-items:center;gap:8px;margin:0 0 14px;font-size:18px;display:flex}.comments h2 .icon{color:var(--primary)}#tcomment .tk-input .el-textarea__inner{background:var(--card-2);color:var(--text);border-color:var(--border);border-radius:12px;min-height:120px!important}#tcomment .el-input__inner{background:var(--card-2);color:var(--text);border-color:var(--border);border-radius:10px}#tcomment .tk-comment{border-bottom:1px dashed var(--border);padding:14px 0}#tcomment .tk-avatar{border-radius:50%}#tcomment .el-button--primary{background:var(--primary);border-color:var(--primary);border-radius:999px}#tcomment .tk-content{font-size:14.5px}.read-mode :is(.site-header,.hero,.site-footer,.post-nav,.comments,.side-author,.side-related,.toc-rail,.rightside){display:none!important}.read-mode .page{padding-top:32px}.read-mode .layout.post-layout,[data-side=right] .read-mode .layout.post-layout{grid-template-rows:none;grid-template-columns:minmax(0,1fr);grid-template-areas:"main"}[data-style=vivid] .read-mode .layout.post-layout{max-width:920px}.read-mode .post-head{display:block}.read-mode .post{box-shadow:none}.read-exit{z-index:60;border:1px solid var(--border);background:var(--card);color:var(--text-2);box-shadow:var(--shadow);border-radius:999px;align-items:center;gap:6px;padding:7px 14px;font-size:13px;display:none;position:fixed;top:16px;right:20px}.read-exit:hover{color:var(--primary);border-color:var(--primary)}.read-mode .read-exit{display:inline-flex}@media (width<=680px){.post{padding:22px 18px}.prose{font-size:15.5px}.comments{padding:18px}.post-nav{grid-template-columns:1fr}.code-block pre{font-size:12.5px}}.page-title{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.page-sub{color:var(--muted);margin:0 0 28px;display:none}.home-intro{border-bottom:1px solid var(--border);padding:10px 0 30px;display:none}.home-intro h1{font-family:var(--font-serif);margin:0;font-size:34px}.home-intro p{color:var(--muted);margin:6px 0 0}.page-card{padding:30px 36px}.center{text-align:center}.layout.single.wide{max-width:var(--container)}.timeline{position:relative}.tl-year{border-left:2px solid var(--border);margin-left:10px;padding-left:26px;position:relative}.tl-year+.tl-year{padding-top:6px}.tl-y{align-items:baseline;gap:10px;margin:0 0 12px;font-size:22px;display:flex;position:relative}.tl-y:before{content:"";background:var(--grad);width:14px;height:14px;box-shadow:0 0 0 4px var(--card);border-radius:50%;margin-top:-7px;position:absolute;top:50%;left:-35px}.tl-y small{color:var(--muted);font-size:13px;font-weight:400}.zodiac{font-size:22px}.tl-year ol{gap:12px;margin:0 0 22px;padding:0;list-style:none;display:grid}.tl-item{grid-template-columns:96px 1fr;align-items:center;gap:14px;display:grid;position:relative}.tl-item:before{content:"";background:var(--card);border:2px solid var(--primary);border-radius:50%;width:8px;height:8px;margin-top:-4px;transition:background .2s;position:absolute;top:50%;left:-31px}.tl-item:hover:before{background:var(--primary)}.tl-cover{border-radius:8px;width:96px;height:64px;display:block;overflow:hidden}.tl-cover img{object-fit:cover;width:100%;height:100%;transition:transform .4s var(--ease)}.tl-item time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12.5px;display:block}.tl-item a:not(.tl-cover){color:var(--text);align-items:baseline;gap:4px;display:inline-flex}.tl-item a:not(.tl-cover):hover{color:var(--primary)}.tag-cloud.big{justify-content:center;gap:10px;padding:8px 0}.tag-cloud.big a{font-size:calc(14px + var(--w) * 10px);padding:4px 14px}.cat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}@media (width<=560px){.cat-grid{grid-template-columns:1fr}}.cat-card{background:var(--card-2);min-width:0;color:var(--text);border:1px solid var(--border);transition:.3s var(--ease);border-radius:14px;grid-template-columns:minmax(0,1fr);gap:2px;padding:20px;display:grid}.cat-card:hover{box-shadow:var(--shadow-hover);color:var(--text);border-color:var(--primary)}.cat-card .icon{color:var(--primary)}.cat-card b{margin-top:6px;font-size:18px}.cat-card>span{color:var(--muted);font-size:13px}.cat-card ul{color:var(--text-2);min-width:0;margin:8px 0 0;padding-left:1.2em;font-size:13px;list-style:outside}.cat-card li::marker{color:var(--primary)}.cat-card li{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.stats-tiles{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px;margin-bottom:26px;display:grid}.tile{background:var(--card-2);border:1px solid var(--border);border-radius:14px;gap:2px;padding:18px;display:grid}.tile b{font-variant-numeric:tabular-nums;color:var(--text);font-size:30px;line-height:1.2}.tile b small{margin-left:2px;font-size:15px}.tile span{color:var(--muted);font-size:13px}.chart{margin:0 0 30px}.chart h2{margin:0 0 4px;font-size:18px}.chart-sub{color:var(--muted);margin:0 0 12px;font-size:13px}.chart-row{grid-template-columns:1fr 1fr;gap:30px;display:grid}.heatmap{color:var(--muted);grid-template-columns:40px repeat(12,minmax(0,1fr));gap:5px;font-size:12px;display:grid}.hm-m{text-align:center;white-space:nowrap}@media (width<=560px){.hm-m .u{display:none}.heatmap{grid-template-columns:34px repeat(12,minmax(0,1fr));gap:3px}}.hm-y{font-variant-numeric:tabular-nums;align-self:center}.hm-c{aspect-ratio:1;background:var(--card-2);border:1px solid var(--border);border-radius:4px}.hm-c[data-l="1"]{background:color-mix(in srgb, var(--primary) 30%, var(--card));border-color:#0000}.hm-c[data-l="2"]{background:color-mix(in srgb, var(--primary) 52%, var(--card));border-color:#0000}.hm-c[data-l="3"]{background:color-mix(in srgb, var(--primary) 76%, var(--card));border-color:#0000}.hm-c[data-l="4"]{background:var(--primary);border-color:#0000}.heatmap .hm-c:hover{outline:2px solid var(--text);outline-offset:1px}.hm-legend{color:var(--muted);align-items:center;gap:4px;margin-top:10px;font-size:12px;display:flex}.hm-legend .hm-c{width:14px}.bars-v{border-bottom:1px solid var(--border);align-items:flex-end;gap:clamp(8px,3vw,28px);height:220px;padding-top:24px;display:flex}.bars-v .col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;max-width:80px;height:100%;display:flex;position:relative}.bars-v .bar{background:var(--primary);border-radius:4px 4px 0 0;width:100%;min-height:4px;transition:opacity .2s}.bars-v .col:hover .bar{opacity:.8}.bars-v .val{color:var(--text);font-variant-numeric:tabular-nums;margin-bottom:4px;font-size:13px;font-weight:600}.bars-v-labels{gap:clamp(8px,3vw,28px);margin-top:6px;display:flex}.bars-v-labels span{text-align:center;max-width:80px;color:var(--muted);font-variant-numeric:tabular-nums;flex:1;font-size:12px}.bars-h{gap:8px;margin:10px 0 0;padding:0;list-style:none;display:grid}.bars-h li{grid-template-columns:7em 1fr 3em;align-items:center;gap:10px;font-size:14px;display:grid}.bars-h a{color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.bars-h a:hover{color:var(--primary)}.bars-h .track{background:var(--card-2);border-radius:4px;height:12px;overflow:hidden}.bars-h .fill{background:var(--primary);border-radius:0 4px 4px 0;height:100%;display:block}.bars-h li:hover .fill{opacity:.8}.bars-h b{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}.chart-table summary{cursor:pointer;color:var(--text-2);font-size:14px}.chart-table table{border-collapse:collapse;width:100%;font-size:13px}.chart-table :is(th,td){text-align:center;border-bottom:1px solid var(--border);padding:4px 8px}.about-hero{align-items:center;gap:26px;margin-bottom:24px;display:flex}.about-avatar{object-fit:cover;width:140px;height:140px;box-shadow:var(--shadow-hover);border-radius:28px}.about-hero h2{margin:0 0 6px;font-size:26px}.about-hero p{color:var(--text-2);margin:0 0 8px}.about-hero .social{justify-content:flex-start;margin:0}.about h3{margin:26px 0 10px}.skill-list{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.skill-list li{background:var(--card-2);border-radius:12px;padding:12px 16px;display:grid}.skill-list span{color:var(--text-2);font-size:14px}.flink-group h2{align-items:baseline;gap:10px;margin:0 0 14px;font-size:20px;display:flex}.flink-group h2 small{color:var(--muted);font-size:13px;font-weight:400}.flink-group+.flink-group{margin-top:28px}.flinks{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;display:grid}.flink{--fc:var(--primary);background:var(--card-2);color:var(--text);border:1px solid var(--border);transition:.3s var(--ease);border-radius:14px;align-items:center;gap:12px;padding:14px;display:flex}.flink:hover{background:var(--fc);color:#fff;box-shadow:var(--shadow-hover);border-color:#0000}.flink-fallback{background:var(--fc);color:#fff;border-radius:50%;flex-shrink:0;place-items:center;width:54px;height:54px;font-size:22px;font-weight:700;display:grid}.flink img{object-fit:cover;width:54px;height:54px;transition:transform .5s var(--ease);background:var(--card);border-radius:50%;flex-shrink:0}.flink div{min-width:0;display:grid}.flink b{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.flink span{opacity:.75;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:13px;display:-webkit-box;overflow:hidden}.flink-apply{margin-top:34px}.page-card .comments{box-shadow:none;border:0;margin-top:30px;padding:0}.envelope{place-items:center;padding:10px 0 24px;display:grid}.letter{background:repeating-linear-gradient(transparent 0 31px, color-mix(in srgb, var(--primary) 18%, transparent) 31px 32px), var(--card-2);width:min(520px,100%);box-shadow:var(--shadow);border-radius:12px;padding:26px 30px;font-size:16px;line-height:32px;position:relative}.letter p{margin:0}.letter .sign{text-align:right;color:var(--muted)}.letter:before{content:"";background:repeating-linear-gradient(135deg, #e5484d 0 12px, transparent 12px 24px, var(--primary) 24px 36px, transparent 36px 48px);border-radius:12px 12px 0 0;height:6px;position:absolute;inset:0 0 auto}.bangumi-tabs{border:0;margin-top:0}.bangumi-tabs>section.tab{padding:16px 0 0}.bangumis{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;display:grid}.bangumi{transition:transform .3s var(--ease), box-shadow .3s;background:var(--card-2);color:var(--text);border:1px solid var(--border);transition:.3s var(--ease);border-radius:14px;grid-template-columns:96px 1fr;gap:14px;padding:12px;display:grid}.bangumi:hover{box-shadow:var(--shadow-hover);color:var(--text)}.bangumi img{object-fit:cover;border-radius:8px;width:96px;height:128px}.bangumi div{align-content:start;gap:2px;min-width:0;display:grid}.bangumi small{color:var(--muted)}.bangumi .score{color:#f5a524;font-size:13px;font-weight:600}.bangumi p{color:var(--text-2);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:4px 0 0;font-size:13px;display:-webkit-box;overflow:hidden}.not-found{place-items:center;min-height:60vh;display:grid}.nf-card{grid-template-columns:1fr 1fr;align-items:center;max-width:900px;display:grid;overflow:hidden}.nf-img{object-fit:contain;align-self:center;width:100%;height:auto}.nf-card>div{padding:30px}.nf-card h1{background:var(--grad);color:#0000;-webkit-background-clip:text;background-clip:text;margin:0;font-size:64px}.nf-actions{flex-wrap:wrap;gap:10px;margin:14px 0 20px;display:flex}.btn.ghost{background:var(--primary-soft);color:var(--primary)}.nf-card ul{margin:6px 0 0;padding-left:1.2em}@media (width<=760px){.page-card{padding:22px 18px}.chart-row{grid-template-columns:1fr}.about-hero{text-align:center;flex-direction:column}.about-hero .social{justify-content:center}.nf-card,.tl-item{grid-template-columns:1fr}.tl-cover{display:none}}.heatmap,.bars-v,.bars-v-labels{max-width:720px}.bars-v .col,.bars-v-labels span{max-width:none}:root[data-style=minimal]{--primary:#b4532a;--primary-2:#8a3a1a;--grad:linear-gradient(120deg, #b4532a, #c9773f);--bg:#faf8f3;--bg-deco:none;--card:#faf8f3;--card-2:#f2eee5;--text:#2a2723;--text-2:#57514a;--muted:#948b80;--border:#e6dfd2;--shadow:none;--shadow-hover:0 8px 30px #3c281414;--radius:0px;--container:760px;--code-bg:#f3efe6}:root[data-style=minimal][data-theme=dark]{--primary:#e0915f;--primary-2:#f0b088;--bg:#161513;--card:#161513;--card-2:#201e1b;--text:#e3ddd3;--text-2:#b9b1a5;--muted:#847c71;--border:#2e2b27;--code-bg:#1e1c19}[data-style=minimal] body{font-size:16.5px}[data-style=minimal] .card{box-shadow:none;background:0 0;border:0}[data-style=minimal] .hero,[data-style=minimal] .aside,[data-style=minimal] .top-carousel,[data-style=minimal] .rightside .rs-toc{display:none!important}[data-style=minimal] .page,[data-style=minimal] .has-hero .page{padding-top:calc(var(--header-h) + 48px)}[data-style=minimal] .layout{grid-template-columns:minmax(0,1fr)}[data-style=minimal] .layout>.main{grid-column:1}[data-style=minimal] .site-header{background:color-mix(in srgb, var(--bg) 88%, transparent);border-bottom-color:var(--border)}[data-style=minimal] .site-header.transparent:not(:is(.scrolled *)){background:color-mix(in srgb, var(--bg) 88%, transparent);color:var(--text);border-bottom-color:var(--border);backdrop-filter:blur(10px)}[data-style=minimal] .site-header.transparent:not(:is(.scrolled *)) .brand{color:var(--text);text-shadow:none}[data-style=minimal] .brand{font-family:var(--font-serif);font-weight:700}[data-style=minimal] .menu-link .icon{display:none}[data-style=minimal] .nav.container{max-width:1000px}[data-style=minimal] .post-list{gap:0}[data-style=minimal] .post-card,[data-style=minimal] .post-card.flip{border-bottom:1px solid var(--border);border-radius:0;height:auto;min-height:0;padding:26px 0;display:block}[data-style=minimal] .post-card:hover{box-shadow:none;transform:none}[data-style=minimal] .post-card .cover{display:none}[data-style=minimal] .post-card .info{padding:0}[data-style=minimal] .post-card .title{font-family:var(--font-serif);font-size:22px;font-weight:700}[data-style=minimal] .post-card .excerpt{-webkit-line-clamp:2}[data-style=minimal] .post-card .meta{order:-1}[data-style=minimal] .pagination a,[data-style=minimal] .pagination span{box-shadow:none;border:1px solid var(--border);background:0 0;border-radius:4px}[data-style=minimal] .pagination .current{background:var(--text);color:var(--bg);border-color:var(--text)}[data-style=minimal] .badge{color:var(--primary);background:0 0;border:1px solid}[data-style=minimal] .post{padding:0}[data-style=minimal] .post-head{text-align:center;margin-bottom:40px;display:block}[data-style=minimal] .post-head h1{font-family:var(--font-serif);letter-spacing:.02em;font-size:34px}[data-style=minimal] .post-head .post-meta{justify-content:center;font-size:14px}[data-style=minimal] .prose{font-family:var(--font-serif);text-align:start;hanging-punctuation:allow-end;font-size:18px;line-height:2}[data-style=minimal] .prose :is(h1,h2,h3,h4,h5,h6){font-family:var(--font-sans);padding-left:0}[data-style=minimal] .prose :is(h1,h2,h3,h4,h5,h6):before{display:none}[data-style=minimal] .prose h2{border-bottom:0;font-size:1.35em}[data-style=minimal] .prose h2:after{content:"";background:var(--primary);width:2em;height:2px;margin-top:.4em;display:block}[data-style=minimal] .prose a{border-bottom-style:dotted}[data-style=minimal] .prose blockquote{background:0 0;border-left-width:2px;font-style:normal}[data-style=minimal] .prose :is(ul,ol,table,.code-block,.tabs,details.folding){text-align:left}[data-style=minimal] .prose img{border-radius:2px}[data-style=minimal] .code-block,[data-style=minimal] .tabs,[data-style=minimal] details.folding,[data-style=minimal] .copyright,[data-style=minimal] .tile{border-radius:4px}[data-style=minimal] .code-block figcaption:before{display:none}[data-style=minimal] .reward-btn{color:var(--primary);box-shadow:none;background:0 0;border:1px solid}[data-style=minimal] .post-nav a{border-top:1px solid var(--border);border-radius:0;padding:18px 0}[data-style=minimal] .post-nav a:hover{box-shadow:none;transform:none}[data-style=minimal] .comments{border-top:1px solid var(--border);border-radius:0;padding:30px 0 0}[data-style=minimal] .page-card{padding:0}[data-style=minimal] .page-title{clip:auto;width:auto;height:auto;font-family:var(--font-serif);margin:0 0 6px;font-size:32px;position:static}[data-style=minimal] .page-sub,[data-style=minimal] .home-intro{display:block}[data-style=minimal] .tl-cover{display:none}[data-style=minimal] .tl-item{grid-template-columns:1fr}[data-style=minimal] .tl-y:before{background:var(--primary)}[data-style=minimal] .flink,[data-style=minimal] .cat-card,[data-style=minimal] .bangumi,[data-style=minimal] .skill-list li{border-radius:4px}[data-style=minimal] .site-footer{background:0 0}[data-style=minimal] .rs-btn,[data-style=minimal][data-theme=dark] .rs-btn{background:var(--card-2);color:var(--text);border:1px solid var(--border);box-shadow:none}[data-style=minimal] .layout.post-layout,[data-style=minimal][data-side=right] .layout.post-layout{grid-template-rows:none;grid-template-columns:minmax(0,1fr);grid-template-areas:"main"}[data-style=minimal] .layout.post-layout>:is(.side-author,.side-related,.toc-rail){display:none}[data-style=minimal][data-side=right] .layout:not(.single):not(.post-layout){grid-template-columns:minmax(0,1fr)}[data-style=minimal][data-side=right] .layout:not(.single):not(.post-layout)>.main{grid-column:1}[data-style=minimal] .post-list{grid-template-columns:1fr}[data-style=minimal] .post-card,[data-style=minimal] .post-card.flip{grid-template-rows:none}@media (width>=1700px){:root[data-style=minimal]{--container:820px}}:root[data-style=minimal][data-wide="1"]{--container:1080px}@media (width>=1700px){:root[data-style=minimal][data-wide="1"]{--container:1240px}}html:not(.no-hover) .btn:hover{transform:translateY(-1px)}html:not(.no-hover) .post-card:hover{transform:translateY(-4px)}html:not(.no-hover) .post-card:hover .cover img{transform:scale(1.06)}html:not(.no-hover) .social a:hover{transform:translateY(-3px)}html:not(.no-hover) .rs-btn:hover{transform:translateY(-2px)}html:not(.no-hover) .cat-card:hover,html:not(.no-hover) .flink:hover,html:not(.no-hover) .bangumi:hover,html:not(.no-hover) .post-nav a:hover{transform:translateY(-4px)}html:not(.no-hover) .tl-item:hover .tl-cover img{transform:scale(1.1)}html:not(.no-hover) .flink:hover img,html:not(.no-hover) .avatar-ring:hover .avatar{transform:rotate(360deg)}html:not(.no-hover) .reward-btn:hover{transform:translateY(-2px)}html:not(.no-hover) .theme-toggle:hover .icon{transform:rotate(40deg)}html:not(.no-hover) .top-carousel .slide:hover img{transform:scale(1.03)}.post-card,.cat-card,.flink,.bangumi,.post-nav a,.tag-cloud a,.post-tags a,.social a,.tl-item a{transition:transform .35s var(--ease), box-shadow .3s ease, background-color .25s ease, border-color .25s ease, color .2s ease}.no-hover .post-card:hover,.no-hover .cat-card:hover,.no-hover .flink:hover,.no-hover .bangumi:hover{box-shadow:var(--shadow-hover)}.reveal{opacity:0;transform:translateY(24px)}.reveal.in{opacity:1;transition:opacity .6s var(--ease), transform .6s var(--ease);transform:none}.no-reveal .reveal{opacity:1;transform:none}.fx-heart{z-index:300;background:var(--c);pointer-events:none;will-change:transform, opacity;width:10px;height:10px;animation:1.3s linear forwards fx-heart;position:fixed;transform:rotate(45deg)}.fx-heart:before,.fx-heart:after{content:"";background:inherit;border-radius:50%;width:10px;height:10px;position:absolute}.fx-heart:before{left:-5px}.fx-heart:after{top:-5px}@keyframes fx-heart{to{opacity:0;transform:translateY(-78px)rotate(45deg)scale(1.3)}}.fx-canvas{z-index:300;pointer-events:none;position:fixed;inset:0}html:not(.no-cursor) body{cursor:url(/cur/Normal.svg),auto}html:not(.no-cursor) :is(a,button,summary,label,[role=tab],.reward-btn){cursor:url(/cur/Link.svg),pointer}html:not(.no-cursor) :is(input,textarea,[contenteditable]){cursor:url(/cur/HandWriting.svg),text}.avatar-ring:after{content:"";box-shadow:0 0 6px 4px var(--ring);opacity:.35;pointer-events:none;border-radius:50%;position:absolute;inset:-4px}html:not(.no-decor) .avatar-ring.anim-on:after{animation:4s ease-in-out infinite breathe}@keyframes breathe{50%{opacity:1;transform:scale(1.03)}}.author-card:before{content:"";z-index:0;opacity:.75;pointer-events:none;background:linear-gradient(100deg,#e8d8b9,#eccec5,#a3e9eb,#bdbdf0,#eec1ea,#e8d8b9,#eccec5);width:300%;position:absolute;top:0;bottom:0;left:0}[data-theme=dark] .author-card:before{opacity:0}html:not(.no-decor) .author-card.anim-on:before{animation:10s ease-in-out infinite alternate flow}@keyframes flow{to{transform:translate(-66.66%)}}html:not(.no-decor)[data-style=vivid] .prose :is(h1,h2,h3,h4,h5,h6){padding-left:1.35em}html:not(.no-decor)[data-style=vivid] .prose :is(h1,h2,h3,h4,h5,h6):before{content:"";background:var(--fan,#fb7061);width:1em;height:1em;-webkit-mask:var(--fan-svg) center / contain no-repeat;mask:var(--fan-svg) center / contain no-repeat;position:absolute;top:.32em;left:0}html:not(.no-decor)[data-style=vivid] .prose :is(h1,h2,h3,h4,h5,h6).anim-on:before{animation:4s linear infinite spin}.prose h1{--fan:#ef50a8}.prose h2{--fan:#fb7061}.prose h3{--fan:#ffbf00}.prose h4{--fan:#a9e000}.prose h5{--fan:#57c850}.prose h6{--fan:#5ec1e0}:root{--fan-svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='%23000'%3E%3Cpath d='M12 11C10.6 7.2 11.2 3 14.6 2.1c2.6-.7 3.8 2.4 1.7 4.4-1.3 1.3-2.8 2.6-4.3 4.5z'/%3E%3Cpath d='M13 12c3.8-1.4 8-.8 8.9 2.6.7 2.6-2.4 3.8-4.4 1.7-1.3-1.3-2.6-2.8-4.5-4.3z'/%3E%3Cpath d='M12 13c1.4 3.8.8 8-2.6 8.9-2.6.7-3.8-2.4-1.7-4.4 1.3-1.3 2.8-2.6 4.3-4.5z'/%3E%3Cpath d='M11 12C7.2 13.4 3 12.8 2.1 9.4c-.7-2.6 2.4-3.8 4.4-1.7 1.3 1.3 2.6 2.8 4.5 4.3z'/%3E%3Ccircle cx='12' cy='12' r='1.6'/%3E%3C/g%3E%3C/svg%3E")}@keyframes spin{to{transform:rotate(-360deg)}}html:not(.no-decor) .heartbeat.anim-on{animation:1.3s ease-in-out infinite heartbeat}@keyframes heartbeat{0%,to{transform:scale(1)}15%{transform:scale(1.25)}30%{transform:scale(1)}45%{transform:scale(1.15)}}html:not(.no-decor) .hero-down.anim-on{animation:1.8s ease-in-out infinite bob}@keyframes bob{50%{transform:translateY(8px)}}.no-pageTransition ::view-transition-group(*),.no-pageTransition ::view-transition-old(*),.no-pageTransition ::view-transition-new(*){animation:none!important}.theme-vt::view-transition-old(root),.theme-vt::view-transition-new(root){mix-blend-mode:normal;animation:none}[data-motion=reduce] *,[data-motion=reduce] :before,[data-motion=reduce] :after{scroll-behavior:auto!important;animation:none!important}[data-motion=reduce] *{transition-property:color,background-color,border-color,box-shadow,opacity!important;transition-duration:.15s!important}[data-motion=reduce] .carousel.vertical .slides{transition:none!important}@media (hover:none){html:not(.no-hover) .post-card:hover{transform:none}}:root{--font-sans:-apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", "Segoe UI", Roboto, sans-serif;--font-serif:"Noto Serif SC", "Source Han Serif SC", "Songti SC", "STSong", Georgia, serif;--font-mono:"JetBrains Mono", "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--primary:#3d9cf0;--primary-2:#ff7eb3;--primary-soft:color-mix(in srgb, var(--primary) 12%, transparent);--grad:linear-gradient(120deg, #4facfe 0%, #8f7cff 50%, #ff7eb3 100%);--bg:#f3f6fb;--bg-deco:radial-gradient(1200px 600px at 100% -10%, #e4f0ff 0%, transparent 60%), radial-gradient(900px 500px at -10% 20%, #ffeaf3 0%, transparent 55%);--card:#fff;--card-2:#f6f8fb;--text:#2c3440;--text-2:#5d6876;--muted:#8a96a6;--border:#e6ebf2;--shadow:0 1px 2px #1e325a0a, 0 6px 24px #1e325a0f;--shadow-hover:0 4px 10px #1e325a0f, 0 18px 44px #1e325a1f;--radius:14px;--radius-sm:8px;--header-h:60px;--container:1240px;--aside-w:300px;--ease:cubic-bezier(.22, .8, .24, 1);--code-bg:#f7f8fa;--mark:#fff3a8;color-scheme:light}[data-theme=dark]{--primary:#5aa9f2;--primary-2:#ff8fbe;--bg:#0f1216;--bg-deco:radial-gradient(1200px 600px at 100% -10%, #142338 0%, transparent 60%), radial-gradient(900px 500px at -10% 20%, #2a1626 0%, transparent 55%);--card:#171b21;--card-2:#1d222a;--text:#d5dbe3;--text-2:#a3adba;--muted:#76818f;--border:#262c35;--shadow:0 1px 2px #0000004d, 0 6px 24px #00000040;--shadow-hover:0 4px 10px #00000059, 0 18px 44px #0006;--code-bg:#1b1f26;--mark:#5c4d14;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 16px)}html:not([data-motion=reduce]){scroll-behavior:smooth}body{min-height:100vh;font:15.5px/1.75 var(--font-sans);color:var(--text);background:var(--bg-deco), var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-attachment:fixed;flex-direction:column;margin:0;transition:background-color .3s,color .3s;display:flex}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-2)}img,svg,video,canvas{vertical-align:middle;max-width:100%}img{height:auto}button{font:inherit;color:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px}::selection{background:color-mix(in srgb, var(--primary) 30%, transparent)}.icon{flex-shrink:0}.muted{color:var(--muted)}.container{width:100%;max-width:var(--container);margin:0 auto;padding:0 20px}.skip-link{z-index:100;background:var(--card);border-radius:6px;padding:6px 12px;position:absolute;top:8px;left:-999px}.skip-link:focus{left:8px}.page{padding-top:calc(var(--header-h) + 24px);flex:1}.has-hero .page{padding-top:28px}[hidden]{display:none!important}html{scrollbar-color:color-mix(in srgb, var(--primary) 45%, transparent) transparent;scrollbar-width:thin}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--primary) 45%, transparent);border-radius:8px}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid color-mix(in srgb, var(--border) 60%, transparent);transition:box-shadow .3s var(--ease), transform .3s var(--ease), background-color .3s}.btn{background:var(--primary);color:#fff;border:0;border-radius:999px;align-items:center;gap:6px;padding:8px 18px;font-weight:500;transition:filter .2s,transform .2s;display:inline-flex}.btn:hover{color:#fff;filter:brightness(1.08)}.icon-btn{width:38px;height:38px;color:inherit;background:0 0;border:0;border-radius:10px;place-items:center;transition:background .2s,color .2s;display:inline-grid}.icon-btn:hover{background:color-mix(in srgb, currentColor 12%, transparent)}.link-btn{color:var(--primary);background:0 0;border:0;padding:0}.badge{background:var(--grad);color:#fff;border-radius:999px;padding:0 8px;font-size:12px;line-height:20px;display:inline-block}.layout{grid-template-columns:var(--aside-w) minmax(0, 1fr);align-items:start;gap:24px;display:grid}.layout>.main{grid-area:1/2;min-width:0}.layout>.aside{grid-area:1/1}.layout.single{grid-template-columns:minmax(0,1fr);max-width:980px}.layout.single>.main{grid-column:1}.site-header{z-index:50;height:var(--header-h);background:color-mix(in srgb, var(--card) 88%, transparent);-webkit-backdrop-filter:saturate(160%)blur(8px);border-bottom:1px solid color-mix(in srgb, var(--border) 70%, transparent);transition:transform .35s var(--ease), background-color .3s, border-color .3s;position:fixed;inset:0 0 auto}.nav-hidden .site-header{transform:translateY(-100%)}.site-header.transparent:not(:is(.scrolled *)){backdrop-filter:none;color:#fff;background:0 0;border-color:#0000}.site-header.transparent:not(:is(.scrolled *)) .brand{color:#fff;text-shadow:0 2px 8px #0000004d}.nav{align-items:center;gap:12px;height:100%;display:flex}.brand{color:var(--text);letter-spacing:.02em;white-space:nowrap;margin-right:auto;font-size:19px;font-weight:700}.brand:hover{color:var(--primary)}.menu{gap:2px;margin:0;padding:0;list-style:none;display:flex}.menu-item{position:relative}.menu-link{color:inherit;white-space:nowrap;background:0 0;border:0;border-radius:10px;align-items:center;gap:6px;padding:7px 12px;font-size:15px;transition:background .2s;display:flex}.menu-link:hover,.menu-item.active .menu-link{background:color-mix(in srgb, currentColor 10%, transparent);color:inherit}.menu-item.active .menu-link{font-weight:600}.caret{opacity:.7;transition:transform .2s}.submenu{background:var(--card);min-width:180px;color:var(--text);box-shadow:var(--shadow-hover);border:1px solid var(--border);opacity:0;visibility:hidden;transition:.2s var(--ease);border-radius:12px;max-height:70vh;margin:0;padding:6px;list-style:none;position:absolute;top:calc(100% + 6px);left:50%;overflow:auto;transform:translate(-50%,-6px)}.submenu:before{content:"";height:10px;position:absolute;inset:-10px 0 auto}.submenu a{color:var(--text);white-space:nowrap;border-radius:8px;padding:7px 12px;font-size:14px;display:block}.submenu a:hover{background:var(--primary-soft);color:var(--primary)}.has-sub:hover .submenu,.has-sub:focus-within .submenu{opacity:1;visibility:visible;transform:translate(-50%)}.has-sub:hover .caret{transform:rotate(180deg)}.nav-actions{gap:2px;display:flex}.menu-toggle{display:none}.theme-toggle .icon{transition:transform .5s var(--ease)}.theme-toggle .i-moon,[data-theme=dark] .theme-toggle .i-sun{display:none}[data-theme=dark] .theme-toggle .i-moon{display:block}.hero{color:#fff;background:#1d2633;place-items:center;height:100svh;min-height:480px;display:grid;position:relative;overflow:hidden}.hero.small{height:380px;min-height:0}.hero-bg{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.hero:after{content:"";z-index:1;pointer-events:none;background:linear-gradient(#0006,#00000040 45%,#00000080);position:absolute;inset:0}[data-theme=dark] .hero-bg{filter:brightness(.72)}.hero.small:after{background:radial-gradient(#00000080,#0000004d 70%),linear-gradient(#00000059,#0000008c)}.fx-bubbles{z-index:2;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.hero-inner{z-index:3;text-align:center;max-width:980px;padding:0 20px;position:relative}.hero-title{text-wrap:balance;letter-spacing:.04em;text-shadow:0 4px 24px #00000059;margin:0;font-size:clamp(30px,5.2vw,52px);font-weight:700;line-height:1.3}.hero-sub{opacity:.95;text-shadow:0 2px 10px #0006;min-height:1.6em;margin:14px 0 0;font-size:clamp(16px,2.2vw,21px)}[data-typing].typing .ch{opacity:0}[data-typing].typing .ch.on{opacity:1}[data-typing] .ch.caret{animation:1s step-end infinite caret;box-shadow:2px 0}@keyframes caret{50%{box-shadow:2px 0 #0000}}@keyframes blink{50%{opacity:0}}.hero-down{z-index:3;color:#fff;margin-left:-14px;position:absolute;bottom:24px;left:50%}.hero-down:hover{color:#fff}.post-hero-info{padding-top:var(--header-h);flex-direction:column;align-items:center;gap:10px;display:flex}.post-hero-info .hero-title{font-size:clamp(24px,3.6vw,38px)}.hero-cat{backdrop-filter:blur(6px);color:#fff;background:#ffffff2e;border:1px solid #ffffff40;border-radius:999px;padding:2px 14px;font-size:13px}.hero-cat:hover{color:#fff;background:#ffffff47}.post-meta{flex-wrap:wrap;justify-content:center;gap:4px 16px;font-size:13.5px;display:flex}.post-meta>*{align-items:center;gap:5px;display:inline-flex}.hero .post-meta{opacity:.92}.post-list{gap:20px;display:grid}.post-card{grid-template-columns:42% 1fr;height:230px;display:grid;overflow:hidden}.post-card:hover{box-shadow:var(--shadow-hover)}.post-card.flip{grid-template-columns:1fr 42%}.post-card.flip .cover{order:2}.post-card .cover{background:var(--card-2);display:block;position:relative;overflow:hidden}.post-card .cover img{object-fit:cover;width:100%;height:100%;transition:transform .6s var(--ease);position:absolute;inset:0}.post-card .info{flex-direction:column;justify-content:center;gap:8px;min-width:0;padding:22px 28px;display:flex}.post-card .title{margin:0;font-size:20px;line-height:1.45}.post-card .title a{color:var(--text);background:linear-gradient(var(--primary), var(--primary)) 0 100% / 0 2px no-repeat;transition:background-size .35s var(--ease), color .2s;align-items:baseline;gap:6px;display:inline-flex}.post-card .title a:hover{color:var(--primary);background-size:100% 2px}.post-card .meta{color:var(--muted);flex-wrap:wrap;gap:4px 14px;font-size:13px;display:flex}.post-card .meta>*{color:inherit;align-items:center;gap:4px;display:inline-flex}.post-card .meta .badge{color:#fff}.post-card .meta a:hover{color:var(--primary)}.post-card .excerpt{color:var(--text-2);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0;font-size:14.5px;display:-webkit-box;overflow:hidden}.top-carousel{margin-bottom:20px;position:relative;overflow:hidden}.carousel .viewport{border-radius:inherit;overflow:hidden}.carousel:not(.vertical) .viewport{scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;overflow-x:auto}.carousel:not(.vertical) .viewport::-webkit-scrollbar{display:none}.carousel .slides{display:flex}.carousel.vertical .slides{transition:transform .6s var(--ease)}.carousel:not(.vertical) .slide{scroll-snap-align:start;scroll-snap-stop:always}.carousel .slide{flex:0 0 100%;display:block;position:relative}.top-carousel .slide{color:#fff;height:280px;overflow:hidden}.top-carousel .slide img{object-fit:cover;width:100%;height:100%;transition:transform .8s var(--ease)}.top-carousel .slide:after{content:"";background:linear-gradient(#0000 40%,#000000a6);position:absolute;inset:0}.slide-info{z-index:1;justify-items:start;gap:4px;padding:22px 26px;display:grid;position:absolute;bottom:0;left:0;right:0}.slide-info b{font-size:22px}.slide-info small{opacity:.85;-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.dots{z-index:2;gap:6px;display:flex;position:absolute;bottom:16px;right:18px}.dots button{background:#ffffff8c;border:0;border-radius:99px;width:8px;height:8px;padding:0;transition:width .3s}.dots button[aria-current=true]{background:#fff;width:22px}.carousel .prev,.carousel .next{z-index:2;backdrop-filter:blur(4px);color:#fff;opacity:0;background:#00000059;border:0;border-radius:50%;place-items:center;width:34px;height:34px;margin-top:-17px;transition:opacity .2s,background .2s;display:grid;position:absolute;top:50%}.carousel .prev:hover,.carousel .next:hover{background:#0000008c}.carousel:hover .prev,.carousel:hover .next{opacity:1}.carousel .prev{left:10px}.carousel .next{right:10px}@media (hover:none){.carousel .prev,.carousel .next{display:none}}.pagination{flex-wrap:wrap;justify-content:center;gap:8px;margin:28px 0 8px;display:flex}.pagination a,.pagination span{background:var(--card);min-width:38px;height:38px;box-shadow:var(--shadow);color:var(--text);border-radius:10px;place-items:center;padding:0 10px;display:grid}.pagination a:hover{background:var(--primary);color:#fff}.pagination .current{background:var(--grad);color:#fff;font-weight:600}.pagination .gap{box-shadow:none;background:0 0}.aside{align-content:start;gap:20px;display:grid}.aside .sticky{gap:20px;display:grid}.aside .card,.toc-card{padding:18px 20px}.aside h3,.toc-card h3{align-items:center;gap:8px;margin:0 0 12px;font-size:15.5px;display:flex}.aside h3 .icon,.toc-card h3 .icon{color:var(--primary)}.author-card{text-align:center;isolation:isolate;position:relative;overflow:hidden;padding-top:26px!important}.author-card>*{z-index:1;position:relative}.avatar-ring{--ring:#9fd8f5;border-radius:50%;width:112px;height:112px;margin:0 auto 10px;display:block;position:relative}[data-theme=dark] .avatar-ring{--ring:#39c5bb}.avatar{object-fit:cover;border:3px solid var(--card);width:112px;height:112px;transition:transform .8s var(--ease);border-radius:50%;display:block}.status{z-index:2;background:var(--card);cursor:default;white-space:nowrap;border-radius:99px;justify-content:center;align-items:center;gap:4px;min-width:28px;height:28px;padding:0 6px;font-size:14px;line-height:1;display:inline-flex;position:absolute;bottom:4px;right:2px;box-shadow:0 2px 8px #00000026}.status-text{max-width:0;color:var(--text-2);transition:max-width .35s var(--ease);font-size:12px;overflow:hidden}.status:hover .status-text,.status:focus .status-text{max-width:6em}.author-name{letter-spacing:.02em;margin:0;font-size:21px}.author-desc{color:var(--text-2);margin:2px 0 14px;font-size:14px}.author-stats{grid-template-columns:repeat(3,1fr);margin-bottom:16px;display:grid}.author-stats a{color:var(--text);gap:2px;display:grid}.author-stats span{color:var(--text-2);font-size:13px}.author-stats b{font-variant-numeric:tabular-nums;font-size:20px;font-weight:600}.author-stats a:hover b{color:var(--primary)}.follow{background:#39c5bb;justify-content:center;width:100%}.follow:hover{filter:brightness(1.06)}.social{justify-content:center;gap:10px;margin-top:12px;display:flex}.social a{width:36px;height:36px;color:var(--brand,var(--text-2));background:color-mix(in srgb, var(--brand,var(--text-2)) 12%, transparent);transition:transform .3s var(--ease), background .2s;border-radius:50%;place-items:center;display:grid}.social a:hover{background:color-mix(in srgb, var(--brand,var(--text-2)) 22%, transparent);color:var(--brand,var(--primary))}.social a[data-brand=github]{--brand:#6e5494}.social a[data-brand=mail]{--brand:#ea4335}.social a[data-brand=rss]{--brand:#f78422}[data-theme=dark] .social a[data-brand=github]{--brand:#b9a3e3}.notice-card p{color:var(--text-2);margin:0 0 6px;font-size:14px}.list-card ul{gap:10px;margin:0;padding:0;list-style:none;display:grid}.list-card a{color:var(--text);grid-template-columns:minmax(0,1fr);column-gap:10px;font-size:14px;line-height:1.5;display:grid}.list-card a:has(img){grid-template-columns:56px minmax(0,1fr)}.list-card a span{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.list-card a:has(img) :is(span,time){grid-column:2}.list-card a time{color:var(--muted);font-size:12px}.list-card a img{object-fit:cover;border-radius:8px;grid-row:span 2;width:56px;height:56px}.list-card a:hover span{color:var(--primary)}.tag-cloud{flex-wrap:wrap;gap:6px;display:flex}.tag-cloud a{background:color-mix(in srgb, var(--primary) calc(8% + var(--w,0) * 18%), transparent);color:var(--text-2);font-size:calc(12.5px + var(--w,0) * 3px);border-radius:999px;padding:2px 10px;transition:background-color .25s,color .2s}.tag-cloud a:hover{background:var(--primary);color:#fff}.tag-cloud sup{opacity:.7;margin-left:2px;font-size:10px}.webinfo-card dl{grid-template-columns:1fr auto;gap:6px;margin:0;font-size:14px;display:grid}.webinfo-card dt{color:var(--text-2)}.webinfo-card dd{font-variant-numeric:tabular-nums;margin:0}.pixiv-card .carousel{aspect-ratio:3/4;background:var(--card-2);border-radius:10px;position:relative;overflow:hidden}.pixiv-card .viewport,.pixiv-card .slides,.pixiv-card .slide{height:100%}.pixiv-card .slide img{object-fit:cover;width:100%;height:100%}.pixiv-card .slide span{color:#fff;background:linear-gradient(#0000,#000000b3);padding:30px 12px 10px;font-size:13px;display:grid;position:absolute;inset:auto 0 0}.pixiv-card .slide b{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.skeleton{background:var(--border);animation:1.6s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.45}}.history-card .viewport{height:64px}.h3-actions{gap:2px;margin-left:auto;display:inline-flex}.mini-btn{width:24px;height:24px;color:var(--muted);background:0 0;border:0;border-radius:6px;place-items:center;display:grid}.mini-btn:hover{background:var(--primary-soft);color:var(--primary)}.history-card .slides{height:100%;transition:transform .6s var(--ease);flex-direction:column}.history-card .slide{flex:0 0 100%;font-size:13.5px;line-height:1.5;display:grid}.history-card .slide b{color:var(--primary);font-size:13px}.history-card .slide span{-webkit-line-clamp:2;color:var(--text-2);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.toc-card{max-height:calc(100vh - var(--header-h) - 40px);flex-direction:column;display:flex}.toc-card h3{flex-shrink:0}.toc-pct{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:12px;font-weight:500}.toc{overscroll-behavior:contain;margin:0 -8px;overflow:auto}.toc ol{margin:0;padding:0;list-style:none}.toc a{color:var(--text-2);border-left:2px solid #0000;border-radius:8px;gap:6px;padding:4px 8px;font-size:14px;line-height:1.5;display:flex}.toc .lv1 a{padding-left:22px;font-size:13.5px}.toc .lv2 a{padding-left:36px;font-size:13px}.toc .num{color:var(--muted);font-variant-numeric:tabular-nums}.toc a:hover{background:var(--primary-soft);color:var(--primary)}.toc a.active{color:var(--primary);background:var(--primary-soft);border-left-color:var(--primary);font-weight:500}.rightside{z-index:40;transition:transform .35s var(--ease);justify-items:end;gap:8px;display:grid;position:fixed;bottom:36px;right:18px;transform:translate(80px)}.show-rightside .rightside{transform:none}.rs-btn{background:var(--primary);color:#fff;width:38px;height:38px;box-shadow:var(--shadow);border:0;border-radius:10px;place-items:center;transition:filter .2s,transform .2s,opacity .2s;display:grid}.rs-btn:hover{filter:brightness(1.1)}[data-theme=dark] .rs-btn{color:#8fc3f3;background:#1f2a37;border:1px solid #2c3a4a;box-shadow:0 4px 14px #00000059}[data-theme=dark] .rs-btn:hover{filter:none;background:#26364a}.rs-more{gap:8px;display:grid}.rs-more .rs-btn{opacity:0;visibility:hidden;transform:translate(14px)}.rs-open .rs-more .rs-btn{opacity:1;visibility:visible;transform:none}.rs-toggle .icon{transition:transform .3s var(--ease)}.rs-open .rs-toggle .icon{transform:rotate(90deg)}.rs-more .rs-read,.rs-more .rs-comment{display:none}.post-page .rs-more .rs-read,.post-page .rs-more .rs-comment{display:grid}.rs-toc,.at-bottom .rs-bottom{display:none}.rs-top{position:relative}.rs-top .rs-percent{font-size:12px;font-weight:600}.rs-top .icon,.rs-top:hover .rs-percent{display:none}.rs-top:hover .icon{display:block}.modal[open]{flex-direction:column;display:flex}html:has(dialog[open]){overflow:hidden}.modal{background:var(--card);color:var(--text);border:0;border-radius:18px;width:min(560px,100vw - 32px);max-height:min(86vh,760px);padding:0;overflow:hidden;box-shadow:0 30px 80px #0000004d}.modal::backdrop{backdrop-filter:blur(4px);background:#0a0f1973}.modal[open]{animation:pop .25s var(--ease)}@keyframes pop{0%{opacity:0;transform:translateY(12px)scale(.98)}}.modal-head{justify-content:space-between;align-items:center;padding:16px 18px 6px 22px;display:flex}.modal-head h2{margin:0;font-size:18px}.modal-head{flex-shrink:0}.modal-body{overscroll-behavior:contain;flex:1;min-height:0;padding:4px 22px 30px;overflow-y:auto}fieldset{border:0;margin:14px 0 0;padding:0}legend{color:var(--text-2);margin-bottom:8px;font-size:14px;font-weight:600}.seg{flex-wrap:wrap;gap:8px;display:flex}.seg legend{width:100%}.seg label{flex:1;min-width:90px}.seg input{opacity:0;pointer-events:none;position:absolute}.seg span{text-align:center;border:1px solid var(--border);cursor:pointer;border-radius:10px;padding:8px 10px;transition:all .2s;display:block}.seg input:checked+span{border-color:var(--primary);background:var(--primary-soft);color:var(--primary);font-weight:600}.seg input:focus-visible+span{outline:2px solid var(--primary)}.switches .fx-list{grid-template-columns:1fr 1fr;align-items:start;gap:10px 14px;margin-top:12px;display:grid}.switch{cursor:pointer;align-items:flex-start;gap:10px;font-size:14px;line-height:20px;display:flex}.switch input{opacity:0;position:absolute}.switch .track{background:var(--border);border-radius:99px;flex-shrink:0;width:36px;height:20px;transition:background .2s;position:relative}.switch .track:after{content:"";width:16px;height:16px;transition:transform .2s var(--ease);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #00000040}.switch input:checked+.track{background:var(--primary)}.switch input:checked+.track:after{transform:translate(16px)}.switch input:disabled~*{opacity:.45}.switch input:focus-visible+.track{outline:2px solid var(--primary);outline-offset:2px}.switch.master{background:var(--card-2);border-radius:12px;padding:10px 12px}.switch.master small{color:var(--muted);font-size:12px;display:block}.cache-info p{margin:4px 0;font-size:14px}.cache-info .hint{color:var(--muted);margin:8px 0 12px;font-size:13px}.search{width:min(640px,100vw - 24px);margin-top:10vh}.search-box{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:14px 18px;display:flex}.search-box input{color:inherit;background:0 0;border:0;outline:0;flex:1;font-size:17px}@media (hover:none){.search-box kbd{display:none}}.search-box kbd{font:12px var(--font-mono);border:1px solid var(--border);color:var(--muted);border-radius:6px;padding:2px 6px}.search-results{overscroll-behavior:contain;flex:1;min-height:0;max-height:60vh;padding:8px;overflow-y:auto}.search-results .muted{text-align:center;margin:0;padding:18px}.hit{color:var(--text);border-radius:10px;gap:2px;padding:10px 14px;display:grid}.hit:hover,.hit:focus{background:var(--primary-soft)}.hit b{color:var(--primary)}.hit span{color:var(--text-2);font-size:13.5px}.hit mark{background:var(--mark);color:inherit;border-radius:3px}.lightbox{cursor:zoom-out;background:0 0;border:0;max-width:96vw;max-height:96vh;padding:0}.lightbox::backdrop{background:#000000d9}.lightbox img{border-radius:6px;max-width:96vw;max-height:90vh}.lightbox p{color:#ddd;text-align:center;margin:8px 0 0}.lightbox[open] img{animation:zoomin .25s var(--ease)}@keyframes zoomin{0%{opacity:.3;transform:scale(.94)}}#toasts{left:50%;top:calc(var(--header-h) + 14px);z-index:2147483000;pointer-events:none;justify-items:center;gap:8px;display:grid;position:fixed;transform:translate(-50%)}.toast{color:#fff;animation:toastin .3s var(--ease);background:#2b3340;border-radius:12px;max-width:min(420px,100vw - 40px);padding:12px 18px;font-size:14.5px;font-weight:500;box-shadow:0 10px 30px #00000040}.toast-success{background:#2f9e6f}.toast-warn{background:#d9822b}.toast.out{opacity:0;transition:all .3s;transform:translateY(-8px)}@keyframes toastin{0%{opacity:0;transform:translateY(-10px)}}.site-footer{text-align:center;color:var(--text-2);background:color-mix(in srgb, var(--card) 70%, transparent);border-top:1px solid var(--border);margin-top:48px;padding:34px 0 40px;font-size:14px}.site-footer p{margin:4px 0}.footer-text{color:var(--text);letter-spacing:.1em;font-size:15px}.heartbeat{color:#ff5c8a;display:inline-block}@media (width<=1100px){:root{--aside-w:270px}.menu-link{padding:7px 9px}}@media (width<=960px){.layout{grid-template-columns:minmax(0,1fr)}.layout>.main,.layout>.aside{grid-area:auto/1}.aside .sticky{position:static}.menu-toggle{display:inline-grid}.menu{top:var(--header-h);min-width:220px;max-height:calc(100vh - var(--header-h) - 24px);background:var(--card);color:var(--text);box-shadow:var(--shadow-hover);opacity:0;visibility:hidden;transition:.25s var(--ease);border-radius:14px;flex-direction:column;padding:8px;position:fixed;right:12px;overflow:auto;transform:translateY(-8px)}.menu-open .menu{opacity:1;visibility:visible;transform:none}.submenu{opacity:1;visibility:visible;box-shadow:none;background:0 0;border:0;padding:0 0 0 26px;display:none;position:static;transform:none}.has-sub:focus-within .submenu,.has-sub:hover .submenu{display:block;transform:none}.post-page .toc-card{z-index:45;width:min(320px,100vw - 90px);max-height:60vh;box-shadow:var(--shadow-hover);opacity:0;visibility:hidden;transform-origin:100% 100%;transition:.25s var(--ease);position:fixed;bottom:36px;right:66px;transform:scale(.95)}.toc-open .post-page .toc-card,.toc-open .toc-card{opacity:1;visibility:visible;transform:none}.post-page:not(.no-toc) .rs-toc{display:grid}}@media (width<=680px){body{font-size:15px}.container{padding:0 12px}.post-card,.post-card.flip{grid-template-columns:1fr;height:auto}.post-card .cover,.post-card.flip .cover{aspect-ratio:16/9;order:0}.post-card .info{padding:16px 18px 20px}.post-card .title{font-size:18px}.top-carousel .slide{height:200px}.hero.small{height:300px}.switches .fx-list{grid-template-columns:1fr}.rightside{right:10px}}@media print{.site-header,.rightside,.aside,.site-footer,.comments,.reward,.post-nav,.hero{display:none!important}.page{padding:0}.layout{display:block}.card{box-shadow:none;border:0}}[data-style=vivid] .menu>.menu-item:first-child>.menu-link .icon{color:#ff8a3d}[data-style=vivid] .menu>.menu-item:nth-child(2)>.menu-link .icon{color:#3d9cf0}[data-style=vivid] .menu>.menu-item:nth-child(3)>.menu-link .icon{color:#f5b400}[data-style=vivid] .menu>.menu-item:nth-child(4)>.menu-link .icon{color:#2fbf71}[data-style=vivid] .menu>.menu-item:nth-child(5)>.menu-link .icon{color:#e85d9e}[data-style=vivid] .menu>.menu-item:nth-child(6)>.menu-link .icon{color:#8f7cff}[data-style=vivid] .menu>.menu-item:nth-child(7)>.menu-link .icon{color:#16a3b8}.hit-group{color:var(--muted);letter-spacing:.02em;margin:10px 14px 4px;font-size:12px;font-weight:600}.hit small{color:var(--muted);font-size:12px}.hit.active{background:var(--primary-soft);outline:1px solid color-mix(in srgb, var(--primary) 40%, transparent)}@media (width>=1700px){:root{--container:1580px;--aside-w:320px}body{font-size:16px}.post-list{grid-template-columns:repeat(2,minmax(0,1fr))}.post-card,.post-card.flip{grid-template-rows:230px auto;grid-template-columns:1fr;height:auto}.post-card.flip .cover{order:0}.post-card .info{justify-content:flex-start;padding:20px 24px 24px}.top-carousel .slide{height:340px}}@media (width>=2200px){:root{--container:1900px;--aside-w:340px}body{font-size:17px}.prose{font-size:17.5px}.post-card,.post-card.flip{grid-template-rows:280px auto}.hero.small{height:460px}}:root{--sticky-top:calc(var(--header-h) + 16px)}.nav-hidden{--sticky-top:16px}.layout>.aside{align-self:stretch}.aside .sticky{top:min(var(--sticky-top), calc(100vh - var(--sticky-h,0px) - 16px));transition:top .35s var(--ease);position:sticky}[data-side=right] .layout:not(.single):not(.post-layout){grid-template-columns:minmax(0, 1fr) var(--aside-w)}[data-side=right] .layout:not(.single):not(.post-layout)>.main{grid-column:1}[data-side=right] .layout:not(.single):not(.post-layout)>.aside{grid-column:2}.layout.post-layout{grid-template-columns:var(--aside-w) minmax(0, 1fr);grid-template-rows:auto auto 1fr;grid-template-areas:"author main""related main""toc main"}[data-side=right] .layout.post-layout{grid-template-columns:minmax(0, 1fr) var(--aside-w);grid-template-areas:"main author""main related""main toc"}.layout.post-layout>.main{grid-area:main}.layout.post-layout>.side-author{grid-area:author;align-self:start}.layout.post-layout>.side-related{grid-area:related;align-self:start}.layout.post-layout>.side-related .sticky{position:static}.layout.post-layout>.toc-rail{grid-area:toc;align-self:stretch;min-width:0}.post-layout .toc-card{top:var(--sticky-top);transition:top .35s var(--ease);position:sticky}@media (width>=1700px){.layout.post-layout{grid-template-columns:var(--aside-w) minmax(0, 1fr) 300px;grid-template-rows:auto 1fr;grid-template-areas:"author main related""toc main related"}[data-side=right] .layout.post-layout{grid-template-columns:300px minmax(0, 1fr) var(--aside-w);grid-template-areas:"related main author""related main toc"}.layout.post-layout>.side-related{align-self:stretch}.layout.post-layout>.side-related .sticky{position:sticky}}@media (width<=960px){.layout.post-layout,[data-side=right] .layout.post-layout{grid-template-rows:none;grid-template-columns:minmax(0,1fr);grid-template-areas:"main"}.layout.post-layout>:is(.side-author,.side-related){display:none}[data-side=right] .layout:not(.single):not(.post-layout){grid-template-columns:minmax(0,1fr)}[data-side=right] .layout:not(.single):not(.post-layout)>:is(.main,.aside){grid-column:1}.aside .sticky{position:static}}[data-focus="1"] .layout.post-layout>.side-related{display:none}@media (width>=1700px){[data-style=vivid][data-focus="1"] body:not(.read-mode) .layout.post-layout{grid-template-columns:var(--aside-w) minmax(0, 1fr);grid-template-areas:"author main""toc main"}[data-style=vivid][data-focus="1"][data-side=right] body:not(.read-mode) .layout.post-layout{grid-template-columns:minmax(0, 1fr) var(--aside-w);grid-template-areas:"main author""main toc"}}
|
|
1
|
+
@layer astro.images{:where([data-astro-image]){height:auto}:where([data-astro-image=full-width]){width:100%}:where([data-astro-image=constrained]){max-width:100%}[data-astro-image-fit=fill]{object-fit:fill}[data-astro-image-fit=contain]{object-fit:contain}[data-astro-image-fit=cover]{object-fit:cover}[data-astro-image-fit=scale-down]{object-fit:scale-down}[data-astro-image-pos=top]{object-position:top}[data-astro-image-pos=bottom]{object-position:bottom}[data-astro-image-pos=left]{object-position:left}[data-astro-image-pos=right]{object-position:right}[data-astro-image-pos=center]{object-position:center}[data-astro-image-pos=top-left]{object-position:top left}[data-astro-image-pos=top-right]{object-position:top right}[data-astro-image-pos=top-center]{object-position:top center}[data-astro-image-pos=bottom-left]{object-position:bottom left}[data-astro-image-pos=bottom-right]{object-position:bottom right}[data-astro-image-pos=bottom-center]{object-position:bottom center}[data-astro-image-pos=left-top]{object-position:left top}[data-astro-image-pos=left-bottom]{object-position:left bottom}[data-astro-image-pos=left-center]{object-position:left center}[data-astro-image-pos=right-top]{object-position:right top}[data-astro-image-pos=right-bottom]{object-position:right bottom}[data-astro-image-pos=right-center]{object-position:right center}[data-astro-image-pos=center-top]{object-position:center top}[data-astro-image-pos=center-bottom]{object-position:center bottom}[data-astro-image-pos=center-left]{object-position:center left}[data-astro-image-pos=center-right]{object-position:center right}}.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}.post{padding:32px 40px 28px}.post-head{display:none}.post-head h1{margin:0 0 6px;font-size:30px;line-height:1.35}.post-head .post-meta{color:var(--muted);justify-content:flex-start}.post-head .post-meta a{color:inherit}.notice{background:var(--primary-soft);color:var(--text-2);border-radius:10px;align-items:center;gap:8px;margin:0 0 16px;padding:10px 14px;font-size:14px;display:flex}.notice.warn{background:#f0a02024}.notice .icon{color:var(--primary)}.notice.warn .icon{color:#e08a00}.series{background:var(--card-2);border-radius:12px;margin:0 0 18px;padding:10px 16px}.series summary{cursor:pointer;align-items:center;gap:8px;font-weight:600;display:flex}.series ol{margin:8px 0 0;padding-left:26px}.prose{color:var(--text);overflow-wrap:break-word;font-size:16px;line-height:1.85;position:relative}.prose>:first-child{margin-top:0}.prose p{margin:0 0 1.1em}.prose :is(h1,h2,h3,h4,h5,h6){scroll-margin-top:calc(var(--header-h) + 20px);margin:1.9em 0 .8em;line-height:1.4;position:relative}.prose h1{font-size:1.75em}.prose h2{font-size:1.5em}.prose h3{font-size:1.28em}.prose h4{font-size:1.12em}.prose :is(h5,h6){font-size:1em}.prose h2{border-bottom:1px dashed var(--border);padding-bottom:.35em}.prose .anchor{color:var(--muted);opacity:0;margin-left:.4em;font-weight:400;transition:opacity .2s}.prose :is(h2,h3,h4):hover .anchor{opacity:1}.prose a{color:var(--primary);border-bottom:1px solid color-mix(in srgb, var(--primary) 35%, transparent);transition:border-color .2s,color .2s}.prose a:hover{color:var(--primary-2);border-color:currentColor}.prose :is(ul,ol){margin:0 0 1.1em;padding-left:1.6em}.prose li{margin:.25em 0}.prose li::marker{color:var(--primary)}.prose blockquote{border-left:4px solid var(--primary);background:var(--primary-soft);color:var(--text-2);border-radius:0 10px 10px 0;margin:1.2em 0;padding:.8em 1.2em}.prose blockquote>:last-child{margin-bottom:0}.prose hr{background:linear-gradient(90deg, transparent, var(--border), transparent);border:0;height:1px;margin:2em 0;position:relative;overflow:visible}.prose img{cursor:zoom-in;border-radius:8px;max-width:100%;height:auto;margin:1em auto;display:block}[data-theme=dark] .prose img{filter:brightness(.92);background:#eceef1}.prose p>img:only-child{margin:1.2em auto}.prose video{border-radius:8px;max-width:100%;margin:1em auto;display:block}.prose strong{color:color-mix(in srgb, var(--text) 85%, var(--primary))}.prose del{color:var(--muted)}.prose mark{background:var(--mark);color:inherit;border-radius:3px;padding:0 .2em}.prose kbd{font:.85em var(--font-mono);border:1px solid var(--border);background:var(--card-2);border-bottom-width:2px;border-radius:5px;padding:.1em .45em}.prose :not(pre)>code{font:.88em var(--font-mono);background:color-mix(in srgb, var(--primary) 9%, var(--card-2));color:color-mix(in srgb, var(--text) 70%, #d6336c);border-radius:5px;padding:.15em .4em}.table-wrap{border:1px solid var(--border);border-radius:10px;margin:1.2em 0;overflow-x:auto}.prose table{border-collapse:collapse;width:100%;font-size:.94em}.prose :is(th,td){border-bottom:1px solid var(--border);text-align:left;padding:.55em .9em}.prose th{background:var(--card-2);white-space:nowrap;font-weight:600}.prose tr:last-child td{border-bottom:0}.prose tbody tr:hover{background:color-mix(in srgb, var(--primary) 4%, transparent)}.prose dl dt{font-weight:600}.prose dl dd{margin:0 0 .6em 1.5em}.prose center,.prose [align=center]{text-align:center}.prose .katex-display{padding:.3em 0;overflow:auto hidden}.prose :is(psw,pwd){--mask:#a9adb3;background:var(--mask);cursor:help;-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:3px;padding:0 .15em;transition:background-color .28s}[data-theme=dark] .prose :is(psw,pwd){--mask:#3b414b}.prose .psw-in{opacity:0;transition:opacity .28s}.prose :is(psw,pwd):is(:hover,:focus,:active){background:0 0}.prose :is(psw,pwd):is(:hover,:focus,:active) .psw-in{opacity:1}.code-block{background:var(--code-bg);border:1px solid var(--border);border-radius:12px;margin:1.3em 0;position:relative;overflow:hidden}.code-block figcaption{font:12px var(--font-mono);color:var(--muted);background:color-mix(in srgb, var(--code-bg) 80%, var(--border));align-items:center;gap:8px;padding:6px 12px;display:flex}html:not(.no-decor) .code-block figcaption:before{content:"";background:#ff5f57;border-radius:50%;width:10px;height:10px;margin-right:38px;box-shadow:16px 0 #febc2e,32px 0 #28c840}.code-block .lang{text-transform:uppercase;letter-spacing:.05em}.code-block .copy{color:var(--muted);font:inherit;background:0 0;border:0;border-radius:6px;margin-left:auto;padding:2px 8px}.code-block .copy:hover{background:var(--primary-soft);color:var(--primary)}.code-block .copy.ok{color:#2f9e6f}.code-block pre{font:13.5px/1.65 var(--font-mono);tab-size:4;margin:0;padding:14px 16px;overflow-x:auto;background:0 0!important}.code-block code{counter-reset:line;min-width:max-content;display:block}.code-block .line:before{counter-increment:line;content:counter(line);text-align:right;width:2.4em;color:var(--muted);opacity:.55;user-select:none;margin-right:1em;display:inline-block}.code-block[data-lines="1"] .line:before,.code-block[data-lines="0"] .line:before{display:none}.code-block.collapsed pre{max-height:360px;overflow:hidden}.code-block.collapsed:after{content:"";background:linear-gradient(transparent, var(--code-bg));pointer-events:none;height:90px;position:absolute;inset:auto 0 0}.code-expand{z-index:1;background:var(--primary);color:#fff;box-shadow:var(--shadow);border:0;border-radius:999px;padding:4px 14px;font-size:13px;position:absolute;bottom:10px;left:50%;translate:-50%}.astro-code,.astro-code span{color:var(--shiki-light);background-color:#0000!important}[data-theme=dark] .astro-code,[data-theme=dark] .astro-code span{color:var(--shiki-dark)}details.folding{border:1px solid var(--border);background:var(--card-2);border-radius:10px;margin:1em 0;overflow:hidden}details.folding>summary{cursor:pointer;align-items:center;gap:.5em;padding:.6em 1em;font-weight:600;list-style:none;display:flex}details.folding>summary:before{content:"▸";color:var(--fc,var(--primary));transition:transform .2s}details.folding[open]>summary:before{transform:rotate(90deg)}details.folding>summary::-webkit-details-marker{display:none}details.folding>:not(summary){padding:0 1.1em}details.folding[open]{padding-bottom:.4em}details.folding[data-color=green]{--fc:#2f9e6f;border-left:4px solid #2f9e6f}details.folding[data-color=cyan]{--fc:#16a3b8;border-left:4px solid #16a3b8}details.folding[data-color=red]{--fc:#e5484d;border-left:4px solid #e5484d}details.folding[data-color=blue]{--fc:var(--primary);border-left:4px solid var(--primary)}.tabs{border:1px solid var(--border);border-radius:12px;margin:1.2em 0;overflow:hidden}.tab-bar{background:var(--card-2);border-bottom:1px solid var(--border);display:flex;overflow-x:auto}.tab-bar button{white-space:nowrap;color:var(--text-2);background:0 0;border:0;border-bottom:2px solid #0000;padding:.6em 1.1em}.tab-bar button[aria-selected=true]{color:var(--primary);border-bottom-color:var(--primary);background:var(--card);font-weight:600}.tabs>section.tab{padding:1em 1.2em .2em}.tip{--tc:var(--primary);background:color-mix(in srgb, var(--tc) 10%, transparent);border-left:4px solid var(--tc);border-radius:10px;grid-template-columns:1.3em minmax(0,1fr);align-items:start;column-gap:.75em;margin:1em 0;padding:.7em 1.1em;display:grid}.tip:before{content:"i";box-sizing:border-box;width:1.625em;height:1.625em;font:700 .8em/1 var(--font-sans);color:#fff;background:var(--tc);border-radius:50%;grid-area:1/1/99;place-items:center;margin-top:.34em;display:grid}.tip>*{grid-column:2;margin-top:0}.tip[data-kind=success]{--tc:#2f9e6f}.tip[data-kind=success]:before{content:"✓"}.tip[data-kind=warning]{--tc:#e08a00}.tip[data-kind=warning]:before{content:"!"}.tip[data-kind=error]{--tc:#e5484d}.tip[data-kind=error]:before{content:"✕"}.tip>:last-child{margin-bottom:0}.encrypted{place-items:center;padding:40px 10px;display:grid}.unlock{text-align:center;width:min(380px,100%);color:var(--text-2);justify-items:center;gap:10px;display:grid}.unlock .icon{color:var(--primary)}.unlock .hint{margin:0}.unlock .row{gap:8px;width:100%;display:flex}.unlock input{border:1px solid var(--border);background:var(--card-2);min-width:0;color:var(--text);border-radius:999px;flex:1;padding:9px 14px;font-size:15px}.unlock input:focus{outline:2px solid var(--primary);border-color:#0000}.unlock .err{color:#e5484d;min-height:1.5em;margin:0;font-size:14px}.shake{animation:.4s shake}@keyframes shake{20%,60%{transform:translate(-8px)}40%,80%{transform:translate(8px)}}.region-gate{z-index:5;background:color-mix(in srgb, var(--card) 70%, transparent);backdrop-filter:blur(14px);border-radius:12px;place-items:start center;min-height:240px;padding-top:80px;display:grid;position:absolute;inset:-8px}.region-gate p{background:var(--card);box-shadow:var(--shadow);color:var(--text-2);border-radius:12px;margin:0;padding:14px 22px}.region-gate[data-state=blocked] p{color:#e5484d}.region-gate[data-state=ok]{display:none}.post-tags{flex-wrap:wrap;gap:8px;margin:28px 0 0;display:flex}.post-tags :is(a,span){background:var(--primary-soft);color:var(--primary);border-radius:999px;align-items:center;gap:4px;padding:3px 12px;font-size:13px;transition:all .2s;display:inline-flex}.post-tags a:hover{background:var(--primary);color:#fff}.copyright{background:var(--card-2);color:var(--text-2);border-radius:12px;margin:24px 0 0;padding:16px 20px;font-size:14px;position:relative;overflow:hidden}.copyright:after{content:"©";color:var(--primary);opacity:.07;pointer-events:none;font-size:140px;line-height:1;position:absolute;top:-30px;right:-8px}.copyright p{margin:2px 0}.copyright b{color:var(--text);font-size:15px}.copyright a{word-break:break-all}.cr-meta{flex-wrap:wrap;gap:4px 18px;display:flex;margin-top:6px!important}.reward{justify-items:center;gap:14px;margin:28px 0 0;display:grid}.reward-btn{color:#fff;background:linear-gradient(120deg,#ffb347,#ff7eb3);border:0;border-radius:999px;align-items:center;gap:10px;padding:9px 22px 9px 14px;font-weight:600;transition:transform .2s;display:inline-flex;box-shadow:0 6px 18px #ff7eb359}.coin{color:#b37400;background:radial-gradient(circle at 35% 30%,#fff6c2,#ffd23f 45%,#e6a800);border-radius:50%;place-items:center;width:26px;height:26px;font-size:14px;font-weight:800;display:grid;box-shadow:inset 0 -2px #00000026}.flipping .coin{animation:coinflip 1s var(--ease)}.reward-btn{transition:transform .3s var(--ease), box-shadow .3s}@keyframes coinflip{0%{transform:translateY(0)rotateY(0)}45%{transform:translateY(-46px)rotateY(900deg)}70%{transform:translateY(0)rotateY(1440deg)scale(1.1)}85%{transform:translateY(-8px)rotateY(1440deg)}to{transform:none}}.reward-qr{gap:20px;display:none}.reward.open .reward-qr{animation:pop .3s var(--ease);display:flex}.reward-qr a{color:var(--text-2);justify-items:center;gap:4px;font-size:13px;display:grid}.reward-qr img{width:140px;height:140px;box-shadow:var(--shadow);border-radius:10px}.post-nav{grid-template-columns:1fr 1fr;gap:16px;margin-top:20px;display:grid}.post-nav a{color:var(--text);gap:4px;padding:16px 20px;display:grid}.post-nav a:hover{box-shadow:var(--shadow-hover)}.post-nav .next{text-align:right}.post-nav small{color:var(--muted);align-items:center;gap:4px;display:inline-flex}.post-nav .next small{justify-content:flex-end}.post-nav b{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:600;display:-webkit-box;overflow:hidden}.comments{margin-top:20px;padding:24px 30px}.comments h2{align-items:center;gap:8px;margin:0 0 14px;font-size:18px;display:flex}.comments h2 .icon{color:var(--primary)}#tcomment .tk-input .el-textarea__inner{background:var(--card-2);color:var(--text);border-color:var(--border);border-radius:12px;min-height:120px!important}#tcomment .el-input__inner{background:var(--card-2);color:var(--text);border-color:var(--border);border-radius:10px}#tcomment .tk-comment{border-bottom:1px dashed var(--border);padding:14px 0}#tcomment .tk-avatar{border-radius:50%}#tcomment .el-button--primary{background:var(--primary);border-color:var(--primary);border-radius:999px}#tcomment .tk-content{font-size:14.5px}.read-mode :is(.site-header,.hero,.site-footer,.post-nav,.comments,.side-author,.side-related,.toc-rail,.rightside){display:none!important}.read-mode .page{padding-top:32px}.read-mode .layout.post-layout,[data-side=right] .read-mode .layout.post-layout{grid-template-rows:none;grid-template-columns:minmax(0,1fr);grid-template-areas:"main"}[data-style=vivid] .read-mode .layout.post-layout{max-width:920px}.read-mode .post-head{display:block}.read-mode .post{box-shadow:none}.read-exit{z-index:60;border:1px solid var(--border);background:var(--card);color:var(--text-2);box-shadow:var(--shadow);border-radius:999px;align-items:center;gap:6px;padding:7px 14px;font-size:13px;display:none;position:fixed;top:16px;right:20px}.read-exit:hover{color:var(--primary);border-color:var(--primary)}.read-mode .read-exit{display:inline-flex}@media (width<=680px){.post{padding:22px 18px}.prose{font-size:15.5px}.comments{padding:18px}.post-nav{grid-template-columns:1fr}.code-block pre{font-size:12.5px}}.page-title{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.page-sub{color:var(--muted);margin:0 0 28px;display:none}.home-intro{border-bottom:1px solid var(--border);padding:10px 0 30px;display:none}.home-intro h1{font-family:var(--font-serif);margin:0;font-size:34px}.home-intro p{color:var(--muted);margin:6px 0 0}.page-card{padding:30px 36px}.center{text-align:center}.layout.single.wide{max-width:var(--container)}.timeline{position:relative}.tl-year{border-left:2px solid var(--border);margin-left:10px;padding-left:26px;position:relative}.tl-year+.tl-year{padding-top:6px}.tl-y{align-items:baseline;gap:10px;margin:0 0 12px;font-size:22px;display:flex;position:relative}.tl-y:before{content:"";background:var(--grad);width:14px;height:14px;box-shadow:0 0 0 4px var(--card);border-radius:50%;margin-top:-7px;position:absolute;top:50%;left:-35px}.tl-y small{color:var(--muted);font-size:13px;font-weight:400}.zodiac{font-size:22px}.tl-year ol{gap:12px;margin:0 0 22px;padding:0;list-style:none;display:grid}.tl-item{grid-template-columns:96px 1fr;align-items:center;gap:14px;display:grid;position:relative}.tl-item:before{content:"";background:var(--card);border:2px solid var(--primary);border-radius:50%;width:8px;height:8px;margin-top:-4px;transition:background .2s;position:absolute;top:50%;left:-31px}.tl-item:hover:before{background:var(--primary)}.tl-cover{border-radius:8px;width:96px;height:64px;display:block;overflow:hidden}.tl-cover img{object-fit:cover;width:100%;height:100%;transition:transform .4s var(--ease)}.tl-item time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12.5px;display:block}.tl-item a:not(.tl-cover){color:var(--text);align-items:baseline;gap:4px;display:inline-flex}.tl-item a:not(.tl-cover):hover{color:var(--primary)}.tag-cloud.big{justify-content:center;gap:10px;padding:8px 0}.tag-cloud.big a{font-size:calc(14px + var(--w) * 10px);padding:4px 14px}.cat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}@media (width<=560px){.cat-grid{grid-template-columns:1fr}}.cat-card{background:var(--card-2);min-width:0;color:var(--text);border:1px solid var(--border);transition:.3s var(--ease);border-radius:14px;grid-template-columns:minmax(0,1fr);gap:2px;padding:20px;display:grid}.cat-card:hover{box-shadow:var(--shadow-hover);color:var(--text);border-color:var(--primary)}.cat-card .icon{color:var(--primary)}.cat-card b{margin-top:6px;font-size:18px}.cat-card>span{color:var(--muted);font-size:13px}.cat-card ul{color:var(--text-2);min-width:0;margin:8px 0 0;padding-left:1.2em;font-size:13px;list-style:outside}.cat-card li::marker{color:var(--primary)}.cat-card li{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.stats-tiles{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px;margin-bottom:26px;display:grid}.tile{background:var(--card-2);border:1px solid var(--border);border-radius:14px;gap:2px;padding:18px;display:grid}.tile b{font-variant-numeric:tabular-nums;color:var(--text);font-size:30px;line-height:1.2}.tile b small{margin-left:2px;font-size:15px}.tile span{color:var(--muted);font-size:13px}.chart{margin:0 0 30px}.chart h2{margin:0 0 4px;font-size:18px}.chart-sub{color:var(--muted);margin:0 0 12px;font-size:13px}.chart-row{grid-template-columns:1fr 1fr;gap:30px;display:grid}.heatmap{color:var(--muted);grid-template-columns:40px repeat(12,minmax(0,1fr));gap:5px;font-size:12px;display:grid}.hm-m{text-align:center;white-space:nowrap}@media (width<=560px){.hm-m .u{display:none}.heatmap{grid-template-columns:34px repeat(12,minmax(0,1fr));gap:3px}}.hm-y{font-variant-numeric:tabular-nums;align-self:center}.hm-c{aspect-ratio:1;background:var(--card-2);border:1px solid var(--border);border-radius:4px}.hm-c[data-l="1"]{background:color-mix(in srgb, var(--primary) 30%, var(--card));border-color:#0000}.hm-c[data-l="2"]{background:color-mix(in srgb, var(--primary) 52%, var(--card));border-color:#0000}.hm-c[data-l="3"]{background:color-mix(in srgb, var(--primary) 76%, var(--card));border-color:#0000}.hm-c[data-l="4"]{background:var(--primary);border-color:#0000}.heatmap .hm-c:hover{outline:2px solid var(--text);outline-offset:1px}.hm-legend{color:var(--muted);align-items:center;gap:4px;margin-top:10px;font-size:12px;display:flex}.hm-legend .hm-c{width:14px}.bars-v{border-bottom:1px solid var(--border);align-items:flex-end;gap:clamp(8px,3vw,28px);height:220px;padding-top:24px;display:flex}.bars-v .col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;max-width:80px;height:100%;display:flex;position:relative}.bars-v .bar{background:var(--primary);border-radius:4px 4px 0 0;width:100%;min-height:4px;transition:opacity .2s}.bars-v .col:hover .bar{opacity:.8}.bars-v .val{color:var(--text);font-variant-numeric:tabular-nums;margin-bottom:4px;font-size:13px;font-weight:600}.bars-v-labels{gap:clamp(8px,3vw,28px);margin-top:6px;display:flex}.bars-v-labels span{text-align:center;max-width:80px;color:var(--muted);font-variant-numeric:tabular-nums;flex:1;font-size:12px}.bars-h{gap:8px;margin:10px 0 0;padding:0;list-style:none;display:grid}.bars-h li{grid-template-columns:7em 1fr 3em;align-items:center;gap:10px;font-size:14px;display:grid}.bars-h a{color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.bars-h a:hover{color:var(--primary)}.bars-h .track{background:var(--card-2);border-radius:4px;height:12px;overflow:hidden}.bars-h .fill{background:var(--primary);border-radius:0 4px 4px 0;height:100%;display:block}.bars-h li:hover .fill{opacity:.8}.bars-h b{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}.chart-table summary{cursor:pointer;color:var(--text-2);font-size:14px}.chart-table table{border-collapse:collapse;width:100%;font-size:13px}.chart-table :is(th,td){text-align:center;border-bottom:1px solid var(--border);padding:4px 8px}.about-hero{align-items:center;gap:26px;margin-bottom:24px;display:flex}.about-avatar{object-fit:cover;width:140px;height:140px;box-shadow:var(--shadow-hover);border-radius:28px}.about-hero h2{margin:0 0 6px;font-size:26px}.about-hero p{color:var(--text-2);margin:0 0 8px}.about-hero .social{justify-content:flex-start;margin:0}.about h3{margin:26px 0 10px}.skill-list{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.skill-list li{background:var(--card-2);border-radius:12px;padding:12px 16px;display:grid}.skill-list span{color:var(--text-2);font-size:14px}.flink-group h2{align-items:baseline;gap:10px;margin:0 0 14px;font-size:20px;display:flex}.flink-group h2 small{color:var(--muted);font-size:13px;font-weight:400}.flink-group+.flink-group{margin-top:28px}.flinks{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;display:grid}.flink{--fc:var(--primary);background:var(--card-2);color:var(--text);border:1px solid var(--border);transition:.3s var(--ease);border-radius:14px;align-items:center;gap:12px;padding:14px;display:flex}.flink:hover{background:var(--fc);color:#fff;box-shadow:var(--shadow-hover);border-color:#0000}.flink-fallback{background:var(--fc);color:#fff;border-radius:50%;flex-shrink:0;place-items:center;width:54px;height:54px;font-size:22px;font-weight:700;display:grid}.flink img{object-fit:cover;width:54px;height:54px;transition:transform .5s var(--ease);background:var(--card);border-radius:50%;flex-shrink:0}.flink div{min-width:0;display:grid}.flink b{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.flink span{opacity:.75;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:13px;display:-webkit-box;overflow:hidden}.flink-apply{margin-top:34px}.page-card .comments{box-shadow:none;border:0;margin-top:30px;padding:0}.envelope{place-items:center;padding:10px 0 24px;display:grid}.letter{background:repeating-linear-gradient(transparent 0 31px, color-mix(in srgb, var(--primary) 18%, transparent) 31px 32px), var(--card-2);width:min(520px,100%);box-shadow:var(--shadow);border-radius:12px;padding:26px 30px;font-size:16px;line-height:32px;position:relative}.letter p{margin:0}.letter .sign{text-align:right;color:var(--muted)}.letter:before{content:"";background:repeating-linear-gradient(135deg, #e5484d 0 12px, transparent 12px 24px, var(--primary) 24px 36px, transparent 36px 48px);border-radius:12px 12px 0 0;height:6px;position:absolute;inset:0 0 auto}.bangumi-tabs{border:0;margin-top:0}.bangumi-tabs>section.tab{padding:16px 0 0}.bangumis{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;display:grid}.bangumi{transition:transform .3s var(--ease), box-shadow .3s;background:var(--card-2);color:var(--text);border:1px solid var(--border);transition:.3s var(--ease);border-radius:14px;grid-template-columns:96px 1fr;gap:14px;padding:12px;display:grid}.bangumi:hover{box-shadow:var(--shadow-hover);color:var(--text)}.bangumi img{object-fit:cover;border-radius:8px;width:96px;height:128px}.bangumi div{align-content:start;gap:2px;min-width:0;display:grid}.bangumi small{color:var(--muted)}.bangumi .score{color:#f5a524;font-size:13px;font-weight:600}.bangumi p{color:var(--text-2);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:4px 0 0;font-size:13px;display:-webkit-box;overflow:hidden}.not-found{place-items:center;min-height:60vh;display:grid}.nf-card{grid-template-columns:1fr 1fr;align-items:center;max-width:900px;display:grid;overflow:hidden}.nf-img{object-fit:contain;align-self:center;width:100%;height:auto}.nf-card>div{padding:30px}.nf-card h1{background:var(--grad);color:#0000;-webkit-background-clip:text;background-clip:text;margin:0;font-size:64px}.nf-actions{flex-wrap:wrap;gap:10px;margin:14px 0 20px;display:flex}.btn.ghost{background:var(--primary-soft);color:var(--primary)}.nf-card ul{margin:6px 0 0;padding-left:1.2em}@media (width<=760px){.page-card{padding:22px 18px}.chart-row{grid-template-columns:1fr}.about-hero{text-align:center;flex-direction:column}.about-hero .social{justify-content:center}.nf-card,.tl-item{grid-template-columns:1fr}.tl-cover{display:none}}.heatmap,.bars-v,.bars-v-labels{max-width:720px}.bars-v .col,.bars-v-labels span{max-width:none}:root[data-style=minimal]{--primary:#b4532a;--primary-2:#8a3a1a;--grad:linear-gradient(120deg, #b4532a, #c9773f);--bg:#faf8f3;--bg-deco:none;--card:#faf8f3;--card-2:#f2eee5;--text:#2a2723;--text-2:#57514a;--muted:#948b80;--border:#e6dfd2;--shadow:none;--shadow-hover:0 8px 30px #3c281414;--radius:0px;--container:760px;--code-bg:#f3efe6}:root[data-style=minimal][data-theme=dark]{--primary:#e0915f;--primary-2:#f0b088;--bg:#161513;--card:#161513;--card-2:#201e1b;--text:#e3ddd3;--text-2:#b9b1a5;--muted:#847c71;--border:#2e2b27;--code-bg:#1e1c19}[data-style=minimal] body{font-size:16.5px}[data-style=minimal] .card{box-shadow:none;background:0 0;border:0}[data-style=minimal] .hero,[data-style=minimal] .aside,[data-style=minimal] .top-carousel,[data-style=minimal] .rightside .rs-toc{display:none!important}[data-style=minimal] .page,[data-style=minimal] .has-hero .page{padding-top:calc(var(--header-h) + 48px)}[data-style=minimal] .layout{grid-template-columns:minmax(0,1fr)}[data-style=minimal] .layout>.main{grid-column:1}[data-style=minimal] .site-header{background:color-mix(in srgb, var(--bg) 88%, transparent);border-bottom-color:var(--border)}[data-style=minimal] .site-header.transparent:not(:is(.scrolled *)){background:color-mix(in srgb, var(--bg) 88%, transparent);color:var(--text);border-bottom-color:var(--border);backdrop-filter:blur(10px)}[data-style=minimal] .site-header.transparent:not(:is(.scrolled *)) .brand{color:var(--text);text-shadow:none}[data-style=minimal] .brand{font-family:var(--font-serif);font-weight:700}[data-style=minimal] .menu-link .icon{display:none}[data-style=minimal] .nav.container{max-width:1000px}[data-style=minimal] .post-list{gap:0}[data-style=minimal] .post-card,[data-style=minimal] .post-card.flip{border-bottom:1px solid var(--border);border-radius:0;height:auto;min-height:0;padding:26px 0;display:block}[data-style=minimal] .post-card:hover{box-shadow:none;transform:none}[data-style=minimal] .post-card .cover{display:none}[data-style=minimal] .post-card .info{padding:0}[data-style=minimal] .post-card .title{font-family:var(--font-serif);font-size:22px;font-weight:700}[data-style=minimal] .post-card .excerpt{-webkit-line-clamp:2}[data-style=minimal] .post-card .meta{order:-1}[data-style=minimal] .pagination a,[data-style=minimal] .pagination span{box-shadow:none;border:1px solid var(--border);background:0 0;border-radius:4px}[data-style=minimal] .pagination .current{background:var(--text);color:var(--bg);border-color:var(--text)}[data-style=minimal] .badge{color:var(--primary);background:0 0;border:1px solid}[data-style=minimal] .post{padding:0}[data-style=minimal] .post-head{text-align:center;margin-bottom:40px;display:block}[data-style=minimal] .post-head h1{font-family:var(--font-serif);letter-spacing:.02em;font-size:34px}[data-style=minimal] .post-head .post-meta{justify-content:center;font-size:14px}[data-style=minimal] .prose{font-family:var(--font-serif);text-align:start;hanging-punctuation:allow-end;font-size:18px;line-height:2}[data-style=minimal] .prose :is(h1,h2,h3,h4,h5,h6){font-family:var(--font-sans);padding-left:0}[data-style=minimal] .prose :is(h1,h2,h3,h4,h5,h6):before{display:none}[data-style=minimal] .prose h2{border-bottom:0;font-size:1.35em}[data-style=minimal] .prose h2:after{content:"";background:var(--primary);width:2em;height:2px;margin-top:.4em;display:block}[data-style=minimal] .prose a{border-bottom-style:dotted}[data-style=minimal] .prose blockquote{background:0 0;border-left-width:2px;font-style:normal}[data-style=minimal] .prose :is(ul,ol,table,.code-block,.tabs,details.folding){text-align:left}[data-style=minimal] .prose img{border-radius:2px}[data-style=minimal] .code-block,[data-style=minimal] .tabs,[data-style=minimal] details.folding,[data-style=minimal] .copyright,[data-style=minimal] .tile{border-radius:4px}[data-style=minimal] .code-block figcaption:before{display:none}[data-style=minimal] .reward-btn{color:var(--primary);box-shadow:none;background:0 0;border:1px solid}[data-style=minimal] .post-nav a{border-top:1px solid var(--border);border-radius:0;padding:18px 0}[data-style=minimal] .post-nav a:hover{box-shadow:none;transform:none}[data-style=minimal] .comments{border-top:1px solid var(--border);border-radius:0;padding:30px 0 0}[data-style=minimal] .page-card{padding:0}[data-style=minimal] .page-title{clip:auto;width:auto;height:auto;font-family:var(--font-serif);margin:0 0 6px;font-size:32px;position:static}[data-style=minimal] .page-sub,[data-style=minimal] .home-intro{display:block}[data-style=minimal] .tl-cover{display:none}[data-style=minimal] .tl-item{grid-template-columns:1fr}[data-style=minimal] .tl-y:before{background:var(--primary)}[data-style=minimal] .flink,[data-style=minimal] .cat-card,[data-style=minimal] .bangumi,[data-style=minimal] .skill-list li{border-radius:4px}[data-style=minimal] .site-footer{background:0 0}[data-style=minimal] .rs-btn,[data-style=minimal][data-theme=dark] .rs-btn{background:var(--card-2);color:var(--text);border:1px solid var(--border);box-shadow:none}[data-style=minimal] .layout.post-layout,[data-style=minimal][data-side=right] .layout.post-layout{grid-template-rows:none;grid-template-columns:minmax(0,1fr);grid-template-areas:"main"}[data-style=minimal] .layout.post-layout>:is(.side-author,.side-related,.toc-rail){display:none}[data-style=minimal][data-side=right] .layout:not(.single):not(.post-layout){grid-template-columns:minmax(0,1fr)}[data-style=minimal][data-side=right] .layout:not(.single):not(.post-layout)>.main{grid-column:1}[data-style=minimal] .post-list{grid-template-columns:1fr}[data-style=minimal] .post-card,[data-style=minimal] .post-card.flip{grid-template-rows:none}@media (width>=1700px){:root[data-style=minimal]{--container:820px}}:root[data-style=minimal][data-wide="1"]{--container:1080px}@media (width>=1700px){:root[data-style=minimal][data-wide="1"]{--container:1240px}}html:not(.no-hover) .btn:hover{transform:translateY(-1px)}html:not(.no-hover) .post-card:hover{transform:translateY(-4px)}html:not(.no-hover) .post-card:hover .cover img{transform:scale(1.06)}html:not(.no-hover) .social a:hover{transform:translateY(-3px)}html:not(.no-hover) .rs-btn:hover{transform:translateY(-2px)}html:not(.no-hover) .cat-card:hover,html:not(.no-hover) .flink:hover,html:not(.no-hover) .bangumi:hover,html:not(.no-hover) .post-nav a:hover{transform:translateY(-4px)}html:not(.no-hover) .tl-item:hover .tl-cover img{transform:scale(1.1)}html:not(.no-hover) .flink:hover img,html:not(.no-hover) .avatar-ring:hover .avatar{transform:rotate(360deg)}html:not(.no-hover) .reward-btn:hover{transform:translateY(-2px)}html:not(.no-hover) .theme-toggle:hover .icon{transform:rotate(40deg)}html:not(.no-hover) .top-carousel .slide:hover img{transform:scale(1.03)}.post-card,.cat-card,.flink,.bangumi,.post-nav a,.tag-cloud a,.post-tags a,.social a,.tl-item a{transition:transform .35s var(--ease), box-shadow .3s ease, background-color .25s ease, border-color .25s ease, color .2s ease}.no-hover .post-card:hover,.no-hover .cat-card:hover,.no-hover .flink:hover,.no-hover .bangumi:hover{box-shadow:var(--shadow-hover)}.reveal{opacity:0;transform:translateY(24px)}.reveal.in{opacity:1;transition:opacity .6s var(--ease), transform .6s var(--ease);transform:none}.no-reveal .reveal{opacity:1;transform:none}.fx-heart{z-index:300;background:var(--c);pointer-events:none;will-change:transform, opacity;width:10px;height:10px;animation:1.3s linear forwards fx-heart;position:fixed;transform:rotate(45deg)}.fx-heart:before,.fx-heart:after{content:"";background:inherit;border-radius:50%;width:10px;height:10px;position:absolute}.fx-heart:before{left:-5px}.fx-heart:after{top:-5px}@keyframes fx-heart{to{opacity:0;transform:translateY(-78px)rotate(45deg)scale(1.3)}}.fx-canvas{z-index:300;pointer-events:none;position:fixed;inset:0}html:not(.no-cursor) body{cursor:url(/cur/Normal.svg),auto}html:not(.no-cursor) :is(a,button,summary,label,[role=tab],.reward-btn){cursor:url(/cur/Link.svg),pointer}html:not(.no-cursor) :is(input,textarea,[contenteditable]){cursor:url(/cur/HandWriting.svg),text}.avatar-ring:after{content:"";box-shadow:0 0 6px 4px var(--ring);opacity:.35;pointer-events:none;border-radius:50%;position:absolute;inset:-4px}html:not(.no-decor) .avatar-ring.anim-on:after{animation:4s ease-in-out infinite breathe}@keyframes breathe{50%{opacity:1;transform:scale(1.03)}}.author-card:before{content:"";z-index:0;opacity:.75;pointer-events:none;background:linear-gradient(100deg,#e8d8b9,#eccec5,#a3e9eb,#bdbdf0,#eec1ea,#e8d8b9,#eccec5);width:300%;position:absolute;top:0;bottom:0;left:0}[data-theme=dark] .author-card:before{opacity:0}html:not(.no-decor) .author-card.anim-on:before{animation:10s ease-in-out infinite alternate flow}@keyframes flow{to{transform:translate(-66.66%)}}html:not(.no-decor)[data-style=vivid] .prose :is(h1,h2,h3,h4,h5,h6){padding-left:1.35em}html:not(.no-decor)[data-style=vivid] .prose :is(h1,h2,h3,h4,h5,h6):before{content:"";background:var(--fan,#fb7061);width:1em;height:1em;-webkit-mask:var(--fan-svg) center / contain no-repeat;mask:var(--fan-svg) center / contain no-repeat;position:absolute;top:.32em;left:0}html:not(.no-decor)[data-style=vivid] .prose :is(h1,h2,h3,h4,h5,h6).anim-on:before{animation:4s linear infinite spin}.prose h1{--fan:#ef50a8}.prose h2{--fan:#fb7061}.prose h3{--fan:#ffbf00}.prose h4{--fan:#a9e000}.prose h5{--fan:#57c850}.prose h6{--fan:#5ec1e0}:root{--fan-svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='%23000'%3E%3Cpath d='M12 11C10.6 7.2 11.2 3 14.6 2.1c2.6-.7 3.8 2.4 1.7 4.4-1.3 1.3-2.8 2.6-4.3 4.5z'/%3E%3Cpath d='M13 12c3.8-1.4 8-.8 8.9 2.6.7 2.6-2.4 3.8-4.4 1.7-1.3-1.3-2.6-2.8-4.5-4.3z'/%3E%3Cpath d='M12 13c1.4 3.8.8 8-2.6 8.9-2.6.7-3.8-2.4-1.7-4.4 1.3-1.3 2.8-2.6 4.3-4.5z'/%3E%3Cpath d='M11 12C7.2 13.4 3 12.8 2.1 9.4c-.7-2.6 2.4-3.8 4.4-1.7 1.3 1.3 2.6 2.8 4.5 4.3z'/%3E%3Ccircle cx='12' cy='12' r='1.6'/%3E%3C/g%3E%3C/svg%3E")}@keyframes spin{to{transform:rotate(-360deg)}}html:not(.no-decor) .heartbeat.anim-on{animation:1.3s ease-in-out infinite heartbeat}@keyframes heartbeat{0%,to{transform:scale(1)}15%{transform:scale(1.25)}30%{transform:scale(1)}45%{transform:scale(1.15)}}html:not(.no-decor) .hero-down.anim-on{animation:1.8s ease-in-out infinite bob}@keyframes bob{50%{transform:translateY(8px)}}.no-pageTransition ::view-transition-group(*),.no-pageTransition ::view-transition-old(*),.no-pageTransition ::view-transition-new(*){animation:none!important}.theme-vt::view-transition-old(root),.theme-vt::view-transition-new(root){mix-blend-mode:normal;animation:none}[data-motion=reduce] *,[data-motion=reduce] :before,[data-motion=reduce] :after{scroll-behavior:auto!important;animation:none!important}[data-motion=reduce] *{transition-property:color,background-color,border-color,box-shadow,opacity!important;transition-duration:.15s!important}[data-motion=reduce] .carousel.vertical .slides{transition:none!important}@media (hover:none){html:not(.no-hover) .post-card:hover{transform:none}}:root{--font-sans:-apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", "Segoe UI", Roboto, sans-serif;--font-serif:"Noto Serif SC", "Source Han Serif SC", "Songti SC", "STSong", Georgia, serif;--font-mono:"JetBrains Mono", "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--primary:#3d9cf0;--primary-2:#ff7eb3;--primary-soft:color-mix(in srgb, var(--primary) 12%, transparent);--grad:linear-gradient(120deg, #4facfe 0%, #8f7cff 50%, #ff7eb3 100%);--bg:#f3f6fb;--bg-deco:radial-gradient(1200px 600px at 100% -10%, #e4f0ff 0%, transparent 60%), radial-gradient(900px 500px at -10% 20%, #ffeaf3 0%, transparent 55%);--card:#fff;--card-2:#f6f8fb;--text:#2c3440;--text-2:#5d6876;--muted:#8a96a6;--border:#e6ebf2;--shadow:0 1px 2px #1e325a0a, 0 6px 24px #1e325a0f;--shadow-hover:0 4px 10px #1e325a0f, 0 18px 44px #1e325a1f;--radius:14px;--radius-sm:8px;--header-h:60px;--container:1240px;--aside-w:300px;--ease:cubic-bezier(.22, .8, .24, 1);--code-bg:#f7f8fa;--mark:#fff3a8;color-scheme:light}[data-theme=dark]{--primary:#5aa9f2;--primary-2:#ff8fbe;--bg:#0f1216;--bg-deco:radial-gradient(1200px 600px at 100% -10%, #142338 0%, transparent 60%), radial-gradient(900px 500px at -10% 20%, #2a1626 0%, transparent 55%);--card:#171b21;--card-2:#1d222a;--text:#d5dbe3;--text-2:#a3adba;--muted:#76818f;--border:#262c35;--shadow:0 1px 2px #0000004d, 0 6px 24px #00000040;--shadow-hover:0 4px 10px #00000059, 0 18px 44px #0006;--code-bg:#1b1f26;--mark:#5c4d14;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 16px)}html:not([data-motion=reduce]){scroll-behavior:smooth}body{min-height:100vh;font:15.5px/1.75 var(--font-sans);color:var(--text);background:var(--bg-deco), var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-attachment:fixed;flex-direction:column;margin:0;transition:background-color .3s,color .3s;display:flex}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-2)}img,svg,video,canvas{vertical-align:middle;max-width:100%}img{height:auto}button{font:inherit;color:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px}::selection{background:color-mix(in srgb, var(--primary) 30%, transparent)}.icon{flex-shrink:0}.muted{color:var(--muted)}.container{width:100%;max-width:var(--container);margin:0 auto;padding:0 20px}.skip-link{z-index:100;background:var(--card);border-radius:6px;padding:6px 12px;position:absolute;top:8px;left:-999px}.skip-link:focus{left:8px}.page{padding-top:calc(var(--header-h) + 24px);flex:1}.has-hero .page{padding-top:28px}[hidden]{display:none!important}html{scrollbar-color:color-mix(in srgb, var(--primary) 45%, transparent) transparent;scrollbar-width:thin}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--primary) 45%, transparent);border-radius:8px}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid color-mix(in srgb, var(--border) 60%, transparent);transition:box-shadow .3s var(--ease), transform .3s var(--ease), background-color .3s}.btn{background:var(--primary);color:#fff;border:0;border-radius:999px;align-items:center;gap:6px;padding:8px 18px;font-weight:500;transition:filter .2s,transform .2s;display:inline-flex}.btn:hover{color:#fff;filter:brightness(1.08)}.icon-btn{width:38px;height:38px;color:inherit;background:0 0;border:0;border-radius:10px;place-items:center;transition:background .2s,color .2s;display:inline-grid}.icon-btn:hover{background:color-mix(in srgb, currentColor 12%, transparent)}.link-btn{color:var(--primary);background:0 0;border:0;padding:0}.badge{background:var(--grad);color:#fff;border-radius:999px;padding:0 8px;font-size:12px;line-height:20px;display:inline-block}.layout{grid-template-columns:var(--aside-w) minmax(0, 1fr);align-items:start;gap:24px;display:grid}.layout>.main{grid-area:1/2;min-width:0}.layout>.aside{grid-area:1/1}.layout.single{grid-template-columns:minmax(0,1fr);max-width:980px}.layout.single>.main{grid-column:1}.site-header{z-index:50;height:var(--header-h);background:color-mix(in srgb, var(--card) 88%, transparent);-webkit-backdrop-filter:saturate(160%)blur(8px);border-bottom:1px solid color-mix(in srgb, var(--border) 70%, transparent);transition:transform .35s var(--ease), background-color .3s, border-color .3s;position:fixed;inset:0 0 auto}.nav-hidden .site-header{transform:translateY(-100%)}.site-header.transparent:not(:is(.scrolled *)){backdrop-filter:none;color:#fff;background:0 0;border-color:#0000}.site-header.transparent:not(:is(.scrolled *)) .brand{color:#fff;text-shadow:0 2px 8px #0000004d}.nav{align-items:center;gap:12px;height:100%;display:flex}.brand{color:var(--text);letter-spacing:.02em;white-space:nowrap;margin-right:auto;font-size:19px;font-weight:700}.brand:hover{color:var(--primary)}.menu{gap:2px;margin:0;padding:0;list-style:none;display:flex}.menu-item{position:relative}.menu-link{color:inherit;white-space:nowrap;background:0 0;border:0;border-radius:10px;align-items:center;gap:6px;padding:7px 12px;font-size:15px;transition:background .2s;display:flex}.menu-link:hover,.menu-item.active .menu-link{background:color-mix(in srgb, currentColor 10%, transparent);color:inherit}.menu-item.active .menu-link{font-weight:600}.caret{opacity:.7;transition:transform .2s}.submenu{background:var(--card);min-width:180px;color:var(--text);box-shadow:var(--shadow-hover);border:1px solid var(--border);opacity:0;visibility:hidden;transition:.2s var(--ease);border-radius:12px;max-height:70vh;margin:0;padding:6px;list-style:none;position:absolute;top:calc(100% + 6px);left:50%;overflow:auto;transform:translate(-50%,-6px)}.submenu:before{content:"";height:10px;position:absolute;inset:-10px 0 auto}.submenu a{color:var(--text);white-space:nowrap;border-radius:8px;padding:7px 12px;font-size:14px;display:block}.submenu a:hover{background:var(--primary-soft);color:var(--primary)}.has-sub:hover .submenu,.has-sub:focus-within .submenu{opacity:1;visibility:visible;transform:translate(-50%)}.has-sub:hover .caret{transform:rotate(180deg)}.nav-actions{gap:2px;display:flex}.menu-toggle{display:none}.theme-toggle .icon{transition:transform .5s var(--ease)}.theme-toggle .i-moon,[data-theme=dark] .theme-toggle .i-sun{display:none}[data-theme=dark] .theme-toggle .i-moon{display:block}.hero{color:#fff;background:#1d2633;place-items:center;height:100svh;min-height:480px;display:grid;position:relative;overflow:hidden}.hero.small{height:380px;min-height:0}.hero-bg{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.hero:after{content:"";z-index:1;pointer-events:none;background:linear-gradient(#0006,#00000040 45%,#00000080);position:absolute;inset:0}[data-theme=dark] .hero-bg{filter:brightness(.72)}.hero.small:after{background:radial-gradient(#00000080,#0000004d 70%),linear-gradient(#00000059,#0000008c)}.fx-bubbles{z-index:2;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.hero-inner{z-index:3;text-align:center;max-width:980px;padding:0 20px;position:relative}.hero-title{text-wrap:balance;letter-spacing:.04em;text-shadow:0 4px 24px #00000059;margin:0;font-size:clamp(30px,5.2vw,52px);font-weight:700;line-height:1.3}.hero-sub{opacity:.95;text-shadow:0 2px 10px #0006;min-height:1.6em;margin:14px 0 0;font-size:clamp(16px,2.2vw,21px)}[data-typing].typing .ch{opacity:0}[data-typing].typing .ch.on{opacity:1}[data-typing] .ch.caret{animation:1s step-end infinite caret;box-shadow:2px 0}@keyframes caret{50%{box-shadow:2px 0 #0000}}@keyframes blink{50%{opacity:0}}.hero-down{z-index:3;color:#fff;margin-left:-14px;position:absolute;bottom:24px;left:50%}.hero-down:hover{color:#fff}.post-hero-info{padding-top:var(--header-h);flex-direction:column;align-items:center;gap:10px;display:flex}.post-hero-info .hero-title{font-size:clamp(24px,3.6vw,38px)}.hero-cat{backdrop-filter:blur(6px);color:#fff;background:#ffffff2e;border:1px solid #ffffff40;border-radius:999px;padding:2px 14px;font-size:13px}.hero-cat:hover{color:#fff;background:#ffffff47}.post-meta{flex-wrap:wrap;justify-content:center;gap:4px 16px;font-size:13.5px;display:flex}.post-meta>*{align-items:center;gap:5px;display:inline-flex}.hero .post-meta{opacity:.92}.post-list{gap:20px;display:grid}.post-card{grid-template-columns:42% 1fr;height:230px;display:grid;overflow:hidden}.post-card:hover{box-shadow:var(--shadow-hover)}.post-card.flip{grid-template-columns:1fr 42%}.post-card.flip .cover{order:2}.post-card .cover{background:var(--card-2);display:block;position:relative;overflow:hidden}.post-card .cover img{object-fit:cover;width:100%;height:100%;transition:transform .6s var(--ease);position:absolute;inset:0}.post-card .info{flex-direction:column;justify-content:center;gap:8px;min-width:0;padding:22px 28px;display:flex}.post-card .title{margin:0;font-size:20px;line-height:1.45}.post-card .title a{color:var(--text);background:linear-gradient(var(--primary), var(--primary)) 0 100% / 0 2px no-repeat;transition:background-size .35s var(--ease), color .2s;align-items:baseline;gap:6px;display:inline-flex}.post-card .title a:hover{color:var(--primary);background-size:100% 2px}.post-card .meta{color:var(--muted);flex-wrap:wrap;gap:4px 14px;font-size:13px;display:flex}.post-card .meta>*{color:inherit;align-items:center;gap:4px;display:inline-flex}.post-card .meta .badge{color:#fff}.post-card .meta a:hover{color:var(--primary)}.post-card .excerpt{color:var(--text-2);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0;font-size:14.5px;display:-webkit-box;overflow:hidden}.top-carousel{margin-bottom:20px;position:relative;overflow:hidden}.carousel .viewport{border-radius:inherit;overflow:hidden}.carousel:not(.vertical) .viewport{scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;overflow-x:auto}.carousel:not(.vertical) .viewport::-webkit-scrollbar{display:none}.carousel .slides{display:flex}.carousel.vertical .slides{transition:transform .6s var(--ease)}.carousel:not(.vertical) .slide{scroll-snap-align:start;scroll-snap-stop:always}.carousel .slide{flex:0 0 100%;display:block;position:relative}.top-carousel .slide{color:#fff;height:280px;overflow:hidden}.top-carousel .slide img{object-fit:cover;width:100%;height:100%;transition:transform .8s var(--ease)}.top-carousel .slide:after{content:"";background:linear-gradient(#0000 40%,#000000a6);position:absolute;inset:0}.slide-info{z-index:1;justify-items:start;gap:4px;padding:22px 26px;display:grid;position:absolute;bottom:0;left:0;right:0}.slide-info b{font-size:22px}.slide-info small{opacity:.85;-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.dots{z-index:2;gap:6px;display:flex;position:absolute;bottom:16px;right:18px}.dots button{background:#ffffff8c;border:0;border-radius:99px;width:8px;height:8px;padding:0;transition:width .3s}.dots button[aria-current=true]{background:#fff;width:22px}.carousel .prev,.carousel .next{z-index:2;backdrop-filter:blur(4px);color:#fff;opacity:0;background:#00000059;border:0;border-radius:50%;place-items:center;width:34px;height:34px;margin-top:-17px;transition:opacity .2s,background .2s;display:grid;position:absolute;top:50%}.carousel .prev:hover,.carousel .next:hover{background:#0000008c}.carousel:hover .prev,.carousel:hover .next{opacity:1}.carousel .prev{left:10px}.carousel .next{right:10px}@media (hover:none){.carousel .prev,.carousel .next{display:none}}.pagination{flex-wrap:wrap;justify-content:center;gap:8px;margin:28px 0 8px;display:flex}.pagination a,.pagination span{background:var(--card);min-width:38px;height:38px;box-shadow:var(--shadow);color:var(--text);border-radius:10px;place-items:center;padding:0 10px;display:grid}.pagination a:hover{background:var(--primary);color:#fff}.pagination .current{background:var(--grad);color:#fff;font-weight:600}.pagination .gap{box-shadow:none;background:0 0}.aside{align-content:start;gap:20px;display:grid}.aside .sticky{gap:20px;display:grid}.aside .card,.toc-card{padding:18px 20px}.aside h3,.toc-card h3{align-items:center;gap:8px;margin:0 0 12px;font-size:15.5px;display:flex}.aside h3 .icon,.toc-card h3 .icon{color:var(--primary)}.author-card{text-align:center;isolation:isolate;position:relative;overflow:hidden;padding-top:26px!important}.author-card>*{z-index:1;position:relative}.avatar-ring{--ring:#9fd8f5;border-radius:50%;width:112px;height:112px;margin:0 auto 10px;display:block;position:relative}[data-theme=dark] .avatar-ring{--ring:#39c5bb}.avatar{object-fit:cover;border:3px solid var(--card);width:112px;height:112px;transition:transform .8s var(--ease);border-radius:50%;display:block}.status{z-index:2;background:var(--card);cursor:default;white-space:nowrap;border-radius:99px;justify-content:center;align-items:center;gap:4px;min-width:28px;height:28px;padding:0 6px;font-size:14px;line-height:1;display:inline-flex;position:absolute;bottom:4px;right:2px;box-shadow:0 2px 8px #00000026}.status-text{max-width:0;color:var(--text-2);transition:max-width .35s var(--ease);font-size:12px;overflow:hidden}.status:hover .status-text,.status:focus .status-text{max-width:6em}.author-name{letter-spacing:.02em;margin:0;font-size:21px}.author-desc{color:var(--text-2);margin:2px 0 14px;font-size:14px}.author-stats{grid-template-columns:repeat(3,1fr);margin-bottom:16px;display:grid}.author-stats a{color:var(--text);gap:2px;display:grid}.author-stats span{color:var(--text-2);font-size:13px}.author-stats b{font-variant-numeric:tabular-nums;font-size:20px;font-weight:600}.author-stats a:hover b{color:var(--primary)}.follow{background:#39c5bb;justify-content:center;width:100%}.follow:hover{filter:brightness(1.06)}.social{justify-content:center;gap:10px;margin-top:12px;display:flex}.social a{width:36px;height:36px;color:var(--brand,var(--text-2));background:color-mix(in srgb, var(--brand,var(--text-2)) 12%, transparent);transition:transform .3s var(--ease), background .2s;border-radius:50%;place-items:center;display:grid}.social a:hover{background:color-mix(in srgb, var(--brand,var(--text-2)) 22%, transparent);color:var(--brand,var(--primary))}.social a[data-brand=github]{--brand:#6e5494}.social a[data-brand=mail]{--brand:#ea4335}.social a[data-brand=rss]{--brand:#f78422}[data-theme=dark] .social a[data-brand=github]{--brand:#b9a3e3}.notice-card p{color:var(--text-2);margin:0 0 6px;font-size:14px}.list-card ul{gap:10px;margin:0;padding:0;list-style:none;display:grid}.list-card a{color:var(--text);grid-template-columns:minmax(0,1fr);column-gap:10px;font-size:14px;line-height:1.5;display:grid}.list-card a:has(img){grid-template-columns:56px minmax(0,1fr)}.list-card a span{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.list-card a:has(img) :is(span,time){grid-column:2}.list-card a time{color:var(--muted);font-size:12px}.list-card a img{object-fit:cover;border-radius:8px;grid-row:span 2;width:56px;height:56px}.list-card a:hover span{color:var(--primary)}.tag-cloud{flex-wrap:wrap;gap:6px;display:flex}.tag-cloud a{background:color-mix(in srgb, var(--primary) calc(8% + var(--w,0) * 18%), transparent);color:var(--text-2);font-size:calc(12.5px + var(--w,0) * 3px);border-radius:999px;padding:2px 10px;transition:background-color .25s,color .2s}.tag-cloud a:hover{background:var(--primary);color:#fff}.tag-cloud sup{opacity:.7;margin-left:2px;font-size:10px}.webinfo-card dl{grid-template-columns:1fr auto;gap:6px;margin:0;font-size:14px;display:grid}.webinfo-card dt{color:var(--text-2)}.webinfo-card dd{font-variant-numeric:tabular-nums;margin:0}.pixiv-card .carousel{aspect-ratio:3/4;background:var(--card-2);border-radius:10px;position:relative;overflow:hidden}.pixiv-card .viewport,.pixiv-card .slides,.pixiv-card .slide{height:100%}.pixiv-card .slide img{object-fit:cover;width:100%;height:100%}.pixiv-card .slide span{color:#fff;background:linear-gradient(#0000,#000000b3);padding:30px 12px 10px;font-size:13px;display:grid;position:absolute;inset:auto 0 0}.pixiv-card .slide b{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.skeleton{background:var(--border);animation:1.6s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.45}}.history-card .viewport{height:64px}.h3-actions{gap:2px;margin-left:auto;display:inline-flex}.mini-btn{width:24px;height:24px;color:var(--muted);background:0 0;border:0;border-radius:6px;place-items:center;display:grid}.mini-btn:hover{background:var(--primary-soft);color:var(--primary)}.history-card .slides{height:100%;transition:transform .6s var(--ease);flex-direction:column}.history-card .slide{flex:0 0 100%;font-size:13.5px;line-height:1.5;display:grid}.history-card .slide b{color:var(--primary);font-size:13px}.history-card .slide span{-webkit-line-clamp:2;color:var(--text-2);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.toc-card{max-height:calc(100vh - var(--header-h) - 40px);flex-direction:column;display:flex}.toc-card h3{flex-shrink:0}.toc-pct{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:12px;font-weight:500}.toc{overscroll-behavior:contain;margin:0 -8px;overflow:auto}.toc ol{margin:0;padding:0;list-style:none}.toc a{color:var(--text-2);border-left:2px solid #0000;border-radius:8px;gap:6px;padding:4px 8px;font-size:14px;line-height:1.5;display:flex}.toc .lv1 a{padding-left:22px;font-size:13.5px}.toc .lv2 a{padding-left:36px;font-size:13px}.toc .num{color:var(--muted);font-variant-numeric:tabular-nums}.toc a:hover{background:var(--primary-soft);color:var(--primary)}.toc a.active{color:var(--primary);background:var(--primary-soft);border-left-color:var(--primary);font-weight:500}.rightside{z-index:40;transition:transform .35s var(--ease);justify-items:end;gap:8px;display:grid;position:fixed;bottom:36px;right:18px;transform:translate(80px)}.show-rightside .rightside{transform:none}.rs-btn{background:var(--primary);color:#fff;width:38px;height:38px;box-shadow:var(--shadow);border:0;border-radius:10px;place-items:center;transition:filter .2s,transform .2s,opacity .2s;display:grid}.rs-btn:hover{filter:brightness(1.1)}[data-theme=dark] .rs-btn{color:#8fc3f3;background:#1f2a37;border:1px solid #2c3a4a;box-shadow:0 4px 14px #00000059}[data-theme=dark] .rs-btn:hover{filter:none;background:#26364a}.rs-more{gap:8px;display:grid}.rs-more .rs-btn{opacity:0;visibility:hidden;transform:translate(14px)}.rs-open .rs-more .rs-btn{opacity:1;visibility:visible;transform:none}.rs-toggle .icon{transition:transform .3s var(--ease)}.rs-open .rs-toggle .icon{transform:rotate(90deg)}.rs-more .rs-read,.rs-more .rs-comment{display:none}.post-page .rs-more .rs-read,.post-page .rs-more .rs-comment{display:grid}.rs-toc,.at-bottom .rs-bottom{display:none}.rs-top{position:relative}.rs-top .rs-percent{font-size:12px;font-weight:600}.rs-top .icon,.rs-top:hover .rs-percent{display:none}.rs-top:hover .icon{display:block}.modal[open]{flex-direction:column;display:flex}html:has(dialog[open]){overflow:hidden}.modal{background:var(--card);color:var(--text);border:0;border-radius:18px;width:min(560px,100vw - 32px);max-height:min(86vh,760px);padding:0;overflow:hidden;box-shadow:0 30px 80px #0000004d}.modal::backdrop{backdrop-filter:blur(4px);background:#0a0f1973}.modal[open]{animation:pop .25s var(--ease)}@keyframes pop{0%{opacity:0;transform:translateY(12px)scale(.98)}}.modal-head{justify-content:space-between;align-items:center;padding:16px 18px 6px 22px;display:flex}.modal-head h2{margin:0;font-size:18px}.modal-head{flex-shrink:0}.modal-body{overscroll-behavior:contain;flex:1;min-height:0;padding:4px 22px 30px;overflow-y:auto}fieldset{border:0;margin:14px 0 0;padding:0}legend{color:var(--text-2);margin-bottom:8px;font-size:14px;font-weight:600}.seg{flex-wrap:wrap;gap:8px;display:flex}.seg legend{width:100%}.seg label{flex:1;min-width:90px}.seg input{opacity:0;pointer-events:none;position:absolute}.seg span{text-align:center;border:1px solid var(--border);cursor:pointer;border-radius:10px;padding:8px 10px;transition:all .2s;display:block}.seg input:checked+span{border-color:var(--primary);background:var(--primary-soft);color:var(--primary);font-weight:600}.seg input:focus-visible+span{outline:2px solid var(--primary)}.switches .fx-list{grid-template-columns:1fr 1fr;align-items:start;gap:10px 14px;margin-top:12px;display:grid}.switch{cursor:pointer;align-items:flex-start;gap:10px;font-size:14px;line-height:20px;display:flex}.switch input{opacity:0;position:absolute}.switch .track{background:var(--border);border-radius:99px;flex-shrink:0;width:36px;height:20px;transition:background .2s;position:relative}.switch .track:after{content:"";width:16px;height:16px;transition:transform .2s var(--ease);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #00000040}.switch input:checked+.track{background:var(--primary)}.switch input:checked+.track:after{transform:translate(16px)}.switch input:disabled~*{opacity:.45}.switch input:focus-visible+.track{outline:2px solid var(--primary);outline-offset:2px}.switch.master{background:var(--card-2);border-radius:12px;padding:10px 12px}.switch.master small{color:var(--muted);font-size:12px;display:block}.cache-info p{margin:4px 0;font-size:14px}.cache-info .hint{color:var(--muted);margin:8px 0 12px;font-size:13px}.search{width:min(640px,100vw - 24px);margin-top:10vh}.search-box{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:14px 18px;display:flex}.search-box input{color:inherit;background:0 0;border:0;outline:0;flex:1;font-size:17px}@media (hover:none){.search-box kbd{display:none}}.search-box kbd{font:12px var(--font-mono);border:1px solid var(--border);color:var(--muted);border-radius:6px;padding:2px 6px}.search-results{overscroll-behavior:contain;flex:1;min-height:0;max-height:60vh;padding:8px;overflow-y:auto}.search-results .muted{text-align:center;margin:0;padding:18px}.hit{color:var(--text);border-radius:10px;gap:2px;padding:10px 14px;display:grid}.hit:hover,.hit:focus{background:var(--primary-soft)}.hit b{color:var(--primary)}.hit span{color:var(--text-2);font-size:13.5px}.hit mark{background:var(--mark);color:inherit;border-radius:3px}.lightbox{cursor:zoom-out;background:0 0;border:0;max-width:96vw;max-height:96vh;padding:0}.lightbox::backdrop{background:#000000d9}.lightbox img{border-radius:6px;max-width:96vw;max-height:90vh}.lightbox p{color:#ddd;text-align:center;margin:8px 0 0}.lightbox[open] img{animation:zoomin .25s var(--ease)}@keyframes zoomin{0%{opacity:.3;transform:scale(.94)}}#toasts .toast{pointer-events:auto;align-items:center;gap:12px;display:flex}.toast-action{color:#fff;font:inherit;background:#ffffff38;border:0;border-radius:999px;padding:3px 12px;font-size:13px}.toast-action:hover{background:#ffffff57}#toasts{left:50%;top:calc(var(--header-h) + 14px);z-index:2147483000;pointer-events:none;justify-items:center;gap:8px;display:grid;position:fixed;transform:translate(-50%)}.toast{color:#fff;animation:toastin .3s var(--ease);background:#2b3340;border-radius:12px;max-width:min(420px,100vw - 40px);padding:12px 18px;font-size:14.5px;font-weight:500;box-shadow:0 10px 30px #00000040}.toast-success{background:#2f9e6f}.toast-warn{background:#d9822b}.toast.out{opacity:0;transition:all .3s;transform:translateY(-8px)}@keyframes toastin{0%{opacity:0;transform:translateY(-10px)}}.site-footer{text-align:center;color:var(--text-2);background:color-mix(in srgb, var(--card) 70%, transparent);border-top:1px solid var(--border);margin-top:48px;padding:34px 0 40px;font-size:14px}.site-footer p{margin:4px 0}.footer-text{color:var(--text);letter-spacing:.1em;font-size:15px}.heartbeat{color:#ff5c8a;display:inline-block}@media (width<=1100px){:root{--aside-w:270px}.menu-link{padding:7px 9px}}@media (width<=960px){.layout{grid-template-columns:minmax(0,1fr)}.layout>.main,.layout>.aside{grid-area:auto/1}.aside .sticky{position:static}.menu-toggle{display:inline-grid}.menu{top:var(--header-h);min-width:220px;max-height:calc(100vh - var(--header-h) - 24px);background:var(--card);color:var(--text);box-shadow:var(--shadow-hover);opacity:0;visibility:hidden;transition:.25s var(--ease);border-radius:14px;flex-direction:column;padding:8px;position:fixed;right:12px;overflow:auto;transform:translateY(-8px)}.menu-open .menu{opacity:1;visibility:visible;transform:none}.submenu{opacity:1;visibility:visible;box-shadow:none;background:0 0;border:0;padding:0 0 0 26px;display:none;position:static;transform:none}.has-sub:focus-within .submenu,.has-sub:hover .submenu{display:block;transform:none}.post-page .toc-card{z-index:45;width:min(320px,100vw - 90px);max-height:60vh;box-shadow:var(--shadow-hover);opacity:0;visibility:hidden;transform-origin:100% 100%;transition:.25s var(--ease);position:fixed;bottom:36px;right:66px;transform:scale(.95)}.toc-open .post-page .toc-card,.toc-open .toc-card{opacity:1;visibility:visible;transform:none}.post-page:not(.no-toc) .rs-toc{display:grid}}@media (width<=680px){body{font-size:15px}.container{padding:0 12px}.post-card,.post-card.flip{grid-template-columns:1fr;height:auto}.post-card .cover,.post-card.flip .cover{aspect-ratio:16/9;order:0}.post-card .info{padding:16px 18px 20px}.post-card .title{font-size:18px}.top-carousel .slide{height:200px}.hero.small{height:300px}.switches .fx-list{grid-template-columns:1fr}.rightside{right:10px}}@media print{.site-header,.rightside,.aside,.site-footer,.comments,.reward,.post-nav,.hero{display:none!important}.page{padding:0}.layout{display:block}.card{box-shadow:none;border:0}}[data-style=vivid] .menu>.menu-item:first-child>.menu-link .icon{color:#ff8a3d}[data-style=vivid] .menu>.menu-item:nth-child(2)>.menu-link .icon{color:#3d9cf0}[data-style=vivid] .menu>.menu-item:nth-child(3)>.menu-link .icon{color:#f5b400}[data-style=vivid] .menu>.menu-item:nth-child(4)>.menu-link .icon{color:#2fbf71}[data-style=vivid] .menu>.menu-item:nth-child(5)>.menu-link .icon{color:#e85d9e}[data-style=vivid] .menu>.menu-item:nth-child(6)>.menu-link .icon{color:#8f7cff}[data-style=vivid] .menu>.menu-item:nth-child(7)>.menu-link .icon{color:#16a3b8}.hit-group{color:var(--muted);letter-spacing:.02em;margin:10px 14px 4px;font-size:12px;font-weight:600}.hit small{color:var(--muted);font-size:12px}.hit.active{background:var(--primary-soft);outline:1px solid color-mix(in srgb, var(--primary) 40%, transparent)}@media (width>=1700px){:root{--container:1580px;--aside-w:320px}body{font-size:16px}.post-list{grid-template-columns:repeat(2,minmax(0,1fr))}.post-card,.post-card.flip{grid-template-rows:230px auto;grid-template-columns:1fr;height:auto}.post-card.flip .cover{order:0}.post-card .info{justify-content:flex-start;padding:20px 24px 24px}.top-carousel .slide{height:340px}}@media (width>=2200px){:root{--container:1900px;--aside-w:340px}body{font-size:17px}.prose{font-size:17.5px}.post-card,.post-card.flip{grid-template-rows:280px auto}.hero.small{height:460px}}:root{--sticky-top:calc(var(--header-h) + 16px)}.nav-hidden{--sticky-top:16px}.layout>.aside{align-self:stretch}.aside .sticky{top:min(var(--sticky-top), calc(100vh - var(--sticky-h,0px) - 16px));transition:top .35s var(--ease);position:sticky}[data-side=right] .layout:not(.single):not(.post-layout){grid-template-columns:minmax(0, 1fr) var(--aside-w)}[data-side=right] .layout:not(.single):not(.post-layout)>.main{grid-column:1}[data-side=right] .layout:not(.single):not(.post-layout)>.aside{grid-column:2}.layout.post-layout{grid-template-columns:var(--aside-w) minmax(0, 1fr);grid-template-rows:auto auto 1fr;grid-template-areas:"author main""related main""toc main"}[data-side=right] .layout.post-layout{grid-template-columns:minmax(0, 1fr) var(--aside-w);grid-template-areas:"main author""main related""main toc"}.layout.post-layout>.main{grid-area:main}.layout.post-layout>.side-author{grid-area:author;align-self:start}.layout.post-layout>.side-related{grid-area:related;align-self:start}.layout.post-layout>.side-related .sticky{position:static}.layout.post-layout>.toc-rail{grid-area:toc;align-self:stretch;min-width:0}.post-layout .toc-card{top:var(--sticky-top);transition:top .35s var(--ease);position:sticky}@media (width>=1700px){.layout.post-layout{grid-template-columns:var(--aside-w) minmax(0, 1fr) 300px;grid-template-rows:auto 1fr;grid-template-areas:"author main related""toc main related"}[data-side=right] .layout.post-layout{grid-template-columns:300px minmax(0, 1fr) var(--aside-w);grid-template-areas:"related main author""related main toc"}.layout.post-layout>.side-related{align-self:stretch}.layout.post-layout>.side-related .sticky{position:sticky}}@media (width<=960px){.layout.post-layout,[data-side=right] .layout.post-layout{grid-template-rows:none;grid-template-columns:minmax(0,1fr);grid-template-areas:"main"}.layout.post-layout>:is(.side-author,.side-related){display:none}[data-side=right] .layout:not(.single):not(.post-layout){grid-template-columns:minmax(0,1fr)}[data-side=right] .layout:not(.single):not(.post-layout)>:is(.main,.aside){grid-column:1}.aside .sticky{position:static}}[data-focus="1"] .layout.post-layout>.side-related{display:none}@media (width>=1700px){[data-style=vivid][data-focus="1"] body:not(.read-mode) .layout.post-layout{grid-template-columns:var(--aside-w) minmax(0, 1fr);grid-template-areas:"author main""toc main"}[data-style=vivid][data-focus="1"][data-side=right] body:not(.read-mode) .layout.post-layout{grid-template-columns:minmax(0, 1fr) var(--aside-w);grid-template-areas:"main author""main toc"}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,t}from"./client.KMIQR-EE.js";import{t as n}from"./prefetch.C1OMzOeV.js";var r=null;function i(){let e=document.querySelector(`[name="astro-view-transitions-fallback"]`);return e?e.getAttribute(`content`):`animate`}function a(e){return e.dataset.astroReload!==void 0}var o=e=>e.button&&e.button!==0||e.metaKey||e.ctrlKey||e.altKey||e.shiftKey;(e||i()!==`none`)&&(document.addEventListener(`click`,e=>{let n=e.target;if(r=o(e)?n:null,e.composed&&(n=e.composedPath()[0]),n instanceof Element&&(n=n.closest(`a, area`)),!(n instanceof HTMLAnchorElement)&&!(n instanceof SVGAElement)&&!(n instanceof HTMLAreaElement))return;let i=n instanceof HTMLElement?n.target:n.target.baseVal,s=n instanceof HTMLElement?n.href:n.href.baseVal,c=new URL(s,location.href).origin;a(n)||n.hasAttribute(`download`)||!n.href||i&&i!==`_self`||c!==location.origin||r||e.defaultPrevented||(e.preventDefault(),t(s,{history:n.dataset.astroHistory===`replace`?`replace`:`auto`,sourceElement:n}))}),document.addEventListener(`submit`,e=>{let n=e.target,i=e.submitter,o=i&&i===r;if(r=null,n.tagName!==`FORM`||e.defaultPrevented||a(n)||o)return;let s=n,c=new FormData(s,i),l=typeof s.action==`string`?s.action:s.getAttribute(`action`),u=typeof s.method==`string`?s.method:s.getAttribute(`method`),d=i?.getAttribute(`formaction`)??l??location.pathname,f=i?.getAttribute(`formmethod`)??u??`get`;if(f===`dialog`||location.origin!==new URL(d,location.href).origin)return;let p={sourceElement:i??s};if(f===`get`){let e=new URLSearchParams(c),t=new URL(d);t.search=e.toString(),d=t.toString()}else p.formData=c;e.preventDefault(),t(d,p)}),n({prefetchAll:!0}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={};export{e as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./client.ChiJXsfH.js";var t=`data-astro-transition-persist`,n=[`data-astro-transition`,`data-astro-transition-fallback`],r=new Set;function i(e){let t=e.src?new URL(e.src,location.href).href:e.textContent;return r.has(t)?!0:(r.add(t),!1)}function a(e){for(let t of e.scripts)!t.hasAttribute(`data-astro-rerun`)&&i(t)&&(t.dataset.astroExec=``)}function o(e){let t=document.documentElement,r=[...t.attributes].filter(({name:e})=>(t.removeAttribute(e),n.includes(e)));[...e.documentElement.attributes,...r].forEach(({name:e,value:n})=>t.setAttribute(e,n))}function s(e){let t=(e,t=`both`)=>[...[...e.childNodes].filter(e=>e.nodeType===8&&e.textContent===`[if astro]>server-island-start<![endif]`||t===`both`&&e.nodeType===1)];for(let t of Array.from(document.head.children)){let n=p(t,e);n?n.remove():t.remove()}t(document.head,`commentsOnly`).forEach(e=>e.remove()),document.head.append(...t(e.head))}function c(e,n){let r=[],i=n.ownerDocument.documentElement,a=new Set(n.querySelectorAll(`video, audio`)),o=typeof i.moveBefore==`function`?(e,t,n)=>e.moveBefore(t,n):null;for(let a of n.querySelectorAll(`[${t}]`)){let n=a.getAttribute(t),s=e.querySelector(`[${t}="${n}"]`);s&&(r.push({old:a,newTarget:s}),o?o(i,a,null):i.appendChild(a))}n.replaceWith(e);for(let{old:e,newTarget:t}of r)o?(o(t.parentNode,e,t),t.remove()):t.replaceWith(e),t.localName===`astro-island`&&m(e)&&!h(e,t)&&(e.setAttribute(`ssr`,``),e.setAttribute(`props`,t.getAttribute(`props`)));u(e),l(e,a)}function l(e,t){for(let n of e.querySelectorAll(`video, audio`)){if(t.has(n))continue;let e=document.createElement(n.localName);for(let t of n.attributes)e.setAttribute(t.name,t.value);e.innerHTML=n.innerHTML,e.hasAttribute(`muted`)&&(e.muted=!0),n.replaceWith(e)}}function u(e){e.querySelectorAll(`template[shadowrootmode]`).forEach(e=>{let t=e.getAttribute(`shadowrootmode`),n=e.parentNode;if((t===`closed`||t===`open`)&&n instanceof HTMLElement){if(n.shadowRoot){e.remove();return}let r=n.attachShadow({mode:t});r.appendChild(e.content),e.remove(),u(r)}})}var d=()=>{let e=document.activeElement;if(e?.closest(`[${t}]`)){if(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement){let t=e.selectionStart,n=e.selectionEnd;return()=>f({activeElement:e,start:t,end:n})}return()=>f({activeElement:e})}return()=>f({activeElement:null})},f=({activeElement:e,start:t,end:n})=>{e&&(e.focus(),(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&(typeof t==`number`&&(e.selectionStart=t),typeof n==`number`&&(e.selectionEnd=n)))},p=(e,n)=>{let r=e.getAttribute(t),i=r&&n.head.querySelector(`[${t}="${r}"]`);if(i)return i;if(e.matches(`link[rel=stylesheet]`)){let t=e.getAttribute(`href`);return n.head.querySelector(`link[rel=stylesheet][href="${t}"]`)}if(e.tagName===`STYLE`&&e.textContent){let t=n.head.querySelectorAll(`style`);for(let n of t)if(n.textContent===e.textContent)return n}if(e.matches(`link[rel=preload][as=font]`)){let t=e.getAttribute(`href`);return n.head.querySelector(`link[rel=preload][as=font][href="${t}"]`)}return null},m=e=>{let t=e.dataset.astroTransitionPersistProps;return t==null||t===`false`},h=(e,t)=>e.getAttribute(`props`)===t.getAttribute(`props`),g=e=>{a(e),o(e),s(e);let t=d();c(e.body,document.body),t()},_=e=>document.dispatchEvent(new Event(e)),v=()=>_(`astro:page-load`),y=class extends Event{from;to;direction;navigationType;sourceElement;info;newDocument;signal;constructor(e,t,n,r,i,a,o,s,c,l){super(e,t),this.from=n,this.to=r,this.direction=i,this.navigationType=a,this.sourceElement=o,this.info=s,this.newDocument=c,this.signal=l,Object.defineProperties(this,{from:{enumerable:!0},to:{enumerable:!0,writable:!0},direction:{enumerable:!0,writable:!0},navigationType:{enumerable:!0},sourceElement:{enumerable:!0},info:{enumerable:!0},newDocument:{enumerable:!0,writable:!0},signal:{enumerable:!0}})}},b=class extends y{formData;loader;constructor(e,t,n,r,i,a,o,s,c,l){super(`astro:before-preparation`,{cancelable:!0},e,t,n,r,i,a,o,s),this.formData=c,this.loader=l.bind(this,this),Object.defineProperties(this,{formData:{enumerable:!0},loader:{enumerable:!0,writable:!0}})}},x=class extends y{direction;viewTransition;swap;constructor(e,t){super(`astro:before-swap`,void 0,e.from,e.to,e.direction,e.navigationType,e.sourceElement,e.info,e.newDocument,e.signal),this.direction=e.direction,this.viewTransition=t,this.swap=()=>g(this.newDocument),Object.defineProperties(this,{direction:{enumerable:!0},viewTransition:{enumerable:!0},swap:{enumerable:!0,writable:!0}})}};async function S(e,t,n,r,i,a,o,s,c){let l=new b(e,t,n,r,i,a,window.document,o,s,c);return document.dispatchEvent(l)&&(await l.loader(),l.defaultPrevented||(_(`astro:after-preparation`),l.navigationType!==`traverse`&&C({scrollX,scrollY}))),l}var C=e=>{history.state&&(history.scrollRestoration=`manual`,history.replaceState({...history.state,...e},``))};async function w(e,t,n){let r=new x(e,t);return document.dispatchEvent(r),n&&await n(),r.swap(),r}var T=!!document.startViewTransition,E=()=>!!document.querySelector(`[name="astro-view-transitions-enabled"]`),D=(e,t)=>e.pathname===t.pathname&&e.search===t.search,O,k,A,j=()=>{let e=document.createElement(`div`);e.setAttribute(`aria-live`,`assertive`),e.setAttribute(`aria-atomic`,`true`),e.className=`astro-route-announcer`,document.body.append(e),setTimeout(()=>{let t=document.title||document.querySelector(`h1`)?.textContent||location.pathname;e.textContent=t},60)},M=`data-astro-transition-persist`,N=`data-astro-transition`,P=`data-astro-transition-fallback`,F,I=0;history.state?(I=history.state.index,scrollTo({left:history.state.scrollX,top:history.state.scrollY,behavior:`instant`})):E()&&(history.replaceState({index:I,scrollX,scrollY},``),history.scrollRestoration=`manual`);async function L(t,n){try{let r=new Headers(n?.headers);for(let[t,n]of Object.entries(e))r.set(t,n);let i=await fetch(t,{...n,headers:r}),a=(i.headers.get(`content-type`)??``).split(`;`,1)[0].trim();return a!==`text/html`&&a!==`application/xhtml+xml`?null:{html:await i.text(),redirected:i.redirected?i.url:void 0,mediaType:a}}catch{return null}}function R(){let e=document.querySelector(`[name="astro-view-transitions-fallback"]`);return e?e.getAttribute(`content`):`animate`}function z(){let e=Promise.resolve(),t=!1;for(let e of document.getElementsByTagName(`script`))e.dataset.astroExec===void 0&&e.getAttribute(`type`)===`module`&&(t=e.getAttribute(`src`)===null);t&&document.body.insertAdjacentHTML(`beforeend`,`<script type="module" src="data:application/javascript,"/>`);for(let t of document.getElementsByTagName(`script`)){if(t.dataset.astroExec===``)continue;let n=t.getAttribute(`type`);if(n&&n!==`module`&&n!==`text/javascript`)continue;let r=document.createElement(`script`);r.innerHTML=t.innerHTML;for(let n of t.attributes){if(n.name===`src`){let t=new Promise(e=>{r.onload=r.onerror=e});e=e.then(()=>t)}r.setAttribute(n.name,n.value)}r.dataset.astroExec=``,t.replaceWith(r)}return e}var B=(e,t,n,r,i)=>{let a=D(t,e),o=document.title;document.title=r;let s=!1;if(e.href!==location.href&&!i){if(n.history===`replace`){let t=history.state;history.replaceState({...n.state,index:t.index,scrollX:t.scrollX,scrollY:t.scrollY},``,e.href)}else history.pushState({...n.state,index:++I,scrollX:0,scrollY:0},``,e.href)}if(document.title=o,A=e,a||(scrollTo({left:0,top:0,behavior:`instant`}),s=!0),i)scrollTo({left:i.scrollX,top:i.scrollY,behavior:`instant`});else{if(e.hash){history.scrollRestoration=`auto`;let t=history.state;location.href=e.href,history.state||(history.replaceState(t,``),a&&window.dispatchEvent(new PopStateEvent(`popstate`)))}else s||scrollTo({left:0,top:0,behavior:`instant`});history.scrollRestoration=`manual`}};function V(e){let t=[];for(let n of e.querySelectorAll(`head link[rel=stylesheet]`))if(!document.querySelector(`[${M}="${n.getAttribute(M)}"], link[rel=stylesheet][href="${n.getAttribute(`href`)}"]`)){let e=document.createElement(`link`);e.setAttribute(`rel`,`preload`),e.setAttribute(`as`,`style`),e.setAttribute(`href`,n.getAttribute(`href`)),t.push(new Promise(t=>{[`load`,`error`].forEach(n=>e.addEventListener(n,t)),document.head.append(e)}))}return t}async function H(e,t,n,r,i){async function a(e){function t(e){let t=e.effect;return!t||!(t instanceof KeyframeEffect)||!t.target?!1:window.getComputedStyle(t.target,t.pseudoElement).animationIterationCount===`infinite`}let n=document.getAnimations();document.documentElement.setAttribute(P,e);let r=document.getAnimations().filter(e=>!n.includes(e)&&!t(e));return Promise.allSettled(r.map(e=>e.finished))}let o=async()=>{if(i===`animate`&&!n.transitionSkipped&&!e.signal.aborted)try{await a(`old`)}catch{}},s=document.title,c=await w(e,n.viewTransition,o);B(c.to,c.from,t,s,r),_(`astro:after-swap`),i===`animate`&&!n.transitionSkipped&&!c.signal.aborted?a(`new`).finally(()=>n.viewTransitionFinished()):n.viewTransitionFinished?.()}function U(){return O?.controller.abort(),O={controller:new AbortController}}async function W(e,t,n,r,i,a=!1){let o=U();if(!E()||location.origin!==n.origin){o===O&&(O=void 0),location.href=n.href;return}let s=i?`traverse`:r.history===`replace`?`replace`:`push`;if(s!==`traverse`&&C({scrollX,scrollY}),D(t,n)&&!r.formData&&(e!==`back`&&n.hash||e===`back`&&t.hash)){B(n,t,r,document.title,i),o===O&&(O=void 0);return}let c=await S(t,n,e,s,r.sourceElement,r.info,o.controller.signal,r.formData,l);if(c.defaultPrevented||c.signal.aborted){o===O&&(O=void 0),c.signal.aborted||(location.href=n.href);return}async function l(e){let n=e.to.href,r={signal:e.signal};if(e.formData){r.method=`POST`;let n=e.sourceElement instanceof HTMLFormElement?e.sourceElement:e.sourceElement instanceof HTMLElement&&`form`in e.sourceElement?e.sourceElement.form:e.sourceElement?.closest(`form`);r.body=t!==void 0&&Reflect.get(HTMLFormElement.prototype,`attributes`,n).getNamedItem(`enctype`)?.value===`application/x-www-form-urlencoded`?new URLSearchParams(e.formData):e.formData}let i=await L(n,r);if(i===null){e.preventDefault();return}if(i.redirected){let t=new URL(i.redirected);if(t.origin!==e.to.origin){e.preventDefault();return}let n=e.to.hash;e.to=t,e.to.hash=n}if(F??=new DOMParser,e.newDocument=F.parseFromString(i.html,i.mediaType),e.newDocument.querySelectorAll(`noscript`).forEach(e=>e.remove()),!e.newDocument.querySelector(`[name="astro-view-transitions-enabled"]`)&&!e.formData){e.preventDefault();return}let a=V(e.newDocument);a.length&&!e.signal.aborted&&await Promise.all(a)}async function u(){if(k&&k.viewTransition){k.viewTransition.ready.catch(()=>{}),k.viewTransition.skipTransition();try{await k.viewTransition.updateCallbackDone}catch{}}return k={transitionSkipped:!1}}let d=await u();if(c.signal.aborted)o===O&&(O=void 0);else{if(document.documentElement.setAttribute(N,c.direction),T&&!a)d.viewTransition=document.startViewTransition(async()=>await H(c,r,d,i));else{let e=(async()=>{await Promise.resolve(),await H(c,r,d,i,a?`swap`:R())})();d.viewTransition={updateCallbackDone:e,ready:e,finished:new Promise(e=>d.viewTransitionFinished=e),skipTransition:()=>{d.transitionSkipped=!0,document.documentElement.removeAttribute(P)},types:new Set}}d.viewTransition?.updateCallbackDone.finally(async()=>{await z(),v(),j()}),d.viewTransition?.finished.finally(()=>{d.viewTransition=void 0,d===k&&(k=void 0),o===O&&(O=void 0),document.documentElement.removeAttribute(N),document.documentElement.removeAttribute(P)});try{await d.viewTransition?.updateCallbackDone}catch(e){let t=e;console.log(`[astro]`,t.name,t.message,t.stack)}}}async function G(e,t){await W(`forward`,A,new URL(e,location.href),t??{})}function K(e){if(!E()&&e.state){location.reload();return}if(e.state===null)return;let t=history.state,n=t.index,r=n>I?`forward`:`back`;I=n,W(r,A,new URL(location.href),{},t,e.hasUAVisualTransition)}var q=()=>{history.state&&(scrollX!==history.state.scrollX||scrollY!==history.state.scrollY)&&C({scrollX,scrollY})};if(T||R()!==`none`){if(A=new URL(location.href),addEventListener(`popstate`,K),addEventListener(`load`,v),`onscrollend`in window)addEventListener(`scrollend`,q);else{let e,t,n,r,i=()=>{r===history.state?.index?t===scrollY&&n===scrollX?(clearInterval(e),e=void 0,q()):(t=scrollY,n=scrollX):(clearInterval(e),e=void 0)};addEventListener(`scroll`,()=>{e===void 0&&(r=history.state?.index,t=scrollY,n=scrollX,e=window.setInterval(i,50))},{passive:!0})}}for(let e of document.getElementsByTagName(`script`))i(e),e.dataset.astroExec=``;export{T as n,G as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./prefetch.C1OMzOeV.js";e();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./client.ChiJXsfH.js";var t=new Set,n=new WeakSet,r=!1,i=`hover`,a=!1;function o(e){a||(a=!0,r??=e?.prefetchAll??!1,i??=e?.defaultStrategy??`hover`,s(),c(),l(),d())}function s(){for(let e of[`touchstart`,`mousedown`])document.addEventListener(e,e=>{let t=e.target.closest(`a`);m(t,`tap`)&&f(t.href,{ignoreSlowConnection:!0})},{passive:!0})}function c(){let e;document.body.addEventListener(`focusin`,e=>{let n=e.target.closest(`a`);m(n,`hover`)&&t(n.href)},{passive:!0}),document.body.addEventListener(`focusout`,r,{passive:!0}),g(()=>{for(let e of document.getElementsByTagName(`a`))n.has(e)||m(e,`hover`)&&(n.add(e),e.addEventListener(`mouseenter`,e=>t(e.currentTarget.href),{passive:!0}),e.addEventListener(`mouseleave`,r,{passive:!0}))});function t(t){e&&clearTimeout(e),e=setTimeout(()=>{f(t)},80)}function r(){e&&=(clearTimeout(e),0)}}function l(){let e;g(()=>{for(let t of document.getElementsByTagName(`a`))n.has(t)||m(t,`viewport`)&&(n.add(t),e??=u(),e.observe(t))})}function u(){let e=new WeakMap;return new IntersectionObserver((t,n)=>{for(let r of t){let t=r.target,i=e.get(t);r.isIntersecting?(i&&clearTimeout(i),e.set(t,setTimeout(()=>{n.unobserve(t),e.delete(t),f(t.href)},300))):i&&(clearTimeout(i),e.delete(t))}})}function d(){g(()=>{for(let e of document.getElementsByTagName(`a`))m(e,`load`)&&f(e.href)})}function f(n,r){n=n.replace(/#.*/,``);let i=r?.ignoreSlowConnection??!1;if(p(n,i)){if(t.add(n),document.createElement(`link`).relList?.supports?.(`prefetch`)){let e=document.createElement(`link`);e.rel=`prefetch`,e.setAttribute(`href`,n),document.head.append(e)}else{let t=new Headers;for(let[n,r]of Object.entries(e))t.set(n,r);fetch(n,{priority:`low`,headers:t}).catch(()=>{})}}}function p(e,n){if(!navigator.onLine||!n&&h())return!1;try{let n=new URL(e,location.href);return location.origin===n.origin&&(location.pathname!==n.pathname||location.search!==n.search)&&!t.has(e)}catch{}return!1}function m(e,t){if(e?.tagName!==`A`)return!1;let n=e.dataset.astroPrefetch;return n===`false`?!1:t===`tap`&&(n!=null||r)&&h()?!0:n==null&&r||n===``?t===i:n===t}function h(){if(`connection`in navigator){let e=navigator.connection;return e.saveData||/2g/.test(e.effectiveType)}return!1}function g(e){e();let t=!1;document.addEventListener(`astro:page-load`,()=>{t?e():t=!0}),new MutationObserver(t=>{for(let n of t)for(let t of n.addedNodes)if(t instanceof Element&&(t.tagName===`A`||t.querySelector?.(`a`))){e();return}}).observe(document.body,{childList:!0,subtree:!0})}export{o as t};
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(e,t=`info`,n=3200){let r=document.getElementById(`toasts`);if(!r)return;let i=document.createElement(`div`);i.className=`toast toast-${t}`,i.textContent=e,r.append(i),setTimeout(()=>{i.classList.add(`out`),setTimeout(()=>i.remove(),300)},n)}function t(e=document){e.querySelectorAll(`.tabs:not([data-ready])`).forEach(e=>{e.dataset.ready=`1`;let t=[...e.querySelectorAll(`:scope > section.tab`)];if(!t.length)return;let n=document.createElement(`div`);n.className=`tab-bar`,n.setAttribute(`role`,`tablist`),t.forEach((e,r)=>{let i=document.createElement(`button`);i.type=`button`,i.role=`tab`,i.textContent=e.dataset.title||`Tab ${r+1}`,i.onclick=()=>{t.forEach((e,t)=>{e.hidden=t!==r,n.children[t].setAttribute(`aria-selected`,String(t===r))})},n.append(i)}),e.prepend(n),n.firstElementChild.click()})}function n(e=document){e.querySelectorAll(`figure.code-block.collapsible:not([data-ready])`).forEach(e=>{e.dataset.ready=`1`,e.classList.add(`collapsed`);let t=document.createElement(`button`);t.type=`button`,t.className=`code-expand`,t.textContent=`展开全部 ${e.dataset.lines} 行`,t.onclick=()=>{e.classList.remove(`collapsed`),t.remove()},e.append(t)})}async function r(e){let t=e.closest(`figure`)?.querySelector(`pre`)?.innerText??``;await navigator.clipboard.writeText(t.replace(/\n$/,``)),e.textContent=`已复制`,e.classList.add(`ok`),setTimeout(()=>{e.textContent=`复制`,e.classList.remove(`ok`)},1500)}var i;function a(){i?.disconnect();let e=document.querySelector(`.prose[data-toc-source]`),t=document.querySelector(`[data-toc]`);if(!e||!t)return;let n=[...e.querySelectorAll(`h2[id], h3[id], h4[id]`)],r=t.closest(`.toc-card`);if(n.length<2){r?.setAttribute(`hidden`,``),document.body.classList.add(`no-toc`);return}r?.removeAttribute(`hidden`),document.body.classList.remove(`no-toc`);let a=Math.min(...n.map(e=>+e.tagName[1])),o=[0,0,0];t.innerHTML=`<ol>`+n.map(e=>{let t=+e.tagName[1]-a;o[t]++;for(let e=t+1;e<3;e++)o[e]=0;let n=o.slice(0,t+1).join(`.`);return`<li class="lv${t}"><a href="#${encodeURIComponent(e.id)}"><span class="num">${n}</span>${e.textContent?.replace(/#$/,``)??``}</a></li>`}).join(``)+`</ol>`,n.forEach(e=>{if(e.querySelector(`.anchor`))return;let t=document.createElement(`a`);t.className=`anchor`,t.href=`#`+e.id,t.textContent=`#`,t.ariaLabel=`本节链接`,e.append(t)});let s=new Map(n.map((e,n)=>[e,t.querySelectorAll(`a`)[n]])),c;i=new IntersectionObserver(e=>{for(let n of e)if(n.isIntersecting){c&&s.get(c)?.classList.remove(`active`),c=n.target;let e=s.get(n.target);if(e?.classList.add(`active`),e&&t.scrollHeight>t.clientHeight){let n=e.offsetTop-t.offsetTop,r=e.offsetHeight;n<t.scrollTop?t.scrollTop=n-8:n+r>t.scrollTop+t.clientHeight&&(t.scrollTop=n+r-t.clientHeight+8)}}},{rootMargin:`0px 0px -75% 0px`}),n.forEach(e=>i.observe(e))}function o(){let t={title:document.title,url:location.href};if(navigator.share&&matchMedia(`(pointer: coarse)`).matches)return navigator.share(t).catch(()=>{});navigator.clipboard.writeText(`${document.title}\n${location.href}`).then(()=>e(`链接已复制,快去分享吧~`,`success`))}function s(e=document){e.querySelectorAll(`.prose :is(psw, pwd):not([data-ready])`).forEach(e=>{e.dataset.ready=`1`,e.tabIndex=0;let t=document.createElement(`span`);t.className=`psw-in`,t.append(...e.childNodes),e.append(t)})}function c(e=document){s(e),t(e),n(e),a()}var l;function u(e){l||(l=document.createElement(`dialog`),l.className=`lightbox`,l.innerHTML=`<img alt="" /><p></p>`,l.onclick=()=>l.close(),document.body.append(l));let t=l.querySelector(`img`);t.src=e.currentSrc||e.src,t.alt=e.alt,l.querySelector(`p`).textContent=e.alt&&!/^image/i.test(e.alt)?e.alt:``,l.showModal()}var d=`2.0.17`,f;function p(e){return new Promise((t,n)=>{let r=document.createElement(`script`);r.src=e,r.async=!0,r.onload=()=>t(),r.onerror=n,document.head.append(r)})}function m(){let e=document.getElementById(`tcomment`);if(!e)return;let t=e.dataset.env;if(/^(localhost|127\.|192\.168\.|\[::1\])/.test(location.hostname)){e.innerHTML=`<p class="muted">本地预览不加载评论(评论服务仅允许线上域名访问),发布后即可正常使用。</p>`;return}let n=async()=>{r.disconnect(),f??=p(`https://cdn.jsdelivr.net/npm/twikoo@${d}/dist/twikoo.all.min.js`).catch(()=>p(`https://registry.npmmirror.com/twikoo/${d}/files/dist/twikoo.all.min.js`)),await f,e.innerHTML=``,await window.twikoo?.init({envId:t,el:`#tcomment`,path:e.dataset.path||location.pathname})},r=new IntersectionObserver(e=>e[0].isIntersecting&&n(),{rootMargin:`600px`});r.observe(e)}var h=e=>Uint8Array.from(atob(e),e=>e.charCodeAt(0));async function g(e,t){let{salt:n,iv:r,ct:i,iter:a}=e.dataset,o=await crypto.subtle.importKey(`raw`,new TextEncoder().encode(t),`PBKDF2`,!1,[`deriveKey`]),s=await crypto.subtle.deriveKey({name:`PBKDF2`,salt:h(n),iterations:+a,hash:`SHA-256`},o,{name:`AES-GCM`,length:256},!1,[`decrypt`]),c=await crypto.subtle.decrypt({name:`AES-GCM`,iv:h(r)},s,h(i));return new TextDecoder().decode(c)}async function _(e,t,n){let r=await g(e,t),i=e.closest(`.prose`);e.outerHTML=r,i.dataset.tocSource=``,n&&localStorage.setItem(`pw:`+location.pathname,t),c(i),document.dispatchEvent(new Event(`content-unlocked`))}function ee(){let e=document.querySelector(`.encrypted[data-ct]`);if(!e)return;let t=localStorage.getItem(`pw:`+location.pathname);t&&_(e,t,!1).catch(()=>localStorage.removeItem(`pw:`+location.pathname));let n=e.querySelector(`form`);n.onsubmit=async t=>{t.preventDefault();let r=n.querySelector(`input`);try{await _(e,r.value,!0)}catch{n.classList.remove(`shake`),n.offsetWidth,n.classList.add(`shake`),r.select(),n.querySelector(`.err`).textContent=`密码错误,请重试`}}}var v=`ip_info`;function y(e){let t=document.querySelector(`.region-gate`);t&&(t.querySelector(`p`).textContent=e,t.dataset.state=`blocked`,setTimeout(()=>location.assign(`/`),5e3))}function b(){let e=document.querySelector(`.region-gate`);e&&(e.dataset.state=`ok`)}function te(){if(!document.querySelector(`.region-gate`))return;try{let e=JSON.parse(localStorage.getItem(v)||`null`);if(e&&Date.now()-+e.date<864e5)return e.country===`CN`?y(`由于相关规定,本文内容不向中国大陆地区提供,即将返回首页。`):b()}catch{}let e=document.createElement(`script`);e.src=`https://lanyundev.com/api/ip_info`,e.onload=()=>{let e=typeof ip_info<`u`?ip_info?.country:void 0;localStorage.setItem(v,JSON.stringify({country:e,date:Date.now()})),e===`CN`?y(`由于相关规定,本文内容不向中国大陆地区提供,即将返回首页。`):b()},e.onerror=()=>y(`无法确认访问地区,暂时无法展示本文,即将返回首页。`),document.head.append(e)}var x=e=>e==null?`—`:e>1<<30?(e/(1<<30)).toFixed(2)+` GB`:(e/(1<<20)).toFixed(1)+` MB`,S=()=>document.querySelector(`meta[name="blog-version"]`)?.content??`dev`;async function ne(){if(!(`serviceWorker`in navigator))return;let t=await navigator.serviceWorker.register(`/sw.js`);navigator.serviceWorker.addEventListener(`message`,t=>{t.data?.type===`updated`&&e(`博客已更新到最新版本,刷新即可查看`,`success`,6e3)}),setTimeout(re,4e3),setInterval(()=>t.update().catch(()=>{}),18e5)}async function C(){try{return(await(await fetch(`/version.json?t=`+Date.now(),{cache:`no-store`})).json()).version}catch{return}}async function re(){let e=await C();e&&e!==S()&&await(await navigator.serviceWorker.getRegistration())?.update().catch(()=>{})}async function ie(){let e=(e,t)=>{let n=document.getElementById(e);n&&(n.textContent=t)};if(e(`ver-local`,S()),C().then(t=>e(`ver-latest`,t??`获取失败`)),navigator.storage?.estimate){let{usage:t,quota:n}=await navigator.storage.estimate();e(`cache-used`,x(t)),e(`cache-free`,x(n!=null&&t!=null?n-t:void 0))}}async function ae(){document.getElementById(`settings-dialog`)?.close(),e(`正在清除缓存…`,`info`,4e3);let t=[`lanyun:prefs`,`twikoo`,`twikoo-access-token`,`bsz-id`];for(let e of Object.keys(localStorage))!t.includes(e)&&!e.startsWith(`pw:`)&&localStorage.removeItem(e);if(sessionStorage.clear(),`caches`in window)for(let e of await caches.keys())await caches.delete(e);for(let e of await navigator.serviceWorker?.getRegistrations()??[])await e.unregister();e(`缓存已清除,即将刷新页面`,`success`,4e3),setTimeout(()=>location.reload(),1200)}var oe,w=e=>e.normalize(`NFKC`).toLowerCase(),T=()=>oe??=fetch(`/search.json`).then(e=>e.json()).then(e=>e.map(e=>({...e,tl:w(e.t),xl:w(e.x),gl:w([e.c,...e.g].join(` `))}))),E=e=>e.replace(/[&<>"]/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`})[e]),se=e=>/[㐀-鿿豈-]/.test(e);function D(e,t,n=20){let r=0,i=0;for(;r<n&&(i=e.indexOf(t,i))>=0;)r++,i+=t.length;return r}function ce(e){let t=[],n=[];for(let r of e.split(/\s+/).filter(Boolean)){let e=r.match(/[㐀-鿿豈-]+|[a-z0-9_.+#-]+/g)??[];for(let r of e)if(se(r[0])){let e=[...r];t.push(...e);for(let t=0;t<e.length-1;t++)n.push(e[t]+e[t+1])}else t.push(r)}return{chars:[...new Set(t)],grams:[...new Set(n)]}}function O(e,t){let n=t.map(t=>{let n=[],r=0;for(;n.length<300&&(r=e.indexOf(t,r))>=0;)n.push(r),r+=t.length;return n});if(n.some(e=>!e.length))return[1/0,-1];let r=n.map(()=>0),i=1/0,a=-1;for(;;){let e=1/0,o=-1,s=0;for(let i=0;i<n.length;i++){let a=n[i][r[i]];a<e&&(e=a,s=i),a+t[i].length>o&&(o=a+t[i].length)}if(o-e<i&&(i=o-e,a=e),++r[s]>=n[s].length)return[i,a]}}function le(e,t){let n=w(t).trim(),r=n.split(/\s+/).filter(Boolean),{chars:i,grams:a}=ce(n),o=[];for(let t of e){let e=0,s=!1,c;t.tl.includes(n)&&(e+=120,s=!0),t.gl.includes(n)&&(e+=70,s=!0);let l=D(t.xl,n);if(l&&(e+=40+l*4,s=!0),!s&&r.length>1&&r.every(e=>t.tl.includes(e)||t.gl.includes(e)||t.xl.includes(e))&&(s=!0,e+=30+r.reduce((e,n)=>e+(t.tl.includes(n)?20:0)+(t.gl.includes(n)?10:0)+Math.min(D(t.xl,n,10),10),0)),!s&&i.length){let n=i.filter(e=>t.tl.includes(e)).length,r=i.filter(e=>t.tl.includes(e)||t.gl.includes(e)||t.xl.includes(e)).length/i.length,o=a.filter(e=>t.tl.includes(e)||t.xl.includes(e)).length;if(r>=(i.length<=2?1:.6)){let a=i.join(``).length,[s]=O(t.tl,i),[l,u]=O(t.xl,i),d=Math.min(s,l);u>=0&&(c=u),(d<=Math.max(a*4,8)||n===i.length||o>0)&&(e=r*10+n/i.length*12+o*3+(Number.isFinite(d)?Math.max(0,24-(d-a)*2):0))}}e>0&&o.push({doc:t,score:e,exact:s,terms:s?t.xl.includes(n)||t.tl.includes(n)?[n]:r:i,at:c})}return o.sort((e,t)=>Number(t.exact)-Number(e.exact)||t.score-e.score||t.doc.d.localeCompare(e.doc.d))}function k(e,t){let n=w(e),r=[];for(let e of t){let t=0;for(;(t=n.indexOf(e,t))>=0;)r.push([t,t+e.length]),t+=e.length}r.sort((e,t)=>e[0]-t[0]);let i=``,a=0;for(let[t,n]of r)t<a||(i+=E(e.slice(a,t))+`<mark>`+E(e.slice(t,n))+`</mark>`,a=n);return i+E(e.slice(a))}function ue(e){let t=e.doc.x,n=e.doc.xl,r=e.at??-1;if(r<0)for(let t of e.terms){let e=n.indexOf(t);e>=0&&(r<0||e<r)&&(r=e)}if(r<0)return k(t.slice(0,90),e.terms)+(t.length>90?`…`:``);let i=Math.max(0,r-30),a=Math.min(t.length,r+90);return(i>0?`…`:``)+k(t.slice(i,a),e.terms)+(a<t.length?`…`:``)}function de(e,t,n){if(!n.length){e.innerHTML=`<p class="muted">没有找到与「${E(t)}」相关的文章</p>`;return}let r=n.filter(e=>e.exact),i=n.filter(e=>!e.exact).slice(0,20),a=e=>`<a class="hit" href="${e.doc.u}" role="option"><b>${k(e.doc.t,e.terms)}</b><span>${ue(e)}</span><small>${e.doc.d} · ${E(e.doc.c)}${e.doc.g.length?` · `+e.doc.g.map(E).join(` / `):``}</small></a>`;e.innerHTML=(r.length?`<h4 class="hit-group">精确匹配 · ${r.length}</h4>${r.map(a).join(``)}`:``)+(i.length?`<h4 class="hit-group">${r.length?`其它相关结果`:`没有完全匹配的文章,以下是相关结果`} · ${i.length}</h4>${i.map(a).join(``)}`:``)}function A(){let e=document.getElementById(`search-dialog`),t=document.getElementById(`search-input`),n=document.getElementById(`search-results`);if(e.showModal(),t.select(),T().catch(()=>n.innerHTML=`<p class="muted">搜索索引加载失败,请稍后重试</p>`),e.dataset.ready)return;e.dataset.ready=`1`,e.addEventListener(`click`,t=>t.target===e&&e.close());let r=0,i=-1,a=()=>[...n.querySelectorAll(`a.hit`)],o=e=>{let t=a();t.length&&(i=(e+t.length)%t.length,t.forEach((e,t)=>e.classList.toggle(`active`,t===i)),t[i].scrollIntoView({block:`nearest`}))};t.addEventListener(`keydown`,t=>{if(t.key===`Escape`)t.preventDefault(),e.close();else if(t.key===`ArrowDown`)t.preventDefault(),o(i+1);else if(t.key===`ArrowUp`)t.preventDefault(),o(i-1);else if(t.key===`Enter`){let e=a()[Math.max(i,0)];e&&(t.preventDefault(),e.click())}}),t.addEventListener(`input`,()=>{clearTimeout(r),r=window.setTimeout(async()=>{let e=t.value.trim();i=-1,e?de(n,e,le(await T(),e)):n.innerHTML=`<p class="muted">输入关键词开始搜索,多个关键词用空格分隔</p>`},120)}),n.addEventListener(`click`,t=>t.target.closest(`a`)&&e.close())}var j=`lanyun:prefs`,M=()=>{try{return JSON.parse(localStorage.getItem(j)||`{}`)}catch{return{}}};function N(e){let t={...M(),...e};localStorage.setItem(j,JSON.stringify(t)),window.__applyPrefs(),document.dispatchEvent(new CustomEvent(`prefs-change`,{detail:t}))}var P=e=>!document.documentElement.classList.contains(`no-`+e),fe=()=>document.documentElement.dataset.theme===`dark`;function pe(){let e=document.getElementById(`settings-dialog`),t=M(),n=document.documentElement,r=t=>[...e.querySelectorAll(t)];r(`input[name=style]`).forEach(e=>e.checked=e.value===n.dataset.style),r(`input[name=theme]`).forEach(e=>e.checked=e.value===(t.theme??`auto`)),r(`input[name=side]`).forEach(e=>e.checked=e.value===(t.side??`left`)),r(`input[name=wide]`).forEach(e=>e.checked=!!t.wide),r(`input[name=carouselRelease]`).forEach(e=>e.checked=!!t.carouselRelease),r(`input[name=focus]`).forEach(e=>e.checked=!!t.focus);let i=e.querySelector(`input[name=reduce]`);i.checked=n.dataset.motion===`reduce`;let a={...window.__BOOT__.effects,...t.fx??{}};r(`input[name=fx]`).forEach(e=>{e.checked=!!a[e.value],e.disabled=i.checked}),ie(),e.showModal(),e.dataset.ready||(e.dataset.ready=`1`,e.addEventListener(`click`,t=>t.target===e&&e.close()),e.addEventListener(`change`,e=>{let t=e.target;t.name===`style`&&N({style:t.value}),t.name===`theme`&&N({theme:t.value}),t.name===`side`&&N({side:t.value}),t.name===`wide`&&N({wide:t.checked}),t.name===`carouselRelease`&&N({carouselRelease:t.checked}),t.name===`focus`&&N({focus:t.checked}),t.name===`reduce`&&(N({reduce:t.checked}),r(`input[name=fx]`).forEach(e=>e.disabled=t.checked)),t.name===`fx`&&N({fx:{...M().fx??{},[t.value]:t.checked}})}))}function F(e,t,n=`carousel`){let r=e.classList.contains(`vertical`),i=e.querySelector(`.viewport`),a=e.querySelector(`.slides`),o=a.children.length;if(o<2)return;let s=e.querySelector(`.dots`),c=0,l,u=0,d=()=>document.documentElement.dataset.motion===`reduce`?`auto`:`smooth`,f=()=>s?.querySelectorAll(`button`).forEach((e,t)=>e.setAttribute(`aria-current`,String(t===c))),p=(e,t=!1)=>{c=(e+o)%o,r?a.style.transform=`translateY(-${c*100}%)`:i.scrollTo({left:c*i.clientWidth,behavior:d()}),f(),t&&h()};s&&(s.innerHTML=Array.from({length:o},(e,t)=>`<button type="button" aria-label="第 ${t+1} 张"></button>`).join(``),s.onclick=e=>{let t=e.target.closest(`button`);t&&p([...s.children].indexOf(t),!0)});let m=e.closest(`.card`)??e;if(m.querySelector(`.prev, .hist-prev`)?.addEventListener(`click`,()=>p(c-1,!0)),m.querySelector(`.next, .hist-next`)?.addEventListener(`click`,()=>p(c+1,!0)),r&&e.addEventListener(`wheel`,e=>{e.preventDefault(),Date.now()-u<400||Math.abs(e.deltaY)<2||(u=Date.now(),p(c+(e.deltaY>0?1:-1),!0))},{passive:!1}),!r){let e=0;i.addEventListener(`scroll`,()=>{clearTimeout(e),e=window.setTimeout(()=>{c=Math.round(i.scrollLeft/i.clientWidth),f()},80)},{passive:!0}),i.addEventListener(`wheel`,e=>{if(Math.abs(e.deltaX)>Math.abs(e.deltaY))return;let t=e.deltaY>0?1:-1;document.documentElement.dataset.carouselRelease===`1`&&(t>0&&c===o-1||t<0&&c===0)||(e.preventDefault(),Date.now()-u<450||(u=Date.now(),p(c+t,!0)))},{passive:!1})}let h=()=>{g(),(n===null||P(n))&&!document.hidden&&(l=window.setInterval(()=>p(c+1),t))},g=()=>clearInterval(l);e.addEventListener(`pointerenter`,g),e.addEventListener(`pointerleave`,h),e.addEventListener(`focusin`,g),document.addEventListener(`visibilitychange`,h),document.addEventListener(`prefs-change`,h),document.addEventListener(`astro:before-swap`,()=>{g(),document.removeEventListener(`visibilitychange`,h),document.removeEventListener(`prefs-change`,h)},{once:!0}),f(),h()}async function I(e,t,n){try{let n=JSON.parse(localStorage.getItem(e)||`null`);if(n&&Date.now()-n.t<t)return n.v}catch{}let r=await n();return localStorage.setItem(e,JSON.stringify({t:Date.now(),v:r})),r}var L=e=>e.replace(/[&<>"]/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`})[e]);async function me(e){try{let t=await I(`pixiv`,36e5,async()=>{let t=await fetch(e.dataset.api);if(!t.ok)throw Error(String(t.status));return(await t.json()).slice(0,20)});e.querySelector(`.slides`).innerHTML=t.map((e,t)=>`<a class="slide" href="${L(e.link)}" target="_blank" rel="noopener nofollow"><img src="${L(e.imageUrl)}" alt="${L(e.title)}" loading="${t?`lazy`:`eager`}" decoding="async" referrerpolicy="no-referrer"/><span><b>#${t+1} ${L(e.title)}</b><small>${L(e.author)}</small></span></a>`).join(``),e.classList.add(`ready`),F(e,5e3,null)}catch{e.closest(`.card`)?.setAttribute(`hidden`,``)}}async function he(e){let t=new Date,n=String(t.getMonth()+1).padStart(2,`0`),r=String(t.getDate()).padStart(2,`0`);try{let t=((await I(`history:`+n,6048e5,async()=>(await fetch(`/other/history/${n}.json`)).json()))[`S`+n+r]??[]).slice(-12).reverse();e.querySelector(`.slides`).innerHTML=t.map(e=>`<div class="slide"><b>${L(e.year)} 年</b><span>${e.title.replace(/<[^>]+>/g,``)}</span></div>`).join(``),F(e,4500,null)}catch{e.closest(`.card`)?.setAttribute(`hidden`,``)}}function ge(){document.querySelectorAll(`[data-widget]:not([data-ready])`).forEach(e=>{e.dataset.ready=`1`;let t=e.dataset.widget,n=()=>t===`pixiv`?me(e):t===`history`?he(e):t===`carousel`?F(e,5e3):null;if(t===`carousel`)return n();let r=new IntersectionObserver(e=>{e[0].isIntersecting&&(r.disconnect(),n())},{rootMargin:`200px`});r.observe(e)})}var R=0;function _e(){document.addEventListener(`pointerdown`,e=>{if(!P(`clickHeart`)||R>=15||e.button!==0||e.pointerType!==`mouse`||e.target.closest(`input,textarea,select,[contenteditable],.modal`))return;let t=document.createElement(`i`);t.className=`fx-heart`,t.style.cssText=`left:${e.clientX-5}px;top:${e.clientY-5}px;--c:hsl(${Math.random()*360|0} 85% 60%)`,document.body.append(t),R++,t.addEventListener(`animationend`,()=>{t.remove(),R--},{once:!0})},{passive:!0})}var z=null,B,V=[],H=!1,ve=`boxSizing.width.height.overflowX.overflowY.borderTopWidth.borderRightWidth.borderBottomWidth.borderLeftWidth.paddingTop.paddingRight.paddingBottom.paddingLeft.fontStyle.fontVariant.fontWeight.fontSize.lineHeight.fontFamily.textAlign.textTransform.textIndent.letterSpacing.wordSpacing.whiteSpace.wordWrap`.split(`.`);function ye(e){let t=document.createElement(`div`),n=getComputedStyle(e);for(let e of ve)t.style[e]=n[e];t.style.position=`absolute`,t.style.visibility=`hidden`,e.tagName===`TEXTAREA`&&(t.style.whiteSpace=`pre-wrap`),t.textContent=e.value.slice(0,e.selectionStart??0);let r=document.createElement(`span`);r.textContent=`.`,t.append(r),document.body.append(t);let i=e.getBoundingClientRect(),a=i.left+r.offsetLeft-e.scrollLeft,o=i.top+r.offsetTop-e.scrollTop+8;return t.remove(),{x:a,y:o}}function U(){z.clearRect(0,0,B.width,B.height),V=V.filter(e=>(e.a-=.02)>0);for(let e of V)e.vy+=.075,e.x+=e.vx,e.y+=e.vy,z.globalAlpha=e.a,z.fillStyle=e.c,z.beginPath(),z.arc(e.x,e.y,e.r,0,6.283),z.fill();V.length?requestAnimationFrame(U):H=!1}function be(){document.addEventListener(`input`,e=>{let t=e.target;if(!P(`powerMode`)||!t.matches?.(`textarea, input[type=text], input:not([type])`))return;z||=(B=document.createElement(`canvas`),B.className=`fx-canvas`,document.body.append(B),B.getContext(`2d`)),(B.width!==innerWidth||B.height!==innerHeight)&&(B.width=innerWidth,B.height=innerHeight);let{x:n,y:r}=ye(t),i=Math.random()*360;for(let e=0;e<10;e++)V.push({x:n,y:r,vx:(Math.random()-.5)*2,vy:-1.5-Math.random()*2,a:1,r:1.5+Math.random()*1.5,c:`hsl(${i+Math.random()*20-10|0} 100% ${50+Math.random()*30}%)`});V.length>200&&V.splice(0,V.length-200),H||(H=!0,requestAnimationFrame(U))})}function xe(){let e=document.querySelector(`canvas.fx-bubbles`);if(!e)return;let t=e.getContext(`2d`),n=Math.min(devicePixelRatio||1,1.5),r=0,i=0,a=0,o=0,s=!0,c=[],l=(e={})=>({x:Math.random()*r,y:i+Math.random()*100,r:1+Math.random()*3,v:.15+Math.random()*.85,a:.15+Math.random()*.85,...e}),u=()=>{r=e.clientWidth,i=e.clientHeight,e.width=Math.round(r*n),e.height=Math.round(i*n),t.setTransform(n,0,0,n,0,0);let a=Math.min(320,Math.round(r*.2));c=Array.from({length:a},()=>l())},d=e=>{if(o&&e-o<32){a=requestAnimationFrame(d);return}let n=o?Math.min(3,(e-o)/16.7):1;o=e,t.clearRect(0,0,r,i);let s=Array.from({length:6},()=>new Path2D);for(let e of c){e.y-=e.v*n,e.a-=6e-4*n,(e.a<=.02||e.y<-10)&&Object.assign(e,l());let t=s[Math.min(5,Math.floor(e.a*6))];t.moveTo(e.x+e.r,e.y),t.arc(e.x,e.y,e.r,0,Math.PI*2)}for(let e=0;e<6;e++)t.fillStyle=`rgba(255,255,255,${(e+.5)/6*.55})`,t.fill(s[e]);a=requestAnimationFrame(d)},f=()=>{cancelAnimationFrame(a),o=0,s&&!document.hidden&&P(`bubbles`)?a=requestAnimationFrame(d):t.clearRect(0,0,r,i)};u();let p=new IntersectionObserver(e=>{s=e[0].isIntersecting,f()});p.observe(e);let m=0,h=()=>{clearTimeout(m),m=window.setTimeout(()=>{u(),f()},200)};addEventListener(`resize`,h,{passive:!0}),document.addEventListener(`visibilitychange`,f),document.addEventListener(`prefs-change`,f),document.addEventListener(`astro:before-swap`,()=>{p.disconnect(),cancelAnimationFrame(a),removeEventListener(`resize`,h),document.removeEventListener(`visibilitychange`,f),document.removeEventListener(`prefs-change`,f)},{once:!0})}function Se(){let e=document.querySelector(`[data-typing]`);if(!e)return;let t=JSON.parse(e.dataset.typing),n=t[Math.random()*t.length|0];if(!P(`typing`)){e.textContent=n;return}let r=[...n].map(e=>{let t=document.createElement(`span`);return t.textContent=e,t.className=`ch`,t});e.replaceChildren(...r),e.setAttribute(`aria-label`,n),e.classList.add(`typing`);let i=0,a=0,o=()=>{r[i-1]?.classList.remove(`caret`),r[i].classList.add(`on`,`caret`),i++,a=i<r.length?window.setTimeout(o,150+Math.random()*90):window.setTimeout(()=>r[i-1].classList.remove(`caret`),2400)};a=window.setTimeout(o,500),document.addEventListener(`astro:before-swap`,()=>clearTimeout(a),{once:!0})}var W;function Ce(){W?.disconnect();let e=document.querySelectorAll(`.reveal:not(.in)`);if(document.documentElement.classList.contains(`no-reveal`)){e.forEach(e=>e.classList.remove(`reveal`));return}let t=e=>setTimeout(()=>e.classList.remove(`reveal`,`in`),700);W=new IntersectionObserver(e=>e.forEach(e=>{e.isIntersecting&&(e.target.classList.add(`in`),W.unobserve(e.target),t(e.target))}),{rootMargin:`0px 0px -8% 0px`}),e.forEach(e=>W.observe(e))}function we(e){let t=fe()?`light`:`dark`,n=()=>N({theme:t}),r=document.startViewTransition;if(!r||!P(`sunMoon`)||!e)return n();let i=e.getBoundingClientRect(),a=i.left+i.width/2,o=i.top+i.height/2,s=Math.hypot(Math.max(a,innerWidth-a),Math.max(o,innerHeight-o));document.documentElement.classList.add(`theme-vt`);let c=r.call(document,n);c.ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0 at ${a}px ${o}px)`,`circle(${s}px at ${a}px ${o}px)`]},{duration:520,easing:`cubic-bezier(.4,0,.2,1)`,pseudoElement:`::view-transition-new(root)`})}),c.finished.finally(()=>document.documentElement.classList.remove(`theme-vt`))}function Te(e){if(e.closest(`.reward`)?.classList.toggle(`open`),!P(`coin`)||e.classList.contains(`flipping`))return;e.classList.add(`flipping`);let t=new Audio(`/other/aowu.m4a`);t.volume=.6,t.play().catch(()=>{}),e.querySelector(`.coin`)?.addEventListener(`animationend`,()=>e.classList.remove(`flipping`),{once:!0})}var G=e=>document.querySelector(e),K={search:()=>A(),settings:()=>pe(),theme:e=>we(e),"clear-cache":()=>ae(),menu:e=>{let t=document.body.classList.toggle(`menu-open`);e.setAttribute(`aria-expanded`,String(t))},top:()=>scrollTo({top:0,behavior:`smooth`}),bottom:()=>scrollTo({top:document.body.scrollHeight,behavior:`smooth`}),"to-comment":()=>G(`#comments`)?.scrollIntoView({behavior:`smooth`}),toc:()=>document.body.classList.toggle(`toc-open`),read:()=>document.body.classList.toggle(`read-mode`),share:()=>o(),"rs-toggle":e=>e.setAttribute(`aria-expanded`,String(document.body.classList.toggle(`rs-open`))),coin:e=>Te(e)};document.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`[data-action]`);if(n&&K[n.dataset.action]){e.preventDefault(),K[n.dataset.action](n);return}if(t.matches(`figure.code-block button.copy`))return void r(t);let i=t.closest(`.prose img`);if(i&&!i.closest(`a`))return u(i);t.closest(`.toc a`)&&document.body.classList.remove(`toc-open`),t.closest(`.menu, .menu-toggle`)||document.body.classList.remove(`menu-open`)}),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&document.body.classList.contains(`read-mode`)&&!document.querySelector(`dialog[open]`)?document.body.classList.remove(`read-mode`):(e.key===`k`&&(e.metaKey||e.ctrlKey)||e.key===`/`&&!e.target.closest(`input,textarea,[contenteditable]`))&&(e.preventDefault(),A())});var q=0;document.addEventListener(`copy`,()=>{!G(`.prose`)||Date.now()-q<8e3||(q=Date.now(),e(`复制成功,转载请注明出处并保留原文链接~`,`success`))});var J=0,Y=!1;addEventListener(`scroll`,()=>{Y||(Y=!0,requestAnimationFrame(()=>{let e=scrollY,t=document.documentElement.scrollHeight-innerHeight,n=t>0?Math.min(100,Math.round(e/t*100)):0,r=G(`#scroll-percent`);r&&(r.textContent=String(n));let i=G(`#toc-pct`);i&&(i.textContent=String(n)),document.body.classList.toggle(`scrolled`,e>60),document.body.classList.toggle(`nav-hidden`,e>300&&e>J&&!document.body.classList.contains(`menu-open`)),document.body.classList.toggle(`show-rightside`,e>300),document.body.classList.toggle(`at-bottom`,t-e<40),document.documentElement.style.setProperty(`--progress`,String(n/100)),J=e,Y=!1}))},{passive:!0}),_e(),be(),ne();function X(e,t={}){let n=document.createElement(`script`);n.src=e,n.async=!0;for(let[e,r]of Object.entries(t))n.setAttribute(e,r);document.body.append(n)}(e=>`requestIdleCallback`in window?requestIdleCallback(e,{timeout:4e3}):setTimeout(e,1500))(()=>{let e=window.__BOOT__.ga;e&&(window.dataLayer=window.dataLayer||[],window.gtag=function(){window.dataLayer.push(arguments)},window.gtag(`js`,new Date),window.gtag(`config`,e),X(`https://www.googletagmanager.com/gtag/js?id=${e}`))}),document.addEventListener(`astro:page-load`,()=>{window.gtag&&window.gtag(`event`,`page_view`,{page_path:location.pathname})});var Z=0;function Ee(){clearInterval(Z);let e=G(`#runtime`);if(!e)return;let t=new Date(e.dataset.since+`T00:00:00+08:00`).getTime(),n=()=>{let n=Math.floor((Date.now()-t)/1e3);e.textContent=`${Math.floor(n/86400)} 天 ${Math.floor(n%86400/3600)} 时 ${Math.floor(n%3600/60)} 分`};n(),Z=window.setInterval(n,6e4)}function De(){G(`[id^="busuanzi_"]`)&&(document.querySelector(`script[data-bsz]`)?.remove(),X(`/js/busuanzi.js`,{"data-bsz":`1`,"data-api":`https://busuanzi.lanyundev.com/api`}))}function Q(){document.querySelectorAll(`.aside .sticky`).forEach(e=>{let t=()=>e.style.setProperty(`--sticky-h`,e.offsetHeight+`px`);t(),new ResizeObserver(t).observe(e)})}addEventListener(`resize`,()=>Q(),{passive:!0}),document.addEventListener(`content-unlocked`,()=>Oe());var $;function Oe(){$?.disconnect(),$=new IntersectionObserver(e=>e.forEach(e=>e.target.classList.toggle(`anim-on`,e.isIntersecting)),{rootMargin:`80px`}),document.querySelectorAll(`.author-card, .avatar-ring, .prose :is(h1,h2,h3,h4,h5,h6), .heartbeat, .hero-down`).forEach(e=>$.observe(e))}document.addEventListener(`astro:page-load`,()=>{document.body.classList.remove(`menu-open`,`toc-open`,`read-mode`,`rs-open`),c(),ee(),te(),m(),ge(),Ce(),Q(),Oe(),Se(),xe(),Ee(),De()});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,t}from"./prefetch.DxIALaZb.js";var n=`data-astro-transition-persist`,r=[`data-astro-transition`,`data-astro-transition-fallback`],i=new Set;function a(e){let t=e.src?new URL(e.src,location.href).href:e.textContent;return i.has(t)?!0:(i.add(t),!1)}function o(e){for(let t of e.scripts)!t.hasAttribute(`data-astro-rerun`)&&a(t)&&(t.dataset.astroExec=``)}function s(e){let t=document.documentElement,n=[...t.attributes].filter(({name:e})=>(t.removeAttribute(e),r.includes(e)));[...e.documentElement.attributes,...n].forEach(({name:e,value:n})=>t.setAttribute(e,n))}function c(e){let t=(e,t=`both`)=>[...[...e.childNodes].filter(e=>e.nodeType===8&&e.textContent===`[if astro]>server-island-start<![endif]`||t===`both`&&e.nodeType===1)];for(let t of Array.from(document.head.children)){let n=m(t,e);n?n.remove():t.remove()}t(document.head,`commentsOnly`).forEach(e=>e.remove()),document.head.append(...t(e.head))}function l(e,t){let r=[],i=t.ownerDocument.documentElement,a=new Set(t.querySelectorAll(`video, audio`)),o=typeof i.moveBefore==`function`?(e,t,n)=>e.moveBefore(t,n):null;for(let a of t.querySelectorAll(`[${n}]`)){let t=a.getAttribute(n),s=e.querySelector(`[${n}="${t}"]`);s&&(r.push({old:a,newTarget:s}),o?o(i,a,null):i.appendChild(a))}t.replaceWith(e);for(let{old:e,newTarget:t}of r)o?(o(t.parentNode,e,t),t.remove()):t.replaceWith(e),t.localName===`astro-island`&&h(e)&&!g(e,t)&&(e.setAttribute(`ssr`,``),e.setAttribute(`props`,t.getAttribute(`props`)));d(e),u(e,a)}function u(e,t){for(let n of e.querySelectorAll(`video, audio`)){if(t.has(n))continue;let e=document.createElement(n.localName);for(let t of n.attributes)e.setAttribute(t.name,t.value);e.innerHTML=n.innerHTML,e.hasAttribute(`muted`)&&(e.muted=!0),n.replaceWith(e)}}function d(e){e.querySelectorAll(`template[shadowrootmode]`).forEach(e=>{let t=e.getAttribute(`shadowrootmode`),n=e.parentNode;if((t===`closed`||t===`open`)&&n instanceof HTMLElement){if(n.shadowRoot){e.remove();return}let r=n.attachShadow({mode:t});r.appendChild(e.content),e.remove(),d(r)}})}var f=()=>{let e=document.activeElement;if(e?.closest(`[${n}]`)){if(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement){let t=e.selectionStart,n=e.selectionEnd;return()=>p({activeElement:e,start:t,end:n})}return()=>p({activeElement:e})}return()=>p({activeElement:null})},p=({activeElement:e,start:t,end:n})=>{e&&(e.focus(),(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&(typeof t==`number`&&(e.selectionStart=t),typeof n==`number`&&(e.selectionEnd=n)))},m=(e,t)=>{let r=e.getAttribute(n),i=r&&t.head.querySelector(`[${n}="${r}"]`);if(i)return i;if(e.matches(`link[rel=stylesheet]`)){let n=e.getAttribute(`href`);return t.head.querySelector(`link[rel=stylesheet][href="${n}"]`)}if(e.tagName===`STYLE`&&e.textContent){let n=t.head.querySelectorAll(`style`);for(let t of n)if(t.textContent===e.textContent)return t}if(e.matches(`link[rel=preload][as=font]`)){let n=e.getAttribute(`href`);return t.head.querySelector(`link[rel=preload][as=font][href="${n}"]`)}return null},h=e=>{let t=e.dataset.astroTransitionPersistProps;return t==null||t===`false`},g=(e,t)=>e.getAttribute(`props`)===t.getAttribute(`props`),_=e=>{o(e),s(e),c(e);let t=f();l(e.body,document.body),t()},v=e=>document.dispatchEvent(new Event(e)),y=()=>v(`astro:page-load`),b=class extends Event{from;to;direction;navigationType;sourceElement;info;newDocument;signal;constructor(e,t,n,r,i,a,o,s,c,l){super(e,t),this.from=n,this.to=r,this.direction=i,this.navigationType=a,this.sourceElement=o,this.info=s,this.newDocument=c,this.signal=l,Object.defineProperties(this,{from:{enumerable:!0},to:{enumerable:!0,writable:!0},direction:{enumerable:!0,writable:!0},navigationType:{enumerable:!0},sourceElement:{enumerable:!0},info:{enumerable:!0},newDocument:{enumerable:!0,writable:!0},signal:{enumerable:!0}})}},x=class extends b{formData;loader;constructor(e,t,n,r,i,a,o,s,c,l){super(`astro:before-preparation`,{cancelable:!0},e,t,n,r,i,a,o,s),this.formData=c,this.loader=l.bind(this,this),Object.defineProperties(this,{formData:{enumerable:!0},loader:{enumerable:!0,writable:!0}})}},S=class extends b{direction;viewTransition;swap;constructor(e,t){super(`astro:before-swap`,void 0,e.from,e.to,e.direction,e.navigationType,e.sourceElement,e.info,e.newDocument,e.signal),this.direction=e.direction,this.viewTransition=t,this.swap=()=>_(this.newDocument),Object.defineProperties(this,{direction:{enumerable:!0},viewTransition:{enumerable:!0},swap:{enumerable:!0,writable:!0}})}};async function C(e,t,n,r,i,a,o,s,c){let l=new x(e,t,n,r,i,a,window.document,o,s,c);return document.dispatchEvent(l)&&(await l.loader(),l.defaultPrevented||(v(`astro:after-preparation`),l.navigationType!==`traverse`&&w({scrollX,scrollY}))),l}var w=e=>{history.state&&(history.scrollRestoration=`manual`,history.replaceState({...history.state,...e},``))};async function T(e,t,n){let r=new S(e,t);return document.dispatchEvent(r),n&&await n(),r.swap(),r}var E=!!document.startViewTransition,D=()=>!!document.querySelector(`[name="astro-view-transitions-enabled"]`),O=(e,t)=>e.pathname===t.pathname&&e.search===t.search,k,A,j,M=()=>{let e=document.createElement(`div`);e.setAttribute(`aria-live`,`assertive`),e.setAttribute(`aria-atomic`,`true`),e.className=`astro-route-announcer`,document.body.append(e),setTimeout(()=>{let t=document.title||document.querySelector(`h1`)?.textContent||location.pathname;e.textContent=t},60)},N=`data-astro-transition-persist`,P=`data-astro-transition`,F=`data-astro-transition-fallback`,I,L=0;history.state?(L=history.state.index,scrollTo({left:history.state.scrollX,top:history.state.scrollY,behavior:`instant`})):D()&&(history.replaceState({index:L,scrollX,scrollY},``),history.scrollRestoration=`manual`);async function R(t,n){try{let r=new Headers(n?.headers);for(let[t,n]of Object.entries(e))r.set(t,n);let i=await fetch(t,{...n,headers:r}),a=(i.headers.get(`content-type`)??``).split(`;`,1)[0].trim();return a!==`text/html`&&a!==`application/xhtml+xml`?null:{html:await i.text(),redirected:i.redirected?i.url:void 0,mediaType:a}}catch{return null}}function z(){let e=document.querySelector(`[name="astro-view-transitions-fallback"]`);return e?e.getAttribute(`content`):`animate`}function B(){let e=Promise.resolve(),t=!1;for(let e of document.getElementsByTagName(`script`))e.dataset.astroExec===void 0&&e.getAttribute(`type`)===`module`&&(t=e.getAttribute(`src`)===null);t&&document.body.insertAdjacentHTML(`beforeend`,`<script type="module" src="data:application/javascript,"/>`);for(let t of document.getElementsByTagName(`script`)){if(t.dataset.astroExec===``)continue;let n=t.getAttribute(`type`);if(n&&n!==`module`&&n!==`text/javascript`)continue;let r=document.createElement(`script`);r.innerHTML=t.innerHTML;for(let n of t.attributes){if(n.name===`src`){let t=new Promise(e=>{r.onload=r.onerror=e});e=e.then(()=>t)}r.setAttribute(n.name,n.value)}r.dataset.astroExec=``,t.replaceWith(r)}return e}var V=(e,t,n,r,i)=>{let a=O(t,e),o=document.title;document.title=r;let s=!1;if(e.href!==location.href&&!i){if(n.history===`replace`){let t=history.state;history.replaceState({...n.state,index:t.index,scrollX:t.scrollX,scrollY:t.scrollY},``,e.href)}else history.pushState({...n.state,index:++L,scrollX:0,scrollY:0},``,e.href)}if(document.title=o,j=e,a||(scrollTo({left:0,top:0,behavior:`instant`}),s=!0),i)scrollTo({left:i.scrollX,top:i.scrollY,behavior:`instant`});else{if(e.hash){history.scrollRestoration=`auto`;let t=history.state;location.href=e.href,history.state||(history.replaceState(t,``),a&&window.dispatchEvent(new PopStateEvent(`popstate`)))}else s||scrollTo({left:0,top:0,behavior:`instant`});history.scrollRestoration=`manual`}};function H(e){let t=[];for(let n of e.querySelectorAll(`head link[rel=stylesheet]`))if(!document.querySelector(`[${N}="${n.getAttribute(N)}"], link[rel=stylesheet][href="${n.getAttribute(`href`)}"]`)){let e=document.createElement(`link`);e.setAttribute(`rel`,`preload`),e.setAttribute(`as`,`style`),e.setAttribute(`href`,n.getAttribute(`href`)),t.push(new Promise(t=>{[`load`,`error`].forEach(n=>e.addEventListener(n,t)),document.head.append(e)}))}return t}async function U(e,t,n,r,i){async function a(e){function t(e){let t=e.effect;return!t||!(t instanceof KeyframeEffect)||!t.target?!1:window.getComputedStyle(t.target,t.pseudoElement).animationIterationCount===`infinite`}let n=document.getAnimations();document.documentElement.setAttribute(F,e);let r=document.getAnimations().filter(e=>!n.includes(e)&&!t(e));return Promise.allSettled(r.map(e=>e.finished))}let o=async()=>{if(i===`animate`&&!n.transitionSkipped&&!e.signal.aborted)try{await a(`old`)}catch{}},s=document.title,c=await T(e,n.viewTransition,o);V(c.to,c.from,t,s,r),v(`astro:after-swap`),i===`animate`&&!n.transitionSkipped&&!c.signal.aborted?a(`new`).finally(()=>n.viewTransitionFinished()):n.viewTransitionFinished?.()}function W(){return k?.controller.abort(),k={controller:new AbortController}}async function G(e,t,n,r,i,a=!1){let o=W();if(!D()||location.origin!==n.origin){o===k&&(k=void 0),location.href=n.href;return}let s=i?`traverse`:r.history===`replace`?`replace`:`push`;if(s!==`traverse`&&w({scrollX,scrollY}),O(t,n)&&!r.formData&&(e!==`back`&&n.hash||e===`back`&&t.hash)){V(n,t,r,document.title,i),o===k&&(k=void 0);return}let c=await C(t,n,e,s,r.sourceElement,r.info,o.controller.signal,r.formData,l);if(c.defaultPrevented||c.signal.aborted){o===k&&(k=void 0),c.signal.aborted||(location.href=n.href);return}async function l(e){let n=e.to.href,r={signal:e.signal};if(e.formData){r.method=`POST`;let n=e.sourceElement instanceof HTMLFormElement?e.sourceElement:e.sourceElement instanceof HTMLElement&&`form`in e.sourceElement?e.sourceElement.form:e.sourceElement?.closest(`form`);r.body=t!==void 0&&Reflect.get(HTMLFormElement.prototype,`attributes`,n).getNamedItem(`enctype`)?.value===`application/x-www-form-urlencoded`?new URLSearchParams(e.formData):e.formData}let i=await R(n,r);if(i===null){e.preventDefault();return}if(i.redirected){let t=new URL(i.redirected);if(t.origin!==e.to.origin){e.preventDefault();return}let n=e.to.hash;e.to=t,e.to.hash=n}if(I??=new DOMParser,e.newDocument=I.parseFromString(i.html,i.mediaType),e.newDocument.querySelectorAll(`noscript`).forEach(e=>e.remove()),!e.newDocument.querySelector(`[name="astro-view-transitions-enabled"]`)&&!e.formData){e.preventDefault();return}let a=H(e.newDocument);a.length&&!e.signal.aborted&&await Promise.all(a)}async function u(){if(A&&A.viewTransition){A.viewTransition.ready.catch(()=>{}),A.viewTransition.skipTransition();try{await A.viewTransition.updateCallbackDone}catch{}}return A={transitionSkipped:!1}}let d=await u();if(c.signal.aborted)o===k&&(k=void 0);else{if(document.documentElement.setAttribute(P,c.direction),E&&!a)d.viewTransition=document.startViewTransition(async()=>await U(c,r,d,i));else{let e=(async()=>{await Promise.resolve(),await U(c,r,d,i,a?`swap`:z())})();d.viewTransition={updateCallbackDone:e,ready:e,finished:new Promise(e=>d.viewTransitionFinished=e),skipTransition:()=>{d.transitionSkipped=!0,document.documentElement.removeAttribute(F)},types:new Set}}d.viewTransition?.updateCallbackDone.finally(async()=>{await B(),y(),M()}),d.viewTransition?.finished.finally(()=>{d.viewTransition=void 0,d===A&&(A=void 0),o===k&&(k=void 0),document.documentElement.removeAttribute(P),document.documentElement.removeAttribute(F)});try{await d.viewTransition?.updateCallbackDone}catch(e){let t=e;console.log(`[astro]`,t.name,t.message,t.stack)}}}async function K(e,t){await G(`forward`,j,new URL(e,location.href),t??{})}function q(e){if(!D()&&e.state){location.reload();return}if(e.state===null)return;let t=history.state,n=t.index,r=n>L?`forward`:`back`;L=n,G(r,j,new URL(location.href),{},t,e.hasUAVisualTransition)}var J=()=>{history.state&&(scrollX!==history.state.scrollX||scrollY!==history.state.scrollY)&&w({scrollX,scrollY})};if(E||z()!==`none`){if(j=new URL(location.href),addEventListener(`popstate`,q),addEventListener(`load`,y),`onscrollend`in window)addEventListener(`scrollend`,J);else{let e,t,n,r,i=()=>{r===history.state?.index?t===scrollY&&n===scrollX?(clearInterval(e),e=void 0,J()):(t=scrollY,n=scrollX):(clearInterval(e),e=void 0)};addEventListener(`scroll`,()=>{e===void 0&&(r=history.state?.index,t=scrollY,n=scrollX,e=window.setInterval(i,50))},{passive:!0})}}for(let e of document.getElementsByTagName(`script`))a(e),e.dataset.astroExec=``;var Y=null;function X(){let e=document.querySelector(`[name="astro-view-transitions-fallback"]`);return e?e.getAttribute(`content`):`animate`}function Z(e){return e.dataset.astroReload!==void 0}var Q=e=>e.button&&e.button!==0||e.metaKey||e.ctrlKey||e.altKey||e.shiftKey;(E||X()!==`none`)&&(document.addEventListener(`click`,e=>{let t=e.target;if(Y=Q(e)?t:null,e.composed&&(t=e.composedPath()[0]),t instanceof Element&&(t=t.closest(`a, area`)),!(t instanceof HTMLAnchorElement)&&!(t instanceof SVGAElement)&&!(t instanceof HTMLAreaElement))return;let n=t instanceof HTMLElement?t.target:t.target.baseVal,r=t instanceof HTMLElement?t.href:t.href.baseVal,i=new URL(r,location.href).origin;Z(t)||t.hasAttribute(`download`)||!t.href||n&&n!==`_self`||i!==location.origin||Y||e.defaultPrevented||(e.preventDefault(),K(r,{history:t.dataset.astroHistory===`replace`?`replace`:`auto`,sourceElement:t}))}),document.addEventListener(`submit`,e=>{let t=e.target,n=e.submitter,r=n&&n===Y;if(Y=null,t.tagName!==`FORM`||e.defaultPrevented||Z(t)||r)return;let i=t,a=new FormData(i,n),o=typeof i.action==`string`?i.action:i.getAttribute(`action`),s=typeof i.method==`string`?i.method:i.getAttribute(`method`),c=n?.getAttribute(`formaction`)??o??location.pathname,l=n?.getAttribute(`formmethod`)??s??`get`;if(l===`dialog`||location.origin!==new URL(c,location.href).origin)return;let u={sourceElement:n??i};if(l===`get`){let e=new URLSearchParams(a),t=new URL(c);t.search=e.toString(),c=t.toString()}else u.formData=a;e.preventDefault(),K(c,u)}),t({prefetchAll:!0}));
|
package/_astro/page.DdqQKad9.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./prefetch.DxIALaZb.js";e();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={},t=new Set,n=new WeakSet,r=!1,i=`hover`,a=!1;function o(e){a||(a=!0,r??=e?.prefetchAll??!1,i??=e?.defaultStrategy??`hover`,s(),c(),l(),d())}function s(){for(let e of[`touchstart`,`mousedown`])document.addEventListener(e,e=>{let t=e.target.closest(`a`);m(t,`tap`)&&f(t.href,{ignoreSlowConnection:!0})},{passive:!0})}function c(){let e;document.body.addEventListener(`focusin`,e=>{let n=e.target.closest(`a`);m(n,`hover`)&&t(n.href)},{passive:!0}),document.body.addEventListener(`focusout`,r,{passive:!0}),g(()=>{for(let e of document.getElementsByTagName(`a`))n.has(e)||m(e,`hover`)&&(n.add(e),e.addEventListener(`mouseenter`,e=>t(e.currentTarget.href),{passive:!0}),e.addEventListener(`mouseleave`,r,{passive:!0}))});function t(t){e&&clearTimeout(e),e=setTimeout(()=>{f(t)},80)}function r(){e&&=(clearTimeout(e),0)}}function l(){let e;g(()=>{for(let t of document.getElementsByTagName(`a`))n.has(t)||m(t,`viewport`)&&(n.add(t),e??=u(),e.observe(t))})}function u(){let e=new WeakMap;return new IntersectionObserver((t,n)=>{for(let r of t){let t=r.target,i=e.get(t);r.isIntersecting?(i&&clearTimeout(i),e.set(t,setTimeout(()=>{n.unobserve(t),e.delete(t),f(t.href)},300))):i&&(clearTimeout(i),e.delete(t))}})}function d(){g(()=>{for(let e of document.getElementsByTagName(`a`))m(e,`load`)&&f(e.href)})}function f(n,r){n=n.replace(/#.*/,``);let i=r?.ignoreSlowConnection??!1;if(p(n,i)){if(t.add(n),document.createElement(`link`).relList?.supports?.(`prefetch`)){let e=document.createElement(`link`);e.rel=`prefetch`,e.setAttribute(`href`,n),document.head.append(e)}else{let t=new Headers;for(let[n,r]of Object.entries(e))t.set(n,r);fetch(n,{priority:`low`,headers:t}).catch(()=>{})}}}function p(e,n){if(!navigator.onLine||!n&&h())return!1;try{let n=new URL(e,location.href);return location.origin===n.origin&&(location.pathname!==n.pathname||location.search!==n.search)&&!t.has(e)}catch{}return!1}function m(e,t){if(e?.tagName!==`A`)return!1;let n=e.dataset.astroPrefetch;return n===`false`?!1:t===`tap`&&(n!=null||r)&&h()?!0:n==null&&r||n===``?t===i:n===t}function h(){if(`connection`in navigator){let e=navigator.connection;return e.saveData||/2g/.test(e.effectiveType)}return!1}function g(e){e();let t=!1;document.addEventListener(`astro:page-load`,()=>{t?e():t=!0}),new MutationObserver(t=>{for(let n of t)for(let t of n.addedNodes)if(t instanceof Element&&(t.tagName===`A`||t.querySelector?.(`a`))){e();return}}).observe(document.body,{childList:!0,subtree:!0})}export{e as n,o as t};
|