:root{--bg: #f7f7f9;--bg-soft: #eeeef2;--surface: #ffffff;--fg: #15151a;--fg-soft: #3f3f4a;--muted: #6b6b76;--line: #e3e3ea;--line-soft: #edeef2;--accent: #c0400c;--accent-fg: #ffffff;--accent-soft: #fdefe8;--paper: #fbf7f0;--paper-ink: #2a241c;--paper-line: #e9e0d2;--danger: #c0271d;--success: #2f6f3e;--shadow: 0 1px 2px rgb(16 16 24 / 5%), 0 4px 16px -8px rgb(16 16 24 / 12%);--shadow-lift: 0 2px 4px rgb(16 16 24 / 6%), 0 12px 28px -12px rgb(16 16 24 / 20%);--ui: "IBM Plex Sans Thai", system-ui, -apple-system, "Segoe UI", sans-serif;--read: "Sarabun", "IBM Plex Sans Thai", system-ui, sans-serif;--r-sm: 8px;--r-md: 12px;--r-lg: 18px;--page: 54rem;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg: #111114;--bg-soft: #1a1a20;--surface: #17171c;--fg: #ededf2;--fg-soft: #b8b8c4;--muted: #9191a0;--line: #2a2a33;--line-soft: #202028;--accent: #ff8a5c;--accent-fg: #15151a;--accent-soft: #2a1a12;--paper: #1a1713;--paper-ink: #e8dfd1;--paper-line: #2e281f;--danger: #f2998f;--success: #86c694;--shadow: 0 1px 2px rgb(0 0 0 / 30%), 0 4px 16px -8px rgb(0 0 0 / 50%);--shadow-lift: 0 2px 4px rgb(0 0 0 / 35%), 0 12px 28px -12px rgb(0 0 0 / 60%)}}*{box-sizing:border-box}body>*,.grid>*,.top-in>*,.row>*{min-width:0}h1,h2,h3,p,.meta,.reader,.comment,.list a.item{overflow-wrap:break-word}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--ui);line-height:1.75;-webkit-font-smoothing:antialiased;display:flex;flex-direction:column;min-height:100vh}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}::selection{background:var(--accent);color:var(--accent-fg)}.skip{position:absolute;left:-9999px;background:var(--accent);color:var(--accent-fg);padding:10px 16px;border-radius:0 0 var(--r-sm) 0;z-index:50}.skip:focus{left:0;top:0}.top{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--bg) 85%,transparent);-webkit-backdrop-filter:saturate(160%) blur(12px);backdrop-filter:saturate(160%) blur(12px);border-bottom:1px solid var(--line)}.top-in{max-width:var(--page);margin:0 auto;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:10px}.brand{font-weight:600;font-size:1.1rem;color:var(--fg);letter-spacing:-.015em;white-space:nowrap}.brand:hover{text-decoration:none}.brand span{color:var(--accent);font-weight:400}nav{display:flex;gap:4px;align-items:center;font-size:.92rem;flex-wrap:wrap;justify-content:flex-end}nav>a{color:var(--fg-soft);padding:6px 10px;border-radius:var(--r-sm);transition:background .15s,color .15s}nav>a:hover{background:var(--bg-soft);color:var(--fg);text-decoration:none}nav>a.btn.primary{color:var(--accent-fg)}nav .meta{padding:0 4px}main{flex:1;width:100%;max-width:var(--page);margin:0 auto;padding:28px 16px 72px}h1{font-size:clamp(1.5rem,1.2rem + 1.4vw,2rem);line-height:1.35;letter-spacing:-.02em;margin:0 0 .4em;font-weight:600}h2{font-size:1.15rem;font-weight:600;letter-spacing:-.01em;margin:2.2em 0 .6em;padding-bottom:.4em;border-bottom:1px solid var(--line)}h3{margin:0 0 6px;font-size:1.06rem;font-weight:600;line-height:1.45}p{margin:0 0 1em}.meta{color:var(--muted);font-size:.86rem;line-height:1.6}.tabs{display:inline-flex;gap:2px;margin:0 0 22px;background:var(--bg-soft);padding:3px;border-radius:999px;border:1px solid var(--line-soft);flex-wrap:wrap}.tab{padding:7px 16px;border-radius:999px;font-size:.9rem;color:var(--muted);border:0;background:transparent;transition:background .15s,color .15s}.tab:hover{color:var(--fg);text-decoration:none}.tab.on{background:var(--surface);color:var(--fg);font-weight:500;box-shadow:var(--shadow)}button,.btn{font:inherit;font-size:.92rem;cursor:pointer;white-space:nowrap;border:1px solid var(--line);background:var(--surface);color:var(--fg);padding:9px 18px;border-radius:999px;font-weight:500;transition:background .15s,border-color .15s,transform .08s,box-shadow .15s;display:inline-flex;align-items:center;gap:6px;justify-content:center}button:hover,.btn:hover{background:var(--bg-soft);border-color:var(--muted);text-decoration:none}button:active,.btn:active{transform:translateY(1px)}button.primary,.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg);box-shadow:var(--shadow)}button.primary:hover,.btn.primary:hover{background:color-mix(in srgb,var(--accent) 88%,#000);border-color:color-mix(in srgb,var(--accent) 88%,#000)}button:disabled{opacity:.45;cursor:default;transform:none}.grid{display:grid;gap:14px;grid-template-columns:minmax(0,1fr)}@media(min-width:680px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.card{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-lg);padding:18px 20px;box-shadow:var(--shadow);transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}a.card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift);border-color:var(--line);text-decoration:none}a.card:hover h3{color:var(--accent)}.card h3{transition:color .15s}.card p{color:var(--fg-soft);font-size:.93rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.tag{background:var(--bg-soft);border:1px solid var(--line-soft);border-radius:6px;padding:2px 9px;font-size:.76rem;color:var(--muted)}.badge{font-size:.74rem;padding:2px 9px;border-radius:999px;border:1px solid var(--line);color:var(--muted);background:var(--surface)}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.list{border-top:1px solid var(--line-soft)}.list a.item{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px 12px;border-bottom:1px solid var(--line-soft);color:var(--fg);border-radius:var(--r-sm);transition:background .15s,padding-inline-start .15s}.list a.item:hover{background:var(--bg-soft);text-decoration:none;padding-inline-start:18px}.grid>.meta:only-child,#comments>.meta:only-child,.list+.meta{grid-column:1 / -1;text-align:center;padding:40px 20px;border:1px dashed var(--line);border-radius:var(--r-lg);background:var(--bg-soft);margin:0}form.stack{display:grid;gap:12px;max-width:26rem}input,textarea{font:inherit;width:100%;padding:11px 14px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);color:var(--fg);transition:border-color .15s,box-shadow .15s}input::placeholder,textarea::placeholder{color:var(--muted)}input:focus,textarea:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}textarea{min-height:360px;line-height:1.9;resize:vertical;font-family:var(--read);background:var(--paper);color:var(--paper-ink);border-color:var(--paper-line)}.err{color:var(--danger);font-size:.88rem}.ok{color:var(--success);font-size:.85rem}.reader{font-family:var(--read);background:var(--paper);color:var(--paper-ink);border:1px solid var(--paper-line);border-radius:var(--r-lg);padding:clamp(20px,4vw,40px) clamp(18px,4vw,36px);max-width:40em;font-size:clamp(1.06rem,1rem + .35vw,1.2rem);line-height:2;margin:28px 0 8px}.reader p{margin:0 0 1.15em;text-indent:2em}.reader p:first-child{text-indent:0}.pager{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:36px 0 8px;padding-top:24px;border-top:1px solid var(--line)}.comment{padding:14px 0;border-bottom:1px solid var(--line-soft);font-size:.95rem}.comment.d1,.comment.d2{border-inline-start:2px solid var(--line);padding-inline-start:16px;border-bottom-color:transparent}.comment.d1{margin-inline-start:12px}.comment.d2{margin-inline-start:32px}.foot{border-top:1px solid var(--line);background:var(--bg-soft);padding:32px 16px;text-align:center}.foot-links{display:flex;flex-wrap:wrap;gap:8px 20px;justify-content:center;font-size:.86rem}.foot-links a{color:var(--muted)}.foot-links a:hover{color:var(--fg)}.foot-note{color:var(--muted);font-size:.8rem;margin:14px 0 0}@media(max-width:420px){.top-in{padding:12px 14px}.brand{font-size:1rem}nav{font-size:.86rem}nav>a{padding:5px 7px}button,.btn{padding:8px 14px;font-size:.86rem}main{padding:22px 14px 56px}.card{padding:16px;border-radius:var(--r-md)}.tab{padding:6px 13px;font-size:.86rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}a.card:hover{transform:none}}
