@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=IBM+Plex+Sans+JP:wght@400;500;600;700&family=IBM+Plex+Serif:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Inter+Tight:wght@400;500;600;700&display=swap";@font-face{font-family:PlemolJP;src:local("PlemolJP"),local("PlemolJP HS"),local("PlemolJPConsoleNF");font-display:swap}@font-face{font-family:PlemolJP Console;src:local("PlemolJP Console"),local("PlemolJPConsoleHS");font-display:swap}:root{--paper-50: #FFE8D2;--paper-100: #FFDAB9;--paper-200: #F6CDA8;--paper-300: #ECBE96;--paper-400: #D8A87C;--paper-500: #B58963;--ink-900: #1F1B16;--ink-800: #2E2820;--ink-700: #4A4236;--ink-600: #6B6151;--ink-500: #8C8270;--ink-400: #ADA391;--blue-700: #163E85;--blue-600: #1F4FA8;--blue-500: #3D6BC1;--blue-100: #DDE6F5;--leaf-700: #2D5128;--leaf-600: #3F6E3A;--leaf-100: #DDE7D8;--amber-700: #8B5A1A;--amber-600: #B17626;--amber-200: #F2DFB6;--amber-100: #F8ECCB;--rust-700: #8A2A1F;--rust-600: #B23B2D;--rust-100: #F0D6CF;--color-bg: var(--paper-100);--color-bg-subtle: var(--paper-50);--color-surface: var(--paper-200);--color-surface-raised:var(--paper-300);--color-panel: var(--paper-50);--color-code-bg: #FFEFD9;--color-code-strip: var(--paper-300);--color-text: var(--ink-900);--color-heading: var(--ink-800);--color-muted: var(--ink-600);--color-faint: var(--ink-500);--color-border: var(--paper-400);--color-border-strong: var(--paper-500);--color-rule: var(--ink-400);--color-accent: var(--blue-600);--color-accent-hover: var(--blue-700);--color-accent-tint: var(--blue-100);--color-prompt: var(--leaf-600);--color-prompt-tint: var(--leaf-100);--color-mark: var(--amber-200);--color-warn: var(--amber-600);--color-error: var(--rust-600);--color-error-tint: var(--rust-100);--code-fg: var(--ink-900);--code-comment: #7A6F58;--code-keyword: #8A2A1F;--code-string: #2D5128;--code-number: #8B5A1A;--code-fn: #163E85;--code-type: #6B3F8B;--code-punct: var(--ink-700);--code-add-bg: #DDE7D8;--code-add-gutter:#3F6E3A;--code-del-bg: #F0D6CF;--code-del-gutter:#B23B2D;--color-selection-bg: var(--amber-200);--color-selection-fg: var(--ink-900);--color-focus-ring: var(--blue-600);--font-sans: "Inter Tight", "IBM Plex Sans JP", -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Noto Sans JP", sans-serif;--font-serif: "IBM Plex Serif", "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", Georgia, serif;--font-mono: "PlemolJP", "PlemolJP Console", "IBM Plex Mono", "IBM Plex Sans JP", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--font-mono-display: "PlemolJP", "IBM Plex Mono", "IBM Plex Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Noto Sans JP", monospace;--font-brand-jp: "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", serif;--fs-3xs: 11px;--fs-2xs: 12px;--fs-xs: 13px;--fs-sm: 14px;--fs-base: 17px;--fs-md: 18px;--fs-lg: 20px;--fs-xl: 24px;--fs-2xl: 30px;--fs-3xl: 38px;--fs-4xl: 48px;--fs-5xl: 60px;--lh-tight: 1.15;--lh-snug: 1.35;--lh-normal: 1.55;--lh-prose: 1.75;--lh-loose: 1.9;--tracking-tight: -.015em;--tracking-normal: 0;--tracking-wide: .04em;--tracking-mono: .01em;--tracking-caps: .08em;--weight-regular: 400;--weight-medium: 500;--weight-semi: 600;--weight-bold: 700;--space-0: 0;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 32px;--space-8: 40px;--space-9: 48px;--space-10: 64px;--space-11: 80px;--space-12: 112px;--measure-prose: 68ch;--measure-narrow: 52ch;--measure-wide: 80ch;--radius-xs: 2px;--radius-sm: 3px;--radius-md: 5px;--radius-lg: 8px;--radius-panel: 6px;--radius-pill: 999px;--shadow-hairline: 0 0 0 1px var(--color-border);--shadow-panel: 0 1px 0 var(--paper-400), 0 1px 2px rgba(31, 27, 22, .04);--shadow-raised: 0 1px 0 var(--paper-400), 0 4px 12px -4px rgba(31, 27, 22, .08);--shadow-focus: 0 0 0 3px rgba(31, 79, 168, .3);--shadow-inset: inset 0 1px 0 rgba(31, 27, 22, .03);--bp-sm: 480px;--bp-md: 768px;--bp-lg: 1024px;--bp-xl: 1280px;--bp-2xl: 1440px;--container: 1180px;--motion-fast: .12s;--motion-base: .18s;--motion-slow: .26s;--ease-standard: cubic-bezier(.2, 0, 0, 1);--ease-emphasized:cubic-bezier(.2, 0, 0, 1);--ease-exit: cubic-bezier(.4, 0, 1, 1)}html{font-family:var(--font-serif);font-size:var(--fs-base);line-height:var(--lh-prose);color:var(--color-text);background:var(--color-bg);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"kern","liga","calt","ss01"}body{margin:0}::selection{background:var(--color-selection-bg);color:var(--color-selection-fg)}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);color:var(--color-heading);font-weight:var(--weight-semi);letter-spacing:var(--tracking-tight);line-height:var(--lh-tight);margin:0}h1{font-size:var(--fs-3xl);font-weight:var(--weight-bold)}h2{font-size:var(--fs-2xl)}h3{font-size:var(--fs-xl)}h4{font-size:var(--fs-lg)}h5{font-size:var(--fs-md);text-transform:uppercase;letter-spacing:var(--tracking-caps);font-family:var(--font-mono);font-weight:var(--weight-medium);font-size:var(--fs-xs)}h6{font-size:var(--fs-sm);color:var(--color-muted)}p{margin:0 0 1em}a{color:var(--color-accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:color-mix(in oklab,var(--color-accent) 35%,transparent);transition:color var(--motion-fast) var(--ease-standard),text-decoration-color var(--motion-fast) var(--ease-standard)}a:hover{color:var(--color-accent-hover);text-decoration-color:var(--color-accent-hover)}a:focus-visible{outline:none;box-shadow:var(--shadow-focus);border-radius:var(--radius-xs)}code,kbd,samp,pre{font-family:var(--font-mono);font-feature-settings:"calt" 0}:not(pre)>code{font-size:.92em;background:var(--color-code-bg);border:1px solid var(--color-border);border-radius:var(--radius-xs);padding:1px 5px;color:var(--ink-800);letter-spacing:var(--tracking-mono)}pre{font-size:var(--fs-sm);line-height:1.65;background:var(--color-code-bg);border:1px solid var(--color-border);border-radius:var(--radius-panel);padding:var(--space-4) var(--space-5);margin:var(--space-6) 0;overflow-x:auto;color:var(--code-fg);box-shadow:var(--shadow-inset)}kbd{font-size:.85em;background:var(--color-bg);border:1px solid var(--color-border-strong);border-bottom-width:2px;border-radius:var(--radius-sm);padding:1px 6px;color:var(--ink-800)}blockquote{margin:var(--space-6) 0;padding:var(--space-1) 0 var(--space-1) var(--space-5);border-left:2px solid var(--color-accent);color:var(--ink-700);font-style:italic}hr{border:0;height:1px;background:var(--color-border);margin:var(--space-8) 0}ul,ol{padding-left:1.4em;margin:0 0 1em}li{margin:.25em 0}table{width:100%;border-collapse:collapse;font-size:var(--fs-sm);margin:var(--space-6) 0}th,td{text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border)}th{font-family:var(--font-mono);font-weight:var(--weight-medium);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--color-muted);border-bottom:1px solid var(--color-border-strong)}mark{background:var(--color-mark);color:var(--ink-900);padding:0 2px}img{max-width:100%;height:auto}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}:root{--rail-width: 220px}*{box-sizing:border-box}html{scroll-padding-top:96px}body{min-height:100vh}img,svg{max-width:100%}a{color:var(--color-accent);text-decoration-color:color-mix(in srgb,var(--color-accent) 55%,transparent);text-underline-offset:.18em}a:hover{color:var(--color-accent-hover);text-decoration-color:currentColor}.site-shell{display:flex;flex-direction:column;min-height:100vh}.site-main{flex:1}.site-header{background:color-mix(in srgb,var(--color-bg) 94%,var(--color-bg-subtle));border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:10}.site-header-inner{align-items:center;display:flex;gap:var(--space-7);margin:0 auto;max-width:var(--container);padding:14px var(--space-7)}.brand{align-items:baseline;color:var(--color-heading);display:flex;flex-shrink:0;font-family:var(--font-sans);font-weight:var(--weight-bold);gap:var(--space-1);text-decoration:none}.brand-jp{font-family:var(--font-brand-jp);font-size:var(--fs-lg);font-weight:var(--weight-regular);letter-spacing:.01em}.brand-sub{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--fs-2xs);font-weight:var(--weight-medium);letter-spacing:var(--tracking-mono);margin-left:var(--space-2)}.cursor{animation:blink 1.06s steps(2) infinite;background:var(--color-prompt);display:inline-block;height:16px;width:8px}@keyframes blink{50%{opacity:0}}.site-nav{align-items:center;display:flex;gap:var(--space-6);margin-left:auto}.site-nav a{color:var(--ink-700);font-family:var(--font-sans);font-size:var(--fs-sm);font-weight:var(--weight-medium);text-decoration:none}.site-nav a:hover,.site-nav a.active{color:var(--color-accent)}.hero,.section,.site-footer{margin:0 auto;max-width:var(--container);padding-left:var(--space-7);padding-right:var(--space-7)}.hero{padding-bottom:var(--space-8);padding-top:var(--space-10)}.prompt-line{align-items:center;color:var(--color-muted);display:flex;font-family:var(--font-mono);font-size:var(--fs-xs);gap:var(--space-2);margin:0 0 var(--space-5)}.prompt-line:before{color:var(--color-prompt);content:"$";font-weight:var(--weight-semi)}.hero-title-jp{align-items:center;display:flex;font-family:var(--font-brand-jp);font-size:var(--fs-5xl);gap:var(--space-2);font-weight:var(--weight-regular);letter-spacing:var(--tracking-normal);margin-bottom:var(--space-1)}.hero-title-jp .cursor{height:48px;width:16px}.hero-sub{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--fs-md);letter-spacing:var(--tracking-mono);margin:0 0 var(--space-5)}.hero-sub:before{color:var(--color-prompt);content:"// "}.lede{color:var(--ink-700);font-family:var(--font-serif);font-size:var(--fs-lg);line-height:var(--lh-normal);margin:0 0 var(--space-6);max-width:min(58ch,100%);overflow-wrap:break-word}.meta-row{align-items:center;color:var(--color-muted);display:flex;flex-wrap:wrap;font-family:var(--font-mono);font-size:var(--fs-xs);gap:var(--space-4)}.meta-row a{color:var(--ink-700);text-decoration:none}.meta-row a:hover{color:var(--color-accent)}.section{padding-bottom:var(--space-7);padding-top:var(--space-7)}.section+.section{padding-top:var(--space-3)}.section-head{align-items:baseline;border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;margin-bottom:var(--space-5);padding-bottom:var(--space-3)}.section-head h2{color:var(--color-heading);font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:var(--weight-medium);letter-spacing:var(--tracking-caps);text-transform:uppercase}.section-head h2:before{color:var(--color-prompt);content:"## "}.section-head .more,.featured .read{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--fs-xs);text-decoration:none}.section-head .more:after,.featured .read:after{content:" ->"}.section-head .more:hover,.featured .read:hover{color:var(--color-accent)}.featured{background:var(--paper-50);border:1px solid var(--color-border);border-radius:var(--radius-panel);box-shadow:var(--shadow-panel);display:grid;gap:var(--space-7);grid-template-columns:220px 1fr;padding:var(--space-6)}.featured .side{color:var(--color-muted);display:flex;flex-direction:column;font-family:var(--font-mono);font-size:var(--fs-2xs);gap:var(--space-2)}.badge{align-self:flex-start;background:var(--color-mark);border-radius:var(--radius-sm);color:var(--ink-900);font-family:var(--font-mono);font-size:var(--fs-2xs);font-weight:var(--weight-medium);letter-spacing:var(--tracking-caps);padding:2px var(--space-2);text-transform:uppercase}.featured h3{font-size:var(--fs-2xl);margin-bottom:var(--space-3)}.featured h3 a,.post-card h3 a,.archive-row h2 a{color:inherit;text-decoration:none}.featured h3 a:hover,.post-card h3 a:hover,.archive-row h2 a:hover{color:var(--color-accent)}.featured p,.post-card p,.archive-row .desc{color:var(--ink-700);font-family:var(--font-serif);line-height:var(--lh-normal)}.post-list{display:grid;gap:var(--space-4);grid-template-columns:repeat(2,1fr)}.post-card{background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:var(--radius-panel);display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-5);transition:border-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-base) var(--ease-standard)}.post-card:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-panel)}.post-card.compact h3{font-size:var(--fs-md)}.meta,.post-card .meta{color:var(--color-muted);display:flex;flex-wrap:wrap;font-family:var(--font-mono);font-size:var(--fs-2xs);gap:var(--space-2);letter-spacing:var(--tracking-wide);margin:0;text-transform:uppercase}.dot{color:var(--color-faint)}.tags,.tag-cloud{display:flex;flex-wrap:wrap;gap:var(--space-2)}.tag-cloud.compact{margin-top:var(--space-2)}.tag-badge{align-items:center;background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:var(--radius-pill);color:var(--ink-700);display:inline-flex;font-family:var(--font-mono);font-size:var(--fs-2xs);gap:var(--space-1);padding:3px var(--space-3);text-decoration:none}.tag-badge:hover{border-color:var(--color-accent);color:var(--color-accent)}.tag-badge .count{color:var(--color-faint);font-size:11px}.article-shell{display:grid;gap:var(--space-8);grid-template-columns:var(--rail-width) minmax(0,1fr) var(--rail-width);margin:0 auto;max-width:var(--container);padding:var(--space-8) var(--space-7) var(--space-11)}.article-rail{align-self:start;color:var(--color-muted);font-family:var(--font-mono);font-size:var(--fs-2xs);position:sticky;top:80px}.article-rail .label{color:var(--color-faint);letter-spacing:var(--tracking-caps);margin-bottom:var(--space-2);text-transform:uppercase}.article-rail .row{border-bottom:1px dashed var(--color-border);padding:6px 0}.article-rail .row:last-child{border-bottom:0}.article-rail .row b,.article-rail .row a{color:var(--ink-700)}.rail-group{margin-top:var(--space-5)}.article-header{border-bottom:1px solid var(--color-border);margin-bottom:var(--space-7);padding-bottom:var(--space-6)}.breadcrumb{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--fs-2xs);margin-bottom:var(--space-4)}.breadcrumb a{color:var(--ink-700);text-decoration:none}.breadcrumb .sep{color:var(--color-faint);margin:0 var(--space-2)}.article-header h1{font-size:var(--fs-4xl);line-height:1.1;margin-bottom:var(--space-4);max-width:22ch;text-wrap:balance}.article-header .desc{color:var(--ink-700);font-family:var(--font-serif);font-size:var(--fs-lg);line-height:var(--lh-normal);margin:0 0 var(--space-5);max-width:60ch}.article-header h1,.article-header .desc,.article-prose>:where(h2,h3,p){line-break:strict;overflow-wrap:normal;word-break:keep-all}.article-header .meta{align-items:center;font-size:var(--fs-xs);letter-spacing:var(--tracking-normal);text-transform:none}.article-header .tags{margin-left:auto}.article-prose{color:var(--color-text);font-family:var(--font-serif);font-size:var(--fs-base);line-height:var(--lh-prose);max-width:var(--measure-prose)}.article-prose>*+*{margin-top:.9em}.article-prose>h2{font-size:var(--fs-2xl);margin-bottom:var(--space-3);margin-top:var(--space-9);padding-left:1.35ch;position:relative;text-wrap:balance}.article-prose>h2:before{color:var(--color-prompt);content:"# ";font-family:var(--font-mono);left:0;position:absolute;top:0}.article-prose>h3{font-size:var(--fs-xl);margin-bottom:var(--space-2);margin-top:var(--space-7);padding-left:2.3ch;position:relative}.article-prose>h3:before{color:var(--color-prompt);content:"## ";font-family:var(--font-mono);left:0;position:absolute;top:0}.article-prose>p,.article-prose>ul,.article-prose>ol{margin:0 0 1em}.article-prose blockquote{border-left:2px solid var(--color-accent);color:var(--ink-700);font-style:italic;margin:1.4em 0;padding-left:var(--space-5)}.article-prose pre{background:var(--color-code-bg)!important;border:1px solid var(--color-border);border-radius:var(--radius-panel);box-shadow:var(--shadow-inset);color:var(--code-fg)!important;font-size:var(--fs-sm);line-height:1.65;margin:var(--space-6) 0;overflow-x:auto;padding:var(--space-4) var(--space-5)}.article-prose pre[data-language=sh],.article-prose pre[data-language=bash]{background:var(--ink-900)!important;border-color:var(--ink-800);color:var(--paper-50)!important;padding-top:var(--space-8);position:relative}.article-prose pre[data-language=sh]:before,.article-prose pre[data-language=bash]:before{background:var(--ink-800);border-bottom:1px solid var(--ink-700);color:var(--paper-300);content:"~/blog";font-family:var(--font-mono);font-size:var(--fs-2xs);left:0;padding:6px var(--space-4);position:absolute;right:0;top:0}.article-prose pre[data-language=sh] span,.article-prose pre[data-language=bash] span{color:inherit!important}.article-prose :not(pre)>code{border:1px solid var(--color-border)}.toc{font-family:var(--font-sans);font-size:var(--fs-sm)}.toc-head,.toc-mobile summary{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-caps);margin-bottom:var(--space-3);text-transform:uppercase}.toc-head:before{color:var(--color-prompt);content:"▌";margin-right:var(--space-2)}.toc ol,.toc-mobile ol{list-style:none;margin:0;padding:0}.toc li,.toc-mobile li{border-left:2px solid transparent;padding:4px 0 4px var(--space-3)}.toc li.sub,.toc-mobile li.sub{font-size:var(--fs-xs);padding-left:var(--space-6)}.toc a,.toc-mobile a{color:var(--ink-700);text-decoration:none}.toc a:hover,.toc-mobile a:hover{color:var(--color-accent)}.toc-mobile{background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:var(--radius-panel);display:none;margin-bottom:var(--space-6);padding:var(--space-4)}.toc-mobile summary{cursor:pointer;margin:0}.toc-mobile[open] summary{margin-bottom:var(--space-3)}.related{border-top:1px solid var(--color-border);margin-top:var(--space-10);padding-top:var(--space-7)}.related-head{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:var(--tracking-caps);margin-bottom:var(--space-4);text-transform:uppercase}.related-head:before{color:var(--color-prompt);content:"## "}.related-grid{display:grid;gap:var(--space-3);grid-template-columns:repeat(2,1fr)}.archive-shell{margin:0 auto;max-width:880px;padding:var(--space-8) var(--space-7) var(--space-11)}.archive-shell h1{font-size:var(--fs-3xl);margin-bottom:var(--space-2)}.archive-filters,.archive-back{margin-bottom:var(--space-6)}.archive-list{display:flex;flex-direction:column}.archive-row{align-items:baseline;border-bottom:1px solid var(--color-border);display:grid;gap:var(--space-5);grid-template-columns:112px 1fr auto;padding:var(--space-4) 0}.archive-row .date{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--fs-xs)}.archive-row h2{font-size:var(--fs-md);margin:0 0 var(--space-1)}.archive-row .desc{font-size:var(--fs-sm);margin:0}.archive-row .tags{font-family:var(--font-mono);font-size:var(--fs-2xs);white-space:nowrap}.archive-row .tags a{color:var(--color-muted);text-decoration:none}.archive-row .tags a.active,.archive-row .tags a:hover{color:var(--color-accent)}.notfound{margin:0 auto;max-width:720px;padding:var(--space-11) var(--space-7)}.notfound h1{color:var(--color-error);font-family:var(--font-mono);font-size:var(--fs-2xl);font-weight:var(--weight-medium);margin-bottom:var(--space-2)}.notfound h1:before{color:var(--rust-700);content:"[err] ";font-weight:var(--weight-semi)}.stack{background:var(--ink-900);border-radius:var(--radius-panel);color:var(--paper-50);font-family:var(--font-mono);font-size:var(--fs-sm);line-height:1.7;margin:var(--space-6) 0;overflow-x:auto;padding:var(--space-4) var(--space-5)}.stack .pr{color:var(--leaf-100)}.stack .out{color:var(--paper-300)}.stack .err{color:#e8a99b}.notfound p{color:var(--ink-700);font-family:var(--font-serif)}.actions{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-6)}.btn{align-items:center;border:1px solid transparent;border-radius:var(--radius-md);display:inline-flex;font-family:var(--font-sans);font-size:var(--fs-sm);font-weight:var(--weight-medium);gap:var(--space-2);line-height:1;padding:var(--space-2) var(--space-4);text-decoration:none}.btn-primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--paper-50)}.btn-primary:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover);color:var(--paper-50)}.btn-secondary{background:var(--color-bg-subtle);border-color:var(--color-border);color:var(--ink-800)}.btn-secondary:hover{background:var(--paper-200);border-color:var(--color-border-strong);color:var(--ink-800)}.btn-mono{font-family:var(--font-mono);font-size:var(--fs-xs);padding:6px var(--space-3)}.btn-mono:before{color:var(--color-prompt);content:"$ "}.btn-primary.btn-mono:before{color:var(--leaf-100)}.site-footer{border-top:1px solid var(--color-border);display:flex;flex-direction:column;gap:var(--space-3);padding-bottom:var(--space-9);padding-top:var(--space-8)}.site-footer .signoff{color:var(--color-muted);font-family:var(--font-mono);font-size:var(--fs-xs);margin:0}.site-footer .signoff:before{color:var(--color-prompt);content:"$ "}.site-footer .links{display:flex;flex-wrap:wrap;gap:var(--space-5)}.site-footer .links a{color:var(--ink-700);font-family:var(--font-mono);font-size:var(--fs-xs);text-decoration:none}.site-footer .links a:hover{color:var(--color-accent)}.site-footer .copy{color:var(--color-faint);font-family:var(--font-mono);font-size:var(--fs-3xs);margin:0}@media(max-width:1023px){.article-shell{grid-template-columns:1fr}.article-rail{display:none}.toc-mobile{display:block}}@media(max-width:720px){.site-header-inner{align-items:flex-start;flex-direction:column;gap:var(--space-3);padding:var(--space-4) var(--space-5)}.site-nav{flex-wrap:wrap;gap:var(--space-4);margin-left:0}.brand{flex-wrap:wrap;min-width:0}.brand-sub{flex-basis:100%;margin-left:0}.hero,.section,.article-shell,.archive-shell,.notfound,.site-footer{padding-left:var(--space-5);padding-right:var(--space-5)}.hero{padding-top:var(--space-8)}.hero-title-jp{font-size:var(--fs-3xl)}.hero-title-jp .cursor{height:32px;width:12px}.featured,.post-list,.related-grid{grid-template-columns:1fr}.article-header h1{font-size:var(--fs-3xl)}.article-header .tags{margin-left:0}.archive-row{grid-template-columns:1fr;gap:var(--space-2)}.archive-row .tags{white-space:normal}}
