:root{--c-info:#1d4ed8;--c-warn:#8a4b00;--c-danger:#b42318;--c-tip:#0b6b3f;--sev-critical:#b42318;--sev-high:#b23a08;--sev-medium:#8a5300;--sev-low:#11703a}:root[data-theme=dark]{--c-info:#7aa7ff;--c-warn:#f5b84a;--c-danger:#ff7b6e;--c-tip:#4ade95;--sev-critical:#ff7b6e;--sev-high:#ff9a5c;--sev-medium:#f2c14e;--sev-low:#4ade95}@media (prefers-color-scheme:dark){:root:not([data-theme]){--c-info:#7aa7ff;--c-warn:#f5b84a;--c-danger:#ff7b6e;--c-tip:#4ade95;--sev-critical:#ff7b6e;--sev-high:#ff9a5c;--sev-medium:#f2c14e;--sev-low:#4ade95}}.sec-card{--sev-solid:#b42318}.sec-card[data-severity=high]{--sev-solid:#b23a08}.sec-card[data-severity=medium]{--sev-solid:#8a5300}.sec-card[data-severity=low]{--sev-solid:#11703a}.prose .callout{--c:var(--c-info);border-left:4px solid var(--c);background:color-mix(in srgb, var(--c) 9%, var(--bg));border-radius:0 12px 12px 0;margin:1.6em 0;padding:14px 18px 14px 56px;position:relative}.prose .callout.warn{--c:var(--c-warn)}.prose .callout.danger{--c:var(--c-danger)}.prose .callout.tip{--c:var(--c-tip)}.prose .callout:before{content:"Info";color:var(--c);letter-spacing:.01em;margin-bottom:2px;font-size:.95em;font-weight:800;display:block}.prose .callout.warn:before{content:"Warning"}.prose .callout.danger:before{content:"Danger"}.prose .callout.tip:before{content:"Tip"}.prose .callout:lang(ko):before{content:"정보"}.prose .callout.warn:lang(ko):before{content:"주의"}.prose .callout.danger:lang(ko):before{content:"위험"}.prose .callout.tip:lang(ko):before{content:"팁"}.prose .callout:lang(ja):before{content:"情報"}.prose .callout.warn:lang(ja):before{content:"注意"}.prose .callout.danger:lang(ja):before{content:"危険"}.prose .callout.tip:lang(ja):before{content:"ヒント"}.prose .callout:lang(id):before{content:"Info"}.prose .callout.warn:lang(id):before{content:"Perhatian"}.prose .callout.danger:lang(id):before{content:"Bahaya"}.prose .callout.tip:lang(id):before{content:"Tips"}.prose .callout:lang(vi):before{content:"Thông tin"}.prose .callout.warn:lang(vi):before{content:"Lưu ý"}.prose .callout.danger:lang(vi):before{content:"Nguy hiểm"}.prose .callout.tip:lang(vi):before{content:"Mẹo"}.prose .callout:lang(th):before{content:"ข้อมูล"}.prose .callout.warn:lang(th):before{content:"ข้อควรระวัง"}.prose .callout.danger:lang(th):before{content:"อันตราย"}.prose .callout.tip:lang(th):before{content:"เคล็ดลับ"}.prose .callout:lang(ms):before{content:"Maklumat"}.prose .callout.warn:lang(ms):before{content:"Amaran"}.prose .callout.danger:lang(ms):before{content:"Bahaya"}.prose .callout.tip:lang(ms):before{content:"Petua"}.prose .callout:lang(zh-TW):before{content:"資訊"}.prose .callout.warn:lang(zh-TW):before{content:"注意"}.prose .callout.danger:lang(zh-TW):before{content:"危險"}.prose .callout.tip:lang(zh-TW):before{content:"提示"}.prose .callout:lang(es):before{content:"Información"}.prose .callout.warn:lang(es):before{content:"Atención"}.prose .callout.danger:lang(es):before{content:"Peligro"}.prose .callout.tip:lang(es):before{content:"Consejo"}.prose .callout:lang(pt-BR):before{content:"Informação"}.prose .callout.warn:lang(pt-BR):before{content:"Atenção"}.prose .callout.danger:lang(pt-BR):before{content:"Perigo"}.prose .callout.tip:lang(pt-BR):before{content:"Dica"}.prose .callout:lang(de):before{content:"Info"}.prose .callout.warn:lang(de):before{content:"Achtung"}.prose .callout.danger:lang(de):before{content:"Gefahr"}.prose .callout.tip:lang(de):before{content:"Tipp"}.prose .callout:lang(fr):before{content:"Info"}.prose .callout.warn:lang(fr):before{content:"Attention"}.prose .callout.danger:lang(fr):before{content:"Danger"}.prose .callout.tip:lang(fr):before{content:"Astuce"}.prose .callout:lang(tr):before{content:"Bilgi"}.prose .callout.warn:lang(tr):before{content:"Dikkat"}.prose .callout.danger:lang(tr):before{content:"Tehlike"}.prose .callout.tip:lang(tr):before{content:"İpucu"}.prose .callout:lang(it):before{content:"Info"}.prose .callout.warn:lang(it):before{content:"Attenzione"}.prose .callout.danger:lang(it):before{content:"Pericolo"}.prose .callout.tip:lang(it):before{content:"Suggerimento"}.prose .callout:lang(pl):before{content:"Informacja"}.prose .callout.warn:lang(pl):before{content:"Uwaga"}.prose .callout.danger:lang(pl):before{content:"Zagrożenie"}.prose .callout.tip:lang(pl):before{content:"Wskazówka"}.prose .callout:lang(nl):before{content:"Info"}.prose .callout.warn:lang(nl):before{content:"Let op"}.prose .callout.danger:lang(nl):before{content:"Gevaar"}.prose .callout.tip:lang(nl):before{content:"Tip"}.prose .callout[data-title]:before{content:attr(data-title)}.prose .callout:after{content:"";background:var(--c);width:24px;height:24px;mask:var(--ic) center / contain no-repeat;-webkit-mask:var(--ic) center / contain no-repeat;position:absolute;top:16px;left:18px}.prose .callout{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z'/%3E%3C/svg%3E")}.prose .callout.warn{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z'/%3E%3C/svg%3E")}.prose .callout.danger{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M15.7 3H8.3L3 8.3v7.4L8.3 21h7.4l5.3-5.3V8.3L15.7 3zM13 17h-2v-2h2v2zm0-4h-2V7h2v6z'/%3E%3C/svg%3E")}.prose .callout.tip{--ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H9v1zm3-19a7 7 0 0 0-4 12.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26A7 7 0 0 0 12 2z'/%3E%3C/svg%3E")}.prose .callout>:last-child,.prose .tldr>:last-child,.prose .sec-card>:last-child{margin-bottom:0}.prose .callout p{margin-bottom:.7em}.prose .tldr{border:1px solid var(--border);border-top:4px solid var(--signature);background:var(--surface);border-radius:12px;margin:1.8em 0;padding:18px 22px 16px;position:relative}.prose .tldr:before{content:"TL;DR";background:var(--signature);color:#fff;letter-spacing:.04em;border-radius:99px;margin-bottom:8px;padding:2px 10px;font-size:.8em;font-weight:800;display:inline-block}.prose .tldr[data-title]:before{content:attr(data-title)}.prose .tldr ul,.prose .tldr ol{margin:0 0 .4em;padding-left:1.2em}.prose .tldr li::marker{color:var(--signature)}.prose .tldr p{margin-bottom:.6em}.prose .sec-card{--sev:var(--sev-critical);border:1px solid var(--border);border-left:6px solid var(--sev);background:var(--surface);border-radius:12px;margin:1.8em 0;overflow:hidden}.prose .sec-card[data-severity=high]{--sev:var(--sev-high)}.prose .sec-card[data-severity=medium]{--sev:var(--sev-medium)}.prose .sec-card[data-severity=low]{--sev:var(--sev-low)}.prose .sec-head{background:color-mix(in srgb, var(--sev) 12%, var(--surface));border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px 12px;padding:12px 18px;display:flex}.prose .sec-head .sev{background:var(--sev-solid);color:#fff;border-radius:99px;align-items:center;gap:6px;padding:3px 12px;font-size:.9em;font-weight:800;display:inline-flex}.prose .sec-head .sev:before{content:"";background:#fff;border-radius:50%;width:10px;height:10px}.prose .sec-head .cve{font-family:ui-monospace,JetBrains Mono,SFMono-Regular,Menlo,monospace;font-size:.95em;font-weight:700}.prose .sec-head .patch{margin-left:auto;font-size:.88em;font-weight:700}.prose .sec-head .patch:before{margin-right:4px}.prose .sec-head .patch.yes{color:var(--c-tip)}.prose .sec-head .patch.yes:before{content:"✔"}.prose .sec-head .patch.no{color:var(--c-danger)}.prose .sec-head .patch.no:before{content:"✖"}.prose .sec-card dl{grid-template-columns:max-content 1fr;gap:8px 18px;margin:0;padding:14px 18px;display:grid}.prose .sec-card dt{color:var(--muted);font-size:.92em;font-weight:700}.prose .sec-card dd{margin:0}.prose .sec-card>:not(.sec-head):not(dl){margin-left:18px;margin-right:18px}.prose .sec-card>ul,.prose .sec-card>ol,.prose .sec-card>p{margin-bottom:14px}@media (width<=560px){.prose .sec-card dl{grid-template-columns:1fr;gap:2px}.prose .sec-card dd{margin-bottom:8px}.prose .sec-head .patch{margin-left:0}}.prose ul.checklist,.prose ol.steps{counter-reset:step;padding-left:0;list-style:none}.prose ul.checklist li,.prose ol.steps li{margin-bottom:.7em;padding-left:38px;position:relative}.prose ul.checklist li:before{content:"";border:2px solid var(--signature);background:color-mix(in srgb, var(--signature) 10%, transparent);border-radius:5px;width:18px;height:18px;position:absolute;top:.42em;left:4px}.prose ul.checklist li:after{content:"";border:solid var(--signature);border-width:0 2.5px 2.5px 0;width:5px;height:9px;position:absolute;top:calc(.42em + 3px);left:10px;transform:rotate(45deg)}.prose ol.steps li{counter-increment:step}.prose ol.steps li:before{content:counter(step);background:var(--signature);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;font-size:.85em;font-weight:800;display:flex;position:absolute;top:.1em;left:0}.post .sources{border:1px solid var(--border);background:var(--surface);border-radius:12px;margin-top:36px;padding:16px 20px}.post .sources h2{margin:0 0 8px;font-size:1rem}.post .sources h2:before{content:"↗";color:var(--signature);margin-right:8px;font-weight:800}.post .sources ul{margin:0;padding:0;list-style:none}.post .sources li{border-top:1px solid var(--border);flex-wrap:wrap;align-items:baseline;gap:2px 10px;padding:6px 0;display:flex}.post .sources li:first-child{border-top:0}.post .sources a{text-underline-offset:3px;text-decoration:underline;text-decoration-color:var(--signature);font-weight:600}.post .sources a:hover{color:var(--accent-text)}.post .sources .host{color:var(--muted);font-size:.88rem}.read-progress{z-index:60;pointer-events:none;height:3px;position:fixed;top:0;left:0;right:0}.read-progress span{background:var(--signature);transform-origin:0;height:100%;display:block;transform:scaleX(0);box-shadow:0 0 8px #ff5a3699}.post .meta .read-min:before{content:"·";opacity:.6;margin-right:12px}.toc-card{border:1px solid var(--border);background:var(--surface);border-radius:14px;margin:24px 0 8px}.toc-card summary{cursor:pointer;align-items:center;gap:10px;padding:14px 18px;list-style:none;display:flex}.toc-card summary::-webkit-details-marker{display:none}.toc-card summary:after{content:"";border:solid var(--muted);border-width:0 2px 2px 0;width:9px;height:9px;margin-left:auto;transition:transform .18s;transform:rotate(-135deg)translate(-2px,-2px)}.toc-card details:not([open]) summary:after{transform:rotate(45deg)}.toc-card summary:focus-visible{outline:2px solid var(--signature);outline-offset:-2px;border-radius:14px}.toc-title{font-size:1.05rem;font-weight:800}.toc-count{color:var(--muted);font-size:.9rem}.toc ol{counter-reset:toc;margin:0;padding:0 10px 12px;list-style:none}.toc li a{color:color-mix(in srgb, var(--text) 78%, var(--surface));border-left:3px solid #0000;border-radius:0 8px 8px 0;padding:6px 12px;font-size:.98rem;line-height:1.5;transition:background .15s,color .15s;display:block}.toc li.d2{counter-increment:toc}.toc li.d2 a:before{content:counter(toc) ".";font-variant-numeric:tabular-nums;min-width:1.6em;color:var(--accent-text);margin-right:4px;font-weight:700;display:inline-block}.toc li.d3 a{padding-left:46px;font-size:.92rem}.toc li a:hover{color:var(--text);background:color-mix(in srgb, var(--text) 6%, transparent)}.toc li a.active{color:var(--text);border-left-color:var(--signature);background:color-mix(in srgb, var(--signature) 10%, transparent);font-weight:700}.toc li a:focus-visible{outline:2px solid var(--signature);outline-offset:-2px}@media (width<=480px){.toc li.d3 a{padding-left:38px}}@media (prefers-reduced-motion:reduce){.toc-card summary:after,.toc li a{transition:none}}.ticker{background:color-mix(in srgb, var(--signature) 10%, var(--bg));border-bottom:1px solid color-mix(in srgb, var(--signature) 30%, var(--border))}.ticker-inner{align-items:center;gap:14px;min-height:52px;padding-top:6px;padding-bottom:6px;display:flex}.ticker-list{flex:1;min-width:0;margin:0;padding:0;list-style:none;display:grid}.ticker-list li{opacity:0;visibility:hidden;grid-area:1/1;min-width:0;transition:opacity .35s,transform .35s,visibility .35s;transform:translateY(8px)}.ticker-list li.is-active{opacity:1;visibility:visible;transform:none}.ticker-list a{align-items:center;gap:10px;min-width:0;padding:4px 0;display:flex}.ticker-list .badge{flex:none}.ticker-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:700;overflow:hidden}.ticker-list a:hover .ticker-title{color:var(--accent-text);text-decoration:underline}.ticker-list time{color:var(--muted);flex:none;font-size:.9rem}.ticker-count{color:var(--muted);font-variant-numeric:tabular-nums;flex:none;font-size:.85rem}.ticker.stacked .ticker-list{gap:2px}.ticker.stacked .ticker-list li{opacity:1;visibility:visible;grid-area:auto;transform:none}@media (width<=560px){.ticker-list time,.ticker-count{display:none}}@media (prefers-reduced-motion:reduce){.ticker-list li{transition:none}}@media (width<=480px){.prose .callout{padding-left:50px}.prose .callout:after{left:14px}}.container.post-layout{grid-template-columns:160px minmax(0,760px) 160px;gap:20px}.toc-col{align-self:stretch;min-width:0}.toc-rail{overscroll-behavior:contain;scrollbar-width:thin;text-align:right;max-height:calc(100vh - 110px);margin-top:40px;position:sticky;top:84px;overflow-y:auto}.toc-rail .toc-title{letter-spacing:.06em;color:var(--muted);margin:0 0 8px;padding-right:12px;font-size:.8rem;font-weight:800}.toc-rail ol{margin:0;padding:0;list-style:none}.toc-rail li a{color:color-mix(in srgb, var(--text) 72%, var(--bg));word-break:keep-all;overflow-wrap:anywhere;border-left:0;border-right:3px solid #0000;border-radius:8px 0 0 8px;padding:6px 12px 6px 4px;font-size:.88rem;line-height:1.45;transition:background .15s,color .15s;display:block}.toc-rail li.d2 a:before{content:none}.toc-rail li.d3 a{color:var(--muted);padding-left:4px;font-size:.82rem}.toc-rail li.d3 a:before{content:"– ";opacity:.7}.toc-rail li a:hover{color:var(--text);background:color-mix(in srgb, var(--text) 6%, transparent)}.toc-rail li a.active{color:var(--text);border-right-color:var(--signature);background:color-mix(in srgb, var(--signature) 10%, transparent);font-weight:700}.toc-rail li a:focus-visible{outline:2px solid var(--signature);outline-offset:-2px}@media (width>=1280px){.toc-card{display:none}}@media (width<=1279px){.container.post-layout{grid-template-columns:minmax(0,760px);padding:0 20px}.toc-col,.ad-rail{display:none}body[data-narrow] .site-header .container{max-width:800px}}@media (prefers-reduced-motion:reduce){.toc-rail li a{transition:none}}.related{padding:36px 0 52px}.related .section-title{font-size:1.15rem;margin:0 0 16px!important}.related .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 20px}.related .card{border:1px solid var(--border);background:var(--bg);border-radius:12px;grid-template-rows:auto auto 1fr;grid-template-columns:132px minmax(0,1fr);align-items:center;column-gap:14px;padding:10px;transition:border-color .15s,transform .15s;display:grid}.related .card:hover{border-color:var(--signature);transform:translateY(-1px)}.related .card .thumb{aspect-ratio:16/10;border-radius:8px;grid-area:1/1/4;margin:0}.related .card .cover{padding:8px;font-size:1rem}.related .card .thumb .badge{padding:1px 7px;font-size:.7rem;top:6px;left:6px}.related .card .meta,.related .card h3,.related .card p{grid-column:2}.related .card .meta{align-self:end;gap:2px 10px;font-size:.85rem}.related .card h3{-webkit-line-clamp:2;-webkit-box-orient:vertical;align-self:start;margin:2px 0 0;font-size:1rem;line-height:1.4;display:-webkit-box;overflow:hidden}.related .card p{display:none}@media (width<=760px){.related .grid{grid-template-columns:1fr}.related .card{grid-template-columns:104px minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){.related .card{transition:none}}.list-col{min-width:0}.pager{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;margin:32px 0 8px;display:flex}.load-more,.pager-prev{border:1px solid var(--border);background:var(--surface);min-height:44px;color:var(--text);border-radius:99px;justify-content:center;align-items:center;padding:10px 26px;font-size:1rem;font-weight:700;text-decoration:none;transition:border-color .15s,color .15s,transform .15s,background .15s;display:inline-flex}.load-more{border-color:color-mix(in srgb, var(--signature) 55%, var(--border))}.load-more:hover,.pager-prev:hover{border-color:var(--signature);color:var(--accent-text,var(--signature));transform:translateY(-1px)}.load-more:focus-visible,.pager-prev:focus-visible{outline:2px solid var(--signature);outline-offset:3px}.load-more.is-loading{opacity:.7;cursor:progress;pointer-events:none}@media (prefers-reduced-motion:reduce){.load-more,.pager-prev{transition:none}}
