:root{--bg: #ffffff;--surface: #f7f8fa;--surface-2: #eef1f4;--text: #1a1d21;--text-muted: #5b6570;--accent: #0b6e5f;--accent-hover: #095548;--accent-soft: #e6f2ef;--border: #e3e6ea;--shadow: 0 1px 2px rgba(16, 24, 40, .04), 0 4px 16px rgba(16, 24, 40, .06);--radius: 12px;--maxw: 760px;--maxw-wide: 1140px;--font: "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Yu Gothic", YuGothic, "Noto Sans JP", Meiryo, system-ui, -apple-system, sans-serif}@media(prefers-color-scheme:dark){:root{--bg: #14171a;--surface: #1c2024;--surface-2: #23282d;--text: #e8eaed;--text-muted: #9aa4af;--accent: #4ecdc4;--accent-hover: #6fdbd3;--accent-soft: #16302d;--border: #2a2f35;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 4px 16px rgba(0, 0, 0, .25)}}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:5rem;-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:17px;line-height:1.95;letter-spacing:.01em;-webkit-font-smoothing:antialiased;overflow-wrap:break-word;word-break:normal;line-break:strict}img,svg,video{max-width:100%;height:auto;display:block}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:3px}a:hover{color:var(--accent-hover)}.container{max-width:var(--maxw);margin-inline:auto;padding-inline:20px}.container-wide{max-width:var(--maxw-wide);margin-inline:auto;padding-inline:20px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip-link{position:absolute;left:-9999px;top:0;z-index:100;background:var(--accent);color:#fff;padding:10px 18px;border-radius:0 0 8px}.skip-link:focus{left:0}.site-header{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:saturate(160%) blur(10px);border-bottom:1px solid var(--border)}.site-header__inner{display:flex;align-items:center;gap:20px;min-height:62px;flex-wrap:wrap;padding-block:8px}.brand{font-weight:700;font-size:1.06rem;text-decoration:none;color:var(--text);letter-spacing:.02em}.brand small{display:block;font-size:.68rem;font-weight:500;color:var(--text-muted);letter-spacing:.08em}.site-nav{margin-left:auto;display:flex;gap:4px;flex-wrap:wrap}.site-nav a{font-size:.84rem;font-weight:600;color:var(--text-muted);text-decoration:none;padding:7px 12px;border-radius:999px}.site-nav a:hover,.site-nav a[aria-current=page]{background:var(--surface-2);color:var(--text)}.breadcrumbs{font-size:.78rem;color:var(--text-muted);padding-block:18px 0}.breadcrumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0}.breadcrumbs li+li:before{content:"›";margin-right:6px;color:var(--border)}.breadcrumbs a{color:var(--text-muted);text-decoration:none}.breadcrumbs a:hover{color:var(--accent);text-decoration:underline}.post-header{padding-block:22px 4px}.post-title{font-size:clamp(1.55rem,4.6vw,2.15rem);line-height:1.5;margin:12px 0 14px;letter-spacing:.005em}.post-meta{display:flex;flex-wrap:wrap;gap:12px;align-items:center;font-size:.8rem;color:var(--text-muted)}.chip{display:inline-block;background:var(--accent-soft);color:var(--accent);font-size:.72rem;font-weight:700;padding:4px 12px;border-radius:999px;text-decoration:none}.post-hero{margin:22px 0 8px;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.prose{font-size:1.02rem}.prose>*+*{margin-top:1.5em}.prose h2{font-size:1.35rem;line-height:1.6;margin-top:2.6em;margin-bottom:.9em;padding-bottom:.45em;border-bottom:2px solid var(--border);scroll-margin-top:5rem}.prose h3{font-size:1.13rem;line-height:1.65;margin-top:2.1em;margin-bottom:.7em;padding-left:.6em;border-left:4px solid var(--accent);scroll-margin-top:5rem}.prose p{margin-block:1.5em}.prose strong{font-weight:700;background:linear-gradient(transparent 62%,var(--accent-soft) 62%)}.prose ul,.prose ol{padding-left:1.4em}.prose li{margin-block:.5em}.prose img{border-radius:var(--radius);margin-inline:auto;box-shadow:var(--shadow)}.prose figure{margin:2em 0}.prose blockquote{margin:2em 0;padding:1em 1.3em;border-left:4px solid var(--accent);background:var(--surface);border-radius:0 var(--radius) var(--radius) 0;color:var(--text-muted)}.prose hr{border:0;border-top:1px solid var(--border);margin-block:3em}.prose code{background:var(--surface-2);padding:.15em .45em;border-radius:5px;font-size:.9em}.prose pre{padding:1em 1.2em;border-radius:var(--radius);overflow-x:auto}.prose table{width:100%;border-collapse:collapse;font-size:.92rem}.prose :is(th,td){border:1px solid var(--border);padding:.6em .8em;text-align:left}.prose th{background:var(--surface)}.table-scroll{overflow-x:auto}.toc{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 22px;margin-block:30px}.toc__title{font-size:.82rem;font-weight:700;letter-spacing:.08em;color:var(--text-muted);margin:0 0 10px}.toc ol{list-style:none;margin:0;padding:0;counter-reset:toc}.toc li{counter-increment:toc;margin-block:6px;font-size:.9rem;line-height:1.6}.toc li.lv3{padding-left:1.5em;font-size:.85rem}.toc a{color:var(--text);text-decoration:none}.toc a:hover{color:var(--accent);text-decoration:underline}.pr-notice{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--border);background:var(--surface);border-radius:var(--radius);padding:12px 16px;margin-block:24px;font-size:.82rem;color:var(--text-muted);line-height:1.7}.pr-notice__tag{flex:none;background:var(--accent);color:#fff;font-weight:700;font-size:.68rem;letter-spacing:.06em;padding:3px 9px;border-radius:5px}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(272px,1fr));gap:24px}.card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--accent)}.card__thumb{aspect-ratio:16 / 9;overflow:hidden;background:var(--surface-2)}.card__thumb img{width:100%;height:100%;object-fit:cover}.card__body{padding:15px 18px 20px;display:flex;flex-direction:column;gap:8px;flex:1}.card__title{font-size:.98rem;line-height:1.6;margin:0;font-weight:700}.card__title a{color:var(--text);text-decoration:none}.card__title a:hover{color:var(--accent)}.card__desc{font-size:.82rem;color:var(--text-muted);line-height:1.75;margin:0}.card__meta{font-size:.72rem;color:var(--text-muted);margin-top:auto;padding-top:4px}.tag-list{display:flex;flex-wrap:wrap;gap:8px}.tag{font-size:.76rem;color:var(--text-muted);text-decoration:none;background:var(--surface);border:1px solid var(--border);padding:4px 11px;border-radius:999px}.tag:hover{border-color:var(--accent);color:var(--accent)}.section-head{display:flex;align-items:baseline;gap:12px;margin-block:52px 22px}.section-head h2{font-size:1.2rem;margin:0;letter-spacing:.01em}.section-head span{font-size:.78rem;color:var(--text-muted)}.hero{padding-block:54px 10px;border-bottom:1px solid var(--border)}.hero h1{font-size:clamp(1.7rem,5vw,2.4rem);line-height:1.45;margin:0 0 14px}.hero p{color:var(--text-muted);font-size:.96rem;margin:0;max-width:60ch}.site-footer{margin-top:76px;border-top:1px solid var(--border);background:var(--surface);padding-block:34px;font-size:.82rem;color:var(--text-muted)}.site-footer a{color:var(--text-muted)}.site-footer__cols{display:flex;flex-wrap:wrap;gap:30px 56px;margin-bottom:22px}.site-footer h3{font-size:.76rem;letter-spacing:.09em;margin:0 0 9px;color:var(--text)}.site-footer ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}.post-nav{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:46px}.post-nav a{border:1px solid var(--border);border-radius:var(--radius);padding:14px 18px;text-decoration:none;color:var(--text);font-size:.86rem;line-height:1.6}.post-nav a:hover{border-color:var(--accent)}.post-nav small{display:block;color:var(--text-muted);font-size:.72rem;margin-bottom:4px}.post-nav .next{text-align:right}@media(max-width:640px){body{font-size:16px;line-height:1.9}.post-nav{grid-template-columns:1fr}.site-nav{width:100%;margin-left:0}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
