:root{--bg:#0d0b16;--bg-2:#15122a;--panel:#1b1733;--line:#2e2852;--text:#ece8ff;--muted:#a49cc8;--rift:#b77bff;--rift-2:#7c4dff;--leaf:#8fdc6a;--gold:#f2d27a;--danger:#ff6b6b;--radius:10px;--max:1120px;--font:"IBM Plex Sans Thai", system-ui, sans-serif;--font-head:"Mitr", "IBM Plex Sans Thai", sans-serif;--font-pixel:"Pixelify Sans", "Mitr", monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font:16px/1.7 var(--font);-webkit-font-smoothing:antialiased;margin:0}img{max-width:100%;height:auto;display:block}.pixel{image-rendering:pixelated}a{color:var(--rift);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{font-family:var(--font-head);margin:0 0 .5em;font-weight:500;line-height:1.25}code,pre{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.9em}:not(pre)>code{background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:1px 6px}pre{border:1px solid var(--line);border-radius:var(--radius);background:#09070f;margin:0 0 1.2em;padding:14px 16px;line-height:1.55;overflow-x:auto}.wrap{max-width:var(--max);margin:0 auto;padding:0 16px}.nav{z-index:10;backdrop-filter:blur(8px);border-bottom:1px solid var(--line);background:#0d0b16d9;position:sticky;top:0}.nav .wrap{align-items:center;gap:20px;height:60px;display:flex}.brand{font-family:var(--font-pixel);color:var(--text);letter-spacing:1px;font-size:24px}.brand span{color:var(--rift)}.brand:hover{text-decoration:none}.nav nav{gap:18px;margin-left:auto;font-size:15px;display:flex}.nav nav a{color:var(--muted)}.nav nav a:hover,.nav nav a.on{color:var(--text);text-decoration:none}.nav nav a.lang{border:1px solid var(--muted);border-radius:6px;padding:0 8px}.btn{border:1px solid var(--line);color:var(--text);background:var(--panel);border-radius:8px;align-items:center;gap:8px;padding:11px 20px;font-size:16px;font-weight:600;transition:transform .1s,border-color .15s;display:inline-flex}.btn:hover{border-color:var(--rift);text-decoration:none;transform:translateY(-1px)}.btn.primary{background:linear-gradient(180deg, var(--rift), var(--rift-2));color:#fff;border-color:#0000}.hero{background:radial-gradient(800px 380px at 70% 10%,#b77bff38,#0000 70%),radial-gradient(600px 300px at 10% 90%,#8fdc6a1f,#0000 70%);padding:72px 0 56px;position:relative;overflow:hidden}.hero .wrap{grid-template-columns:1fr 1.15fr;align-items:center;gap:48px;display:grid}.eyebrow{color:var(--leaf);letter-spacing:.5px;margin-bottom:10px;font-size:14px;font-weight:600}.hero h1{font-family:var(--font-pixel);letter-spacing:2px;margin-bottom:4px;font-size:clamp(44px,7vw,76px)}.hero h1 span{color:var(--rift)}.hero .th{font-family:var(--font-head);color:var(--muted);margin-bottom:18px;font-size:22px}.hero p.lead{color:#d6d0f2;max-width:34em;font-size:18px}.cta{flex-wrap:wrap;gap:12px;margin-top:26px;display:flex}.meta{color:var(--muted);margin-top:18px;font-size:14px}.shot{border:1px solid var(--line);border-radius:12px;box-shadow:0 0 0 6px #b77bff14,0 30px 80px -20px #7c4dff80}section{padding:72px 0}section.alt{background:var(--bg-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.sec-head{max-width:640px;margin-bottom:36px}.sec-head h2{font-size:34px}.sec-head p{color:var(--muted);margin:0}.grid{gap:18px;display:grid}.grid.c4{grid-template-columns:repeat(4,1fr)}.grid.c3{grid-template-columns:repeat(3,1fr)}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px}.card h3{font-size:20px}.card p{color:var(--muted);margin:0;font-size:15px}.card .ic{margin-bottom:10px;font-size:28px}.bosses{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;display:grid}.boss{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);text-align:center;padding:16px 12px 12px}.boss img{object-fit:contain;width:128px;height:128px;margin:0 auto 8px}.boss b{font-family:var(--font-head);font-size:15px;font-weight:500;display:block}.boss small{color:var(--muted);font-size:12.5px}.gallery{grid-template-columns:repeat(2,1fr);gap:18px;display:grid}.gallery a{color:var(--muted);font-size:14.5px;display:block}.gallery a:hover{color:var(--text);text-decoration:none}.gallery img{border-radius:var(--radius);border:1px solid var(--line);margin-bottom:8px;transition:transform .15s,border-color .15s}.gallery a:hover img{border-color:var(--rift);transform:translateY(-2px)}.split{grid-template-columns:1fr 1fr;align-items:start;gap:40px;display:grid}.ticks{margin:0 0 1.4em;padding:0;list-style:none}.ticks li{color:#d6d0f2;margin-bottom:8px;padding-left:28px;position:relative}.ticks li:before{content:"◆";color:var(--rift);font-size:13px;position:absolute;top:3px;left:4px}.platforms{flex-wrap:wrap;gap:10px;display:flex}.chip{border:1px solid var(--line);background:var(--panel);color:var(--muted);border-radius:999px;padding:6px 14px;font-size:14px}footer{color:var(--muted);border-top:1px solid var(--line);padding:36px 0 48px;font-size:14px}footer .wrap{flex-wrap:wrap;justify-content:space-between;gap:20px;display:flex}.docs{grid-template-columns:230px 1fr;gap:40px;padding-top:32px;padding-bottom:64px;display:grid}.side{align-self:start;font-size:15px;position:sticky;top:84px}.side b{color:var(--text);font-family:var(--font-head);margin:18px 0 6px;font-weight:500;display:block}.side b:first-child{margin-top:0}.side a{color:var(--muted);padding:3px 0;display:block}.side a:hover{color:var(--text);text-decoration:none}.doc{min-width:0;max-width:780px}.doc h1{font-size:38px}.doc h2{border-top:1px solid var(--line);margin-top:2.2em;padding-top:.4em;scroll-margin-top:80px;font-size:26px}.doc h3{margin-top:1.6em;scroll-margin-top:80px;font-size:19px}.doc p,.doc li{color:#d6d0f2}.doc table{border-collapse:collapse;width:100%;margin:0 0 1.4em;font-size:15px;display:block;overflow-x:auto}.doc th,.doc td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:8px 10px}.doc th{color:var(--muted);white-space:nowrap;font-weight:600}.note{border-left:3px solid var(--gold);background:#f2d27a12;border-radius:0 8px 8px 0;margin:0 0 1.4em;padding:12px 16px}.note.warn{border-color:var(--danger);background:#ff6b6b12}@media (width<=900px){.hero .wrap,.split{grid-template-columns:1fr}.grid.c4{grid-template-columns:repeat(2,1fr)}.grid.c3,.gallery,.docs{grid-template-columns:1fr}.side{border-bottom:1px solid var(--line);padding-bottom:16px;position:static}.side .group{display:none}}@media (width<=560px){.grid.c4{grid-template-columns:1fr}.nav nav{gap:12px;font-size:14px}.nav nav .hide-s{display:none}section{padding:52px 0}.hero{padding-top:44px}}.sec-head.row{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:16px;max-width:none;display:flex}.posts{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px;display:grid}.post-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);flex-direction:column;gap:6px;padding:14px;transition:transform .15s,border-color .15s;display:flex}.post-card:hover{border-color:var(--rift);text-decoration:none;transform:translateY(-2px)}.post-card img{aspect-ratio:16/9;object-fit:cover;border-radius:6px;margin-bottom:6px}.post-card b{font-family:var(--font-head);font-size:18px;font-weight:500;line-height:1.35}.post-card p{color:var(--muted);margin:0;font-size:14.5px}.post-meta{color:var(--muted);align-items:center;gap:10px;font-size:13.5px;display:flex}.ver{border:1px solid var(--line);color:var(--leaf);border-radius:999px;padding:0 8px;font-size:12.5px}.page-head{padding:56px 0 8px}.page-head h1{font-family:var(--font-pixel);letter-spacing:1px;margin-bottom:4px;font-size:48px}.page-head p{color:var(--muted);margin:0}section.tight{padding-top:28px}.post{max-width:760px;padding-top:40px;padding-bottom:64px}.post h1{margin:10px 0 18px;font-size:clamp(28px,4.5vw,40px)}.post .back{color:var(--muted);font-size:14.5px}.post .cover{border-radius:var(--radius);border:1px solid var(--line);margin-bottom:24px}.prose{color:#d6d0f2;font-size:17px}.prose h2{margin-top:1.8em;font-size:24px}.prose h3{margin-top:1.4em;font-size:19px}.prose img{border-radius:var(--radius);border:1px solid var(--line);image-rendering:pixelated;margin:1em 0}.prose li{margin-bottom:4px}.prose blockquote{border-left:3px solid var(--rift);color:var(--muted);margin:0 0 1.2em;padding:4px 16px}.post-nav{border-top:1px solid var(--line);justify-content:space-between;gap:16px;margin-top:48px;padding-top:18px;font-size:15px;display:flex}.lang-hint{background:var(--panel);border-bottom:1px solid var(--line);font-size:14.5px}.lang-hint .wrap{justify-content:space-between;align-items:center;height:40px;display:flex}.lang-hint button{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0 4px;font-size:20px}.dev-banner{border-bottom:1px solid var(--line);color:#e8e2c8;background:linear-gradient(90deg,#f2d27a24,#b77bff1a);font-size:14px}.dev-banner .wrap{align-items:center;gap:10px;min-height:38px;padding-top:6px;padding-bottom:6px;display:flex}.dev-banner b{color:var(--gold);font-weight:600}.dev-banner a{color:var(--gold);text-underline-offset:2px;text-decoration:underline}.dev-dot{background:var(--gold);border-radius:50%;flex:none;width:8px;height:8px;animation:2s infinite dev-pulse;box-shadow:0 0 #f2d27a99}@keyframes dev-pulse{70%{box-shadow:0 0 0 7px #f2d27a00}to{box-shadow:0 0 #f2d27a00}}@media (prefers-reduced-motion:reduce){.dev-dot{animation:none}}.badge-dev{color:var(--gold);vertical-align:1px;background:#f2d27a14;border:1px solid #f2d27a80;border-radius:999px;margin-right:8px;padding:1px 10px;font-size:12.5px;display:inline-block}
