*,*::before,*::after{box-sizing:border-box}.site-header,.site-footer{box-sizing:content-box}:root{--bg-primary:#f7f7f7;--chroma-r:rgba(179, 179, 179, 0.5);--chroma-b:rgba(124, 124, 124, 0.5);--bg-secondary:#dfdfdf;--text-heading:#111111;--text-primary:#222222;--text-secondary:#666666;--border-color:#dddddd;--link-color:#222222;--link-hover:#000000;--content-width:38rem;--content-margin:2rem;--back-to-top-offset:2rem;--ratio:1.25;--fs-xs:calc(1rem / var(--ratio));--fs-body:1rem;--fs-sub:calc(1rem * var(--ratio));--fs-head:calc(var(--fs-sub)  * var(--ratio));--fs-hero:calc(var(--fs-head) * var(--ratio));--lh-tight:1.4;--lh-normal:1.82;--lh-loose:2.0;--ls-body:0;--ls-heading:0.02em;--ls-xs:0.03em;--font-heading:"Spectral",
    "Zen Old Mincho",
    serif;--font-body-en:"Outfit",
    sans-serif;--font-body-ja:"Zen Kaku Gothic New",
    "Hiragino Kaku Gothic ProN",
    "Yu Gothic UI",
    sans-serif;--font-body:"Outfit",
    "Zen Kaku Gothic New",
    "Hiragino Kaku Gothic ProN",
    "Yu Gothic UI",
    sans-serif;--font-mono:"SF Mono",
    "Menlo",
    "Monaco",
    "Consolas",
    "Liberation Mono",
    "Courier New",
    monospace}[data-theme=dark]{--bg-primary:#1a1a1a;--chroma-r:rgba(213, 230, 60, 0.55);--chroma-b:rgba(61, 145, 255, 0.55);--bg-secondary:#2d2d2d;--text-heading:#FFFFFF;--text-primary:#f7f7f7;--text-secondary:#a0a0a0;--border-color:#1e1e1e;--link-color:#f0f0f0;--link-hover:#ffffff}[data-theme=warm]{--bg-primary:#dddbd2;--chroma-r:#45668f80;--chroma-b:#bb716880;--bg-secondary:#bebcaa;--text-heading:#141413;--text-primary:#141413;--text-secondary:#7A7268;--border-color:#C5BEB4;--link-color:#241f19;--link-hover:#171410}body{background-color:var(--bg-primary);color:var(--text-primary);transition:background-color .3s ease,color .3s ease;margin:0;padding:0;font-family:var(--font-body);font-weight:300;line-height:var(--lh-normal);font-size:var(--fs-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;word-break:break-all}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:300;color:var(--text-heading);line-height:var(--lh-tight);margin-top:0;margin-bottom:0}h2,h3,h4,h5,h6{margin-top:3rem}h1{font-size:var(--fs-hero);line-height:var(--lh-tight);letter-spacing:var(--ls-heading)}h2{font-size:var(--fs-head);font-weight:300}h3{font-size:var(--fs-sub);font-weight:300}p{margin-bottom:1rem;line-height:var(--lh-normal)}a{color:var(--link-color);text-decoration:underline;text-underline-offset:.125em;text-decoration-thickness:.04em;transition:color .2s ease}a:hover{color:var(--link-hover)}header>time{color:var(--text-secondary);font-size:var(--fs-xs)}strong{font-weight:700}hr{border:none;border-top:solid 1px var(--border-color)}header.site-header h1{font:inherit;margin:0}.skip-link{position:absolute;top:-100%;left:0}.skip-link:focus{top:0}.site-header{width:min(var(--content-width),calc(100vw - var(--content-margin) * 2));max-width:none;margin:0 auto;background-color:color-mix(in srgb,var(--bg-primary) 60%,transparent);border-bottom:1px solid var(--border-color);padding:1rem 1rem .5rem;position:sticky;top:0;z-index:100;transition:background-color .3s ease,border-color .3s ease;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.header-inner{display:flex;align-items:center;flex-wrap:wrap;column-gap:1rem;row-gap:0}.site-title,.site-title:hover{font-family:var(--font-heading);font-size:1.25rem;font-weight:400;letter-spacing:.09em;white-space:nowrap;color:var(--text-primary);text-decoration:none;flex-shrink:0;text-shadow:-1.5px -.5px 0 var(--chroma-r),1.5px .5px 0 var(--chroma-b)}.breadcrumb{flex-basis:100%;display:flex;align-items:baseline;gap:0;font-size:var(--fs-xs);color:var(--text-secondary);border:0 solid var(--border-color);padding:0;margin:0;word-break:break-all;overflow:hidden}.breadcrumb-prefix{flex-shrink:0;white-space:nowrap}.breadcrumb a,.breadcrumb-title a{color:inherit;text-decoration:none;font-weight:700;letter-spacing:var(--ls-xs);display:inline}.breadcrumb a:hover,.breadcrumb-title a:hover{color:var(--text-primary)}.breadcrumb-title{flex:1;min-width:0;word-break:normal;overflow-wrap:break-word}body{timeline-scope:--article-h1}main h1{view-timeline-name:--article-h1;view-timeline-axis:block}@supports not (animation-timeline:scroll()){.breadcrumb-title,.breadcrumb:not(:has(.breadcrumb-title)){opacity:1}}@supports(animation-timeline:scroll()){.breadcrumb:has(.breadcrumb-title) .breadcrumb-title{opacity:0;animation:breadcrumb-show linear both;animation-timeline:--article-h1;animation-range:exit -6rem exit 100%}.breadcrumb:not(:has(.breadcrumb-title)){opacity:0;animation:breadcrumb-show linear both;animation-timeline:--article-h1;animation-range:exit -6rem exit 100%}@keyframes breadcrumb-show{from{opacity:0;transform:translateX(.5rem)}to{opacity:1;transform:translateX(0)}}}#main-nav{margin-left:auto}#main-nav ul{display:flex;flex-wrap:nowrap;gap:clamp(.5rem,2vw,2rem);list-style:none;margin:0;padding:0}#main-nav a{font-size:clamp(.75rem,2vw,.95rem);white-space:nowrap;color:var(--text-primary);text-decoration:none}#main-nav a:hover{color:var(--link-hover)}.header-actions{display:flex;gap:.5rem;align-items:center;flex-shrink:0}#theme-toggle{background:0 0;border:1px solid var(--border-color);border-radius:6px;padding:.5rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;color:var(--text-primary)}#theme-toggle:hover{background-color:var(--bg-secondary)}#theme-toggle:active{transform:scale(.95)}.sun-icon,.moon-icon,.warm-icon{display:none}[data-theme=light] .sun-icon{display:block}[data-theme=dark] .moon-icon{display:block}[data-theme=warm] .warm-icon{display:block}main{display:block;margin:0 auto;padding:2rem 0;width:min(var(--content-width),calc(100vw - var(--content-margin) * 2))}.blog-post{max-width:none;margin:0 auto}.article-header{margin-bottom:2rem;padding-bottom:1rem}.article-header h1{margin-top:0;margin-bottom:.5rem}.article-meta{display:flex;gap:1rem;flex-wrap:wrap;color:var(--text-secondary);font-size:var(--fs-xs)}.article-content{line-height:var(--lh-normal)}figure{margin:1.5rem 0}figure:has(img),figure:has(video){display:flex;flex-direction:column;align-items:center}figure img,figure video{max-width:100%;height:auto;display:block;margin:0;border-radius:8px;border-width:0}figure figcaption{display:block;text-align:center;font-family:var(--font-body-en);font-size:var(--fs-xs);font-weight:300;letter-spacing:.09em;text-transform:uppercase;font-style:normal;color:var(--text-secondary);padding-top:.5rem;margin:0}figure figcaption a{color:var(--text-secondary);text-decoration:underline}.article-content h2{margin-top:2.5rem;color:var(--text-primary)}.article-content h3{margin-top:2rem}.header-anchor{margin-left:.5rem;opacity:0;transition:opacity .2s;text-decoration:none;color:var(--text-secondary)}h2:hover .header-anchor,h3:hover .header-anchor,h4:hover .header-anchor{opacity:1}.article-footer{margin-top:3rem}.site-footer{width:min(var(--content-width),calc(100vw - var(--content-margin) * 2));max-width:none;text-align:center;margin:0 auto;border-top:1px solid var(--border-color);padding:1rem;color:var(--text-secondary);border-top:1px solid var(--border-color);font-size:var(--fs-xs)}.footer-actions{display:flex;justify-content:center;margin-top:1.5rem}.social-links ul{list-style:none;display:flex;gap:1rem;justify-content:center;margin:1rem 0;padding:0}.social-links a{display:flex;align-items:center;color:inherit;opacity:.7;transition:opacity .2s}.social-links a:hover{opacity:1}.social-links svg{width:1.25rem;height:1.25rem}code{font-family:var(--font-mono);font-size:var(--fs-xs);padding:.2rem .4rem;border-radius:3px;background-color:var(--bg-secondary)}.highlight{background-color:var(--bg-secondary);border-radius:6px;margin:1.5rem 0;overflow-x:auto;border:1px solid var(--border-color)}.highlight pre{background:0 0;margin:0;padding:1rem;line-height:var(--lh-tight)}.highlight code,pre code{background:0 0;padding:0;font-size:.875rem;font-family:var(--font-mono)}pre{background-color:var(--bg-secondary);padding:1rem;border-radius:6px;overflow-x:auto;line-height:1.6;border:1px solid var(--border-color)}blockquote{border-left:6px solid var(--border-color);padding-left:1rem;color:var(--text-secondary);margin-left:0;margin-right:0}.code-block{margin:1.5rem 0;border:1px solid var(--border-color);border-radius:6px;overflow:hidden}.code-caption{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;background-color:var(--bg-secondary);border-bottom:1px solid var(--border-color);font-family:var(--font-mono);font-size:.875rem;line-height:1.5}.code-type{display:inline-block;padding:.125rem .5rem;background:var(--text-secondary);color:var(--bg-primary);font-weight:600;font-size:.75rem;text-transform:uppercase;border-radius:3px;letter-spacing:.025em}.code-filename{color:var(--text-primary);font-style:italic;font-weight:500}.code-block.has-filename:not(.has-type) .code-filename{font-weight:700}.code-content{margin:0}.code-block .code-content .highlight{background:0 0;border:none;border-radius:0;margin:0}.code-block .code-content .highlight pre{background:var(--bg-secondary);margin:0;padding:1rem;border:none}.code-block.has-none .code-content pre{background:var(--bg-secondary);margin:0;padding:1rem;border:none;border-radius:0}.code-block .code-content code{background:0 0;padding:0;font-size:.875rem;font-family:var(--font-mono)}[data-theme=dark] .code-block{border-color:#404040}[data-theme=dark] .code-caption{background:#2d2d2d;border-bottom-color:#404040}[data-theme=dark] .code-type{}[data-theme=dark] .code-content .highlight pre,[data-theme=dark] .code-block.has-none .code-content pre{background:#2d2d2d}.pagination{margin-top:3rem;padding-top:2rem;border-top:1px solid var(--border-color)}.pagination-articles .pagination-wrapper{display:flex;justify-content:space-between;gap:2rem}.pagination-articles .pagination-link{display:flex;flex-direction:column;gap:.25rem;padding:.4rem 1rem;border:1px solid var(--border-color);border-radius:8px;text-decoration:none;color:var(--text-primary);transition:all .2s ease;flex:1;max-width:48%}.pagination-articles .pagination-link:hover{background-color:var(--bg-secondary);border-color:var(--text-secondary)}.pagination-articles .pagination-prev{text-align:left}.pagination-articles .pagination-next{text-align:right}.pagination-articles .pagination-wrapper:has(.pagination-prev:only-child){justify-content:flex-start}.pagination-articles .pagination-wrapper:has(.pagination-next:only-child){justify-content:flex-end}.pagination-articles .pagination-label{font-size:.875rem;color:var(--text-secondary);font-weight:600}.pagination-articles .pagination-title{font-size:1rem;color:var(--text-primary)}.pagination-pages{display:flex;justify-content:center}.pagination-pages .pagination-list{display:flex;justify-content:center;gap:.5rem;list-style:none;padding:0;margin:0;flex-wrap:wrap}.pagination-pages .pagination-item{display:inline-block}.pagination-pages .pagination-link{display:flex;align-items:center;justify-content:center;min-width:1.5rem;padding:.2rem .4rem;border:1px solid var(--border-color);border-radius:6px;text-decoration:none;color:var(--text-primary);background-color:var(--bg-primary);transition:all .2s ease;font-weight:500}.pagination-pages .pagination-link:hover{background-color:var(--bg-secondary);border-color:var(--text-secondary)}.pagination-pages .pagination-active .pagination-link{background-color:var(--text-secondary);color:var(--bg-primary);border-color:var(--text-secondary);cursor:default}.pagination-pages .pagination-disabled .pagination-link{opacity:.3;cursor:not-allowed;pointer-events:none}.back-to-top{position:fixed;bottom:2rem;left:auto;right:1rem;width:2.5rem;height:2.5rem;display:none;align-items:center;justify-content:center;z-index:1000}@supports(animation-timeline:scroll()){body:not(.no-scroll) .back-to-top{display:flex}}@supports not (animation-timeline:scroll()){body:not(.no-scroll) .back-to-top{display:flex}}.back-to-top svg{width:100%;height:100%;padding:0;background:var(--bg-primary);border:0 solid var(--border-color);border-radius:50%;text-decoration:none;color:var(--text-secondary);box-shadow:0 2px 8px rgba(0,0,0,.1);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.back-to-top svg:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.15);border-color:var(--text-secondary);color:var(--text-primary)}.back-to-top svg:focus-visible{outline:2px solid var(--text-primary);outline-offset:2px}.progress-ring{fill:none;stroke:var(--border-color);stroke-width:4}.progress-ring-active{fill:none;stroke:var(--text-primary);stroke-width:4;stroke-dasharray:283;stroke-dashoffset:283;transform-origin:center;transform:rotate(-90deg)}@supports(animation-timeline:scroll()){.progress-ring-active{animation:scroll-progress linear;animation-timeline:scroll(root)}@keyframes scroll-progress{from{stroke-dashoffset:283}to{stroke-dashoffset:0}}}@supports not (animation-timeline:scroll()){.progress-ring-active{stroke-dashoffset:141.5}}.arrow-icon{stroke:currentColor;stroke-width:3;fill:none;stroke-linecap:round;stroke-linejoin:round}[data-theme=dark] .back-to-top svg{box-shadow:0 2px 8px rgba(0,0,0,.3)}[data-theme=dark] .back-to-top svg:hover{box-shadow:0 4px 12px rgba(0,0,0,.4)}body.home{}body.home .latest-posts{}.blog-list{}.blog-list section{margin-bottom:1rem}.blog-list>section>article:last-child{padding-bottom:0;margin-bottom:0}.blog-list section>h2{font-weight:400;color:var(--text-secondary);border-bottom:0 solid var(--border-color);text-align:right;margin-bottom:0}.blog-list>section>section>h3{font-weight:400;color:var(--text-secondary);border-bottom:1px solid var(--border-color);margin:1px solid var(--border-color);text-align:right;margin:0}.blog-list h4{font-size:var(--fs-sub)}.blog-list article{padding:.75rem 0;border-bottom:1px solid color-mix(in srgb,var(--border-color) 50%,transparent)}.blog-list article:last-child{border-bottom:none}.blog-list article header{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.blog-list article header h4{margin:0;flex:1}.blog-list article header time{flex-shrink:0;color:var(--text-secondary);font-size:var(--fs-xs);white-space:nowrap}.blog-list article p.summary{font-size:var(--fs-xs);margin:.35rem 0 0;color:var(--text-secondary)}.blog-list article header h4 a{font-weight:400}.blog-list article header h4 a:hover{text-decoration:underline}@media(max-width:640px){.pagination-articles .pagination-wrapper{flex-direction:column;gap:1rem}.pagination-articles .pagination-link{max-width:100%}.pagination-pages .pagination-list{gap:.25rem}.pagination-pages .pagination-link{min-width:2rem;height:2rem;font-size:.875rem;padding:.25rem}}@media(min-width:800px){.back-to-top{left:calc(50% + 304px + 1em);right:auto;bottom:2rem}}