:root{color-scheme:dark;--bg:#020202;--surface:#121212;--header:#191919;--topbar:#0e0e0e;--border:#333;--text:#f9f9f9;--muted:#a6a6a6;--link:#ccc;--accent:#2b6fd8;--accent-hover:#3b7fe6;--focus:#fff;--container:1120px;--prose:760px;--gutter:16px;--font:system-ui, -apple-system, "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans JP", "Yu Gothic UI", Meiryo, sans-serif;--mono:ui-monospace, "SFMono-Regular", Menlo, Consolas, "BIZ UDGothic", "Noto Sans Mono CJK JP", monospace}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:1rem;line-height:1.8;overflow-wrap:anywhere}img{max-width:100%;height:auto}a{color:var(--link);text-underline-offset:.2em}a:hover{color:var(--text)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:var(--gutter)}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip-link{position:absolute;left:var(--gutter);top:-100px;z-index:100;padding:.5em 1em;background:var(--text);color:var(--bg)}.skip-link:focus{top:8px}.site-header{background:var(--header);border-bottom:1px solid #000}.topbar{background:var(--topbar);font-size:.8125rem;line-height:1.5}.topbar__inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:2rem}.topbar__tagline{margin:0;color:var(--muted)}.lang-switch ul{display:flex;gap:.25rem 1rem;margin:0;padding:0;list-style:none}.lang-switch [aria-current]{color:var(--text);font-weight:700}.masthead{position:relative;display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:4.5rem}.masthead__logo{display:block;line-height:0}.masthead__logo img{width:auto;height:36px}.nav .menu{display:flex;margin:0;padding:0;list-style:none}.nav a{display:block;color:var(--text);text-decoration:none}.nav a:hover,.nav a[aria-current]{text-decoration:underline}.nav--wide .menu{gap:.25rem 1.75rem;font-size:.9375rem}.nav--narrow{display:none}.nav--narrow summary{display:flex;align-items:center;gap:.5rem;padding:.5rem 0;cursor:pointer;list-style:none}.nav--narrow summary::-webkit-details-marker{display:none}.nav__icon,.nav__icon::before,.nav__icon::after{display:block;width:22px;height:2px;background:var(--text)}.nav__icon{position:relative}.nav__icon::before,.nav__icon::after{position:absolute;left:0;content:""}.nav__icon::before{top:-7px}.nav__icon::after{top:7px}.nav--narrow[open] .nav__icon{background:0 0}.nav--narrow[open] .nav__icon::before{top:0;transform:rotate(45deg)}.nav--narrow[open] .nav__icon::after{top:0;transform:rotate(-45deg)}.nav--narrow nav{position:absolute;top:100%;right:0;left:0;z-index:10;background:var(--header);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.nav--narrow .menu{flex-direction:column}.nav--narrow a{padding:.85rem var(--gutter);border-bottom:1px solid #262626}@media(max-width:959px){.nav--wide{display:none}.nav--narrow{display:block}.masthead{min-height:3.5rem}.masthead__logo img{height:30px}}@media(max-width:599px){.topbar__tagline{display:none}.topbar__inner{justify-content:flex-end}}.mv{position:relative;display:grid;min-height:50vh;overflow:hidden;background:#111}@media(min-width:960px){.mv{min-height:30vw}}.mv__scene{position:relative;grid-area:1/1;display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;text-shadow:1px 1px 0 rgba(0,0,0,.2);visibility:hidden;opacity:0;transition:opacity 1.5s ease,visibility 0s linear 1.5s}.mv__scene.is-active{visibility:visible;opacity:1;transition:opacity 1.5s ease,visibility 0s linear 0s}@media(prefers-reduced-motion:reduce){.mv__scene,.mv__scene.is-active{transition:none}}.mv__bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.mv__scene::before,.mv__scene::after{position:absolute;inset:0;z-index:1;content:""}.mv__scene::before{background:rgba(0,0,0,.2)}.mv__scene::after{background:conic-gradient(rgba(0,0,0,.44) 25%,transparent 0 50%,rgba(0,0,0,.44) 0 75%,transparent 0)0 0/2px 2px,rgba(0,0,0,.1);opacity:.5}.mv__text{position:relative;z-index:2;padding:1.5rem 4vw 2.25rem}.mv__prompt{margin:0;font-size:5.5vw;line-height:1.4}.mv__body{margin:.75em 0 0;font-size:3.2vw}.mv__text .button{margin-top:2em;padding:.75em 2.5em;border-color:transparent;border-radius:0;font-size:3.2vw;letter-spacing:1px}@media(min-width:600px){.mv__prompt{font-size:28px}.mv__body{font-size:16px}.mv__text .button{font-size:15px}}.mv__dots{position:absolute;bottom:10px;left:0;z-index:2;display:flex;justify-content:center;width:100%}.mv__dot{display:grid;place-items:center;width:16px;height:24px;margin:0;padding:0;border:0;background:0 0;cursor:pointer}.mv__dot::before{width:8px;height:8px;border-radius:50%;background:#000;opacity:.2;content:""}.mv__dot[aria-current=true]::before{background:#fff;opacity:1}.mv__pause{position:absolute;top:8px;left:8px;z-index:3;padding:.4em 1em;border:1px solid #fff;background:rgba(0,0,0,.7);color:#fff;font:inherit;font-size:.875rem;cursor:pointer}.mv__pause:not(:focus-visible){width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.button-row{text-align:center}.button{display:inline-block;padding:.7em 2.5em;font-weight:700;line-height:1.5;text-decoration:none;text-shadow:none}.button--primary{min-width:12em;border-radius:999px;background:var(--accent);color:#fff}.button--primary:hover{background:var(--accent-hover);color:#fff}.button--dark{border:1px solid #444;border-radius:2px;background:#1c1c1c;color:var(--text);font-weight:400;letter-spacing:.05em}.button--dark:hover{background:#2a2a2a;color:var(--text)}.page{padding-block:2.5rem 4rem}.page__header,.page>.prose,.post__hero,.post__pager{max-width:var(--prose);margin-inline:auto}.page__title{margin:0 0 .5rem;font-size:clamp(1.5rem,3vw,2rem);line-height:1.4}.section-title{margin:0 0 1.25rem;font-size:1.25rem}.post__terms{margin:0 0 .75rem}.post__hero{margin-block:1.5rem}.post__hero img{display:block;width:100%}.post-date{margin:0;color:var(--muted);font-size:.8125rem}.prose{margin-top:2rem}.prose h2{margin:2.5em 0 1em;padding-bottom:.3em;border-bottom:1px solid var(--border);font-size:1.375rem;line-height:1.5}.prose h3{margin:2em 0 .75em;padding-left:.6em;border-left:4px solid #555;font-size:1.125rem;line-height:1.5}.prose h4{margin:1.5em 0 .5em;font-size:1rem}.prose p,.prose ul,.prose ol,.prose table,.prose figure,.prose blockquote,.prose pre{margin-block:0 1.5em}.prose figure{margin-inline:0;text-align:center}.prose figcaption{margin-top:.5em;color:var(--muted);font-size:.8125rem}.prose blockquote{margin-inline:0;padding:.75em 1em;border-left:4px solid #555;background:var(--surface)}.prose table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse}.prose th,.prose td{padding:.6em .9em;border:1px solid var(--border);text-align:left;vertical-align:top}.prose th{background:var(--surface);white-space:nowrap}.prose code{padding:.1em .3em;background:var(--surface);font-family:var(--mono);font-size:.9em}.prose pre{padding:1em;overflow-x:auto;background:var(--surface);line-height:1.6}.prose pre code{padding:0;background:0 0}.prose hr{margin-block:2.5em;border:0;border-top:1px dashed var(--border)}.prose mark{padding:0 .15em;background:#f5d76e;color:#111}.prose dl{margin:0 0 1.5em;border-top:1px solid var(--border)}.prose dt,.prose dd{margin:0;padding:.75em .5em}.prose dt{color:var(--muted);font-weight:700}.prose dd{border-bottom:1px solid var(--border)}@media(min-width:600px){.prose dl{display:grid;grid-template-columns:minmax(8em,25%)1fr}.prose dt{border-bottom:1px solid var(--border)}}.box{margin-block:0 1.5em;padding:1em 1.25em;border:1px solid var(--border);background:var(--surface)}.box__title{margin:-1em -1.25em 1em;padding:.5em 1.25em;background:#1c1c1c;font-weight:700;text-align:center}.box__body>:last-child{margin-bottom:0}.banner{margin-block:0 2rem}.banner__link{position:relative;display:block;overflow:hidden;border-radius:20px;color:#fff;text-decoration:none}.banner__img{display:block;width:100%;transition:transform .3s}.banner__link:hover .banner__img{transform:scale(1.03)}.banner__text{position:absolute;right:0;bottom:0;left:0;padding:1.5rem 1.5rem 1.25rem;background:linear-gradient(transparent,rgba(0,0,0,.75));text-align:center}.banner__title{display:block;font-size:1.5rem;font-weight:700}.banner__description{display:block;font-size:.875rem}@media(prefers-reduced-motion:reduce){.banner__img{transition:none}.banner__link:hover .banner__img{transform:none}}.video{margin-block:1.5rem}.video__frame{display:block;width:100%;height:auto;aspect-ratio:16/9;border:0}.media-text{display:grid;align-items:center;gap:1.5rem 2rem;margin-block:2rem 3rem}.media-text__media img{display:block;width:100%}.media-text__body>:first-child{margin-top:0}@media(min-width:760px){.media-text{grid-template-columns:1fr 1fr}.media-text--right .media-text__media{order:2}}.contact-form{margin-block:2rem}.contact-form__field label{display:block;margin-bottom:.35em;font-weight:700}.contact-form input[type=text],.contact-form input[type=email],.contact-form textarea{width:100%;padding:.6em .75em;border:1px solid #555;border-radius:2px;background:var(--surface);color:var(--text);font:inherit}.contact-form textarea{resize:vertical}.contact-form input:focus-visible,.contact-form textarea:focus-visible{border-color:var(--text)}.contact-form__trap{position:absolute;left:-1e4px;width:1px;height:1px;overflow:hidden}.contact-form__notice,.contact-form__after{color:var(--muted);font-size:.875rem}.contact-form__consent{display:flex;align-items:flex-start;gap:.6em}.contact-form__consent input{flex:none;width:1.25em;height:1.25em;margin-top:.3em;accent-color:var(--accent)}.contact-form-pending{padding:1em 1.25em;border:1px dashed var(--border);color:var(--muted)}.home__content{padding-block:2rem 0}.home__posts{padding-block:1rem 4rem}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:2rem 1.25rem}.card__link{display:block;color:var(--text);text-decoration:none}.card__media{position:relative;aspect-ratio:16/9;overflow:hidden;background:var(--surface)}.card__img{display:block;width:100%;height:100%;object-fit:cover;transition:opacity .2s}.card__link:hover .card__img{opacity:.8}.card__link:hover .card__title{text-decoration:underline}.card__media .badge{position:absolute;top:0;right:0}.card__title{margin:.75rem 0 .25rem;font-size:1rem;line-height:1.6}.badge{display:inline-block;padding:.15em .7em;background:#1c1c1c;color:var(--text);font-size:.75rem;line-height:1.6;text-decoration:none}a.badge:hover{background:#2a2a2a}.post__pager{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;margin-top:3rem;padding-top:1.5rem;border-top:1px dashed var(--border);font-size:.875rem}.post__pager a{display:block;max-width:48%;text-decoration:none}.post__pager span{display:block;color:var(--muted);font-size:.75rem}.post__pager-next{margin-left:auto;text-align:right}@media(max-width:599px){.post__pager a{max-width:none}}.notfound{text-align:center}.notfound__prompt{color:var(--muted);font-family:var(--mono)}.site-footer{padding-block:3rem 2rem;color:var(--muted);font-size:.8125rem;text-align:center}.site-footer a{color:var(--muted);text-decoration:none}.site-footer a:hover{color:var(--text)}.site-footer ul{display:flex;flex-wrap:wrap;justify-content:center;margin:0 0 1rem;padding:0;list-style:none}.footer__icons{gap:1rem}.footer__icons a{display:block;padding:.25rem;line-height:0}.site-footer .menu li{padding-inline:.75rem;border-left:1px solid var(--border)}.site-footer .menu li:last-child{border-right:1px solid var(--border)}.site-footer .lang-switch ul{gap:.25rem 1rem}.site-footer .lang-switch [aria-current]{color:var(--text)}.footer__copyright{margin:1.5rem 0 0}.bg{color:#e6edf3;background-color:#0d1117}.chroma{color:#e6edf3;background-color:#0d1117;-webkit-text-size-adjust:none}.chroma .err{color:#f85149}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#6e7681}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}.chroma .line{display:flex}.chroma .k{color:#ff7b72}.chroma .kc{color:#79c0ff}.chroma .kd{color:#ff7b72}.chroma .kn{color:#ff7b72}.chroma .kp{color:#79c0ff}.chroma .kr{color:#ff7b72}.chroma .kt{color:#ff7b72}.chroma .nc{color:#f0883e;font-weight:700}.chroma .no{color:#79c0ff;font-weight:700}.chroma .nd{color:#d2a8ff;font-weight:700}.chroma .ni{color:#ffa657}.chroma .ne{color:#f0883e;font-weight:700}.chroma .nl{color:#79c0ff;font-weight:700}.chroma .nn{color:#ff7b72}.chroma .nx{color:#e6edf3}.chroma .py{color:#79c0ff}.chroma .nt{color:#7ee787}.chroma .nv{color:#79c0ff}.chroma .vc{color:#79c0ff}.chroma .vg{color:#79c0ff}.chroma .vi{color:#79c0ff}.chroma .vm{color:#79c0ff}.chroma .nf{color:#d2a8ff;font-weight:700}.chroma .fm{color:#d2a8ff;font-weight:700}.chroma .l{color:#a5d6ff}.chroma .ld{color:#79c0ff}.chroma .s{color:#a5d6ff}.chroma .sa{color:#79c0ff}.chroma .sb{color:#a5d6ff}.chroma .sc{color:#a5d6ff}.chroma .dl{color:#79c0ff}.chroma .sd{color:#a5d6ff}.chroma .s2{color:#a5d6ff}.chroma .se{color:#79c0ff}.chroma .sh{color:#79c0ff}.chroma .si{color:#a5d6ff}.chroma .sx{color:#a5d6ff}.chroma .sr{color:#79c0ff}.chroma .s1{color:#a5d6ff}.chroma .ss{color:#a5d6ff}.chroma .m{color:#a5d6ff}.chroma .mb{color:#a5d6ff}.chroma .mf{color:#a5d6ff}.chroma .mh{color:#a5d6ff}.chroma .mi{color:#a5d6ff}.chroma .il{color:#a5d6ff}.chroma .mo{color:#a5d6ff}.chroma .o{color:#ff7b72;font-weight:700}.chroma .ow{color:#ff7b72;font-weight:700}.chroma .or{color:#ff7b72;font-weight:700}.chroma .c{color:#8b949e;font-style:italic}.chroma .ch{color:#8b949e;font-style:italic}.chroma .cm{color:#8b949e;font-style:italic}.chroma .c1{color:#8b949e;font-style:italic}.chroma .cs{color:#8b949e;font-weight:700;font-style:italic}.chroma .cp{color:#8b949e;font-weight:700;font-style:italic}.chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}.chroma .gd{color:#ffa198;background-color:#490202}.chroma .ge{font-style:italic}.chroma .gr{color:#ffa198}.chroma .gh{color:#79c0ff;font-weight:700}.chroma .gi{color:#56d364;background-color:#0f5323}.chroma .go{color:#8b949e}.chroma .gp{color:#8b949e}.chroma .gs{font-weight:700}.chroma .gu{color:#79c0ff}.chroma .gt{color:#ff7b72}.chroma .gl{text-decoration:underline}.chroma .w{color:#6e7681}