:root{--color-bg:#fff;--color-surface:#eef5f7;--color-text:#14272f;--color-text-muted:#46606b;--color-border:#6f8995;--color-primary:#04384c;--color-on-primary:#fff;--color-link:#0a6784;--color-link-hover:#04384c;--color-accent:#0b7a82;--color-code-bg:#0b2b38;--color-code-text:#e4f0f3;--color-code-comment:#8db3c1;--color-code-keyword:#7fe0d2;--color-notice-bg:#e6edf0;--color-notice-text:#1d343e;--color-focus:#cf6600;--color-border-soft:color-mix(in srgb, var(--color-border) 40%, var(--color-bg));--color-code-line:color-mix(in srgb, var(--color-code-text) 24%, var(--color-code-bg));--font-body:"Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Yu Gothic", "Meiryo", sans-serif;--font-heading:"Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Yu Gothic", "Meiryo", sans-serif;--font-mono:ui-monospace, "Cascadia Mono", "SFMono-Regular", Menlo, Consolas, "BIZ UDGothic", monospace;--measure:720px;--radius:4px;--space-1:.25rem;--space-2:.5rem;--space-3:1rem;--space-4:1.5rem;--space-5:2.5rem;--space-6:4rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.3125rem;--text-2xl:clamp(1.375rem, 1.2rem + .7vw, 1.625rem);--text-3xl:clamp(1.625rem, 1.3rem + 1.4vw, 2.25rem);--leading-body:1.8;--leading-heading:1.4}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-body);margin:0}body a{color:var(--color-link);text-underline-offset:.22em;text-decoration:underline 1px}body a:hover{color:var(--color-link-hover);text-decoration-thickness:2px}body :focus-visible{outline:3px solid var(--color-focus);outline-offset:2px;border-radius:2px}body h1,body h2,body h3,body h4{font-family:var(--font-heading)}.wrap{width:100%;max-width:67rem;padding-inline:var(--space-3);margin-inline:auto}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.site-header{background:var(--color-bg);border-bottom:1px solid var(--color-border)}.site-header__inner{justify-content:space-between;align-items:center;gap:0 var(--space-4);flex-wrap:wrap;display:flex}body .brand{align-items:center;gap:var(--space-2);min-height:3.5rem;color:var(--color-primary);font-family:var(--font-heading);font-size:var(--text-xl);letter-spacing:.1em;font-weight:700;text-decoration:none;display:inline-flex}body .brand:hover{color:var(--color-primary);text-decoration:underline}.brand__tile{border-radius:var(--radius);background:var(--color-primary);width:2rem;height:2rem;color:var(--color-on-primary);place-items:center;display:grid}.gnav ul{gap:0 var(--space-1);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}body .gnav a{min-height:3.5rem;padding:0 var(--space-3);color:var(--color-text);border-bottom:3px solid #0000;align-items:center;font-weight:600;text-decoration:none;display:flex}body .gnav a:hover{color:var(--color-primary);border-bottom-color:var(--color-border);text-decoration:none}body .gnav a[aria-current]{color:var(--color-primary);border-bottom-color:var(--color-primary)}.crumbs{background:var(--color-surface);border-bottom:1px solid var(--color-border-soft)}.crumbs ol{padding:var(--space-2) 0;font-size:var(--text-sm);flex-wrap:wrap;margin:0;list-style:none;display:flex}.crumbs li{align-items:center;min-height:1.75rem;display:flex}.crumbs li+li:before{content:"›";margin-inline:var(--space-2);color:var(--color-text-muted)}.tag{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);color:var(--color-text);font-size:var(--text-sm);white-space:nowrap;padding:0 .6em;line-height:1.6;display:inline-block}.tag--pr{border-color:var(--color-notice-text);background:var(--color-notice-bg);color:var(--color-notice-text);letter-spacing:.08em;font-weight:700}.main{padding-bottom:var(--space-6)}.section{margin-top:var(--space-6)}.page-head+.section,.subcat+.section{margin-top:var(--space-5)}.section-title{align-items:center;gap:var(--space-2);margin:0 0 var(--space-3);padding-bottom:var(--space-2);border-bottom:2px solid var(--color-primary);color:var(--color-primary);font-size:var(--text-xl);font-weight:700;line-height:var(--leading-heading);display:flex}.section-title:before{content:"";background:var(--color-accent);flex:none;width:.6em;height:.6em}.hero{background:var(--color-primary);color:var(--color-on-primary)}.hero__inner{padding-block:var(--space-6) var(--space-5)}.hero__path{margin:0 0 var(--space-2);font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:.06em}.hero__title{font-size:var(--text-3xl);letter-spacing:.14em;margin:0;font-weight:700;line-height:1.2}.hero__lead{max-width:34rem;margin:var(--space-3) 0 0;padding-top:var(--space-3);border-top:1px solid var(--color-on-primary)}.more{margin:var(--space-4) 0 0;text-align:right}body .more__link{align-items:center;gap:var(--space-2);min-height:2.75rem;padding:0 var(--space-3);border:1px solid var(--color-primary);border-radius:var(--radius);color:var(--color-primary);font-weight:700;display:inline-flex}body .more__link:hover{background:var(--color-primary);color:var(--color-on-primary)}.link-row{gap:var(--space-2) var(--space-3);margin:0 0 var(--space-3);flex-wrap:wrap;display:flex}.cat-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));display:grid}.cat-card{padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface)}.cat-card__title{margin:0 0 var(--space-1);font-size:var(--text-lg);line-height:var(--leading-heading)}.cat-card__title a{align-items:center;gap:var(--space-1);min-height:1.75rem;font-weight:700;display:inline-flex}.cat-card__text{color:var(--color-text-muted);margin:0}.page-head{padding-top:var(--space-5)}.page-title,.article-title{margin:0 0 var(--space-3);color:var(--color-primary);font-size:var(--text-3xl);font-weight:700;line-height:var(--leading-heading)}.page-meta{padding:var(--space-2) 0;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);color:var(--color-text-muted);font-size:var(--text-sm);margin:0}.subcat{align-items:center;gap:var(--space-2) var(--space-4);margin-top:var(--space-4);padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);flex-wrap:wrap;display:flex}.subcat__label{color:var(--color-text-muted);font-size:var(--text-sm);margin:0;font-weight:700}.subcat ul{gap:var(--space-2) var(--space-4);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}body .subcat a{align-items:center;gap:var(--space-1);min-height:2.75rem;font-weight:700;display:inline-flex}.article{grid-template-columns:minmax(0, var(--measure)) minmax(0, 1fr);column-gap:var(--space-5);grid-template-rows:auto 1fr;grid-template-areas:"head toc""body toc";display:grid}.article-head{padding-top:var(--space-5);grid-area:head}.meta{gap:0 var(--space-4);padding:var(--space-2) 0;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);font-size:var(--text-sm);flex-wrap:wrap;margin:0;display:flex}.meta__item{align-items:baseline;gap:var(--space-2);display:flex}.meta dt{color:var(--color-text-muted);font-weight:700}.meta dd{font-variant-numeric:tabular-nums;margin:0}.toc{top:var(--space-3);margin-top:var(--space-5);font-size:var(--text-sm);grid-area:toc;align-self:start;line-height:1.6;position:sticky}.toc__box{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface)}.toc__box summary{min-height:2.75rem;padding:0 var(--space-3);color:var(--color-primary);cursor:pointer;align-items:center;font-weight:700;list-style:none;display:flex}.toc__box summary::-webkit-details-marker{display:none}.toc__box summary:before{content:"";border-right:2px solid var(--color-primary);border-bottom:2px solid var(--color-primary);width:.5em;height:.5em;margin-right:.8em;transform:rotate(-45deg)}.toc__box[open] summary:before{transform:rotate(45deg)}.toc__box[open] summary{border-bottom:1px solid var(--color-border-soft)}.toc__list{counter-reset:toc2;padding:var(--space-2) var(--space-3) var(--space-3);margin:0;list-style:none}.toc__list>li{counter-increment:toc2;counter-reset:toc3;margin-top:var(--space-1)}.toc__sub{margin:0;padding:0 0 0 1.25rem;list-style:none}.toc__sub>li{counter-increment:toc3}.toc__list a{padding:.1rem 0;display:inline-block}.toc__list>li>a:before{content:counter(toc2) ".";color:var(--color-text-muted);font-family:var(--font-mono);margin-right:.5em}.toc__sub>li>a:before{content:counter(toc2) "." counter(toc3);color:var(--color-text-muted);font-family:var(--font-mono);margin-right:.5em}.article-body{min-width:0;padding-top:var(--space-5);grid-area:body}.prose{counter-reset:sec2;overflow-wrap:break-word}.prose p{margin:0 0 var(--space-3)}.prose h2{counter-increment:sec2;counter-reset:sec3;margin:var(--space-6) 0 var(--space-4);padding:var(--space-2) var(--space-3);border-radius:var(--radius);background:var(--color-primary);color:var(--color-on-primary);font-size:var(--text-xl);font-weight:700;line-height:var(--leading-heading);align-items:baseline;display:flex}.prose h2:before{content:counter(sec2, decimal-leading-zero);margin-right:var(--space-3);padding-right:var(--space-3);border-right:1px solid var(--color-on-primary);font-family:var(--font-mono);font-size:var(--text-base);flex:none;font-weight:400}.prose>h2:first-child{margin-top:0}.prose h3{counter-increment:sec3;margin:var(--space-5) 0 var(--space-3);padding-bottom:var(--space-1);border-bottom:1px solid var(--color-border);color:var(--color-primary);font-size:var(--text-lg);font-weight:700;line-height:var(--leading-heading)}.prose h3:before{content:counter(sec2) "." counter(sec3);color:var(--color-accent);font-family:var(--font-mono);font-size:var(--text-base);margin-right:.6em;font-weight:400}.prose h4{margin:var(--space-4) 0 var(--space-2);color:var(--color-primary);font-size:var(--text-base);font-weight:700;line-height:var(--leading-heading)}.prose h4:before{content:"";border:2px solid var(--color-accent);vertical-align:.05em;width:.55em;height:.55em;margin-right:.55em;display:inline-block}.prose ul,.prose ol{margin:0 0 var(--space-3);padding-left:1.5em}.prose li{margin-bottom:var(--space-1)}.prose li>ul,.prose li>ol{margin:var(--space-1) 0 0}.prose li::marker{color:var(--color-accent)}.prose blockquote{margin:0 0 var(--space-3);padding:var(--space-2) var(--space-3);border-left:4px solid var(--color-border);background:var(--color-surface)}.prose blockquote>:last-child{margin-bottom:0}.prose hr{margin:var(--space-5) 0;border:0;border-top:1px solid var(--color-border)}.prose img{max-width:100%;height:auto}.prose figure.figure{margin:var(--space-4) 0}.prose figure.figure img{margin:0 auto;display:block}.prose figcaption{margin-top:var(--space-2);color:var(--color-text-muted);font-size:var(--text-sm);text-align:center;line-height:1.6}.prose code{border:1px solid var(--color-border-soft);background:var(--color-surface);color:var(--color-text);font-family:var(--font-mono);border-radius:3px;padding:.05em .35em;font-size:.9em}.prose .code code{color:inherit;font-size:inherit;background:0 0;border:0;border-radius:0;padding:0}.xref{align-items:baseline;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-soft);border-radius:var(--radius);background:var(--color-surface);flex-wrap:wrap;display:flex}.prose p.xref{margin-bottom:var(--space-3)}.code{margin:var(--space-3) 0 var(--space-4);border-radius:var(--radius);background:var(--color-code-bg);color:var(--color-code-text);overflow:hidden}.code__bar{justify-content:space-between;align-items:center;gap:var(--space-3);min-height:calc(2rem + var(--space-1) * 2 + 1px);padding:var(--space-1) var(--space-2) var(--space-1) var(--space-3);border-bottom:1px solid var(--color-code-line);font-size:var(--text-sm);display:flex}.code__lang{color:var(--color-code-comment);font-family:var(--font-mono);letter-spacing:.08em}.code__copy{align-items:center;gap:var(--space-1);min-height:2rem;padding:0 var(--space-2);border:1px solid var(--color-code-comment);border-radius:var(--radius);color:var(--color-code-text);font:inherit;font-size:var(--text-sm);cursor:pointer;background:0 0;display:inline-flex}.code__copy:hover{background:var(--color-code-line)}.code pre{padding:var(--space-3);font-family:var(--font-mono);tab-size:4;white-space:pre;margin:0;font-size:.9375rem;line-height:1.7;overflow-x:auto}.code pre:focus-visible{outline-offset:-3px}.table-note{align-items:baseline;gap:var(--space-2);margin:0 0 var(--space-2);color:var(--color-text-muted);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.table-wrap{margin:0 0 var(--space-4);overflow-x:auto}.table-wrap table{border-collapse:collapse;border:1px solid var(--color-border);width:100%;min-width:20rem;font-size:var(--text-base);line-height:1.6}.table-wrap th,.table-wrap td{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);text-align:left}.table-wrap thead th{border-color:var(--color-primary);background:var(--color-primary);color:var(--color-on-primary);font-weight:700}.table-wrap tbody th{background:var(--color-surface);font-weight:600}.table-wrap :is(th,td)[style*="text-align: right"],.table-wrap :is(th,td)[align=right]{text-align:right;font-variant-numeric:tabular-nums}.affbox{margin-top:var(--space-6);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.affbox__head{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);background:var(--color-surface);flex-wrap:wrap;display:flex}.affbox__title{margin:0 var(--space-2) 0 0;color:var(--color-primary);font-size:var(--text-lg);line-height:var(--leading-heading)}.affbox__body{gap:var(--space-3);padding:var(--space-3);grid-template-columns:9rem minmax(0,1fr);align-items:start;display:grid}body .pimg{aspect-ratio:1;width:9rem;padding:var(--space-2);border:1px dashed var(--color-border);border-radius:var(--radius);background:var(--color-notice-bg);color:var(--color-notice-text);font-size:var(--text-sm);text-align:center;place-items:center;line-height:1.5;display:grid}.affbox__list{margin:0;padding:0;list-style:none}.affbox__list li{padding:var(--space-2) 0;border-bottom:1px solid var(--color-border-soft)}.affbox__list li:first-child{padding-top:0}.affbox__list li:last-child{border-bottom:0;padding-bottom:0}.below{max-width:var(--measure)}.adslot{margin:var(--space-6) 0;padding-top:var(--space-4);border-top:1px solid var(--color-border-soft);text-align:center}.adslot__label{margin-bottom:var(--space-2);color:var(--color-text-muted);font-size:var(--text-sm);display:block}.adslot__unit{min-height:280px;display:block}.adslot:has(.adslot__unit[data-ad-status=unfilled]){display:none}.adslot__box{border:1px dashed var(--color-border);border-radius:var(--radius);background:var(--color-notice-bg);width:min(100%,336px);height:280px;color:var(--color-notice-text);font-size:var(--text-sm);place-items:center;margin-inline:auto;display:grid}.profile{align-items:flex-start;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);display:flex}.profile__icon{background:var(--color-primary);width:4rem;height:4rem;color:var(--color-on-primary);border-radius:50%;flex:none;place-items:center;display:grid}.profile__name{color:var(--color-primary);margin:0;font-weight:700;line-height:1.5}.profile__text{margin:var(--space-1) 0 var(--space-2)}.profile__link{align-items:center;gap:var(--space-1);min-height:1.75rem;display:inline-flex}.pn{gap:var(--space-3);margin-top:var(--space-5);grid-template-columns:1fr 1fr;display:grid}.pn__item{padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius)}.pn__item--next{text-align:right;grid-column:2}.pn__label{margin:0 0 var(--space-1);color:var(--color-text-muted);font-size:var(--text-sm);font-weight:700;line-height:1.5}.pn__link{line-height:1.6}.related{margin-top:var(--space-6)}.post-list{margin:0;padding:0;list-style:none}.post-row{gap:var(--space-1) var(--space-3);padding:var(--space-3) var(--space-2);border-bottom:1px solid var(--color-border-soft);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"date cat""title title";align-items:center;display:grid}.post-row__date{color:var(--color-text-muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums;grid-area:date}.post-row__title{grid-area:title;font-weight:600;line-height:1.6}.post-row .tag{grid-area:cat}.post-list-empty{padding:var(--space-3) var(--space-2);margin:0}.site-footer{background:var(--color-primary);color:var(--color-on-primary)}.site-footer__inner{padding-block:var(--space-4)}.footer-nav ul{gap:0 var(--space-4);margin:0 0 var(--space-2);flex-wrap:wrap;padding:0;list-style:none;display:flex}body .site-footer a{align-items:center;gap:var(--space-1);min-height:2.75rem;color:var(--color-on-primary);display:inline-flex}.footer-note{margin:0 0 var(--space-3);line-height:1.7}.footer-copy{padding-top:var(--space-3);border-top:1px solid var(--color-on-primary);font-size:var(--text-sm);margin:0}@media (width>=48.0625rem){.post-list--wide .post-row{grid-template-columns:9.5rem minmax(0,1fr) 9.5rem;grid-template-areas:"date title cat"}.post-list--wide .post-row:hover{background:var(--color-surface)}.post-list--wide .post-row .tag{justify-self:end}}@media (width<=63.9375rem){.article{grid-template:"head""toc""body"/minmax(0,1fr)}.toc{margin-top:var(--space-4);position:static}.below{max-width:none}}@media (width<=48rem){.hero__inner{padding-block:var(--space-5) var(--space-4)}.more{text-align:left}}@media (width<=40rem){.pn{grid-template-columns:1fr}.pn__item--next{text-align:left;grid-column:auto}.profile{padding:var(--space-3)}.affbox__body{grid-template-columns:minmax(0,1fr)}.prose h2{padding:var(--space-2)}.prose h2:before{margin-right:var(--space-2);padding-right:var(--space-2)}}
