:root{--bg:#12110f;--surface:#14141b;--surface-2:#1a1a22;--border:#26242e;--border2:#332f3d;--c1:#f2ede4;--c2:#cdc6d6;--c3:#8b8494;--star:#c9a227;--accent:#d3a63f;--on-star:#12110f;--free:#4a8f75;--free-strong:#5fbf9b;--success:#6fbf9b;--warning:#d3a63f;--error:#e08a5a;--r-sm:2px;--r-md:3px;--r-lg:4px;--font-body:"IBM Plex Sans Thai", "Noto Sans Thai", sans-serif;--font-mono:"IBM Plex Mono", monospace;--ease:cubic-bezier(.16,1,.3,1)}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font-body);color:var(--c1);background:var(--bg);-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.5}a{color:var(--accent);text-decoration:none}button{font:inherit;cursor:pointer;color:inherit;background:0 0;border:none}.btn{border-radius:var(--r-md);transition:opacity var(--ease) .12s;align-items:center;gap:6px;min-height:44px;padding:10px 18px;font-size:15px;font-weight:600;display:inline-flex}.btn:active{opacity:.7}.btn.primary{background:var(--free);color:#0f1512}.btn.pay{border:1px solid var(--star);color:var(--star);background:0 0}.btn.ghost{border:1px solid var(--border);color:var(--c2);background:0 0}.btn.danger{border:1px solid var(--error);color:var(--error);background:0 0}.chip{border-radius:var(--r-sm);border:1px solid var(--border);transition:all var(--ease) .12s;align-items:center;gap:4px;min-height:36px;padding:6px 14px;font-size:14px;display:inline-flex}.chip.on{border-color:var(--star);color:var(--star);background:#c9a22714}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:16px}.badge{border-radius:var(--r-sm);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:4px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.badge.pay{color:var(--star);background:#c9a22726}.badge.free{color:var(--free);background:#4a8f7526}.progress{background:var(--border);border-radius:2px;height:4px;overflow:hidden}.progress-fill{background:var(--free);height:100%;transition:width .3s var(--ease)}.mono{font-family:var(--font-mono)}.muted{color:var(--c3);font-size:14px}.dim{color:var(--c2)}
