.blog-hero{background:linear-gradient(180deg,var(--color-gray-50) 0,#fff 100%);padding:56px 0 32px}.blog-hero h1{font:var(--text-display-lg);font-weight:700;color:var(--color-purple-900);letter-spacing:-.01em;margin:12px 0;text-wrap:balance}.blog-hero p{font:var(--text-body-lg);color:var(--color-gray-600);margin:0;max-width:560px}.blog-toolbar{justify-content:space-between;align-items:center;gap:16px;margin-top:32px}.blog-chips,.blog-toolbar{display:flex;flex-wrap:wrap}.blog-chips{gap:8px}.blog-chip{white-space:nowrap;flex-shrink:0;height:38px;padding:0 16px;border-radius:9999px;border:1px solid var(--color-gray-200);background:#fff;font:var(--text-label-md);color:var(--color-gray-800);cursor:pointer;transition:all .15s ease}.blog-chip:hover{border-color:var(--color-purple-200);color:var(--color-purple-600)}.blog-chip.is-active{background:var(--color-purple-600);border-color:var(--color-purple-600);color:#fff}.blog-search{display:flex;align-items:center;gap:8px;height:42px;padding:0 16px;border:1px solid var(--color-gray-200);border-radius:9999px;background:#fff;min-width:260px}.blog-search:focus-within{border-color:var(--color-purple-600);box-shadow:0 0 0 3px var(--color-purple-50)}.blog-search i{color:var(--color-gray-600)}.blog-search input{border:none;outline:none;font:var(--text-body-sm);flex:1 1;background:transparent;color:var(--color-gray-900)}.blog-list{padding:32px 0 80px}.blog-cover{position:relative;border-radius:var(--radius-lg,12px);overflow:hidden;background:var(--color-purple-50);aspect-ratio:16/10}.blog-featured{display:grid;grid-template-columns:1.2fr 1fr;grid-gap:40px;gap:40px;align-items:center;padding:24px;background:#fff;border:1px solid var(--color-gray-200);border-radius:var(--radius-xl,16px);box-shadow:var(--shadow-sm);margin-bottom:48px}.blog-featured h2{font:var(--text-display-md);font-weight:700;color:var(--color-purple-900);margin:12px 0;text-wrap:balance}.blog-featured h2 a{color:inherit;text-decoration:none}.blog-featured h2 a:hover{color:var(--color-purple-600)}.blog-featured p{font:var(--text-body-md);color:var(--color-gray-600);margin:0 0 20px}.blog-tag{display:inline-flex;align-items:center;height:26px;padding:0 12px;border-radius:9999px;background:var(--color-purple-50);color:var(--color-purple-600);font:var(--text-label-sm,600 12px var(--font-body));text-transform:uppercase;letter-spacing:.06em}.blog-meta{display:flex;align-items:center;gap:8px;font:var(--text-body-sm);color:var(--color-gray-600);flex-wrap:wrap}.blog-avatar{width:32px;height:32px;border-radius:9999px;background:var(--color-purple-600);color:#fff;justify-content:center;font:600 12px var(--font-heading)}.blog-avatar,.blog-read{display:inline-flex;align-items:center}.blog-read{gap:6px;font:var(--text-btn-md);color:var(--color-purple-600);text-decoration:none;margin-top:20px}.blog-read:hover{color:var(--color-purple-800)}.blog-section-title{font:var(--text-h3);color:var(--color-gray-900);margin:0 0 24px}.blog-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:24px;gap:24px}.blog-card{position:relative;display:flex;flex-direction:column;background:#fff;border:1px solid var(--color-gray-200);border-radius:var(--radius-lg,12px);overflow:hidden;box-shadow:var(--shadow-sm);transition:border-color .25s ease,box-shadow .25s ease}.blog-card:hover{border-color:var(--color-purple-200);box-shadow:var(--shadow-md)}.blog-card .blog-cover{border-radius:0;aspect-ratio:16/9;z-index:2}.blog-card-body{display:flex;flex-direction:column;gap:12px;padding:20px 22px 22px;flex:1 1}.blog-card h3{font:var(--text-h4);color:var(--color-gray-900);margin:0;text-wrap:balance}.blog-card h3 a{color:inherit;text-decoration:none}.blog-card h3 a:after{content:"";position:absolute;inset:0;z-index:1}.blog-card:hover h3 a{color:var(--color-purple-600)}.blog-card p{font:var(--text-body-sm);color:var(--color-gray-600);margin:0;text-wrap:pretty}.blog-card-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:auto;padding-top:14px;border-top:1px solid var(--color-gray-100)}.blog-card-foot .ti-arrow-right{color:var(--color-purple-600);font-size:18px;transition:transform .15s ease}.blog-card-foot .blog-meta{flex-direction:column;align-items:flex-start;gap:2px}.blog-card-foot .blog-meta [aria-hidden]{display:none}.blog-card:hover .blog-card-foot .ti-arrow-right{transform:translateX(3px)}.blog-empty{text-align:center;padding:64px 16px;color:var(--color-gray-600)}.blog-empty i{font-size:32px;color:var(--color-purple-400);display:block;margin-bottom:12px}.post-head{padding:48px 0 32px;background:linear-gradient(180deg,var(--color-gray-50) 0,#fff 100%)}.post-head-inner{max-width:760px;margin:0 auto;text-align:center}.post-back{display:inline-flex;align-items:center;gap:6px;font:var(--text-label-md);color:var(--color-gray-600);text-decoration:none;margin-bottom:24px}.post-back:hover{color:var(--color-purple-600)}.post-head h1{font:var(--text-display-lg);font-weight:700;color:var(--color-purple-900);letter-spacing:-.01em;margin:16px 0;text-wrap:balance}.post-head .lead{font:var(--text-body-lg);color:var(--color-gray-600);margin:0 0 24px;text-wrap:pretty}.post-head .blog-meta{justify-content:center}.post-cover{max-width:1100px;margin:8px auto 0;aspect-ratio:21/9}.post-layout{display:grid;grid-template-columns:220px minmax(0,1fr) 220px;grid-gap:48px;gap:48px;padding:56px 0 80px;align-items:start}.post-toc{grid-column:1}.post-layout>.post-body{grid-column:2}.post-side{grid-column:3}.post-toc{position:-webkit-sticky;position:sticky;top:96px}.post-side h4,.post-toc h4{font:var(--text-label-md);text-transform:uppercase;letter-spacing:.07em;color:var(--color-gray-600);margin:0 0 12px}.post-toc ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;border-left:2px solid var(--color-gray-200)}.post-toc a{display:block;padding:6px 0 6px 14px;margin-left:-2px;border-left:2px solid transparent;font:var(--text-body-sm);color:var(--color-gray-600);text-decoration:none}.post-toc a.is-active,.post-toc a:hover{color:var(--color-purple-600)}.post-toc a.is-active{border-left-color:var(--color-purple-600);font-weight:600}.post-body{max-width:680px}.post-body h2{font:var(--text-h2,var(--text-h3));font-weight:700;color:var(--color-gray-900);margin:40px 0 14px;scroll-margin-top:96px}.post-body h2:first-child{margin-top:0}.post-body p{font:400 17px/1.75 var(--font-body);color:var(--color-gray-800);margin:0 0 16px;text-wrap:pretty}.post-body ul{margin:0 0 16px;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}.post-body li{display:flex;gap:12px;font:400 17px/1.6 var(--font-body);color:var(--color-gray-800)}.post-body li i{color:var(--color-purple-600);margin-top:4px;flex-shrink:0}.post-body blockquote{margin:24px 0;padding:20px 24px;background:var(--color-purple-50);border-radius:var(--radius-lg,12px);font:500 20px/1.5 var(--font-heading);color:var(--color-purple-900)}.post-tool{display:flex;align-items:center;gap:16px;margin:40px 0;padding:24px;border:2px solid var(--color-purple-600);border-radius:var(--radius-lg,12px);background:#fff;flex-wrap:wrap}.post-tool .seo-ico{margin:0}.post-tool div{flex:1 1;min-width:200px}.post-tool strong{display:block;font:var(--text-h4);color:var(--color-gray-900)}.post-tool span{font:var(--text-body-sm);color:var(--color-gray-600)}.post-btn{display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 22px;border-radius:9999px;background:var(--color-purple-600);color:#fff;font:var(--text-btn-md);text-decoration:none;transition:background .15s ease}.post-btn:hover{background:var(--color-purple-800);color:#fff}.post-author{display:flex;gap:16px;align-items:center;padding-top:32px;margin-top:40px;border-top:1px solid var(--color-gray-200)}.post-author .blog-avatar{width:48px;height:48px;font-size:16px}.post-author strong{display:block;font:var(--text-label-lg);color:var(--color-gray-900)}.post-author span{font:var(--text-body-sm);color:var(--color-gray-600)}.post-side{position:-webkit-sticky;position:sticky;top:96px;display:flex;flex-direction:column;gap:28px}.post-share{display:flex;gap:8px}.post-share button{width:40px;height:40px;border-radius:9999px;border:1px solid var(--color-gray-200);background:#fff;color:var(--color-gray-800);display:flex;align-items:center;justify-content:center;font-size:18px;cursor:pointer;transition:all .15s ease}.post-share button:hover{border-color:var(--color-purple-200);color:var(--color-purple-600);background:var(--color-purple-50)}.post-copied{font:var(--text-caption,12px var(--font-body));color:var(--color-success);margin-top:8px}.post-related{padding:64px 0 80px;background:var(--color-gray-50)}@media (max-width:1100px){.post-layout{grid-template-columns:200px minmax(0,1fr)}.post-side{display:none}}@media (max-width:900px){.blog-featured{grid-template-columns:1fr}.blog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.post-layout{grid-template-columns:1fr}.post-toc{display:none}.post-layout>.post-body{grid-column:1}}@media (max-width:600px){.blog-grid{grid-template-columns:1fr}.blog-search{min-width:0;width:100%}.blog-hero h1,.post-head h1{font:var(--text-display-md);font-weight:700}.post-cover{aspect-ratio:16/10}}.blog-cover-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}.blog-cover-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--color-purple-200);font-size:44px}.blog-featured-cover{display:block}img.blog-avatar{object-fit:cover}.post-author img.blog-avatar{width:48px;height:48px}.post-author span.blog-avatar{color:#fff}.post-body h3,.post-body h4,.post-body h5,.post-body h6{font:var(--text-h4);color:var(--color-gray-900);margin:28px 0 10px}.post-body a:not(.post-btn){color:var(--color-purple-600)}.post-body a:not(.post-btn):hover{color:var(--color-purple-800)}.post-tool .seo-ico{flex:0 0 44px;min-width:0}.post-body ol{margin:0 0 16px;padding-left:24px;list-style:decimal;display:flex;flex-direction:column;gap:10px}.post-body ol li{display:list-item;padding-left:4px}.post-body li.rt-nested{display:block;padding-left:28px}.post-body code{font:500 15px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--color-gray-100);border-radius:6px;padding:2px 6px}.post-body pre{margin:0 0 16px;padding:16px 20px;background:var(--color-gray-900);color:#fff;border-radius:var(--radius-lg,12px);overflow-x:auto}.post-body pre code{background:none;padding:0;color:inherit}.rt-figure{margin:24px 0}.rt-figure img{display:block;width:100%;height:auto;border-radius:var(--radius-lg,12px)}.rt-figure figcaption{font:var(--text-body-sm);color:var(--color-gray-600);margin-top:8px;text-align:center}.post-intro{margin-bottom:8px}.post-intro p:first-child{font:400 19px/1.7 var(--font-body);color:var(--color-gray-900)}.post-table-wrap{overflow-x:auto;margin:8px 0 20px;border:1px solid var(--color-gray-200);border-radius:var(--radius-lg,12px)}.post-table{width:100%;border-collapse:collapse}@media (max-width:600px){.post-table{min-width:520px}}.post-table td,.post-table th{text-align:left;padding:12px 16px;border-bottom:1px solid var(--color-gray-100);font:var(--text-body-sm);color:var(--color-gray-800);vertical-align:top}.post-table thead th{background:var(--color-gray-50);font:600 12px var(--font-body);letter-spacing:.06em;text-transform:uppercase;color:var(--color-gray-600)}.post-table tbody th{font-weight:600;color:var(--color-gray-900)}.post-table tbody tr:last-child td,.post-table tbody tr:last-child th{border-bottom:0}.post-crumbs{justify-content:center;margin-bottom:24px}.post-crumbs li[aria-current]{max-width:min(420px,60vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-gray-900)}.post-tags{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:32px 0 0}.post-tags li{padding:4px 12px;border-radius:9999px;background:var(--color-gray-100);color:var(--color-gray-700);font:var(--text-body-sm)}