:root{--blog-accent: #8db8ff;--blog-accent-soft: rgba(141, 184, 255, .14);--blog-line: rgba(255, 255, 255, .09);--blog-card: #121212;--blog-card-hover: #171717;--blog-sans: "Noto Sans JP", system-ui, -apple-system, "Hiragino Sans", sans-serif;--blog-mono: "IBM Plex Mono", ui-monospace, monospace}.blog-eyebrow{margin:0;color:var(--muted-text);font-family:var(--blog-mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase}.vendor-list{display:flex;flex-wrap:wrap;gap:.35rem;list-style:none;margin:0;padding:0}.vendor-list li{padding:.12rem .55rem;border:1px solid var(--blog-line);border-radius:999px;color:var(--muted-text);font-family:var(--blog-mono);font-size:.7rem;letter-spacing:.02em}.blog-hero{padding:3.5rem 0 2.5rem}.blog-hero-title{margin:.75rem 0 0;font-size:clamp(2.2rem,6vw,4rem);font-weight:700;line-height:1.05;letter-spacing:-.03em}.blog-hero-lead{max-width:40rem;margin:1.25rem 0 0;color:var(--soft-text);font-family:var(--blog-sans);font-size:1.02rem;line-height:1.9}.blog-stats{display:flex;gap:2.5rem;margin:2rem 0 0}.blog-stats dt{color:var(--muted-text);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase}.blog-stats dd{margin:.2rem 0 0;font-size:1.15rem;font-weight:600}.blog-filter{position:sticky;top:72px;z-index:20;display:flex;gap:.5rem;margin:0 -.25rem 1.75rem;padding:.85rem .25rem;overflow-x:auto;scrollbar-width:none;background:#0a0a0ae6;backdrop-filter:blur(12px);border-bottom:1px solid var(--blog-line)}.blog-filter::-webkit-scrollbar{display:none}.filter-chip{display:inline-flex;align-items:center;gap:.5rem;flex:none;padding:.4rem .85rem;border:1px solid var(--border-color);border-radius:999px;background:transparent;color:var(--soft-text);font:inherit;font-family:var(--blog-sans);font-size:.84rem;cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.filter-chip span{color:var(--muted-text);font-family:var(--blog-mono);font-size:.72rem}.filter-chip:hover{border-color:#fff6;color:var(--strong-text)}.filter-chip[aria-pressed=true]{background:var(--strong-text);border-color:var(--strong-text);color:#0a0a0a}.filter-chip[aria-pressed=true] span{color:#0a0a0a8c}.filter-chip:focus-visible,.post-card:focus-visible,.lead-card:focus-visible,.pager-card:focus-visible{outline:2px solid var(--blog-accent);outline-offset:2px}.card-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .9rem;margin:0;color:var(--muted-text);font-family:var(--blog-sans);font-size:.78rem}.card-meta>span+span:before{content:"";display:inline-block;width:3px;height:3px;margin-right:.9rem;border-radius:50%;background:currentColor;vertical-align:middle;opacity:.6}.card-meta .card-badge:before,.card-meta .card-num+span:before{display:none}.card-badge{padding:.1rem .5rem;border-radius:4px;background:var(--blog-accent-soft);color:var(--blog-accent);font-family:var(--blog-mono);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase}.card-num{color:var(--strong-text);font-family:var(--blog-mono);font-weight:600}.lead-card{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:2.5rem;padding:2.25rem;border:1px solid var(--border-color);border-radius:16px;background:radial-gradient(120% 140% at 0% 0%,rgba(141,184,255,.09),transparent 55%),var(--blog-card);transition:border-color .2s ease,transform .2s ease}.lead-card:hover{border-color:#ffffff52;transform:translateY(-2px)}.lead-title{margin:1rem 0 0;font-family:var(--blog-sans);font-size:clamp(1.4rem,2.8vw,2rem);font-weight:700;line-height:1.4;letter-spacing:-.01em}.lead-desc{margin:1rem 0 0;color:var(--soft-text);font-family:var(--blog-sans);font-size:.98rem;line-height:1.85}.card-more{display:inline-flex;gap:.4rem;margin-top:1.5rem;color:var(--strong-text);font-family:var(--blog-sans);font-size:.9rem;font-weight:500}.card-more span{transition:transform .2s ease}.lead-card:hover .card-more span{transform:translate(4px)}.lead-outline{padding-left:2rem;border-left:1px solid var(--blog-line)}.lead-outline ol{margin:.9rem 0 0;padding:0;list-style:none;counter-reset:outline}.lead-outline li{display:flex;gap:.75rem;padding:.55rem 0;border-top:1px solid var(--blog-line);color:var(--soft-text);font-family:var(--blog-sans);font-size:.86rem;line-height:1.55;counter-increment:outline}.lead-outline li:before{content:counter(outline,decimal-leading-zero);flex:none;color:var(--muted-text);font-family:var(--blog-mono);font-size:.75rem;padding-top:.1rem}.card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;list-style:none;margin:1rem 0 0;padding:0}.card-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.card-grid>li{display:flex}.post-card{display:flex;flex-direction:column;width:100%;padding:1.5rem 1.5rem 1.25rem;border:1px solid var(--blog-line);border-radius:14px;background:var(--blog-card);transition:border-color .2s ease,background-color .2s ease,transform .2s ease}.post-card:hover{border-color:#ffffff47;background:var(--blog-card-hover);transform:translateY(-2px)}.card-title{margin:.85rem 0 0;font-family:var(--blog-sans);font-size:1.12rem;font-weight:700;line-height:1.55}.card-desc{display:-webkit-box;margin:.65rem 0 0;overflow:hidden;color:var(--muted-text);font-family:var(--blog-sans);font-size:.88rem;line-height:1.8;-webkit-box-orient:vertical;-webkit-line-clamp:3}.card-foot{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-top:auto;padding-top:1.25rem}.card-arrow{flex:none;display:grid;place-items:center;width:2rem;height:2rem;border:1px solid var(--blog-line);border-radius:50%;color:var(--soft-text);transition:background-color .2s ease,color .2s ease,border-color .2s ease}.post-card:hover .card-arrow{background:var(--strong-text);border-color:var(--strong-text);color:#0a0a0a}.filter-empty{padding:3rem 0;color:var(--muted-text);text-align:center}.blog-cta{display:flex;align-items:center;justify-content:space-between;gap:2rem;margin:3.5rem 0 1rem;padding:1.75rem 2rem;border:1px solid var(--border-color);border-radius:16px;background:linear-gradient(120deg,rgba(141,184,255,.08),transparent 60%),var(--blog-card);transition:border-color .2s ease}.blog-cta:hover{border-color:#ffffff52}.blog-cta-title{margin:.4rem 0 0;font-family:var(--blog-sans);font-size:1.3rem;font-weight:700}.blog-cta-desc{max-width:40rem;margin:.4rem 0 0;color:var(--soft-text);font-family:var(--blog-sans);font-size:.92rem}.blog-cta .text-action{flex:none}.read-progress{position:fixed;inset:0 0 auto;z-index:60;height:2px;pointer-events:none}.read-progress span{display:block;height:100%;background:var(--blog-accent);transform:scaleX(0);transform-origin:left}.post-header{max-width:50rem;padding:3rem 0 2.25rem}.post-crumbs{display:flex;gap:.6rem;color:var(--muted-text);font-family:var(--blog-sans);font-size:.82rem}.post-crumbs a:hover{color:var(--strong-text)}.post-title{margin:1rem 0 0;font-family:var(--blog-sans);font-size:clamp(1.65rem,3.8vw,2.6rem);font-weight:700;line-height:1.38;letter-spacing:-.015em;text-wrap:balance}.post-lead{margin:1.25rem 0 0;color:var(--soft-text);font-family:var(--blog-sans);font-size:1.05rem;line-height:1.9}.post-meta-row{display:flex;flex-wrap:wrap;gap:.4rem 0;margin:1.5rem 0 1rem;color:var(--muted-text);font-family:var(--blog-sans);font-size:.84rem}.post-meta-row span+span:before{content:"·";margin:0 .7rem}.post-body{display:grid;grid-template-columns:minmax(0,44rem) minmax(0,1fr);gap:4rem;align-items:start;padding-top:2.5rem;border-top:1px solid var(--blog-line)}.toc-mobile{display:none}.toc{position:sticky;top:104px;max-height:calc(100vh - 128px);overflow-y:auto;padding-left:1.25rem;border-left:1px solid var(--blog-line);font-family:var(--blog-sans);scrollbar-width:thin}.toc ol,.toc-mobile ol{list-style:none;margin:.85rem 0 0;padding:0}.toc li a{position:relative;display:block;padding:.32rem 0;color:var(--muted-text);font-size:.82rem;line-height:1.55;transition:color .15s ease}.toc li.d3 a{padding-left:.9rem;font-size:.78rem}.toc li a:hover,.toc li a.is-active{color:var(--strong-text)}.toc li a.is-active:before{content:"";position:absolute;top:.45rem;bottom:.45rem;left:calc(-1.25rem - 1px);width:2px;background:var(--blog-accent)}.toc-top{display:inline-block;margin-top:1.25rem;color:var(--muted-text);font-size:.78rem}.toc-top:hover{color:var(--strong-text)}.prose{min-width:0;color:#ffffffd1;font-family:var(--blog-sans);font-size:1.02rem;line-height:2;letter-spacing:.01em;counter-reset:h2}.prose>:first-child{margin-top:0}.prose h2{margin:3.5rem 0 1.1rem;color:var(--strong-text);font-size:1.5rem;font-weight:700;line-height:1.5;scroll-margin-top:100px;counter-increment:h2}.prose h2:before{content:counter(h2,decimal-leading-zero);display:block;margin-bottom:.35rem;color:var(--blog-accent);font-family:var(--blog-mono);font-size:.78rem;font-weight:500;letter-spacing:.1em}.prose h3{margin:2.5rem 0 .75rem;padding-left:.8rem;border-left:3px solid rgba(255,255,255,.25);color:var(--strong-text);font-size:1.15rem;font-weight:700;line-height:1.55;scroll-margin-top:100px}.prose p,.prose ul,.prose ol{margin:1.1rem 0}.prose ul,.prose ol{padding-left:1.5rem}.prose li{margin:.4rem 0;padding-left:.2rem}.prose li::marker{color:var(--muted-text)}.prose ol>li::marker{font-family:var(--blog-mono);font-size:.9em}.prose strong{color:var(--strong-text);font-weight:700;background:linear-gradient(transparent 62%,#8db8ff33 62%)}.prose a{color:var(--blog-accent);text-decoration:underline;text-decoration-color:#8db8ff66;text-underline-offset:4px;transition:text-decoration-color .15s ease}.prose a:hover{text-decoration-color:var(--blog-accent)}.prose code{font-family:var(--blog-mono);font-size:.86em}.prose :not(pre)>code{padding:.12rem .4rem;border:1px solid var(--blog-line);border-radius:5px;background:#ffffff0d;color:#e6edf3;overflow-wrap:anywhere}.prose hr{margin:3rem 0;border:0;border-top:1px solid var(--blog-line)}.prose .table-wrap,.prose>table{margin:1.75rem 0;overflow-x:auto;border:1px solid var(--blog-line);border-radius:12px}.prose table{width:100%;border-collapse:collapse;font-size:.88rem;line-height:1.75}.prose>table{display:block}.prose th,.prose td{min-width:9rem;padding:.75rem 1rem;border-bottom:1px solid var(--blog-line);text-align:left;vertical-align:top}.prose th+th,.prose td+td{border-left:1px solid var(--blog-line)}.prose tbody tr:last-child td{border-bottom:0}.prose thead th{background:#ffffff0a;color:var(--strong-text);font-size:.8rem;font-weight:700;letter-spacing:.02em;white-space:nowrap}.prose tbody tr:hover td{background:#ffffff06}.prose td:first-child{color:var(--strong-text)}.code-frame{margin:1.75rem 0;overflow:hidden;border:1px solid var(--blog-line);border-radius:12px;background:#0d1117}.code-bar{display:flex;align-items:center;justify-content:space-between;padding:.45rem .6rem .45rem 1rem;border-bottom:1px solid var(--blog-line);color:var(--muted-text);font-family:var(--blog-mono);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase}.code-bar button{padding:.2rem .6rem;border:1px solid var(--blog-line);border-radius:6px;background:transparent;color:var(--soft-text);font:inherit;cursor:pointer}.code-bar button:hover{border-color:#ffffff59;color:var(--strong-text)}.prose pre{margin:1.75rem 0;padding:1.1rem 1.25rem;overflow-x:auto;border-radius:12px;font-size:.83rem;line-height:1.7}.code-frame pre{margin:0;border-radius:0}.prose blockquote{margin:1.75rem 0;padding:1rem 1.25rem;border-left:3px solid var(--blog-accent);border-radius:0 10px 10px 0;background:var(--blog-accent-soft);color:var(--soft-text)}.prose blockquote p{margin:0}.prose blockquote.is-note{margin-top:3.5rem;border:1px solid var(--blog-line);border-radius:12px;background:#ffffff08;color:var(--muted-text);font-size:.86rem;line-height:1.85}.prose blockquote.is-note:before{content:"Note";display:block;margin-bottom:.35rem;color:var(--soft-text);font-family:var(--blog-mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase}.prose ul.contains-task-list{padding:.5rem 1.25rem;border:1px solid var(--blog-line);border-radius:12px;list-style:none}.prose .task-list-item{display:flex;align-items:baseline;gap:.7rem;margin:0;padding:.55rem 0;border-bottom:1px dashed var(--blog-line)}.prose .task-list-item:last-child{border-bottom:0}.prose .task-list-item input{flex:none;appearance:none;width:1rem;height:1rem;margin:0;border:1px solid rgba(255,255,255,.35);border-radius:4px;transform:translateY(.15rem)}.post-pager{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:3rem}.pager-card{display:flex;flex-direction:column;gap:.5rem;padding:1.25rem 1.4rem;border:1px solid var(--blog-line);border-radius:14px;background:var(--blog-card);transition:border-color .2s ease}.pager-card:hover{border-color:#ffffff47}.pager-card.is-next{text-align:right}.pager-title{font-family:var(--blog-sans);font-size:.95rem;font-weight:600;line-height:1.6}.related{margin:3rem 0 1rem}.related .card-title{font-size:1rem}.pc-only{display:inline}@media (max-width: 1080px){.post-body{grid-template-columns:minmax(0,1fr)}.toc{display:none}.toc-mobile{display:block;margin-bottom:2rem;border:1px solid var(--blog-line);border-radius:12px;background:var(--blog-card);font-family:var(--blog-sans)}.toc-mobile summary{display:flex;justify-content:space-between;padding:.85rem 1.1rem;cursor:pointer;font-size:.9rem;font-weight:600;list-style:none}.toc-mobile summary::-webkit-details-marker{display:none}.toc-mobile summary span{color:var(--muted-text);font-family:var(--blog-mono);font-size:.75rem;font-weight:400}.toc-mobile ol{margin:0;padding:0 1.1rem .85rem}.toc-mobile li a{display:block;padding:.35rem 0;color:var(--soft-text);font-size:.86rem}.toc-mobile li.d3 a{padding-left:.9rem;color:var(--muted-text);font-size:.82rem}.prose{max-width:44rem}}@media (max-width: 900px){.lead-card{grid-template-columns:1fr;gap:1.75rem;padding:1.5rem}.lead-outline{padding:1.25rem 0 0;border-left:0;border-top:1px solid var(--blog-line)}.card-grid,.card-grid-3{grid-template-columns:1fr}.blog-cta{flex-direction:column;align-items:flex-start;padding:1.5rem}}@media (max-width: 640px){.blog-hero{padding-top:2rem}.blog-filter{top:72px}.blog-stats{gap:1.5rem}.pc-only{display:none}.post-header{padding-top:1.75rem}.prose{font-size:.98rem;line-height:1.95}.prose h2{font-size:1.3rem}.post-pager{grid-template-columns:1fr}.pager-card.is-next{text-align:left}.post-card{padding:1.25rem}}@media (prefers-reduced-motion: reduce){.lead-card,.post-card,.card-more span{transition:none;transform:none!important}}
