:root{--mono:"IBM Plex Mono", ui-monospace, Menlo, monospace;--sans:"IBM Plex Sans JP", "Hiragino Sans", "Noto Sans JP", system-ui, sans-serif;--bg:#0e1116;--fg:#d3dae2;--mute:#717d8c;--line:#242b36;--card:#151a22;--memo:#7cd6a8;--post:#7cc7d9;--slide:#f2b36b;--app:#c3a0f0;color-scheme:dark}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--bg:#f7f7f4;--fg:#1f2328;--mute:#6b7280;--line:#e2e3df;--card:#fff;--memo:#2f8a5f;--post:#24779a;--slide:#b26a1e;--app:#7a4fb0;color-scheme:light}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--fg);font-family:var(--sans);margin:0;padding-block:28px 80px;font-size:15px;line-height:1.8}a{color:inherit;text-decoration:none}:focus-visible{outline-offset:2px;outline:2px solid}.wrap{max-width:760px;padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px));margin:0 auto}header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 20px;display:flex}.logo{font-family:var(--mono);font-size:16px;font-weight:600}.logo:before{content:"~/";color:var(--slide)}.logo span{color:var(--mute);font-weight:400}nav{flex-wrap:wrap;gap:6px;display:flex}nav a{color:var(--mute);border-radius:6px;padding:3px 10px;font-size:13px}nav a.cur{background:var(--card);color:var(--slide);box-shadow:0 0 0 1px var(--line)}.hero{flex-wrap:wrap;align-items:flex-end;gap:14px 24px;margin:28px 0 0;display:flex}.hero h1{margin:0;font-size:22px;font-weight:700;line-height:1.5}.hero p{color:var(--mute);margin:2px 0 0;font-size:14px}.stats{font-family:var(--mono);color:var(--mute);gap:18px;font-size:12px;display:flex}.stats b{color:var(--slide);font-variant-numeric:tabular-nums;font-size:20px;display:block}.heat{align-items:end;gap:3px;width:160px;height:34px;display:flex}.heat i{background:var(--slide);opacity:.35;border-radius:2px 2px 0 0;flex:1;min-height:3px}.heat i:last-child{opacity:.9}.filters{flex-wrap:wrap;gap:6px;margin:24px 0 8px;display:flex}.chip{font-size:12px;font-family:var(--mono);border:1px solid var(--line);color:var(--mute);cursor:pointer;background:0 0;border-radius:999px;padding:2px 9px}.chip[aria-pressed=true]{color:var(--slide);border-color:var(--slide)}.tl{margin:0;padding:0;list-style:none;position:relative}.tl:before{content:"";background:var(--line);width:1px;position:absolute;top:8px;bottom:8px;left:5.2em}.month{font-family:var(--mono);color:var(--mute);letter-spacing:.06em;padding:18px 0 6px;font-size:12px}.item{grid-template-columns:4.4em 1.6em 1fr;align-items:start;padding:8px 0;display:grid}.item[hidden]{display:none}.item .d{font-family:var(--mono);color:var(--mute);font-variant-numeric:tabular-nums;padding-top:4px;font-size:12px}.dot{background:var(--c);width:11px;height:11px;box-shadow:0 0 0 3px var(--bg);border-radius:50%;margin:8px 0 0 -.05em}.body-i{min-width:0}.type{font-family:var(--mono);color:var(--c);letter-spacing:.04em;font-size:11px}.item a{color:var(--fg);font-weight:500;line-height:1.6;display:block}.item a:hover{color:var(--c)}.item p{color:var(--mute);margin:2px 0 0;font-size:13.5px}.item.big .card{background:var(--card);border:1px solid var(--line);border-radius:8px;align-items:center;gap:12px;margin-top:8px;padding:10px 12px;display:flex}.item.big .card p{margin:0}.item.big .th{aspect-ratio:16/9;background:color-mix(in srgb, var(--c) 18%, var(--card));width:110px;color:var(--c);font-size:11px;font-family:var(--mono);border-radius:4px;flex:none;justify-content:center;align-items:center;display:flex}.t-memo{--c:var(--memo)}.t-post{--c:var(--post)}.t-slide{--c:var(--slide)}.t-app{--c:var(--app)}.empty{color:var(--mute);margin-top:24px;font-size:14px}footer{color:var(--mute);font-size:12px;font-family:var(--mono);margin-top:56px}article{margin-top:32px}article h1{text-wrap:balance;margin:6px 0 8px;font-size:clamp(22px,5vw,28px);line-height:1.5}.meta{font-family:var(--mono);color:var(--mute);flex-wrap:wrap;gap:12px;font-size:12px;display:flex}.layout{grid-template-columns:minmax(0,1fr);gap:40px;margin-top:28px;display:grid}.layout.has-toc{grid-template-columns:minmax(0,1fr) 180px}.toc{border-left:1px solid var(--line);align-self:start;padding-left:14px;font-size:13px;position:sticky;top:16px}.toc b{font-family:var(--mono);color:var(--mute);letter-spacing:.08em;font-size:11px;font-weight:400}.toc a{color:var(--mute);padding:3px 0;display:block}.toc a:hover{color:var(--fg)}.body{overflow-wrap:anywhere;font-size:15.5px;line-height:1.95}.body a{color:var(--post);text-underline-offset:3px;text-decoration:underline}.body h2{border-bottom:1px solid var(--line);margin:40px 0 6px;padding-bottom:4px;font-size:18px}.body h3{margin:28px 0 4px;font-size:16px}.body img{border-radius:6px;max-width:100%;height:auto}.body code{font-family:var(--mono);background:var(--card);border:1px solid var(--line);border-radius:4px;padding:0 5px;font-size:.88em}.body pre{border:1px solid var(--line);border-radius:8px;padding:14px 16px;font-size:13px;line-height:1.65;overflow-x:auto;background:var(--card)!important}.body pre code{background:0 0;border:0;padding:0}.body blockquote{background:color-mix(in srgb, var(--memo) 10%, transparent);border-radius:6px;margin:0;padding:8px 14px}.body table{border-collapse:collapse;display:block;overflow-x:auto}.body th,.body td{border:1px solid var(--line);padding:4px 10px}.draft-note{font-family:var(--mono);color:var(--slide);margin-top:16px;font-size:12px}.slides{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;margin-top:20px;display:grid}.slide{background:var(--card);border:1px solid var(--line);color:var(--fg);border-radius:10px;overflow:hidden}.slide .th{aspect-ratio:16/9;background:color-mix(in srgb, var(--slide) 14%, var(--card));flex-direction:column;justify-content:space-between;padding:14px;font-size:15px;font-weight:700;line-height:1.45;display:flex}.slide .th small{font-family:var(--mono);color:var(--slide);font-size:11px;font-weight:400}.slide .in{font-size:12px;font-family:var(--mono);color:var(--mute);padding:10px 14px}@media (width<=720px){.layout.has-toc{grid-template-columns:1fr}.toc{display:none}}@media (width<=420px){.item.big .th{display:none}}
