:root{color-scheme:light;--bg:#fff;--soft:#f7f7f8;--elev:#f1f1f3;--line:#e4e4e7;--line-hi:#c9c9ce;--text:#0a0a0b;--muted:#4a4a55;--dim:#8a8a95;--brand:#0846c2;--brand-light:#2b66dc;--brand-dark:#05318c;--radius:16px}
[data-theme="dark"]{color-scheme:dark;--bg:#07070a;--soft:#0e0e14;--elev:#14141c;--line:#1e1e26;--line-hi:#2c2c36;--text:#f5f5f7;--muted:#8a8a95;--dim:#4a4a55;--brand-light:#5b8bee}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:var(--brand-light);text-decoration:none}a:hover{text-decoration:underline}.wrap{max-width:1100px;margin:0 auto;padding:0 20px}.wrap--narrow{max-width:760px}
.topbar{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.topbar-inner{display:flex;align-items:center;justify-content:space-between;height:60px}.brand{display:flex;align-items:center;gap:10px;color:var(--text)}.brand:hover{text-decoration:none}.brand-badge{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--brand-dark),var(--brand-light));color:#fff;font-weight:700;font-size:15px}.brand-name{font-weight:600;letter-spacing:-.02em;font-size:17px}.topnav{display:flex;gap:22px;align-items:center;font-size:14px}.topnav a{color:var(--muted)}.topnav a:hover{color:var(--text);text-decoration:none}
.site-footer{border-top:1px solid var(--line);margin-top:64px;padding:40px 0;color:var(--dim);font-size:13px}.site-footer .wrap{display:flex;flex-wrap:wrap;gap:18px;justify-content:space-between;align-items:center}.site-footer a{color:var(--muted)}.footer-links{display:flex;gap:18px;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:999px;border:1px solid var(--line);background:var(--soft);color:var(--muted);font-size:12.5px;font-weight:500}.chip--active{border-color:var(--brand-light);color:var(--brand-light);background:color-mix(in srgb,var(--brand-light) 12%,var(--bg))}.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border-radius:999px;border:1px solid var(--line-hi);color:var(--text);font-weight:600;font-size:14px;background:var(--soft)}.btn:hover{text-decoration:none;border-color:var(--brand-light);color:var(--brand-light)}.btn[aria-disabled="true"]{opacity:.4;pointer-events:none}
.hero{padding:56px 0 28px}.hero h1{font-size:40px;letter-spacing:-.03em;margin:0 0 10px;line-height:1.1}.hero p{color:var(--muted);font-size:16px;max-width:60ch;margin:0}.filters{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0 28px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:22px}.card{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--soft);transition:transform .15s ease,border-color .15s ease}.card:hover{transform:translateY(-3px);border-color:var(--brand-light)}.card a{color:inherit}.card a:hover{text-decoration:none}.card-cover{aspect-ratio:16/9;width:100%;object-fit:cover;background:var(--elev);display:block}.card-cover--ph{display:grid;place-items:center;color:var(--dim);font-size:13px}.card-body{padding:18px 18px 20px;display:flex;flex-direction:column;gap:9px;flex:1}.card-cat{font-size:11.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--brand-light)}.card-title{font-size:18px;line-height:1.3;letter-spacing:-.015em;margin:0;color:var(--text);font-weight:600}.card-excerpt{font-size:14px;color:var(--muted);margin:0;flex:1;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.card-date{font-size:12.5px;color:var(--dim)}.pager{display:flex;align-items:center;justify-content:center;gap:18px;padding:48px 0 8px}.pager-info{color:var(--muted);font-size:14px}.empty{padding:60px 0;text-align:center;color:var(--muted)}
.post-head{padding:48px 0 8px}.post-cat{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--brand-light)}.post-title{font-size:38px;line-height:1.12;letter-spacing:-.03em;margin:12px 0 14px}.post-meta{color:var(--dim);font-size:14px}.post-cover{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:var(--radius);margin:28px 0 8px;background:var(--elev)}.article-content{font-size:17px;line-height:1.75;color:var(--text);padding:20px 0 8px}.article-content p{margin:0 0 20px}.article-content h2{font-size:26px;letter-spacing:-.02em;margin:38px 0 14px;line-height:1.25}.article-content h3{font-size:21px;letter-spacing:-.01em;margin:30px 0 12px}.article-content img{max-width:100%;height:auto;border-radius:12px;margin:14px 0}.article-content figure{margin:24px 0}.article-content figure img{margin:0}.article-content figcaption{font-size:13px;color:var(--dim);text-align:center;margin-top:8px}.article-content ul,.article-content ol{padding-left:24px;margin:0 0 20px}.article-content li{margin:6px 0}.article-content a{color:var(--brand-light)}.article-content blockquote{margin:24px 0;padding:12px 20px;border-left:3px solid var(--brand-light);background:var(--soft);color:var(--muted);border-radius:0 8px 8px 0}.article-content table{width:100%;border-collapse:collapse;margin:20px 0;font-size:15px}.article-content th,.article-content td{border:1px solid var(--line);padding:8px 12px;text-align:left}.article-content code{background:var(--elev);padding:2px 6px;border-radius:5px;font-size:.9em}.article-content pre{background:var(--elev);padding:16px;border-radius:10px;overflow:auto}.tags{display:flex;flex-wrap:wrap;gap:8px;padding:16px 0 0;border-top:1px solid var(--line);margin-top:32px}.post-foot{display:flex;justify-content:space-between;align-items:center;padding:32px 0 8px;gap:12px;flex-wrap:wrap}.nf{min-height:50vh;display:grid;place-items:center;text-align:center;padding:60px 0}.nf h1{font-size:30px;letter-spacing:-.02em;margin:0 0 10px}.nf p{color:var(--muted);margin:0 0 24px}
@media (max-width:560px){.hero h1{font-size:32px}.post-title{font-size:29px}.article-content{font-size:16px}}